Угловой пользовательский интерфейс -стиль ячейки заголовка фильтра сетки?

#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;
    }
}