#javascript #css #angularjs #angular-ui-grid
#javascript #css #angularjs #angular-ui-grid
Вопрос:
Я работаю с Angular UI-Grid, и именно с фильтрацией. Все функции работают нормально, и сейчас я работаю над стилизацией.
Чего я пытаюсь добиться, так это вместо этого представления
Итак, как вы можете видеть, я просто хочу сделать фильтр диапазона в одной строке. Все мои поиски в интернете оказались безуспешными. Я нашел некоторую информацию для диапазона выбора даты, но я считаю, что это должно быть намного проще, просто добавьте какое-нибудь правило css в один столбец.
Я могу воздействовать на ряд через cellClass
, и я пытался воздействовать таким же образом через headerCellClass
, но это не работает. Есть ли какой-либо способ повлиять на этот заголовок без создания каких-либо пользовательских шаблонов? Заранее благодарю.
Мое определение столбца:
$scope.gridOptions.columnDefs = [
{
displayName: 'Name',
field: 'name',
width: '20%',
cellClass: getCellClass
},
{
field: 'description',
width: '30%',
cellClass: getCellClass
},
{
field: 'strict',
filter: {
type: uiGridConstants.filter.SELECT,
selectOptions: [
{value: true, label: 'strict'},
{value: false, label: 'non-strict'}
]
},
cellClass: getCellClass
},
{
displayName: 'Length',
field: 'maxSize',
filters: [
{
name: 'From',
condition: uiGridConstants.filter.GREATER_THAN_OR_EQUAL,
placeholder: "from"
},
{
name: 'To',
condition: uiGridConstants.filter.LESS_THAN_OR_EQUAL,
placeholder: "to"
}
],
headerCellClass: $scope.highlightFilteredHeader,
cellClass: getCellClass
},
{
field: 'Actions',
cellClass: getCellClass,
cellTemplate: "includes/grid/columnAction.html"
}
];
$scope.highlightFilteredHeader = function (row, rowRenderIndex, col, colRenderIndex) {
return 'ui-grid-header-custom';
};
это plunker, где вы можете найти мою проблему
Ответ №1:
Я нашел способ повлиять на это, я добавил пользовательский класс, и через этот класс я могу влиять на внутренние элементы. это мой рабочий код.
$scope.highlightFilteredHeader = function (row, rowRenderIndex, col, colRenderIndex) {
if (col.displayName == 'Length') {
return 'inline-filter';
} else if (col.filters[0].term) {
return 'header-filtered';
} else {
return ''
}
};
css
.inline-filter .ui-grid-filter-input-0{
width: 40% !important;
float: left;
margin-left: 10px !important;
}
.inline-filter .ui-grid-filter-input-1{
width: 40% !important;
float: left;
margin-top: -8px !important;
margin-left: 5px !important;
}
.inline-filter .ui-grid-filter-container .ui-grid-filter-button {
top: 15px !important;
}
@media only screen and (max-width: 750px) {
.inline-filter .ui-grid-filter-input-0{
margin-left: 0 !important;
}
}