@progress/kendo-angular-grid 21.4.1 → 22.0.0-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/column-menu/column-menu-item-base.d.ts +1 -1
- package/columns/column-base.d.ts +1 -1
- package/common/toolbar-tool-base.directive.d.ts +1 -1
- package/editing/toolbar-editing-tool-base.directive.d.ts +1 -1
- package/editing-directives/editing-directive-base.d.ts +1 -1
- package/editing-directives/row-editing-directive-base.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-grid.mjs +666 -666
- package/filtering/base-filter-cell.component.d.ts +1 -1
- package/filtering/boolean-filter.component.d.ts +1 -1
- package/filtering/date-filter.component.d.ts +1 -1
- package/filtering/filter-host.directive.d.ts +1 -1
- package/filtering/filter-input-wrapper.component.d.ts +1 -1
- package/filtering/numeric-filter.component.d.ts +1 -1
- package/filtering/operators/filter-operator.base.d.ts +1 -1
- package/filtering/string-filter.component.d.ts +1 -1
- package/localization/messages.d.ts +1 -1
- package/package.json +28 -36
- package/schematics/ngAdd/index.js +7 -7
- package/selection/selection-default.d.ts +1 -1
- package/esm2022/adaptiveness/adaptive-mode.mjs +0 -5
- package/esm2022/adaptiveness/adaptive-renderer.component.mjs +0 -1270
- package/esm2022/aggregates/aggregate-types.mjs +0 -5
- package/esm2022/aggregates/selection-aggregate.service.mjs +0 -200
- package/esm2022/aggregates/status-bar-template.directive.mjs +0 -30
- package/esm2022/aggregates/status-bar.component.mjs +0 -70
- package/esm2022/column-menu/column-chooser-content.component.mjs +0 -318
- package/esm2022/column-menu/column-chooser.component.mjs +0 -230
- package/esm2022/column-menu/column-list-kb-nav.service.mjs +0 -40
- package/esm2022/column-menu/column-list.component.mjs +0 -478
- package/esm2022/column-menu/column-locked-change-event.mjs +0 -19
- package/esm2022/column-menu/column-menu-autosize-all.component.mjs +0 -89
- package/esm2022/column-menu/column-menu-autosize.component.mjs +0 -97
- package/esm2022/column-menu/column-menu-chooser.component.mjs +0 -151
- package/esm2022/column-menu/column-menu-container.component.mjs +0 -67
- package/esm2022/column-menu/column-menu-expandable-item.interface.mjs +0 -5
- package/esm2022/column-menu/column-menu-filter.component.mjs +0 -152
- package/esm2022/column-menu/column-menu-item-base.mjs +0 -44
- package/esm2022/column-menu/column-menu-item-content-template.directive.mjs +0 -45
- package/esm2022/column-menu/column-menu-item.component.mjs +0 -514
- package/esm2022/column-menu/column-menu-item.directive.mjs +0 -164
- package/esm2022/column-menu/column-menu-lock.component.mjs +0 -118
- package/esm2022/column-menu/column-menu-position.component.mjs +0 -196
- package/esm2022/column-menu/column-menu-settings.interface.mjs +0 -5
- package/esm2022/column-menu/column-menu-sort.component.mjs +0 -119
- package/esm2022/column-menu/column-menu-stick.component.mjs +0 -120
- package/esm2022/column-menu/column-menu-template.directive.mjs +0 -47
- package/esm2022/column-menu/column-menu.component.mjs +0 -839
- package/esm2022/column-menu/column-menu.service.mjs +0 -71
- package/esm2022/column-menu/column-sticky-change-event.mjs +0 -19
- package/esm2022/column-menu/column-visibility-change-event.mjs +0 -19
- package/esm2022/column-menu/utils.mjs +0 -52
- package/esm2022/column-resizing/column-handle.directive.mjs +0 -499
- package/esm2022/column-resizing/column-resize.interface.mjs +0 -5
- package/esm2022/column-resizing/column-resizing.service.mjs +0 -214
- package/esm2022/column-resizing/table.directive.mjs +0 -141
- package/esm2022/columns/cell-rowspan.mjs +0 -5
- package/esm2022/columns/checkbox-column.component.mjs +0 -106
- package/esm2022/columns/column-base.mjs +0 -432
- package/esm2022/columns/column-common.mjs +0 -73
- package/esm2022/columns/column-group.component.mjs +0 -135
- package/esm2022/columns/column-list.mjs +0 -94
- package/esm2022/columns/column.component.mjs +0 -198
- package/esm2022/columns/columns-container.mjs +0 -101
- package/esm2022/columns/command-column.component.mjs +0 -80
- package/esm2022/columns/reorder-column.component.mjs +0 -114
- package/esm2022/columns/sort-settings.mjs +0 -18
- package/esm2022/columns/span-column.component.mjs +0 -195
- package/esm2022/common/adaptiveness.service.mjs +0 -72
- package/esm2022/common/cell-click-event-args.interface.mjs +0 -5
- package/esm2022/common/clipboard-types.mjs +0 -5
- package/esm2022/common/clipboard.directive.mjs +0 -197
- package/esm2022/common/clipboard.service.mjs +0 -221
- package/esm2022/common/column-info.service.mjs +0 -92
- package/esm2022/common/create-form-group.mjs +0 -5
- package/esm2022/common/data-layout-mode.mjs +0 -5
- package/esm2022/common/default-track-by.mjs +0 -13
- package/esm2022/common/dom-events.service.mjs +0 -27
- package/esm2022/common/error-messages.mjs +0 -64
- package/esm2022/common/event-emitter.mjs +0 -39
- package/esm2022/common/fetch-data-callback.mjs +0 -5
- package/esm2022/common/field-datatype.mjs +0 -5
- package/esm2022/common/filter-descriptor-differ.mjs +0 -69
- package/esm2022/common/filter-operator.interface.mjs +0 -5
- package/esm2022/common/grid-col-size.mjs +0 -5
- package/esm2022/common/id.service.mjs +0 -59
- package/esm2022/common/pager-settings.mjs +0 -20
- package/esm2022/common/preventable-event.mjs +0 -24
- package/esm2022/common/provider.service.mjs +0 -42
- package/esm2022/common/remove-confirmation.mjs +0 -5
- package/esm2022/common/resizable-settings.mjs +0 -9
- package/esm2022/common/single-popup.service.mjs +0 -158
- package/esm2022/common/size-options.mjs +0 -5
- package/esm2022/common/sort.service.mjs +0 -14
- package/esm2022/common/toolbar-tool-base.directive.mjs +0 -85
- package/esm2022/constants.mjs +0 -16
- package/esm2022/data/change-event-args.interface.mjs +0 -5
- package/esm2022/data/change-notification.service.mjs +0 -30
- package/esm2022/data/data-item.interface.mjs +0 -5
- package/esm2022/data/data-mapping.service.mjs +0 -136
- package/esm2022/data/data.collection.mjs +0 -87
- package/esm2022/data/data.iterators.mjs +0 -221
- package/esm2022/data/grid-item.interface.mjs +0 -5
- package/esm2022/data/group-footer-item.interface.mjs +0 -5
- package/esm2022/data/group-item.interface.mjs +0 -5
- package/esm2022/databinding.directive.mjs +0 -233
- package/esm2022/directives.mjs +0 -504
- package/esm2022/dragdrop/column-reorder-config.mjs +0 -5
- package/esm2022/dragdrop/column-reorder-event.mjs +0 -31
- package/esm2022/dragdrop/column-reorder.service.mjs +0 -20
- package/esm2022/dragdrop/common.mjs +0 -69
- package/esm2022/dragdrop/context-types.mjs +0 -5
- package/esm2022/dragdrop/drag-and-drop.service.mjs +0 -65
- package/esm2022/dragdrop/drag-hint.service.mjs +0 -137
- package/esm2022/dragdrop/draggable-column.directive.mjs +0 -137
- package/esm2022/dragdrop/drop-cue.service.mjs +0 -46
- package/esm2022/dragdrop/drop-target.directive.mjs +0 -71
- package/esm2022/editing/add-command-tool.directive.mjs +0 -59
- package/esm2022/editing/add-command.directive.mjs +0 -93
- package/esm2022/editing/add-event-args.interface.mjs +0 -5
- package/esm2022/editing/cancel-command-tool.directive.mjs +0 -64
- package/esm2022/editing/cancel-command.directive.mjs +0 -127
- package/esm2022/editing/cancel-event-args.interface.mjs +0 -5
- package/esm2022/editing/cell-close-event.mjs +0 -38
- package/esm2022/editing/edit-command-tool.directive.mjs +0 -60
- package/esm2022/editing/edit-command.directive.mjs +0 -124
- package/esm2022/editing/edit-event-args.interface.mjs +0 -5
- package/esm2022/editing/edit-row-options.interface.mjs +0 -5
- package/esm2022/editing/edit-template.directive.mjs +0 -43
- package/esm2022/editing/edit.service.mjs +0 -182
- package/esm2022/editing/form/dialog-form.component.mjs +0 -102
- package/esm2022/editing/form/form-formfield.component.mjs +0 -188
- package/esm2022/editing/form/form.component.mjs +0 -169
- package/esm2022/editing/form/index.mjs +0 -8
- package/esm2022/editing/form/models.mjs +0 -5
- package/esm2022/editing/local-data-changes.service.mjs +0 -18
- package/esm2022/editing/remove-command-tool.directive.mjs +0 -61
- package/esm2022/editing/remove-command.directive.mjs +0 -123
- package/esm2022/editing/remove-event-args.interface.mjs +0 -5
- package/esm2022/editing/save-command-tool.directive.mjs +0 -65
- package/esm2022/editing/save-command.directive.mjs +0 -126
- package/esm2022/editing/save-event-args.interface.mjs +0 -5
- package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +0 -99
- package/esm2022/editing-directives/create-form-group-args.interface.mjs +0 -5
- package/esm2022/editing-directives/edit-service.interface.mjs +0 -5
- package/esm2022/editing-directives/editing-directive-base.mjs +0 -167
- package/esm2022/editing-directives/external-editing.directive.mjs +0 -151
- package/esm2022/editing-directives/in-cell-editing.directive.mjs +0 -97
- package/esm2022/editing-directives/local-edit.service.mjs +0 -64
- package/esm2022/editing-directives/local-row-edit.service.mjs +0 -13
- package/esm2022/editing-directives/reactive-editing.directive.mjs +0 -60
- package/esm2022/editing-directives/row-editing-directive-base.mjs +0 -53
- package/esm2022/editing-directives/template-editing.directive.mjs +0 -72
- package/esm2022/editing-directives/utils.mjs +0 -18
- package/esm2022/excel/excel-command-tool.directive.mjs +0 -58
- package/esm2022/excel/excel-command.directive.mjs +0 -98
- package/esm2022/excel/excel-export-event.mjs +0 -18
- package/esm2022/excel/excel.component.mjs +0 -223
- package/esm2022/excel/excel.module.mjs +0 -45
- package/esm2022/excel/excel.service.mjs +0 -29
- package/esm2022/filtering/base-filter-cell.component.mjs +0 -174
- package/esm2022/filtering/boolean-filter.component.mjs +0 -83
- package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +0 -114
- package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +0 -113
- package/esm2022/filtering/cell/date-filter-cell.component.mjs +0 -141
- package/esm2022/filtering/cell/filter-cell-component.factory.mjs +0 -19
- package/esm2022/filtering/cell/filter-cell-host.directive.mjs +0 -33
- package/esm2022/filtering/cell/filter-cell-operators.component.mjs +0 -242
- package/esm2022/filtering/cell/filter-cell-template.directive.mjs +0 -46
- package/esm2022/filtering/cell/filter-cell-wrapper.component.mjs +0 -74
- package/esm2022/filtering/cell/filter-cell.component.mjs +0 -91
- package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +0 -155
- package/esm2022/filtering/cell/string-filter-cell.component.mjs +0 -127
- package/esm2022/filtering/date-filter.component.mjs +0 -172
- package/esm2022/filtering/filter-component.interface.mjs +0 -5
- package/esm2022/filtering/filter-host.directive.mjs +0 -58
- package/esm2022/filtering/filter-input-wrapper.component.mjs +0 -119
- package/esm2022/filtering/filter-input.directive.mjs +0 -123
- package/esm2022/filtering/filter-row.component.mjs +0 -131
- package/esm2022/filtering/filter.service.mjs +0 -44
- package/esm2022/filtering/filterable.mjs +0 -16
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +0 -167
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +0 -179
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +0 -212
- package/esm2022/filtering/menu/filter-menu-component.factory.mjs +0 -19
- package/esm2022/filtering/menu/filter-menu-container.component.mjs +0 -418
- package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +0 -44
- package/esm2022/filtering/menu/filter-menu-host.directive.mjs +0 -46
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +0 -158
- package/esm2022/filtering/menu/filter-menu-template.directive.mjs +0 -48
- package/esm2022/filtering/menu/filter-menu.component.mjs +0 -221
- package/esm2022/filtering/menu/filter-radio-button.directive.mjs +0 -34
- package/esm2022/filtering/menu/menu-tabbing.service.mjs +0 -22
- package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +0 -184
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +0 -230
- package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +0 -107
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +0 -198
- package/esm2022/filtering/multicheckbox-filter.component.mjs +0 -324
- package/esm2022/filtering/numeric-filter.component.mjs +0 -145
- package/esm2022/filtering/operators/after-eq-filter-operator.component.mjs +0 -72
- package/esm2022/filtering/operators/after-filter-operator.component.mjs +0 -72
- package/esm2022/filtering/operators/before-eq-filter-operator.component.mjs +0 -72
- package/esm2022/filtering/operators/before-filter-operator.component.mjs +0 -72
- package/esm2022/filtering/operators/contains-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/ends-with-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/eq-filter-operator.component.mjs +0 -111
- package/esm2022/filtering/operators/filter-operator.base.mjs +0 -101
- package/esm2022/filtering/operators/gt-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/gte-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/is-empty-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/is-not-empty-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/is-not-null-filter-operator.component.mjs +0 -110
- package/esm2022/filtering/operators/isnull-filter-operator.component.mjs +0 -110
- package/esm2022/filtering/operators/lt-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/lte-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/neq-filter-operator.component.mjs +0 -110
- package/esm2022/filtering/operators/not-contains-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/operators/starts-with-filter-operator.component.mjs +0 -63
- package/esm2022/filtering/string-filter.component.mjs +0 -90
- package/esm2022/grid.component.mjs +0 -4598
- package/esm2022/grid.module.mjs +0 -241
- package/esm2022/grouping/group-footer-template.directive.mjs +0 -44
- package/esm2022/grouping/group-header-column-template.directive.mjs +0 -45
- package/esm2022/grouping/group-header-template.directive.mjs +0 -46
- package/esm2022/grouping/group-header.component.mjs +0 -351
- package/esm2022/grouping/group-info.service.mjs +0 -43
- package/esm2022/grouping/group-key.interface.mjs +0 -5
- package/esm2022/grouping/group-panel.component.mjs +0 -487
- package/esm2022/grouping/group-rows-args.interface.mjs +0 -5
- package/esm2022/grouping/group-settings.mjs +0 -5
- package/esm2022/grouping/groups.service.mjs +0 -69
- package/esm2022/grouping/utils.mjs +0 -14
- package/esm2022/highlight/highlight-item.mjs +0 -5
- package/esm2022/highlight/highlight.directive.mjs +0 -132
- package/esm2022/index.mjs +0 -221
- package/esm2022/layout/browser-support.service.mjs +0 -94
- package/esm2022/layout/resizable.directive.mjs +0 -83
- package/esm2022/layout/resize.service.mjs +0 -29
- package/esm2022/layout/responsive.service.mjs +0 -34
- package/esm2022/layout/row-sync.mjs +0 -47
- package/esm2022/layout/sizing-options.service.mjs +0 -18
- package/esm2022/localization/custom-messages.component.mjs +0 -54
- package/esm2022/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/localization/messages.mjs +0 -895
- package/esm2022/navigation/default-focusable-element.mjs +0 -50
- package/esm2022/navigation/focus-group.mjs +0 -73
- package/esm2022/navigation/focus-root.mjs +0 -50
- package/esm2022/navigation/focusable-element.interface.mjs +0 -5
- package/esm2022/navigation/focusable.directive.mjs +0 -150
- package/esm2022/navigation/grid-focusable-element.mjs +0 -28
- package/esm2022/navigation/item-map.mjs +0 -59
- package/esm2022/navigation/logical-cell.directive.mjs +0 -224
- package/esm2022/navigation/logical-cell.interface.mjs +0 -5
- package/esm2022/navigation/logical-row.directive.mjs +0 -131
- package/esm2022/navigation/logical-row.interface.mjs +0 -5
- package/esm2022/navigation/navigable-settings.mjs +0 -5
- package/esm2022/navigation/navigation-cell.interface.mjs +0 -5
- package/esm2022/navigation/navigation-change.interface.mjs +0 -5
- package/esm2022/navigation/navigation-cursor.mjs +0 -224
- package/esm2022/navigation/navigation-metadata.mjs +0 -35
- package/esm2022/navigation/navigation-mode.mjs +0 -5
- package/esm2022/navigation/navigation-model.mjs +0 -138
- package/esm2022/navigation/navigation-row.interface.mjs +0 -5
- package/esm2022/navigation/navigation.service.mjs +0 -998
- package/esm2022/navigation/toolbar-tool-name.mjs +0 -18
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/pdf/export-element.mjs +0 -135
- package/esm2022/pdf/grid-query.mjs +0 -45
- package/esm2022/pdf/pdf-command-tool.directive.mjs +0 -60
- package/esm2022/pdf/pdf-command.directive.mjs +0 -98
- package/esm2022/pdf/pdf-export-event.mjs +0 -16
- package/esm2022/pdf/pdf-margin.component.mjs +0 -38
- package/esm2022/pdf/pdf-margin.interface.mjs +0 -5
- package/esm2022/pdf/pdf-template.directive.mjs +0 -43
- package/esm2022/pdf/pdf.component.mjs +0 -331
- package/esm2022/pdf/pdf.module.mjs +0 -47
- package/esm2022/pdf/pdf.service.mjs +0 -42
- package/esm2022/progress-kendo-angular-grid.mjs +0 -8
- package/esm2022/rendering/cell-loading.template.directive.mjs +0 -39
- package/esm2022/rendering/cell-template.directive.mjs +0 -44
- package/esm2022/rendering/cell.component.mjs +0 -717
- package/esm2022/rendering/common/cell-context.mjs +0 -13
- package/esm2022/rendering/common/col-group.component.mjs +0 -98
- package/esm2022/rendering/common/dom-queries.mjs +0 -162
- package/esm2022/rendering/common/field-accessor.pipe.mjs +0 -48
- package/esm2022/rendering/common/format.pipe.mjs +0 -37
- package/esm2022/rendering/common/loading.component.mjs +0 -60
- package/esm2022/rendering/common/row-args.mjs +0 -5
- package/esm2022/rendering/common/row-class.mjs +0 -5
- package/esm2022/rendering/common/spacer.component.mjs +0 -62
- package/esm2022/rendering/constants.mjs +0 -20
- package/esm2022/rendering/details/detail-collapse-event.mjs +0 -27
- package/esm2022/rendering/details/detail-expand-event.mjs +0 -27
- package/esm2022/rendering/details/detail-template.directive.mjs +0 -61
- package/esm2022/rendering/details/details.service.mjs +0 -56
- package/esm2022/rendering/details-expand.directive.mjs +0 -136
- package/esm2022/rendering/footer/footer-template.directive.mjs +0 -48
- package/esm2022/rendering/footer/footer.component.mjs +0 -266
- package/esm2022/rendering/grid-table.directive.mjs +0 -52
- package/esm2022/rendering/groups-expand.directive.mjs +0 -149
- package/esm2022/rendering/header/header-template.directive.mjs +0 -45
- package/esm2022/rendering/header/header.component.mjs +0 -1055
- package/esm2022/rendering/list.component.mjs +0 -1176
- package/esm2022/rendering/loading-template.directive.mjs +0 -38
- package/esm2022/rendering/no-records-template.directive.mjs +0 -38
- package/esm2022/rendering/rowspan.service.mjs +0 -24
- package/esm2022/rendering/table-body.component.mjs +0 -1250
- package/esm2022/rendering/toolbar/toolbar-focusable.directive.mjs +0 -83
- package/esm2022/rendering/toolbar/toolbar-navigation.service.mjs +0 -58
- package/esm2022/rendering/toolbar/toolbar-position.mjs +0 -5
- package/esm2022/rendering/toolbar/toolbar-template.directive.mjs +0 -55
- package/esm2022/rendering/toolbar/toolbar.component.mjs +0 -159
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +0 -272
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-request-response.service.mjs +0 -624
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +0 -273
- package/esm2022/rendering/toolbar/tools/ai-assistant/models.mjs +0 -43
- package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +0 -92
- package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +0 -238
- package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +0 -219
- package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +0 -151
- package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +0 -223
- package/esm2022/rendering/toolbar/tools/group-command-tool.directive.mjs +0 -208
- package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +0 -451
- package/esm2022/rendering/toolbar/tools/select-all-command-tool.directive.mjs +0 -93
- package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +0 -222
- package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +0 -245
- package/esm2022/row-reordering/drag-handle-template.directive.mjs +0 -44
- package/esm2022/row-reordering/drag-hint-template.directive.mjs +0 -42
- package/esm2022/row-reordering/row-reorder.service.mjs +0 -280
- package/esm2022/row-reordering/types.mjs +0 -5
- package/esm2022/row-reordering/utils.mjs +0 -88
- package/esm2022/scrolling/content-scroll-event.mjs +0 -5
- package/esm2022/scrolling/row-height.service.mjs +0 -55
- package/esm2022/scrolling/scroll-bottom-event.mjs +0 -5
- package/esm2022/scrolling/scroll-request.service.mjs +0 -24
- package/esm2022/scrolling/scroll-sync.service.mjs +0 -80
- package/esm2022/scrolling/scroller.service.mjs +0 -254
- package/esm2022/scrolling/scrollmode.mjs +0 -5
- package/esm2022/scrolling/suspend.service.mjs +0 -17
- package/esm2022/selection/cell-selection.service.mjs +0 -349
- package/esm2022/selection/marquee.directive.mjs +0 -188
- package/esm2022/selection/pair-set.mjs +0 -158
- package/esm2022/selection/selectall-checkbox.directive.mjs +0 -143
- package/esm2022/selection/selection-checkbox.directive.mjs +0 -132
- package/esm2022/selection/selection-default.mjs +0 -208
- package/esm2022/selection/selection.directive.mjs +0 -53
- package/esm2022/selection/selection.service.mjs +0 -466
- package/esm2022/selection/types.mjs +0 -5
- package/esm2022/state-management/grid-state.models.mjs +0 -26
- package/esm2022/state-management/redo-command-tool.mjs +0 -74
- package/esm2022/state-management/undo-command-tool.mjs +0 -74
- package/esm2022/state-management/undo-redo.directive.mjs +0 -249
- package/esm2022/state-management/undo-redo.service.mjs +0 -21
- package/esm2022/state-management/undo-redo.stack.mjs +0 -238
- package/esm2022/utils.mjs +0 -216
|
@@ -1,4598 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, QueryList, ViewChild, isDevMode, NgZone, ViewChildren, ChangeDetectorRef, ViewEncapsulation, ViewContainerRef } from '@angular/core';
|
|
6
|
-
import { ZoneAwareEventEmitter } from './common/event-emitter';
|
|
7
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
8
|
-
import { merge } from 'rxjs';
|
|
9
|
-
import { map, tap, take, filter, switchMap, takeUntil, flatMap } from 'rxjs/operators';
|
|
10
|
-
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
|
-
import { packageMetadata } from './package-metadata';
|
|
12
|
-
import { GridAIRequestResponseService } from './rendering/toolbar/tools/ai-assistant/ai-request-response.service';
|
|
13
|
-
import { ColumnComponent, isColumnComponent } from './columns/column.component';
|
|
14
|
-
import { isSpanColumnComponent } from './columns/span-column.component';
|
|
15
|
-
import { isColumnGroupComponent, ColumnGroupComponent } from './columns/column-group.component';
|
|
16
|
-
import { DetailTemplateDirective } from './rendering/details/detail-template.directive';
|
|
17
|
-
import { normalize } from './common/pager-settings';
|
|
18
|
-
import { isArray, anyChanged, isChanged, isPresent, isUniversal, observe, isTruthy, createPromise, hasObservers, roundDown, recursiveColumnsFlatMap } from './utils';
|
|
19
|
-
import { BrowserSupportService } from './layout/browser-support.service';
|
|
20
|
-
import { DataResultIterator, DataCollection } from './data/data.collection';
|
|
21
|
-
import { SelectionService } from './selection/selection.service';
|
|
22
|
-
import { Selection } from "./selection/selection-default";
|
|
23
|
-
import { EditService } from './editing/edit.service';
|
|
24
|
-
import { DetailsService } from './rendering/details/details.service';
|
|
25
|
-
import { GroupsService } from './grouping/groups.service';
|
|
26
|
-
import { ColumnsContainer } from './columns/columns-container';
|
|
27
|
-
import { GroupInfoService } from './grouping/group-info.service';
|
|
28
|
-
import { ChangeNotificationService } from './data/change-notification.service';
|
|
29
|
-
import { NoRecordsTemplateDirective } from './rendering/no-records-template.directive';
|
|
30
|
-
import { ColumnBase } from './columns/column-base';
|
|
31
|
-
import { syncRowsHeight } from './layout/row-sync';
|
|
32
|
-
import { CELL_CONTEXT, EMPTY_CELL_CONTEXT } from './rendering/common/cell-context';
|
|
33
|
-
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
34
|
-
import { FilterService } from './filtering/filter.service';
|
|
35
|
-
import { PDFService } from './pdf/pdf.service';
|
|
36
|
-
import { PDFExportEvent } from './pdf/pdf-export-event';
|
|
37
|
-
import { SuspendService } from './scrolling/suspend.service';
|
|
38
|
-
import { ResponsiveService } from "./layout/responsive.service";
|
|
39
|
-
import { ExcelService } from './excel/excel.service';
|
|
40
|
-
import { ColumnList } from './columns/column-list';
|
|
41
|
-
import { ToolbarTemplateDirective } from "./rendering/toolbar/toolbar-template.directive";
|
|
42
|
-
import { expandColumns, expandColumnsWithSpan, isValidFieldName } from "./columns/column-common";
|
|
43
|
-
import { ScrollSyncService } from "./scrolling/scroll-sync.service";
|
|
44
|
-
import { ResizeService } from "./layout/resize.service";
|
|
45
|
-
import { closest, matchesClasses, matchesNodeName } from './rendering/common/dom-queries';
|
|
46
|
-
import { LocalDataChangesService } from './editing/local-data-changes.service';
|
|
47
|
-
import { DomEventsService } from './common/dom-events.service';
|
|
48
|
-
import { ColumnResizingService } from "./column-resizing/column-resizing.service";
|
|
49
|
-
import { hasFilterRow } from './filtering/filterable';
|
|
50
|
-
import { SinglePopupService } from './common/single-popup.service';
|
|
51
|
-
import { DragAndDropService } from './dragdrop/drag-and-drop.service';
|
|
52
|
-
import { DragHintService } from './dragdrop/drag-hint.service';
|
|
53
|
-
import { DropCueService } from './dragdrop/drop-cue.service';
|
|
54
|
-
import { ColumnReorderService } from './dragdrop/column-reorder.service';
|
|
55
|
-
import { ColumnReorderEvent } from './dragdrop/column-reorder-event';
|
|
56
|
-
import { FocusRoot } from './navigation/focus-root';
|
|
57
|
-
import { NavigationService } from './navigation/navigation.service';
|
|
58
|
-
import { NavigationMetadata } from './navigation/navigation-metadata';
|
|
59
|
-
import { IdService } from './common/id.service';
|
|
60
|
-
import { ColumnInfoService } from "./common/column-info.service";
|
|
61
|
-
import { ScrollRequestService } from './scrolling/scroll-request.service';
|
|
62
|
-
import { SortService } from './common/sort.service';
|
|
63
|
-
import { ColumnMenuTemplateDirective } from './column-menu/column-menu-template.directive';
|
|
64
|
-
import { ColumnVisibilityChangeEvent } from './column-menu/column-visibility-change-event';
|
|
65
|
-
import { ColumnLockedChangeEvent } from './column-menu/column-locked-change-event';
|
|
66
|
-
import { GROUP_CELL_WIDTH } from './constants';
|
|
67
|
-
import { sortColumns } from './columns/column-common';
|
|
68
|
-
import { defaultTrackBy } from './common/default-track-by';
|
|
69
|
-
import { CellSelectionService } from './selection/cell-selection.service';
|
|
70
|
-
import { ColumnStickyChangeEvent } from './column-menu/column-sticky-change-event';
|
|
71
|
-
import { CellLoadingTemplateDirective } from './rendering/cell-loading.template.directive';
|
|
72
|
-
import { ContextService } from './common/provider.service';
|
|
73
|
-
import { LoadingTemplateDirective } from './rendering/loading-template.directive';
|
|
74
|
-
import { SizingOptionsService } from './layout/sizing-options.service';
|
|
75
|
-
import { DraggableDirective, ResizeSensorComponent, WatermarkOverlayComponent, guid, shouldShowValidationUI, getLicenseMessage } from '@progress/kendo-angular-common';
|
|
76
|
-
import { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
|
|
77
|
-
import { RowReorderService } from './row-reordering/row-reorder.service';
|
|
78
|
-
import { StatusBarTemplateDirective } from './aggregates/status-bar-template.directive';
|
|
79
|
-
import { CellSelectionAggregateService } from './aggregates/selection-aggregate.service';
|
|
80
|
-
import { ClipboardService } from './common/clipboard.service';
|
|
81
|
-
import { ColumnConfigurationErrorMessages, GridConfigurationErrorMessages } from './common/error-messages';
|
|
82
|
-
import { StatusBarComponent } from './aggregates/status-bar.component';
|
|
83
|
-
import { LoadingComponent } from './rendering/common/loading.component';
|
|
84
|
-
import { TableBodyComponent } from './rendering/table-body.component';
|
|
85
|
-
import { FooterComponent } from './rendering/footer/footer.component';
|
|
86
|
-
import { GridMarqueeDirective } from './selection/marquee.directive';
|
|
87
|
-
import { ListComponent } from './rendering/list.component';
|
|
88
|
-
import { ResizableContainerDirective } from './layout/resizable.directive';
|
|
89
|
-
import { HeaderComponent } from './rendering/header/header.component';
|
|
90
|
-
import { ColGroupComponent } from './rendering/common/col-group.component';
|
|
91
|
-
import { GridTableDirective } from './rendering/grid-table.directive';
|
|
92
|
-
import { TableDirective } from './column-resizing/table.directive';
|
|
93
|
-
import { GroupPanelComponent } from './grouping/group-panel.component';
|
|
94
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
95
|
-
import { ToolbarComponent as GridToolbarComponent } from './rendering/toolbar/toolbar.component';
|
|
96
|
-
import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
|
|
97
|
-
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
98
|
-
import { PagerTemplateDirective, PagerContextService, PagerNavigationService, KENDO_PAGER } from '@progress/kendo-angular-pager';
|
|
99
|
-
import { RowspanService } from './rendering/rowspan.service';
|
|
100
|
-
import { AdaptiveGridService } from './common/adaptiveness.service';
|
|
101
|
-
import { AdaptiveRendererComponent } from './adaptiveness/adaptive-renderer.component';
|
|
102
|
-
import { ColumnMenuService } from './column-menu/column-menu.service';
|
|
103
|
-
import { MenuTabbingService } from './filtering/menu/menu-tabbing.service';
|
|
104
|
-
import { DataMappingService } from './data/data-mapping.service';
|
|
105
|
-
import * as i0 from "@angular/core";
|
|
106
|
-
import * as i1 from "./layout/browser-support.service";
|
|
107
|
-
import * as i2 from "./selection/selection.service";
|
|
108
|
-
import * as i3 from "./selection/cell-selection.service";
|
|
109
|
-
import * as i4 from "./grouping/group-info.service";
|
|
110
|
-
import * as i5 from "./grouping/groups.service";
|
|
111
|
-
import * as i6 from "./data/change-notification.service";
|
|
112
|
-
import * as i7 from "./rendering/details/details.service";
|
|
113
|
-
import * as i8 from "./editing/edit.service";
|
|
114
|
-
import * as i9 from "./filtering/filter.service";
|
|
115
|
-
import * as i10 from "./pdf/pdf.service";
|
|
116
|
-
import * as i11 from "./layout/responsive.service";
|
|
117
|
-
import * as i12 from "./excel/excel.service";
|
|
118
|
-
import * as i13 from "./scrolling/scroll-sync.service";
|
|
119
|
-
import * as i14 from "./common/dom-events.service";
|
|
120
|
-
import * as i15 from "./column-resizing/column-resizing.service";
|
|
121
|
-
import * as i16 from "./dragdrop/column-reorder.service";
|
|
122
|
-
import * as i17 from "./common/column-info.service";
|
|
123
|
-
import * as i18 from "./navigation/navigation.service";
|
|
124
|
-
import * as i19 from "./common/sort.service";
|
|
125
|
-
import * as i20 from "./scrolling/scroll-request.service";
|
|
126
|
-
import * as i21 from "@progress/kendo-angular-l10n";
|
|
127
|
-
import * as i22 from "./common/provider.service";
|
|
128
|
-
import * as i23 from "./layout/sizing-options.service";
|
|
129
|
-
import * as i24 from "./common/adaptiveness.service";
|
|
130
|
-
import * as i25 from "./row-reordering/row-reorder.service";
|
|
131
|
-
import * as i26 from "./data/data-mapping.service";
|
|
132
|
-
import * as i27 from "./rendering/toolbar/tools/ai-assistant/ai-request-response.service";
|
|
133
|
-
import * as i28 from "./common/id.service";
|
|
134
|
-
import * as i29 from "@progress/kendo-angular-pager";
|
|
135
|
-
const createControl = (source) => (acc, key) => {
|
|
136
|
-
acc[key] = new FormControl(source[key]);
|
|
137
|
-
return acc;
|
|
138
|
-
};
|
|
139
|
-
const validateColumnsField = (columns) => expandColumns(columns.toArray())
|
|
140
|
-
.filter(isColumnComponent)
|
|
141
|
-
.filter(({ field }) => !isValidFieldName(field))
|
|
142
|
-
.forEach(({ field }) => console.warn(ColumnConfigurationErrorMessages.fieldName(field)));
|
|
143
|
-
const handleExpandCollapseGroupsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ group, emit }) => emit && isPresent(group)))
|
|
144
|
-
.subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));
|
|
145
|
-
const handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ dataItem }) => isPresent(dataItem)))
|
|
146
|
-
.subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));
|
|
147
|
-
const isInEditedCell = (element, gridElement, isStacked = false) => (closest(element, matchesClasses('k-grid-edit-cell')) || (isStacked && closest(element, matchesClasses('k-grid-stack-edit-cell')))) &&
|
|
148
|
-
closest(element, matchesNodeName('kendo-grid')) === gridElement;
|
|
149
|
-
const NOTIFY_DELAY = 500;
|
|
150
|
-
/**
|
|
151
|
-
* Represents the Kendo UI for Angular Data Grid component.
|
|
152
|
-
*
|
|
153
|
-
* Use the `kendo-grid` component to display and manage tabular data.
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```html
|
|
157
|
-
* <kendo-grid [data]="gridData"></kendo-grid>
|
|
158
|
-
* ```
|
|
159
|
-
*
|
|
160
|
-
* @remarks
|
|
161
|
-
* Supported children components are:
|
|
162
|
-
* {@link CheckboxColumnComponent},
|
|
163
|
-
* {@link ColumnChooserComponent},
|
|
164
|
-
* {@link ColumnComponent},
|
|
165
|
-
* {@link ColumnGroupComponent},
|
|
166
|
-
* {@link ColumnMenuAutoSizeAllColumnsComponent},
|
|
167
|
-
* {@link ColumnMenuAutoSizeColumnComponent},
|
|
168
|
-
* {@link ColumnMenuChooserComponent},
|
|
169
|
-
* {@link ColumnMenuComponent},
|
|
170
|
-
* {@link ColumnMenuFilterComponent},
|
|
171
|
-
* {@link ColumnMenuItemComponent},
|
|
172
|
-
* {@link ColumnMenuLockComponent},
|
|
173
|
-
* {@link ColumnMenuPositionComponent},
|
|
174
|
-
* {@link ColumnMenuSortComponent},
|
|
175
|
-
* {@link ColumnMenuStickComponent},
|
|
176
|
-
* {@link CommandColumnComponent},
|
|
177
|
-
* {@link CustomMessagesComponent},
|
|
178
|
-
* {@link ExcelComponent},
|
|
179
|
-
* {@link GridSpacerComponent},
|
|
180
|
-
* {@link PDFComponent},
|
|
181
|
-
* {@link RowReorderColumnComponent},
|
|
182
|
-
* {@link SpanColumnComponent},
|
|
183
|
-
* {@link ToolBarComponent}.
|
|
184
|
-
*/
|
|
185
|
-
export class GridComponent {
|
|
186
|
-
supportService;
|
|
187
|
-
selectionService;
|
|
188
|
-
cellSelectionService;
|
|
189
|
-
wrapper;
|
|
190
|
-
groupInfoService;
|
|
191
|
-
groupsService;
|
|
192
|
-
changeNotification;
|
|
193
|
-
detailsService;
|
|
194
|
-
editService;
|
|
195
|
-
filterService;
|
|
196
|
-
pdfService;
|
|
197
|
-
responsiveService;
|
|
198
|
-
renderer;
|
|
199
|
-
excelService;
|
|
200
|
-
ngZone;
|
|
201
|
-
scrollSyncService;
|
|
202
|
-
domEvents;
|
|
203
|
-
columnResizingService;
|
|
204
|
-
changeDetectorRef;
|
|
205
|
-
columnReorderService;
|
|
206
|
-
columnInfoService;
|
|
207
|
-
navigationService;
|
|
208
|
-
sortService;
|
|
209
|
-
scrollRequestService;
|
|
210
|
-
localization;
|
|
211
|
-
ctx;
|
|
212
|
-
sizingService;
|
|
213
|
-
adaptiveGridService;
|
|
214
|
-
rowReorderService;
|
|
215
|
-
dataMappingService;
|
|
216
|
-
aiRequestResponseService;
|
|
217
|
-
idService;
|
|
218
|
-
/**
|
|
219
|
-
* Sets the data of the Grid. If you provide an array, the Grid gets the total count automatically.
|
|
220
|
-
* ([more information and example]({% slug binding_grid %})).
|
|
221
|
-
*/
|
|
222
|
-
set data(value) {
|
|
223
|
-
this._data = value;
|
|
224
|
-
if (this.selectable && this.selectableSettings?.enabled && this.isVirtual) {
|
|
225
|
-
this.blockArrowSelection = false;
|
|
226
|
-
}
|
|
227
|
-
if (this.notifyTimeout) {
|
|
228
|
-
clearTimeout(this.notifyTimeout);
|
|
229
|
-
this.notifyTimeout = null;
|
|
230
|
-
}
|
|
231
|
-
if (this.rowReorderable) {
|
|
232
|
-
this.ngZone.runOutsideAngular(() => {
|
|
233
|
-
this.notifyTimeout = setTimeout(() => {
|
|
234
|
-
this.notifyReorderContainers();
|
|
235
|
-
}, NOTIFY_DELAY);
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
get data() {
|
|
240
|
-
return this._data;
|
|
241
|
-
}
|
|
242
|
-
get hintText() {
|
|
243
|
-
return this.rowReorderService.getDefaultHintText(this.columnList, this.flatData);
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* @hidden
|
|
247
|
-
*/
|
|
248
|
-
get customHintTemplate() {
|
|
249
|
-
if (this.rowReorderable) {
|
|
250
|
-
const allColumns = this.columnList.toArray();
|
|
251
|
-
const rowReorderColumn = allColumns.find(column => column.isRowReorderColumn);
|
|
252
|
-
return rowReorderColumn.rowDragHintTemplateRef;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* @hidden
|
|
257
|
-
*/
|
|
258
|
-
get hintContext() {
|
|
259
|
-
if (this.customHintTemplate) {
|
|
260
|
-
const draggedRow = this.rowReorderService?.getDraggedRow(this.flatData);
|
|
261
|
-
return {
|
|
262
|
-
$implicit: draggedRow?.dataItem,
|
|
263
|
-
rowIndex: draggedRow?.rowIndex
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Defines the page size used by the Grid pager.
|
|
269
|
-
* Required for the [`paging`]({% slug paging_grid %}) feature.
|
|
270
|
-
*/
|
|
271
|
-
pageSize;
|
|
272
|
-
/**
|
|
273
|
-
* Defines the height in pixels for the Grid when `scrollable` is set.
|
|
274
|
-
* You can also set the height using `style.height` with units like `px`, `%`, `em`, or `rem`.
|
|
275
|
-
*/
|
|
276
|
-
height;
|
|
277
|
-
/**
|
|
278
|
-
* Sets the `style.height` attribute of each Grid data or group header/footer row (`tr`) element in the DOM in pixels.
|
|
279
|
-
* If some row cells have content that requires more space, the row automatically expands to fit the content.
|
|
280
|
-
*/
|
|
281
|
-
rowHeight;
|
|
282
|
-
/**
|
|
283
|
-
* Enables or disables adaptive mode. Adaptive rendering is off by default.
|
|
284
|
-
*
|
|
285
|
-
* @default 'none'
|
|
286
|
-
*/
|
|
287
|
-
adaptiveMode = 'none';
|
|
288
|
-
/**
|
|
289
|
-
* Sets the `style.height` attribute of each Grid detail row (`tr.k-detail-row`) element in the DOM in pixels.
|
|
290
|
-
* If the detail row has content that requires more space, the row automatically expands to fit the content.
|
|
291
|
-
*/
|
|
292
|
-
detailRowHeight;
|
|
293
|
-
/**
|
|
294
|
-
* Defines the number of records to skip in the pager.
|
|
295
|
-
* Required for the [`paging`]({% slug paging_grid %}) feature.
|
|
296
|
-
*/
|
|
297
|
-
get skip() {
|
|
298
|
-
return this._skip;
|
|
299
|
-
}
|
|
300
|
-
set skip(value) {
|
|
301
|
-
if (typeof value === 'number' && value >= 0) {
|
|
302
|
-
this._skip = this.rowReorderService.skip = value;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Defines the scroll mode for the Grid.
|
|
307
|
-
*
|
|
308
|
-
* @default 'scrollable'
|
|
309
|
-
*/
|
|
310
|
-
scrollable = 'scrollable';
|
|
311
|
-
/**
|
|
312
|
-
* Enables the selection feature of the Grid. The `selectable` property can be set to `true`, `false`, or an object with additional settings.
|
|
313
|
-
* [See example](slug:grid_row_selection).
|
|
314
|
-
*
|
|
315
|
-
* @default false
|
|
316
|
-
*/
|
|
317
|
-
selectable = false;
|
|
318
|
-
/**
|
|
319
|
-
* Sets the descriptors for sorting the data ([see example](slug:manual_sorting_grid)).
|
|
320
|
-
*/
|
|
321
|
-
set sort(value) {
|
|
322
|
-
if (isArray(value)) {
|
|
323
|
-
this._sort = value;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
get sort() {
|
|
327
|
-
return this._sort;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Specifies the sizing for Grid elements like tables, buttons, and inputs.
|
|
331
|
-
*
|
|
332
|
-
* @default 'medium'
|
|
333
|
-
*/
|
|
334
|
-
set size(size) {
|
|
335
|
-
this._size = size;
|
|
336
|
-
if (size === 'none') {
|
|
337
|
-
this.wrapper.nativeElement.classList.remove('k-grid-sm', 'k-grid-md');
|
|
338
|
-
}
|
|
339
|
-
this.sizingService.changes.next(this.size);
|
|
340
|
-
}
|
|
341
|
-
get size() {
|
|
342
|
-
return this._size;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* A function that defines how to track changes for the data rows.
|
|
346
|
-
* By default, the Grid tracks changes by the index of the data item.
|
|
347
|
-
* Edited rows are tracked by reference.
|
|
348
|
-
* [See example](slug:track_changes_grid).
|
|
349
|
-
*/
|
|
350
|
-
trackBy = defaultTrackBy;
|
|
351
|
-
/**
|
|
352
|
-
* Sets the filter descriptor for the data ([see examples](slug:manual_filtering_grid)).
|
|
353
|
-
*/
|
|
354
|
-
filter;
|
|
355
|
-
/**
|
|
356
|
-
* Sets the descriptors for grouping the data ([see example](slug:manual_grouping_grid)).
|
|
357
|
-
*/
|
|
358
|
-
set group(value) {
|
|
359
|
-
if (isArray(value)) {
|
|
360
|
-
this._group = value;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
get group() {
|
|
364
|
-
return this._group;
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* If `true`, renders only columns in the current viewport.
|
|
368
|
-
*
|
|
369
|
-
* @default false
|
|
370
|
-
*/
|
|
371
|
-
virtualColumns = false;
|
|
372
|
-
/**
|
|
373
|
-
* @hidden
|
|
374
|
-
*/
|
|
375
|
-
get showStatusBar() {
|
|
376
|
-
return !!(this.selectable);
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* @hidden
|
|
380
|
-
*/
|
|
381
|
-
get showTopToolbar() {
|
|
382
|
-
return this.toolbarTemplate && ['top', 'both'].indexOf(this.toolbarTemplate.position) > -1;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* @hidden
|
|
386
|
-
*/
|
|
387
|
-
get showBottomToolbar() {
|
|
388
|
-
return this.toolbarTemplate && ['bottom', 'both'].indexOf(this.toolbarTemplate.position) > -1;
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* @hidden
|
|
392
|
-
*/
|
|
393
|
-
get isLocked() {
|
|
394
|
-
return (this.lockedLeafColumns.length > 0 && !this.isStacked);
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* @hidden
|
|
398
|
-
*/
|
|
399
|
-
get showTopPager() {
|
|
400
|
-
const position = this.pageable.position;
|
|
401
|
-
return this.pageable !== false && ['top', 'both'].indexOf(position) > -1;
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* @hidden
|
|
405
|
-
*/
|
|
406
|
-
get showBottomPager() {
|
|
407
|
-
const position = this.pageable.position;
|
|
408
|
-
return this.pageable !== false && position !== 'top';
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* @hidden
|
|
412
|
-
*/
|
|
413
|
-
get hasPager() {
|
|
414
|
-
return this.showTopPager || this.showBottomPager;
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* @hidden
|
|
418
|
-
*/
|
|
419
|
-
get showGroupPanel() {
|
|
420
|
-
const isGroupable = this.groupable && this.groupable.enabled !== false;
|
|
421
|
-
const isGrouped = this.group?.length > 0;
|
|
422
|
-
return this.isStacked ? isGroupable && isGrouped : isGroupable;
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* @hidden
|
|
426
|
-
*/
|
|
427
|
-
get groupableEmptyText() {
|
|
428
|
-
return this.groupable.emptyText;
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* @hidden
|
|
432
|
-
*/
|
|
433
|
-
get marqueeSelection() {
|
|
434
|
-
return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* @hidden
|
|
438
|
-
*/
|
|
439
|
-
get isAdaptiveModeEnabled() {
|
|
440
|
-
return this.adaptiveMode === 'auto';
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* @hidden
|
|
444
|
-
*
|
|
445
|
-
* The `isOpen` property is used to determine if a Grid Popup or ActionSheet is open.
|
|
446
|
-
*/
|
|
447
|
-
get isOpen() {
|
|
448
|
-
return isPresent(this.adaptiveGridService.popupRef) || this.isActionSheetExpanded;
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* @hidden
|
|
452
|
-
*/
|
|
453
|
-
get isActionSheetExpanded() {
|
|
454
|
-
return Boolean(this.adaptiveRenderer?.actionSheet?.expanded);
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
457
|
-
* @hidden
|
|
458
|
-
*/
|
|
459
|
-
gridData = () => { return this.flatData; };
|
|
460
|
-
/**
|
|
461
|
-
* Enables the [filtering](slug:filtering_grid) feature of the Grid for columns with a `field` option.
|
|
462
|
-
*
|
|
463
|
-
* @default false
|
|
464
|
-
*/
|
|
465
|
-
filterable = false;
|
|
466
|
-
/**
|
|
467
|
-
* Enables [sorting]({% slug sorting_grid %}) feature of the Grid for columns with a `field` option.
|
|
468
|
-
* @default false
|
|
469
|
-
*/
|
|
470
|
-
sortable = false;
|
|
471
|
-
/**
|
|
472
|
-
* Configures the Grid pager ([see example](slug:paging_grid_settings)).
|
|
473
|
-
* @default false
|
|
474
|
-
*/
|
|
475
|
-
pageable = false;
|
|
476
|
-
get normalizedPageableSettings() {
|
|
477
|
-
return normalize(this.pageable);
|
|
478
|
-
}
|
|
479
|
-
/**
|
|
480
|
-
* If `true`, allows grouping by dragging column headers ([see example]({% slug grouping_grid %})).
|
|
481
|
-
*
|
|
482
|
-
* @default false
|
|
483
|
-
*/
|
|
484
|
-
groupable = false;
|
|
485
|
-
/**
|
|
486
|
-
* Determines if the Grid can be resized.
|
|
487
|
-
*
|
|
488
|
-
* @default false
|
|
489
|
-
*/
|
|
490
|
-
gridResizable = false;
|
|
491
|
-
/**
|
|
492
|
-
* Enables row reordering feature of the Grid ([see example]({% slug reordering_rows_grid %})).
|
|
493
|
-
*
|
|
494
|
-
* @default false
|
|
495
|
-
*/
|
|
496
|
-
set rowReorderable(value) {
|
|
497
|
-
this._rowReorderable = value;
|
|
498
|
-
if (value) {
|
|
499
|
-
this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
|
|
500
|
-
this.ngZone.run(() => {
|
|
501
|
-
this.rowReorder.emit(args);
|
|
502
|
-
});
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
this.rowReorderSubscription?.unsubscribe();
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
get rowReorderable() {
|
|
510
|
-
return this._rowReorderable;
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* By default, navigation is enabled. To disable, set to `false`.
|
|
514
|
-
* To enable navigation for specific sections, provide a [`GridNavigableSection`](slug:api_grid_gridnavigablesection).
|
|
515
|
-
*/
|
|
516
|
-
set navigable(value) {
|
|
517
|
-
if (typeof value === 'boolean') {
|
|
518
|
-
this._navigable = value ? ['table', 'pager', 'toolbar'] : [];
|
|
519
|
-
this.ctx.navigable = value;
|
|
520
|
-
return;
|
|
521
|
-
}
|
|
522
|
-
else {
|
|
523
|
-
this.ctx.navigable = value.includes('table');
|
|
524
|
-
}
|
|
525
|
-
this._navigable = value;
|
|
526
|
-
}
|
|
527
|
-
get navigable() {
|
|
528
|
-
return this._navigable;
|
|
529
|
-
}
|
|
530
|
-
/**
|
|
531
|
-
* If `true`, resizes columns during initialization to fit headers and content.
|
|
532
|
-
* Columns with `autoSize` set to `false` are excluded.
|
|
533
|
-
* [See example](slug:resizing_columns_grid).
|
|
534
|
-
*
|
|
535
|
-
* @default false
|
|
536
|
-
*/
|
|
537
|
-
autoSize = false;
|
|
538
|
-
/**
|
|
539
|
-
* Sets a function to apply custom CSS classes to each data row ([see example](slug:styling_grid_rows)).
|
|
540
|
-
*/
|
|
541
|
-
set rowClass(fn) {
|
|
542
|
-
if (isDevMode() && typeof fn !== 'function') {
|
|
543
|
-
throw new Error(GridConfigurationErrorMessages.functionType('rowClass', fn));
|
|
544
|
-
}
|
|
545
|
-
this._rowClass = fn;
|
|
546
|
-
}
|
|
547
|
-
get rowClass() {
|
|
548
|
-
return this._rowClass;
|
|
549
|
-
}
|
|
550
|
-
/**
|
|
551
|
-
* Sets a function to determine if a data row is sticky (always visible after scrolling).
|
|
552
|
-
*/
|
|
553
|
-
set rowSticky(fn) {
|
|
554
|
-
if (isDevMode() && isPresent(fn) && typeof fn !== 'function') {
|
|
555
|
-
throw new Error(GridConfigurationErrorMessages.functionType('rowSticky', fn));
|
|
556
|
-
}
|
|
557
|
-
if (isPresent(fn)) {
|
|
558
|
-
this._rowSticky = fn;
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
get rowSticky() {
|
|
562
|
-
return this._rowSticky;
|
|
563
|
-
}
|
|
564
|
-
/**
|
|
565
|
-
* Sets a function to determine if a data row is selected ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-rows)).
|
|
566
|
-
*/
|
|
567
|
-
set rowSelected(fn) {
|
|
568
|
-
if (isDevMode() && typeof fn !== 'function') {
|
|
569
|
-
throw new Error(GridConfigurationErrorMessages.functionType('rowSelected', fn));
|
|
570
|
-
}
|
|
571
|
-
this._rowSelected = fn;
|
|
572
|
-
}
|
|
573
|
-
get rowSelected() {
|
|
574
|
-
return this._rowSelected;
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Sets a function to determine if a data row is selectable.
|
|
578
|
-
*/
|
|
579
|
-
set isRowSelectable(fn) {
|
|
580
|
-
if (isDevMode() && typeof fn !== 'function') {
|
|
581
|
-
throw new Error(GridConfigurationErrorMessages.functionType('isRowSelectable', fn));
|
|
582
|
-
}
|
|
583
|
-
this._isRowSelectable = fn;
|
|
584
|
-
}
|
|
585
|
-
get isRowSelectable() {
|
|
586
|
-
return this._isRowSelectable;
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* Sets a function to determine if a data cell is selected.
|
|
590
|
-
* The function returns an object with `selected` and `item` properties ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-cells)).
|
|
591
|
-
*/
|
|
592
|
-
set cellSelected(fn) {
|
|
593
|
-
if (isDevMode() && typeof fn !== 'function') {
|
|
594
|
-
throw new Error(GridConfigurationErrorMessages.functionType('cellSelected', fn));
|
|
595
|
-
}
|
|
596
|
-
this._cellSelected = fn;
|
|
597
|
-
}
|
|
598
|
-
get cellSelected() {
|
|
599
|
-
return this._cellSelected;
|
|
600
|
-
}
|
|
601
|
-
/**
|
|
602
|
-
* Returns the currently focused cell (if any).
|
|
603
|
-
*/
|
|
604
|
-
get activeCell() {
|
|
605
|
-
return this.navigationService.activeCell;
|
|
606
|
-
}
|
|
607
|
-
/**
|
|
608
|
-
* Returns the currently focused row (if any).
|
|
609
|
-
*/
|
|
610
|
-
get activeRow() {
|
|
611
|
-
return this.navigationService.activeRow;
|
|
612
|
-
}
|
|
613
|
-
/**
|
|
614
|
-
* Returns the current Grid selection.
|
|
615
|
-
*
|
|
616
|
-
* @hidden
|
|
617
|
-
*/
|
|
618
|
-
get selection() {
|
|
619
|
-
return (this.selectable || this.selectionDirective) ?
|
|
620
|
-
this.defaultSelection ? this.defaultSelection.stateToArray() : this.selectionDirective.stateToArray() :
|
|
621
|
-
[];
|
|
622
|
-
}
|
|
623
|
-
/**
|
|
624
|
-
* Gets the current `GridState`, including data operations and column state.
|
|
625
|
-
* Use this to store and restore the Grid state.
|
|
626
|
-
*/
|
|
627
|
-
get currentState() {
|
|
628
|
-
return {
|
|
629
|
-
filter: this.filter,
|
|
630
|
-
group: this.group,
|
|
631
|
-
sort: this.sort,
|
|
632
|
-
skip: this.skip,
|
|
633
|
-
take: this.pageSize,
|
|
634
|
-
columnsState: this.columns.toArray().flatMap(recursiveColumnsFlatMap),
|
|
635
|
-
currentData: structuredClone(this.data)
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
/**
|
|
639
|
-
* If `true`, allows resizing columns by dragging header cell edges ([see example]({% slug resizing_columns_grid %})).
|
|
640
|
-
*
|
|
641
|
-
* @default false
|
|
642
|
-
*/
|
|
643
|
-
resizable = false;
|
|
644
|
-
/**
|
|
645
|
-
* If `true`, allows reordering columns by dragging header cells ([see example]({% slug reordering_columns_grid %})).
|
|
646
|
-
*
|
|
647
|
-
* @default false
|
|
648
|
-
*/
|
|
649
|
-
reorderable = false;
|
|
650
|
-
/**
|
|
651
|
-
* If `true`, displays the Grid loading indicator ([see example]({% slug binding_grid %})).
|
|
652
|
-
*
|
|
653
|
-
* @default false
|
|
654
|
-
*/
|
|
655
|
-
set loading(value) {
|
|
656
|
-
this._loading = value;
|
|
657
|
-
this.rowReorderable && this.notifyReorderContainers();
|
|
658
|
-
}
|
|
659
|
-
get loading() {
|
|
660
|
-
return this._loading;
|
|
661
|
-
}
|
|
662
|
-
/**
|
|
663
|
-
* If `true`, displays the column menu for columns ([see example]({% slug columnmenu_grid %})).
|
|
664
|
-
*
|
|
665
|
-
* @default false
|
|
666
|
-
*/
|
|
667
|
-
columnMenu = false;
|
|
668
|
-
/**
|
|
669
|
-
* If `true`, hides the Grid header. The header is visible by default.
|
|
670
|
-
* The header includes column headers and the [filter row](slug:filter_row).
|
|
671
|
-
*
|
|
672
|
-
* @default false
|
|
673
|
-
*/
|
|
674
|
-
hideHeader = false;
|
|
675
|
-
/**
|
|
676
|
-
* Specifies if the currently inactive toolbar tools will be visible. Applicable when the toolbar is configured using the `<kendo-toolbar>` component. By default, such tools are hidden.
|
|
677
|
-
*
|
|
678
|
-
* @default false
|
|
679
|
-
*/
|
|
680
|
-
showInactiveTools = false;
|
|
681
|
-
/**
|
|
682
|
-
* Sets a function to determine if a specific row is expanded.
|
|
683
|
-
*/
|
|
684
|
-
set isDetailExpanded(callback) {
|
|
685
|
-
this.detailsService.userCallback = callback;
|
|
686
|
-
}
|
|
687
|
-
get isDetailExpanded() {
|
|
688
|
-
return this.detailsService.userCallback;
|
|
689
|
-
}
|
|
690
|
-
/**
|
|
691
|
-
* Sets a function to determine if a specific group row is expanded.
|
|
692
|
-
*/
|
|
693
|
-
set isGroupExpanded(callback) {
|
|
694
|
-
this.groupsService.userCallback = callback;
|
|
695
|
-
this.groupable = isPresent(callback);
|
|
696
|
-
}
|
|
697
|
-
get isGroupExpanded() {
|
|
698
|
-
return this.groupsService.userCallback;
|
|
699
|
-
}
|
|
700
|
-
/**
|
|
701
|
-
* Sets the Grid data layout display mode.
|
|
702
|
-
*
|
|
703
|
-
* @default 'columns'
|
|
704
|
-
*/
|
|
705
|
-
dataLayoutMode = 'columns';
|
|
706
|
-
/**
|
|
707
|
-
* Fires when the Grid data is filtered through the UI and the filter descriptor changes.
|
|
708
|
-
*/
|
|
709
|
-
filterChange = new EventEmitter();
|
|
710
|
-
/**
|
|
711
|
-
* Fires when the page is changed through the UI ([see example]({% slug paging_grid %})).
|
|
712
|
-
*/
|
|
713
|
-
pageChange = new EventEmitter();
|
|
714
|
-
/**
|
|
715
|
-
* Fires when the Grid data is grouped through the UI and the group descriptors change ([see example]({% slug grouping_grid %})).
|
|
716
|
-
*/
|
|
717
|
-
groupChange;
|
|
718
|
-
/**
|
|
719
|
-
* Fires when the Grid data is sorted through the UI and the sort descriptors change ([see example]({% slug sorting_grid %})).
|
|
720
|
-
*/
|
|
721
|
-
sortChange = new EventEmitter();
|
|
722
|
-
/**
|
|
723
|
-
* Fires when the Grid selection changes through the UI.
|
|
724
|
-
*/
|
|
725
|
-
selectionChange = new EventEmitter();
|
|
726
|
-
/**
|
|
727
|
-
* Fires when a row is reordered through the UI.
|
|
728
|
-
*/
|
|
729
|
-
rowReorder = new EventEmitter();
|
|
730
|
-
/**
|
|
731
|
-
* Fires when the data state of the Grid is changed.
|
|
732
|
-
*/
|
|
733
|
-
dataStateChange = new EventEmitter();
|
|
734
|
-
/**
|
|
735
|
-
* Fires when the data or columns state of the Grid is changed.
|
|
736
|
-
*/
|
|
737
|
-
gridStateChange = new EventEmitter();
|
|
738
|
-
/**
|
|
739
|
-
* Fires when a group is expanded through the UI.
|
|
740
|
-
*/
|
|
741
|
-
groupExpand = new EventEmitter();
|
|
742
|
-
/**
|
|
743
|
-
* Fires when a group is collapsed through the UI.
|
|
744
|
-
*/
|
|
745
|
-
groupCollapse = new EventEmitter();
|
|
746
|
-
/**
|
|
747
|
-
* Fires when a detail row is expanded through the UI.
|
|
748
|
-
*/
|
|
749
|
-
detailExpand = new EventEmitter();
|
|
750
|
-
/**
|
|
751
|
-
* Fires when a detail row is collapsed through the UI.
|
|
752
|
-
*/
|
|
753
|
-
detailCollapse = new EventEmitter();
|
|
754
|
-
/**
|
|
755
|
-
* Fires when a row enters edit mode ([see example](slug:inline_editing_grid#editing-records-1)).
|
|
756
|
-
*/
|
|
757
|
-
edit = new EventEmitter();
|
|
758
|
-
/**
|
|
759
|
-
* Fires when editing is canceled by clicking the **Cancel** command button ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).
|
|
760
|
-
*/
|
|
761
|
-
cancel = new EventEmitter();
|
|
762
|
-
/**
|
|
763
|
-
* Fires when a row is saved by clicking the **Save** command button ([see example]({% slug inline_editing_grid %}#toc-saving-records-1)).
|
|
764
|
-
*/
|
|
765
|
-
save = new EventEmitter();
|
|
766
|
-
/**
|
|
767
|
-
* Fires when a row is removed by clicking the **Remove** command button ([see example]({% slug inline_editing_grid %}#toc-removing-records-1)).
|
|
768
|
-
*/
|
|
769
|
-
remove = new EventEmitter();
|
|
770
|
-
/**
|
|
771
|
-
* Fires when a new row is added by clicking the **Add** command button ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).
|
|
772
|
-
*/
|
|
773
|
-
add = new EventEmitter();
|
|
774
|
-
/**
|
|
775
|
-
* Fires when a cell edit is closed ([see example](slug:editing_incell_grid)).
|
|
776
|
-
*/
|
|
777
|
-
cellClose = new EventEmitter();
|
|
778
|
-
/**
|
|
779
|
-
* Fires when a cell is clicked ([see example](slug:editing_incell_grid)).
|
|
780
|
-
*/
|
|
781
|
-
cellClick;
|
|
782
|
-
/**
|
|
783
|
-
* Fires when the PDF export command is triggered.
|
|
784
|
-
*/
|
|
785
|
-
pdfExport = new EventEmitter();
|
|
786
|
-
/**
|
|
787
|
-
* Fires when the Excel export command is triggered.
|
|
788
|
-
*/
|
|
789
|
-
excelExport = new EventEmitter();
|
|
790
|
-
/**
|
|
791
|
-
* Fires when columns are resized.
|
|
792
|
-
*/
|
|
793
|
-
columnResize;
|
|
794
|
-
/**
|
|
795
|
-
* Fires when columns are reordered.
|
|
796
|
-
*/
|
|
797
|
-
columnReorder = new EventEmitter();
|
|
798
|
-
/**
|
|
799
|
-
* Fires when column visibility changes.
|
|
800
|
-
*/
|
|
801
|
-
columnVisibilityChange = new EventEmitter();
|
|
802
|
-
/**
|
|
803
|
-
* Fires when columns are locked or unlocked.
|
|
804
|
-
*/
|
|
805
|
-
columnLockedChange = new EventEmitter();
|
|
806
|
-
/**
|
|
807
|
-
* Fires when columns are made sticky or unsticky.
|
|
808
|
-
*/
|
|
809
|
-
columnStickyChange = new EventEmitter();
|
|
810
|
-
/**
|
|
811
|
-
* Fires when the last record is scrolled into view ([see example]({% slug scrollmmodes_grid %}#toc-endless-scrolling)).
|
|
812
|
-
*/
|
|
813
|
-
scrollBottom = new EventEmitter();
|
|
814
|
-
/**
|
|
815
|
-
* Fires when the grid content is scrolled.
|
|
816
|
-
* The event is triggered outside the Angular zone for performance. Enter the Angular zone if you make changes that require change detection.
|
|
817
|
-
*/
|
|
818
|
-
contentScroll = new EventEmitter();
|
|
819
|
-
/**
|
|
820
|
-
* A query list of all declared columns.
|
|
821
|
-
*/
|
|
822
|
-
columns = new QueryList();
|
|
823
|
-
get dir() {
|
|
824
|
-
return this.direction;
|
|
825
|
-
}
|
|
826
|
-
hostClass = true;
|
|
827
|
-
get sizeSmallClass() {
|
|
828
|
-
return this.size === 'small';
|
|
829
|
-
}
|
|
830
|
-
get sizeMediumClass() {
|
|
831
|
-
return this.size === 'medium' || !this.size;
|
|
832
|
-
}
|
|
833
|
-
get stackedClass() {
|
|
834
|
-
return this.dataLayoutMode === 'stacked';
|
|
835
|
-
}
|
|
836
|
-
get lockedClasses() {
|
|
837
|
-
return this.lockedLeafColumns.length > 0 && !this.isStacked;
|
|
838
|
-
}
|
|
839
|
-
get virtualClasses() {
|
|
840
|
-
return this.isVirtual;
|
|
841
|
-
}
|
|
842
|
-
get noScrollbarClass() {
|
|
843
|
-
return this.scrollbarWidth === 0;
|
|
844
|
-
}
|
|
845
|
-
get isResizable() {
|
|
846
|
-
return Boolean(this.gridResizable);
|
|
847
|
-
}
|
|
848
|
-
get minWidth() {
|
|
849
|
-
return this.gridResizable.minWidth;
|
|
850
|
-
}
|
|
851
|
-
get maxWidth() {
|
|
852
|
-
return this.gridResizable.maxWidth;
|
|
853
|
-
}
|
|
854
|
-
get minHeight() {
|
|
855
|
-
return this.gridResizable.minHeight;
|
|
856
|
-
}
|
|
857
|
-
get maxHeight() {
|
|
858
|
-
return this.gridResizable.maxHeight;
|
|
859
|
-
}
|
|
860
|
-
detailTemplateChildren;
|
|
861
|
-
get detailTemplate() {
|
|
862
|
-
if (this._customDetailTemplate) {
|
|
863
|
-
return this._customDetailTemplate;
|
|
864
|
-
}
|
|
865
|
-
return this.detailTemplateChildren ? this.detailTemplateChildren.first : undefined;
|
|
866
|
-
}
|
|
867
|
-
set detailTemplate(detailTemplate) {
|
|
868
|
-
this._customDetailTemplate = detailTemplate;
|
|
869
|
-
}
|
|
870
|
-
cellLoadingTemplateChildren;
|
|
871
|
-
get cellLoadingTemplate() {
|
|
872
|
-
if (this._cellLoadingTemplate) {
|
|
873
|
-
return this._cellLoadingTemplate;
|
|
874
|
-
}
|
|
875
|
-
return this.cellLoadingTemplateChildren ? this.cellLoadingTemplateChildren.first : undefined;
|
|
876
|
-
}
|
|
877
|
-
set cellLoadingTemplate(cellLoadingTemplate) {
|
|
878
|
-
this._cellLoadingTemplate = cellLoadingTemplate;
|
|
879
|
-
}
|
|
880
|
-
loadingTemplateChildren;
|
|
881
|
-
get loadingTemplate() {
|
|
882
|
-
if (this._loadingTemplate) {
|
|
883
|
-
return this._loadingTemplate;
|
|
884
|
-
}
|
|
885
|
-
return this.loadingTemplateChildren ? this.loadingTemplateChildren.first : undefined;
|
|
886
|
-
}
|
|
887
|
-
set loadingTemplate(loadingTemplate) {
|
|
888
|
-
this._loadingTemplate = loadingTemplate;
|
|
889
|
-
}
|
|
890
|
-
statusBarTemplateChildren;
|
|
891
|
-
get statusBarTemplate() {
|
|
892
|
-
if (this._statusBarTemplate) {
|
|
893
|
-
return this._statusBarTemplate;
|
|
894
|
-
}
|
|
895
|
-
return this.statusBarTemplateChildren ? this.statusBarTemplateChildren.first : undefined;
|
|
896
|
-
}
|
|
897
|
-
set statusBarTemplate(statusBarTemplate) {
|
|
898
|
-
this._statusBarTemplate = statusBarTemplate;
|
|
899
|
-
}
|
|
900
|
-
noRecordsTemplateChildren;
|
|
901
|
-
get noRecordsTemplate() {
|
|
902
|
-
if (this._customNoRecordsTemplate) {
|
|
903
|
-
return this._customNoRecordsTemplate;
|
|
904
|
-
}
|
|
905
|
-
return this.noRecordsTemplateChildren ? this.noRecordsTemplateChildren.first : undefined;
|
|
906
|
-
}
|
|
907
|
-
set noRecordsTemplate(customNoRecordsTemplate) {
|
|
908
|
-
this._customNoRecordsTemplate = customNoRecordsTemplate;
|
|
909
|
-
}
|
|
910
|
-
pagerTemplateChildren;
|
|
911
|
-
get pagerTemplate() {
|
|
912
|
-
if (this._customPagerTemplate) {
|
|
913
|
-
return this._customPagerTemplate;
|
|
914
|
-
}
|
|
915
|
-
return this.pagerTemplateChildren ? this.pagerTemplateChildren.first : undefined;
|
|
916
|
-
}
|
|
917
|
-
set pagerTemplate(customPagerTemplate) {
|
|
918
|
-
this._customPagerTemplate = customPagerTemplate;
|
|
919
|
-
}
|
|
920
|
-
toolbarTemplateChildren;
|
|
921
|
-
get toolbarTemplate() {
|
|
922
|
-
if (this._customToolbarTemplate) {
|
|
923
|
-
return this._customToolbarTemplate;
|
|
924
|
-
}
|
|
925
|
-
return this.toolbarTemplateChildren ? this.toolbarTemplateChildren.first : undefined;
|
|
926
|
-
}
|
|
927
|
-
set toolbarTemplate(customToolbarTemplate) {
|
|
928
|
-
this._customToolbarTemplate = customToolbarTemplate;
|
|
929
|
-
}
|
|
930
|
-
columnMenuTemplates;
|
|
931
|
-
lockedHeader;
|
|
932
|
-
header;
|
|
933
|
-
footer = new QueryList();
|
|
934
|
-
ariaRoot;
|
|
935
|
-
dragTargetContainer;
|
|
936
|
-
dropTargetContainer;
|
|
937
|
-
dialogContainer;
|
|
938
|
-
windowContainer;
|
|
939
|
-
adaptiveRenderer;
|
|
940
|
-
listComponent;
|
|
941
|
-
get scrollbarWidth() {
|
|
942
|
-
return this.supportService.scrollbarWidth;
|
|
943
|
-
}
|
|
944
|
-
get showPagerInput() {
|
|
945
|
-
return this._showPagerInput;
|
|
946
|
-
}
|
|
947
|
-
set showPagerInput(value) {
|
|
948
|
-
if (this._showPagerInput === value) {
|
|
949
|
-
return;
|
|
950
|
-
}
|
|
951
|
-
this._showPagerInput = value;
|
|
952
|
-
}
|
|
953
|
-
get showPagerPageText() {
|
|
954
|
-
return this._showPagerPageText;
|
|
955
|
-
}
|
|
956
|
-
set showPagerPageText(value) {
|
|
957
|
-
if (!this.normalizedPageableSettings?.responsive) {
|
|
958
|
-
this._showPagerPageText = true;
|
|
959
|
-
}
|
|
960
|
-
if (this._showPagerPageText === value) {
|
|
961
|
-
return;
|
|
962
|
-
}
|
|
963
|
-
this._showPagerPageText = value;
|
|
964
|
-
}
|
|
965
|
-
get showPagerItemsText() {
|
|
966
|
-
return this._showPagerItemsText;
|
|
967
|
-
}
|
|
968
|
-
set showPagerItemsText(value) {
|
|
969
|
-
if (!this.normalizedPageableSettings?.responsive) {
|
|
970
|
-
this._showPagerItemsText = true;
|
|
971
|
-
}
|
|
972
|
-
if (this._showPagerItemsText === value) {
|
|
973
|
-
return;
|
|
974
|
-
}
|
|
975
|
-
this._showPagerItemsText = value;
|
|
976
|
-
}
|
|
977
|
-
get headerPadding() {
|
|
978
|
-
if (isUniversal()) {
|
|
979
|
-
return '';
|
|
980
|
-
}
|
|
981
|
-
const padding = Math.max(0, this.scrollbarWidth) + 'px';
|
|
982
|
-
const right = this.rtl ? 0 : padding;
|
|
983
|
-
const left = this.rtl ? padding : 0;
|
|
984
|
-
return `0 ${right} 0 ${left}`;
|
|
985
|
-
}
|
|
986
|
-
columnMenuOptions;
|
|
987
|
-
columnList;
|
|
988
|
-
selectionDirective = false;
|
|
989
|
-
ariaRootId = `k-${guid()}`;
|
|
990
|
-
showLicenseWatermark = false;
|
|
991
|
-
/**
|
|
992
|
-
* @hidden
|
|
993
|
-
*/
|
|
994
|
-
licenseMessage;
|
|
995
|
-
columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {
|
|
996
|
-
if (!isUniversal()) {
|
|
997
|
-
column.matchesMedia = this.matchesMedia(column);
|
|
998
|
-
}
|
|
999
|
-
return column.isVisible;
|
|
1000
|
-
}));
|
|
1001
|
-
view = new DataCollection(() => new DataResultIterator(this.data, this.skip, this.hasGroupFooters));
|
|
1002
|
-
get hasGroupFooters() {
|
|
1003
|
-
return this.columnsContainer.hasGroupFooter;
|
|
1004
|
-
}
|
|
1005
|
-
get showFooter() {
|
|
1006
|
-
return this.columnsContainer.hasFooter;
|
|
1007
|
-
}
|
|
1008
|
-
get showGroupFooters() {
|
|
1009
|
-
return this.groupable && this.groupable.showFooter;
|
|
1010
|
-
}
|
|
1011
|
-
get ariaRowCount() {
|
|
1012
|
-
return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0);
|
|
1013
|
-
}
|
|
1014
|
-
get ariaColCount() {
|
|
1015
|
-
return this.columnsContainer.leafColumnsToRender.length;
|
|
1016
|
-
}
|
|
1017
|
-
get navigation() {
|
|
1018
|
-
return this.navigationService;
|
|
1019
|
-
}
|
|
1020
|
-
/**
|
|
1021
|
-
* @hidden
|
|
1022
|
-
*/
|
|
1023
|
-
get flatData() {
|
|
1024
|
-
return isArray(this.data) ? this.data : this.data.data;
|
|
1025
|
-
}
|
|
1026
|
-
shouldGenerateColumns = true;
|
|
1027
|
-
direction;
|
|
1028
|
-
notifyTimeout = null;
|
|
1029
|
-
_sort = new Array();
|
|
1030
|
-
_group = new Array();
|
|
1031
|
-
_skip = 0;
|
|
1032
|
-
_data = [];
|
|
1033
|
-
cachedWindowWidth = 0;
|
|
1034
|
-
defaultSelection;
|
|
1035
|
-
_rowSelected = null;
|
|
1036
|
-
_isRowSelectable = null;
|
|
1037
|
-
_cellSelected = null;
|
|
1038
|
-
_customDetailTemplate;
|
|
1039
|
-
_cellLoadingTemplate;
|
|
1040
|
-
_loadingTemplate;
|
|
1041
|
-
_statusBarTemplate;
|
|
1042
|
-
_customNoRecordsTemplate;
|
|
1043
|
-
_customPagerTemplate;
|
|
1044
|
-
_customToolbarTemplate;
|
|
1045
|
-
_rowReorderable = false;
|
|
1046
|
-
leafViewportColumns;
|
|
1047
|
-
viewportColumns;
|
|
1048
|
-
_navigable = ['table', 'pager', 'toolbar'];
|
|
1049
|
-
_size = 'medium';
|
|
1050
|
-
_loading = false;
|
|
1051
|
-
_showPagerInput = true;
|
|
1052
|
-
_showPagerPageText = true;
|
|
1053
|
-
_showPagerItemsText = true;
|
|
1054
|
-
get isVirtual() {
|
|
1055
|
-
return this.scrollable === 'virtual';
|
|
1056
|
-
}
|
|
1057
|
-
get isScrollable() {
|
|
1058
|
-
return this.scrollable !== 'none';
|
|
1059
|
-
}
|
|
1060
|
-
/**
|
|
1061
|
-
* @hidden
|
|
1062
|
-
*/
|
|
1063
|
-
get isStacked() {
|
|
1064
|
-
return typeof this.dataLayoutMode === 'string' ? this.dataLayoutMode !== 'columns' : this.dataLayoutMode.mode !== 'columns';
|
|
1065
|
-
}
|
|
1066
|
-
get visibleColumns() {
|
|
1067
|
-
return this.columnsContainer.allColumns;
|
|
1068
|
-
}
|
|
1069
|
-
get lockedColumns() {
|
|
1070
|
-
return this.columnsContainer.lockedColumns;
|
|
1071
|
-
}
|
|
1072
|
-
get nonLockedColumns() {
|
|
1073
|
-
return this.columnsContainer.nonLockedColumns;
|
|
1074
|
-
}
|
|
1075
|
-
get lockedLeafColumns() {
|
|
1076
|
-
return this.columnsContainer.lockedLeafColumns;
|
|
1077
|
-
}
|
|
1078
|
-
get stickyColumns() {
|
|
1079
|
-
return this.columns.filter(column => column.sticky);
|
|
1080
|
-
}
|
|
1081
|
-
get nonLockedLeafColumns() {
|
|
1082
|
-
return this.columnsContainer.nonLockedLeafColumns;
|
|
1083
|
-
}
|
|
1084
|
-
get leafColumns() {
|
|
1085
|
-
return this.columnsContainer.leafColumns;
|
|
1086
|
-
}
|
|
1087
|
-
get totalColumnLevels() {
|
|
1088
|
-
return this.columnsContainer.totalLevels;
|
|
1089
|
-
}
|
|
1090
|
-
get headerColumns() {
|
|
1091
|
-
if (this.virtualColumns && !this.pdfService.exporting) {
|
|
1092
|
-
return this.viewportColumns;
|
|
1093
|
-
}
|
|
1094
|
-
return this.nonLockedColumns;
|
|
1095
|
-
}
|
|
1096
|
-
get headerLeafColumns() {
|
|
1097
|
-
if (this.virtualColumns && !this.pdfService.exporting) {
|
|
1098
|
-
return this.leafViewportColumns;
|
|
1099
|
-
}
|
|
1100
|
-
return this.nonLockedLeafColumns;
|
|
1101
|
-
}
|
|
1102
|
-
get lockedWidth() {
|
|
1103
|
-
if (this.isStacked) {
|
|
1104
|
-
return 0;
|
|
1105
|
-
}
|
|
1106
|
-
const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;
|
|
1107
|
-
return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);
|
|
1108
|
-
}
|
|
1109
|
-
get nonLockedWidth() {
|
|
1110
|
-
if (((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) && !this.isStacked) {
|
|
1111
|
-
return !this.virtualColumns ? this.columnsContainer.unlockedWidth :
|
|
1112
|
-
this.leafViewportColumns.reduce((acc, column) => acc + (column.width || 0), 0);
|
|
1113
|
-
}
|
|
1114
|
-
return undefined;
|
|
1115
|
-
}
|
|
1116
|
-
get selectableSettings() {
|
|
1117
|
-
if (this.selectionService) {
|
|
1118
|
-
return this.selectionService.options;
|
|
1119
|
-
}
|
|
1120
|
-
return undefined;
|
|
1121
|
-
}
|
|
1122
|
-
get columnMenuTemplate() {
|
|
1123
|
-
const template = this.columnMenuTemplates.first;
|
|
1124
|
-
return template ? template.templateRef : null;
|
|
1125
|
-
}
|
|
1126
|
-
get totalCount() {
|
|
1127
|
-
if (this.isVirtual || !isPresent(this.pageSize)) {
|
|
1128
|
-
return this.view.total;
|
|
1129
|
-
}
|
|
1130
|
-
return this.pageSize;
|
|
1131
|
-
}
|
|
1132
|
-
/**
|
|
1133
|
-
* @hidden
|
|
1134
|
-
*/
|
|
1135
|
-
getDefaultSelectors(type) {
|
|
1136
|
-
return this.rowReorderService.defaultSelectors(this.isStacked)[type];
|
|
1137
|
-
}
|
|
1138
|
-
/**
|
|
1139
|
-
* @hidden
|
|
1140
|
-
*/
|
|
1141
|
-
getHintSettings(type) {
|
|
1142
|
-
return this.rowReorderService[type];
|
|
1143
|
-
}
|
|
1144
|
-
/**
|
|
1145
|
-
* @hidden
|
|
1146
|
-
*/
|
|
1147
|
-
blockArrowSelection = false;
|
|
1148
|
-
undoRedoService;
|
|
1149
|
-
rowsToRender;
|
|
1150
|
-
selectionSubscription;
|
|
1151
|
-
stateChangeSubscription;
|
|
1152
|
-
groupExpandCollapseSubscription;
|
|
1153
|
-
editServiceSubscription;
|
|
1154
|
-
detailsServiceSubscription;
|
|
1155
|
-
filterSubscription;
|
|
1156
|
-
sortSubscription;
|
|
1157
|
-
columnsChangeSubscription;
|
|
1158
|
-
pdfSubscription;
|
|
1159
|
-
excelSubscription;
|
|
1160
|
-
columnsContainerChangeSubscription;
|
|
1161
|
-
cellClickSubscription;
|
|
1162
|
-
footerChangeSubscription;
|
|
1163
|
-
columnResizingSubscription;
|
|
1164
|
-
columnReorderSubscription;
|
|
1165
|
-
detachElementEventHandlers;
|
|
1166
|
-
localizationSubscription;
|
|
1167
|
-
columnVisibilityChangeSubscription;
|
|
1168
|
-
columnLockedChangeSubscription;
|
|
1169
|
-
columnStickyChangeSubscription;
|
|
1170
|
-
focusElementSubscription;
|
|
1171
|
-
columnRangeChangeSubscription;
|
|
1172
|
-
rowReorderSubscription;
|
|
1173
|
-
rtl = false;
|
|
1174
|
-
_rowSticky;
|
|
1175
|
-
constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, adaptiveGridService, rowReorderService, dataMappingService, aiRequestResponseService, idService) {
|
|
1176
|
-
this.supportService = supportService;
|
|
1177
|
-
this.selectionService = selectionService;
|
|
1178
|
-
this.cellSelectionService = cellSelectionService;
|
|
1179
|
-
this.wrapper = wrapper;
|
|
1180
|
-
this.groupInfoService = groupInfoService;
|
|
1181
|
-
this.groupsService = groupsService;
|
|
1182
|
-
this.changeNotification = changeNotification;
|
|
1183
|
-
this.detailsService = detailsService;
|
|
1184
|
-
this.editService = editService;
|
|
1185
|
-
this.filterService = filterService;
|
|
1186
|
-
this.pdfService = pdfService;
|
|
1187
|
-
this.responsiveService = responsiveService;
|
|
1188
|
-
this.renderer = renderer;
|
|
1189
|
-
this.excelService = excelService;
|
|
1190
|
-
this.ngZone = ngZone;
|
|
1191
|
-
this.scrollSyncService = scrollSyncService;
|
|
1192
|
-
this.domEvents = domEvents;
|
|
1193
|
-
this.columnResizingService = columnResizingService;
|
|
1194
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
1195
|
-
this.columnReorderService = columnReorderService;
|
|
1196
|
-
this.columnInfoService = columnInfoService;
|
|
1197
|
-
this.navigationService = navigationService;
|
|
1198
|
-
this.sortService = sortService;
|
|
1199
|
-
this.scrollRequestService = scrollRequestService;
|
|
1200
|
-
this.localization = localization;
|
|
1201
|
-
this.ctx = ctx;
|
|
1202
|
-
this.sizingService = sizingService;
|
|
1203
|
-
this.adaptiveGridService = adaptiveGridService;
|
|
1204
|
-
this.rowReorderService = rowReorderService;
|
|
1205
|
-
this.dataMappingService = dataMappingService;
|
|
1206
|
-
this.aiRequestResponseService = aiRequestResponseService;
|
|
1207
|
-
this.idService = idService;
|
|
1208
|
-
const isValid = validatePackage(packageMetadata);
|
|
1209
|
-
this.licenseMessage = getLicenseMessage(packageMetadata);
|
|
1210
|
-
this.showLicenseWatermark = shouldShowValidationUI(isValid);
|
|
1211
|
-
this.ctx.grid = this;
|
|
1212
|
-
this.ctx.navigable = typeof this.navigable === 'boolean' ? this.navigable : this.navigable.includes('table');
|
|
1213
|
-
this.groupChange = new ZoneAwareEventEmitter(this.ngZone);
|
|
1214
|
-
this.cellClick = new ZoneAwareEventEmitter(this.ngZone);
|
|
1215
|
-
this.columnResize = new ZoneAwareEventEmitter(this.ngZone);
|
|
1216
|
-
this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => {
|
|
1217
|
-
this.rtl = rtl;
|
|
1218
|
-
this.direction = this.rtl ? 'rtl' : 'ltr';
|
|
1219
|
-
});
|
|
1220
|
-
this.groupInfoService.registerColumnsContainer(() => this.columnList);
|
|
1221
|
-
this.columnInfoService.init(this.columnsContainer, () => this.columnList);
|
|
1222
|
-
this.columnVisibilityChangeSubscription = this.columnInfoService.visibilityChange.subscribe((changed) => {
|
|
1223
|
-
this.columnVisibilityChange.emit(new ColumnVisibilityChangeEvent(changed));
|
|
1224
|
-
});
|
|
1225
|
-
this.columnLockedChangeSubscription = this.columnInfoService.lockedChange.subscribe((changed) => {
|
|
1226
|
-
this.columnLockedChange.emit(new ColumnLockedChangeEvent(changed));
|
|
1227
|
-
});
|
|
1228
|
-
this.columnStickyChangeSubscription = this.columnInfoService.stickyChange.subscribe((changed) => {
|
|
1229
|
-
this.columnStickyChange.emit(new ColumnStickyChangeEvent(changed));
|
|
1230
|
-
});
|
|
1231
|
-
this.groupExpandCollapseSubscription = handleExpandCollapseGroupsService(groupsService, this.groupExpand, this.groupCollapse, ({ group, groupIndex, parentGroup }) => ({ group, groupIndex, parentGroup }));
|
|
1232
|
-
this.detailsServiceSubscription = handleExpandCollapseDetailsService(detailsService, this.detailExpand, this.detailCollapse, args => args);
|
|
1233
|
-
this.filterSubscription = this.filterService.changes.subscribe(x => {
|
|
1234
|
-
this.filterChange.emit(x);
|
|
1235
|
-
});
|
|
1236
|
-
this.sortSubscription = this.sortService.changes.subscribe(x => {
|
|
1237
|
-
this.sortChange.emit(x);
|
|
1238
|
-
});
|
|
1239
|
-
this.attachStateChangesEmitter();
|
|
1240
|
-
this.attachEditHandlers();
|
|
1241
|
-
this.attachDomEventHandlers();
|
|
1242
|
-
this.pdfSubscription = this.pdfService.exportClick.subscribe(this.emitPDFExportEvent.bind(this));
|
|
1243
|
-
this.excelSubscription = this.excelService.exportClick.subscribe(this.saveAsExcel.bind(this));
|
|
1244
|
-
this.columnsContainerChange();
|
|
1245
|
-
this.handleColumnResize();
|
|
1246
|
-
this.columnList = new ColumnList(this.columns);
|
|
1247
|
-
this.columnReorderSubscription = this.columnReorderService
|
|
1248
|
-
.changes.subscribe(this.reorder.bind(this));
|
|
1249
|
-
this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));
|
|
1250
|
-
this.columnsContainer.isStacked = this.isStacked;
|
|
1251
|
-
}
|
|
1252
|
-
/**
|
|
1253
|
-
* Expands the master row at the specified data row index ([see example]({% slug hierarchy_grid %})).
|
|
1254
|
-
*
|
|
1255
|
-
* This method is for backwards compatibility with legacy versions that track expanded state by row index.
|
|
1256
|
-
* For new development, use the [`kendoGridDetailsExpandBy` directive]({% slug api_grid_expanddetailsdirective %})
|
|
1257
|
-
* or provide an `isDetailExpanded` callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %}) for examples.
|
|
1258
|
-
*
|
|
1259
|
-
* @param index The data row index of the master row.
|
|
1260
|
-
*/
|
|
1261
|
-
expandRow(index) {
|
|
1262
|
-
this.toggleDetailRowLegacy(index, true);
|
|
1263
|
-
}
|
|
1264
|
-
/**
|
|
1265
|
-
* Collapses the master row at the specified data row index ([see example]({% slug hierarchy_grid %})).
|
|
1266
|
-
*
|
|
1267
|
-
* This method is for backwards compatibility with legacy versions that track expanded state by row index.
|
|
1268
|
-
* For new development, use the [`kendoGridDetailsExpandBy` directive]({% slug api_grid_expanddetailsdirective %})
|
|
1269
|
-
* or provide an `isDetailExpanded` callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %}) for examples.
|
|
1270
|
-
*
|
|
1271
|
-
* @param index The data row index of the master row.
|
|
1272
|
-
*/
|
|
1273
|
-
collapseRow(index) {
|
|
1274
|
-
this.toggleDetailRowLegacy(index, false);
|
|
1275
|
-
}
|
|
1276
|
-
/**
|
|
1277
|
-
* Expands a group header at the given hierarchical index, such as `0_1` for the second inner group of the first master group.
|
|
1278
|
-
*
|
|
1279
|
-
* This method is for backwards compatibility with legacy versions that track expanded group state by hierarchical group index.
|
|
1280
|
-
* If the Grid is pageable, the group indexes are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).
|
|
1281
|
-
*
|
|
1282
|
-
* @param {string} index The underscore-separated hierarchical index of the group.
|
|
1283
|
-
*/
|
|
1284
|
-
expandGroup(index) {
|
|
1285
|
-
this.toggleGroupRowLegacy(index, true);
|
|
1286
|
-
}
|
|
1287
|
-
/**
|
|
1288
|
-
* Collapses a group header at the given hierarchical index, such as `0_1` for the second inner group of the first master group.
|
|
1289
|
-
*
|
|
1290
|
-
* This method is for backwards compatibility with legacy versions that track expanded group state by hierarchical group index.
|
|
1291
|
-
* If the Grid is pageable, the group indexes are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).
|
|
1292
|
-
*
|
|
1293
|
-
* @param {string} index The underscore-separated hierarchical index of the group.
|
|
1294
|
-
*/
|
|
1295
|
-
collapseGroup(index) {
|
|
1296
|
-
this.toggleGroupRowLegacy(index, false);
|
|
1297
|
-
}
|
|
1298
|
-
/**
|
|
1299
|
-
* @hidden
|
|
1300
|
-
*/
|
|
1301
|
-
resetGroupsState() {
|
|
1302
|
-
this.groupsService.reset();
|
|
1303
|
-
}
|
|
1304
|
-
/**
|
|
1305
|
-
* Builds the request body for the AI service based on the provided prompt message.
|
|
1306
|
-
* Allows developers to construct their own AI service requests.
|
|
1307
|
-
*
|
|
1308
|
-
* @param promptMessage - The prompt message to send to the AI service.
|
|
1309
|
-
* @returns The request body object ready to be sent to the AI service.
|
|
1310
|
-
*
|
|
1311
|
-
* @example
|
|
1312
|
-
* ```ts
|
|
1313
|
-
* const requestBody = this.grid.getAIRequest('Sort by Product Name ascending');
|
|
1314
|
-
*
|
|
1315
|
-
* // Send to your AI service
|
|
1316
|
-
* this.http.post('https://your-ai-service.com/api', requestBody).subscribe(response => {
|
|
1317
|
-
* this.grid.handleAIResponse(response);
|
|
1318
|
-
* });
|
|
1319
|
-
* ```
|
|
1320
|
-
*/
|
|
1321
|
-
getAIRequest(promptMessage) {
|
|
1322
|
-
return this.aiRequestResponseService.buildRequestBody(promptMessage);
|
|
1323
|
-
}
|
|
1324
|
-
/**
|
|
1325
|
-
* Processes an AI service response and applies the commands to the Grid.
|
|
1326
|
-
* Allows developers to handle their own AI service responses manually.
|
|
1327
|
-
*
|
|
1328
|
-
* @param response - The AI service response containing optional message and commands array.
|
|
1329
|
-
*
|
|
1330
|
-
* @example
|
|
1331
|
-
* ```ts
|
|
1332
|
-
* const response = {
|
|
1333
|
-
* message: 'Applying sorting',
|
|
1334
|
-
* commands: [
|
|
1335
|
-
* { type: 'GridSort', sort: { field: 'ProductName', dir: 'asc' }, message: 'Sorted by Product Name' }
|
|
1336
|
-
* ]
|
|
1337
|
-
* };
|
|
1338
|
-
* this.grid.handleAIResponse(response);
|
|
1339
|
-
* ```
|
|
1340
|
-
*/
|
|
1341
|
-
handleAIResponse(response) {
|
|
1342
|
-
const columns = this.columnInfoService.leafNamedColumns?.map((col) => ({ field: col.field })) || [];
|
|
1343
|
-
const leafColumns = this.columnInfoService.leafNamedColumns || [];
|
|
1344
|
-
this.aiRequestResponseService.processCommands(response.commands || [], columns, leafColumns);
|
|
1345
|
-
}
|
|
1346
|
-
/**
|
|
1347
|
-
* @hidden
|
|
1348
|
-
*/
|
|
1349
|
-
onDataChange() {
|
|
1350
|
-
this.autoGenerateColumns();
|
|
1351
|
-
this.changeNotification.notify();
|
|
1352
|
-
this.pdfService.dataChanged.emit();
|
|
1353
|
-
if (isPresent(this.defaultSelection)) {
|
|
1354
|
-
this.defaultSelection.reset();
|
|
1355
|
-
}
|
|
1356
|
-
this.initSelectionService();
|
|
1357
|
-
this.updateNavigationMetadata();
|
|
1358
|
-
}
|
|
1359
|
-
ngDoCheck() {
|
|
1360
|
-
if (!this.isScrollable) {
|
|
1361
|
-
this.rowsToRender = this.dataMappingService.dataMapper(this.view, this.nonLockedLeafColumns, this.lockedLeafColumns, this.detailTemplate, this.showGroupFooters);
|
|
1362
|
-
}
|
|
1363
|
-
}
|
|
1364
|
-
ngOnChanges(changes) {
|
|
1365
|
-
if (isChanged("data", changes)) {
|
|
1366
|
-
this.onDataChange();
|
|
1367
|
-
}
|
|
1368
|
-
if (this.lockedLeafColumns.length && anyChanged(["pageSize", "skip", "sort", "group"], changes)) {
|
|
1369
|
-
this.changeNotification.notify();
|
|
1370
|
-
}
|
|
1371
|
-
if (anyChanged(["pageSize", "scrollable", 'virtualColumns'], changes)) {
|
|
1372
|
-
this.updateNavigationMetadata();
|
|
1373
|
-
}
|
|
1374
|
-
if (isChanged("virtualColumns", changes)) {
|
|
1375
|
-
this.viewportColumns = this.leafViewportColumns = null;
|
|
1376
|
-
}
|
|
1377
|
-
if (isChanged("height", changes, false)) {
|
|
1378
|
-
this.renderer.setStyle(this.wrapper.nativeElement, 'height', `${this.height}px`);
|
|
1379
|
-
}
|
|
1380
|
-
if (isChanged("filterable", changes) && this.lockedColumns.length) {
|
|
1381
|
-
this.syncHeaderHeight(this.ngZone.onStable.asObservable().pipe(take(1)));
|
|
1382
|
-
}
|
|
1383
|
-
if (anyChanged(["columnMenu", "sortable", "filterable"], changes, false)) {
|
|
1384
|
-
this.columnMenuOptions = this.columnMenu && Object.assign({
|
|
1385
|
-
filter: Boolean(this.filterable),
|
|
1386
|
-
sort: Boolean(this.sortable)
|
|
1387
|
-
}, this.columnMenu);
|
|
1388
|
-
}
|
|
1389
|
-
if (isChanged("scrollable", changes) && this.isScrollable) {
|
|
1390
|
-
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());
|
|
1391
|
-
}
|
|
1392
|
-
if (isChanged("selectable", changes) && this.shouldResetSelection(changes['selectable'])) {
|
|
1393
|
-
if (this.defaultSelection) {
|
|
1394
|
-
this.defaultSelection.reset();
|
|
1395
|
-
}
|
|
1396
|
-
else if (this.selectionDirective) {
|
|
1397
|
-
this.selectionDirective.reset();
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
if (isChanged('groupable', changes, true)) {
|
|
1401
|
-
this.groupable = changes['groupable'].currentValue;
|
|
1402
|
-
}
|
|
1403
|
-
if (isChanged('navigable', changes, true)) {
|
|
1404
|
-
if (this.navigationService.enabled) {
|
|
1405
|
-
this.navigationService.setActiveSections(this.navigable);
|
|
1406
|
-
}
|
|
1407
|
-
else {
|
|
1408
|
-
if (this.navigable.length) {
|
|
1409
|
-
this.navigationService.init(this.navigationMetadata(), this.navigable);
|
|
1410
|
-
}
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1413
|
-
if (isChanged('dataLayoutMode', changes)) {
|
|
1414
|
-
if (this.isStacked) {
|
|
1415
|
-
this.generateStackedColumns();
|
|
1416
|
-
}
|
|
1417
|
-
else {
|
|
1418
|
-
this.stackedColumns = { columns: [], areDefault: false };
|
|
1419
|
-
}
|
|
1420
|
-
this.columnsContainer.isStacked = this.isStacked;
|
|
1421
|
-
}
|
|
1422
|
-
}
|
|
1423
|
-
ngAfterContentInit() {
|
|
1424
|
-
this.shouldGenerateColumns = !this.columns.length;
|
|
1425
|
-
this.autoGenerateColumns();
|
|
1426
|
-
this.columnList = new ColumnList(this.columns);
|
|
1427
|
-
this.columnsChangeSubscription = this.columns.changes.subscribe(() => this.verifySettings());
|
|
1428
|
-
}
|
|
1429
|
-
ngAfterViewInit() {
|
|
1430
|
-
this.attachScrollSync();
|
|
1431
|
-
this.attachElementEventHandlers();
|
|
1432
|
-
this.updateNavigationMetadata();
|
|
1433
|
-
this.applyAutoSize();
|
|
1434
|
-
const toolbarComponentWrapper = this.wrapper?.nativeElement?.querySelector('kendo-toolbar');
|
|
1435
|
-
if (toolbarComponentWrapper) {
|
|
1436
|
-
this.renderer.addClass(toolbarComponentWrapper, 'k-grid-toolbar');
|
|
1437
|
-
}
|
|
1438
|
-
}
|
|
1439
|
-
ngAfterContentChecked() {
|
|
1440
|
-
this.columnsContainer.refresh();
|
|
1441
|
-
this.verifySettings();
|
|
1442
|
-
this.initSelectionService();
|
|
1443
|
-
}
|
|
1444
|
-
ngOnInit() {
|
|
1445
|
-
if (this.navigable.length) {
|
|
1446
|
-
this.navigationService.init(this.navigationMetadata(), this.navigable);
|
|
1447
|
-
}
|
|
1448
|
-
this.isStacked && this.generateStackedColumns();
|
|
1449
|
-
}
|
|
1450
|
-
ngOnDestroy() {
|
|
1451
|
-
if (this.selectionSubscription) {
|
|
1452
|
-
this.selectionSubscription.unsubscribe();
|
|
1453
|
-
}
|
|
1454
|
-
if (this.rowReorderSubscription) {
|
|
1455
|
-
this.rowReorderSubscription.unsubscribe();
|
|
1456
|
-
}
|
|
1457
|
-
if (this.columnReorderSubscription) {
|
|
1458
|
-
this.columnReorderSubscription.unsubscribe();
|
|
1459
|
-
}
|
|
1460
|
-
if (this.stateChangeSubscription) {
|
|
1461
|
-
this.stateChangeSubscription.unsubscribe();
|
|
1462
|
-
}
|
|
1463
|
-
if (this.groupExpandCollapseSubscription) {
|
|
1464
|
-
this.groupExpandCollapseSubscription.unsubscribe();
|
|
1465
|
-
}
|
|
1466
|
-
if (this.detailsServiceSubscription) {
|
|
1467
|
-
this.detailsServiceSubscription.unsubscribe();
|
|
1468
|
-
}
|
|
1469
|
-
if (this.editServiceSubscription) {
|
|
1470
|
-
this.editServiceSubscription.unsubscribe();
|
|
1471
|
-
}
|
|
1472
|
-
if (this.pdfSubscription) {
|
|
1473
|
-
this.pdfSubscription.unsubscribe();
|
|
1474
|
-
}
|
|
1475
|
-
if (this.filterSubscription) {
|
|
1476
|
-
this.filterSubscription.unsubscribe();
|
|
1477
|
-
}
|
|
1478
|
-
if (this.sortSubscription) {
|
|
1479
|
-
this.sortSubscription.unsubscribe();
|
|
1480
|
-
}
|
|
1481
|
-
if (this.columnsChangeSubscription) {
|
|
1482
|
-
this.columnsChangeSubscription.unsubscribe();
|
|
1483
|
-
}
|
|
1484
|
-
if (this.excelSubscription) {
|
|
1485
|
-
this.excelSubscription.unsubscribe();
|
|
1486
|
-
}
|
|
1487
|
-
if (this.columnsContainerChangeSubscription) {
|
|
1488
|
-
this.columnsContainerChangeSubscription.unsubscribe();
|
|
1489
|
-
}
|
|
1490
|
-
if (this.scrollSyncService) {
|
|
1491
|
-
this.scrollSyncService.destroy();
|
|
1492
|
-
}
|
|
1493
|
-
if (this.detachElementEventHandlers) {
|
|
1494
|
-
this.detachElementEventHandlers();
|
|
1495
|
-
}
|
|
1496
|
-
if (this.defaultSelection) {
|
|
1497
|
-
this.defaultSelection.destroy();
|
|
1498
|
-
}
|
|
1499
|
-
if (this.cellClickSubscription) {
|
|
1500
|
-
this.cellClickSubscription.unsubscribe();
|
|
1501
|
-
}
|
|
1502
|
-
if (this.footerChangeSubscription) {
|
|
1503
|
-
this.footerChangeSubscription.unsubscribe();
|
|
1504
|
-
}
|
|
1505
|
-
this.ngZone = null;
|
|
1506
|
-
if (this.columnResizingSubscription) {
|
|
1507
|
-
this.columnResizingSubscription.unsubscribe();
|
|
1508
|
-
}
|
|
1509
|
-
if (this.columnReorderSubscription) {
|
|
1510
|
-
this.columnReorderSubscription.unsubscribe();
|
|
1511
|
-
}
|
|
1512
|
-
if (this.localizationSubscription) {
|
|
1513
|
-
this.localizationSubscription.unsubscribe();
|
|
1514
|
-
}
|
|
1515
|
-
if (this.columnVisibilityChangeSubscription) {
|
|
1516
|
-
this.columnVisibilityChangeSubscription.unsubscribe();
|
|
1517
|
-
}
|
|
1518
|
-
if (this.columnLockedChangeSubscription) {
|
|
1519
|
-
this.columnLockedChangeSubscription.unsubscribe();
|
|
1520
|
-
}
|
|
1521
|
-
if (this.columnStickyChangeSubscription) {
|
|
1522
|
-
this.columnStickyChangeSubscription.unsubscribe();
|
|
1523
|
-
}
|
|
1524
|
-
if (this.focusElementSubscription) {
|
|
1525
|
-
this.focusElementSubscription.unsubscribe();
|
|
1526
|
-
}
|
|
1527
|
-
if (this.rowReorderSubscription) {
|
|
1528
|
-
this.rowReorderSubscription.unsubscribe();
|
|
1529
|
-
}
|
|
1530
|
-
this.columnRangeChangeSubscription.unsubscribe();
|
|
1531
|
-
}
|
|
1532
|
-
/**
|
|
1533
|
-
* @hidden
|
|
1534
|
-
*/
|
|
1535
|
-
onResize() {
|
|
1536
|
-
if (this.isVirtual) {
|
|
1537
|
-
this.ctx.scroller.update();
|
|
1538
|
-
this.listComponent.resetNavigationViewport();
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
/**
|
|
1542
|
-
* @hidden
|
|
1543
|
-
*/
|
|
1544
|
-
attachScrollSync() {
|
|
1545
|
-
if (isUniversal()) {
|
|
1546
|
-
return;
|
|
1547
|
-
}
|
|
1548
|
-
if (this.header) {
|
|
1549
|
-
this.scrollSyncService.registerEmitter(this.header.nativeElement, "header");
|
|
1550
|
-
}
|
|
1551
|
-
if (this.footer) {
|
|
1552
|
-
this.footerChangeSubscription = observe(this.footer)
|
|
1553
|
-
.subscribe(footers => footers
|
|
1554
|
-
.map(footer => footer.nativeElement)
|
|
1555
|
-
.filter(isPresent)
|
|
1556
|
-
.forEach(element => {
|
|
1557
|
-
this.scrollSyncService.registerEmitter(element, "footer");
|
|
1558
|
-
// sync footers and content scroll positions when footer visibility is changed dynamically
|
|
1559
|
-
element.scrollLeft = this.wrapper.nativeElement.querySelector('.k-grid-content')?.scrollLeft;
|
|
1560
|
-
}));
|
|
1561
|
-
}
|
|
1562
|
-
}
|
|
1563
|
-
/**
|
|
1564
|
-
* @hidden
|
|
1565
|
-
*/
|
|
1566
|
-
get ariaLabel() {
|
|
1567
|
-
return this.localization.get('gridLabel');
|
|
1568
|
-
}
|
|
1569
|
-
/**
|
|
1570
|
-
* @hidden
|
|
1571
|
-
*/
|
|
1572
|
-
messageFor = token => this.localization.get(token);
|
|
1573
|
-
/**
|
|
1574
|
-
* Switches the specified table row to edit mode ([see example]({% slug inline_editing_grid %}#toc-editing-records-1)).
|
|
1575
|
-
*
|
|
1576
|
-
* @param rowIndex The data row index to switch to edit mode.
|
|
1577
|
-
* @param group The [`FormGroup`](link:site.data.urls.angular['formgroupapi']) that describes the edit form.
|
|
1578
|
-
* @param options Additional options to configure the focus target when the editor opens.
|
|
1579
|
-
*/
|
|
1580
|
-
editRow(rowIndex, group, options) {
|
|
1581
|
-
this.editService.editRow(rowIndex, group);
|
|
1582
|
-
if (isPresent(options) && options.skipFocus) {
|
|
1583
|
-
return;
|
|
1584
|
-
}
|
|
1585
|
-
const row = `tr[data-kendo-grid-item-index="${rowIndex}"]`;
|
|
1586
|
-
const columnIndex = options && options.columnIndex;
|
|
1587
|
-
const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index="${columnIndex}"]`;
|
|
1588
|
-
this.focusEditElement(target);
|
|
1589
|
-
}
|
|
1590
|
-
/**
|
|
1591
|
-
* @hidden
|
|
1592
|
-
*/
|
|
1593
|
-
handleReorderEvents(ev, evType) {
|
|
1594
|
-
this.rowReorderService[evType](ev);
|
|
1595
|
-
}
|
|
1596
|
-
/**
|
|
1597
|
-
* Closes the editor for the specified row ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).
|
|
1598
|
-
*
|
|
1599
|
-
* @param {number} index The row index to switch out of edit mode. If you do not provide an index, the new item editor closes.
|
|
1600
|
-
*/
|
|
1601
|
-
closeRow(index) {
|
|
1602
|
-
this.editService.close(index);
|
|
1603
|
-
this.isStacked && (this.navigationService.stackedCellEntered = false);
|
|
1604
|
-
}
|
|
1605
|
-
/**
|
|
1606
|
-
* Creates a new row editor ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).
|
|
1607
|
-
*
|
|
1608
|
-
* @param {FormGroup} group The [`FormGroup`](link:site.data.urls.angular['formgroupapi']) that describes the edit form. If you pass a data item, the method builds the `FormGroup` from the data item fields.
|
|
1609
|
-
*/
|
|
1610
|
-
addRow(group) {
|
|
1611
|
-
const isFormGroup = group instanceof FormGroup;
|
|
1612
|
-
if (!isFormGroup) {
|
|
1613
|
-
const fields = Object.keys(group).reduce(createControl(group), {}); // FormBuilder?
|
|
1614
|
-
group = new FormGroup(fields);
|
|
1615
|
-
}
|
|
1616
|
-
this.editService.addRow(group);
|
|
1617
|
-
this.focusEditElement('.k-grid-add-row');
|
|
1618
|
-
}
|
|
1619
|
-
/**
|
|
1620
|
-
* Puts the specified cell in edit mode ([see example](slug:editing_incell_grid)).
|
|
1621
|
-
*
|
|
1622
|
-
* @param {number} rowIndex The data row index to switch to edit mode.
|
|
1623
|
-
* @param {number|string|any} column The leaf column index, field name, or column instance to edit.
|
|
1624
|
-
* @param {FormGroup} group The [`FormGroup`](link:site.data.urls.angular['formgroupapi']) that describes the edit form.
|
|
1625
|
-
*/
|
|
1626
|
-
editCell(rowIndex, column, group) {
|
|
1627
|
-
const instance = this.columnInstance(column);
|
|
1628
|
-
this.editService.editCell(rowIndex, instance, group);
|
|
1629
|
-
this.focusEditElement(this.isStacked ? '.k-grid-stack-edit-cell' : '.k-grid-edit-cell');
|
|
1630
|
-
}
|
|
1631
|
-
/**
|
|
1632
|
-
* Closes the current cell in edit mode and fires the [`cellClose`]({% slug api_grid_gridcomponent %}#toc-cellclose) event.
|
|
1633
|
-
*
|
|
1634
|
-
* @returns {boolean} `true` if the cell closed. Returns `false` if the [`cellClose`]({% slug api_grid_gridcomponent %}#toc-cellclose) event was prevented.
|
|
1635
|
-
*/
|
|
1636
|
-
closeCell() {
|
|
1637
|
-
return !this.editService.closeCell();
|
|
1638
|
-
}
|
|
1639
|
-
/**
|
|
1640
|
-
* Closes the current cell in edit mode.
|
|
1641
|
-
*/
|
|
1642
|
-
cancelCell() {
|
|
1643
|
-
this.editService.cancelCell();
|
|
1644
|
-
}
|
|
1645
|
-
/**
|
|
1646
|
-
* Returns `true` if a row or cell is currently edited.
|
|
1647
|
-
*
|
|
1648
|
-
* @returns {boolean} `true` if a row or cell is currently edited.
|
|
1649
|
-
*/
|
|
1650
|
-
isEditing() {
|
|
1651
|
-
return this.editService.isEditing();
|
|
1652
|
-
}
|
|
1653
|
-
/**
|
|
1654
|
-
* Returns `true` if a cell is currently edited.
|
|
1655
|
-
*
|
|
1656
|
-
* @returns {boolean} `true` if a cell is currently being edited.
|
|
1657
|
-
*/
|
|
1658
|
-
isEditingCell() {
|
|
1659
|
-
return this.editService.isEditingCell();
|
|
1660
|
-
}
|
|
1661
|
-
/**
|
|
1662
|
-
* Initiates the PDF export ([see example]({% slug pdfexport_grid %})).
|
|
1663
|
-
*/
|
|
1664
|
-
saveAsPDF() {
|
|
1665
|
-
this.pdfService.save(this);
|
|
1666
|
-
}
|
|
1667
|
-
/**
|
|
1668
|
-
* Exports the Grid element to a Drawing [Group]({% slug api_kendo-drawing_group %}) using the `kendo-grid-pdf` component options
|
|
1669
|
-
* ([see example]({% slug pdfexport_grid %}#toc-exporting-multiple-grids-to-the-same-pdf)).
|
|
1670
|
-
*
|
|
1671
|
-
* @returns {Promise} A promise that resolves with the Drawing `Group`.
|
|
1672
|
-
*/
|
|
1673
|
-
drawPDF() {
|
|
1674
|
-
const promise = createPromise();
|
|
1675
|
-
this.pdfService.draw(this, promise);
|
|
1676
|
-
return promise;
|
|
1677
|
-
}
|
|
1678
|
-
/**
|
|
1679
|
-
* Initiates the Excel export ([see example]({% slug excelexport_grid %})).
|
|
1680
|
-
*/
|
|
1681
|
-
saveAsExcel() {
|
|
1682
|
-
this.excelService.save(this);
|
|
1683
|
-
}
|
|
1684
|
-
/**
|
|
1685
|
-
* Applies the given `GridState` object to the Grid.
|
|
1686
|
-
*/
|
|
1687
|
-
loadState(state) {
|
|
1688
|
-
if (state.columnsState) {
|
|
1689
|
-
this.traverseColumns(this.columns, (column) => {
|
|
1690
|
-
const columnState = state.columnsState.find((col) => col.id === column.id);
|
|
1691
|
-
if (columnState) {
|
|
1692
|
-
column.width = columnState.width;
|
|
1693
|
-
column.hidden = columnState.hidden;
|
|
1694
|
-
column.locked = columnState.locked;
|
|
1695
|
-
column.sticky = columnState.sticky;
|
|
1696
|
-
column.orderIndex = columnState.orderIndex;
|
|
1697
|
-
}
|
|
1698
|
-
});
|
|
1699
|
-
this.columns.reset(this.columns.toArray());
|
|
1700
|
-
this.columnsContainer.refresh();
|
|
1701
|
-
}
|
|
1702
|
-
this.sort = state.sort;
|
|
1703
|
-
this.group = state.group;
|
|
1704
|
-
this.filter = state.filter;
|
|
1705
|
-
this.skip = state.skip;
|
|
1706
|
-
this.pageSize = state.take;
|
|
1707
|
-
if (state.currentData) {
|
|
1708
|
-
this.data = state.currentData;
|
|
1709
|
-
}
|
|
1710
|
-
this.changeDetectorRef.markForCheck();
|
|
1711
|
-
}
|
|
1712
|
-
traverseColumns(columns, callback) {
|
|
1713
|
-
columns.forEach((column) => {
|
|
1714
|
-
if (column.isColumnGroup || column.isSpanColumn) {
|
|
1715
|
-
this.traverseColumns(column.children, callback);
|
|
1716
|
-
}
|
|
1717
|
-
else {
|
|
1718
|
-
callback(column);
|
|
1719
|
-
}
|
|
1720
|
-
});
|
|
1721
|
-
}
|
|
1722
|
-
/**
|
|
1723
|
-
* Applies the minimum possible width for the specified column so the whole text fits without wrapping.
|
|
1724
|
-
* This method expects the Grid to be [`resizable`](slug:resizing_columns_grid). Run this method after the Grid is populated with data.
|
|
1725
|
-
* [See example](slug:resizing_columns_grid#toc-auto-fitting-the-content)
|
|
1726
|
-
*/
|
|
1727
|
-
autoFitColumn(column) {
|
|
1728
|
-
this.columnResizingService.autoFit(column);
|
|
1729
|
-
}
|
|
1730
|
-
/**
|
|
1731
|
-
* Adjusts the width of the specified columns to fit the entire content, including headers, without wrapping.
|
|
1732
|
-
* If you do not specify columns, `autoFitColumns` applies to all columns. Run this method after the Grid is populated with data.
|
|
1733
|
-
* [See example](slug:resizing_columns_grid#toc-auto-fitting-the-content)
|
|
1734
|
-
*/
|
|
1735
|
-
autoFitColumns(columns = this.columns) {
|
|
1736
|
-
let cols;
|
|
1737
|
-
if (columns instanceof QueryList) {
|
|
1738
|
-
cols = columns.toArray();
|
|
1739
|
-
}
|
|
1740
|
-
else {
|
|
1741
|
-
cols = columns;
|
|
1742
|
-
}
|
|
1743
|
-
this.columnResizingService.autoFit(...cols);
|
|
1744
|
-
}
|
|
1745
|
-
/**
|
|
1746
|
-
* Adjusts the width of the Grid columns to fit the entire Grid width.
|
|
1747
|
-
* - when the sum of all columns widths is less than the available Grid width—the available space is distributed evenly between all columns.
|
|
1748
|
-
* - when the sum of all columns widths is greater than the available Grid width—the columns are shrinked equally to fit the Grid width.
|
|
1749
|
-
*
|
|
1750
|
-
* Run this method after the Grid is populated with data.
|
|
1751
|
-
*/
|
|
1752
|
-
autoFitColumnsToGrid() {
|
|
1753
|
-
const gridElement = this.wrapper.nativeElement;
|
|
1754
|
-
if (!gridElement) {
|
|
1755
|
-
return;
|
|
1756
|
-
}
|
|
1757
|
-
const leafColumns = this.columnsContainer.leafColumns.toArray();
|
|
1758
|
-
if (!leafColumns.length || leafColumns.length === 0) {
|
|
1759
|
-
return;
|
|
1760
|
-
}
|
|
1761
|
-
this.columnResizingService.autoFitToGrid(gridElement, this.scrollbarWidth, ...leafColumns);
|
|
1762
|
-
}
|
|
1763
|
-
/**
|
|
1764
|
-
* @hidden
|
|
1765
|
-
*/
|
|
1766
|
-
notifyPageChange(source, event) {
|
|
1767
|
-
if (source === "list" && !this.isVirtual) {
|
|
1768
|
-
return;
|
|
1769
|
-
}
|
|
1770
|
-
this.pageChange.emit(event);
|
|
1771
|
-
}
|
|
1772
|
-
/**
|
|
1773
|
-
* @hidden
|
|
1774
|
-
*/
|
|
1775
|
-
handlePagerVisibilityChange(prop, ev) {
|
|
1776
|
-
this[prop] = ev;
|
|
1777
|
-
}
|
|
1778
|
-
/**
|
|
1779
|
-
* @hidden
|
|
1780
|
-
*/
|
|
1781
|
-
notifyScrollBottom() {
|
|
1782
|
-
if (this.scrollable === 'none') {
|
|
1783
|
-
return;
|
|
1784
|
-
}
|
|
1785
|
-
if (hasObservers(this.scrollBottom)) {
|
|
1786
|
-
this.ngZone.run(() => this.scrollBottom.emit({ sender: this }));
|
|
1787
|
-
}
|
|
1788
|
-
}
|
|
1789
|
-
/**
|
|
1790
|
-
* @hidden
|
|
1791
|
-
*/
|
|
1792
|
-
focusEditElement(containerSelector) {
|
|
1793
|
-
if (this.focusElementSubscription) {
|
|
1794
|
-
this.focusElementSubscription.unsubscribe();
|
|
1795
|
-
}
|
|
1796
|
-
this.ngZone.runOutsideAngular(() => {
|
|
1797
|
-
this.focusElementSubscription = this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {
|
|
1798
|
-
const wrapper = this.wrapper.nativeElement;
|
|
1799
|
-
if (!this.setEditFocus(wrapper.querySelector(containerSelector)) && this.isLocked) {
|
|
1800
|
-
this.setEditFocus(wrapper.querySelector(`.k-grid-content ${containerSelector}`));
|
|
1801
|
-
}
|
|
1802
|
-
this.focusElementSubscription = null;
|
|
1803
|
-
});
|
|
1804
|
-
});
|
|
1805
|
-
}
|
|
1806
|
-
/**
|
|
1807
|
-
* Focuses the last active or the first cell of the Grid.
|
|
1808
|
-
*
|
|
1809
|
-
* @returns {NavigationCell} The focused cell.
|
|
1810
|
-
*/
|
|
1811
|
-
focus() {
|
|
1812
|
-
this.assertNavigable();
|
|
1813
|
-
return this.navigationService.focusCell();
|
|
1814
|
-
}
|
|
1815
|
-
/**
|
|
1816
|
-
* Focuses the cell with the specified row and column index.
|
|
1817
|
-
*
|
|
1818
|
-
* The row index is based on the logical structure of the Grid and does not correspond to the data item index.
|
|
1819
|
-
* Header rows are included, starting at index 0.
|
|
1820
|
-
* Group headers and footers are included.
|
|
1821
|
-
* The row indexing is absolute and does not change with paging.
|
|
1822
|
-
*
|
|
1823
|
-
* If the Grid is configured for scrolling, including virtual scrolling, the scroll position will be updated.
|
|
1824
|
-
* If the row is not present on the current page, the method will have no effect.
|
|
1825
|
-
*
|
|
1826
|
-
* @param rowIndex The logical row index to focus. The top header row has an index 0.
|
|
1827
|
-
* @param colIndex The column index to focus.
|
|
1828
|
-
* @returns {NavigationCell} The focused cell.
|
|
1829
|
-
*
|
|
1830
|
-
*/
|
|
1831
|
-
focusCell(rowIndex, colIndex) {
|
|
1832
|
-
this.assertNavigable();
|
|
1833
|
-
return this.navigationService.focusCell(rowIndex, colIndex);
|
|
1834
|
-
}
|
|
1835
|
-
/**
|
|
1836
|
-
* Focuses the next cell, optionally wrapping to the next row.
|
|
1837
|
-
*
|
|
1838
|
-
* @param wrap A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.
|
|
1839
|
-
* @returns {NavigationCell} The focused cell. If the focus is already on the last cell, returns `null`.
|
|
1840
|
-
*/
|
|
1841
|
-
focusNextCell(wrap = true) {
|
|
1842
|
-
this.assertNavigable();
|
|
1843
|
-
return this.navigationService.focusNextCell(wrap);
|
|
1844
|
-
}
|
|
1845
|
-
/**
|
|
1846
|
-
* Focuses the previous cell. Optionally wraps to the previous row.
|
|
1847
|
-
*
|
|
1848
|
-
* @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.
|
|
1849
|
-
* @returns {NavigationCell} The focused cell. If the focus is already on the first cell, returns `null`.
|
|
1850
|
-
*/
|
|
1851
|
-
focusPrevCell(wrap = true) {
|
|
1852
|
-
this.assertNavigable();
|
|
1853
|
-
return this.navigationService.focusPrevCell(wrap);
|
|
1854
|
-
}
|
|
1855
|
-
/**
|
|
1856
|
-
* Scrolls to the specified row and column ([see example](slug:scrollmmodes_grid#toc-scrolling-to-a-specific-row-and-column)).
|
|
1857
|
-
*/
|
|
1858
|
-
scrollTo(request) {
|
|
1859
|
-
this.scrollRequestService.scrollTo(request, false);
|
|
1860
|
-
}
|
|
1861
|
-
/**
|
|
1862
|
-
* Scrolls to the specified data item and column ([see example](slug:scrollmmodes_grid#toc-scrolling-to-a-specific-item)).
|
|
1863
|
-
*/
|
|
1864
|
-
scrollToItem(request) {
|
|
1865
|
-
this.scrollRequestService.scrollToItem(request);
|
|
1866
|
-
}
|
|
1867
|
-
/**
|
|
1868
|
-
* Changes the position of the specified column.
|
|
1869
|
-
* The reordering of columns operates only on the level inferred by the source column.
|
|
1870
|
-
* For this method to work, the `source` column must be visible.
|
|
1871
|
-
*
|
|
1872
|
-
* @param {ColumnBase} source The column to move.
|
|
1873
|
-
* @param {number} destIndex The new position of the column.
|
|
1874
|
-
* @param {ColumnReorderConfig} options Additional options.
|
|
1875
|
-
*/
|
|
1876
|
-
reorderColumn(source, destIndex, options = { before: false }) {
|
|
1877
|
-
const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
|
|
1878
|
-
let target = columnsForLevel[destIndex];
|
|
1879
|
-
if (!target) {
|
|
1880
|
-
return;
|
|
1881
|
-
}
|
|
1882
|
-
const lastNonLocked = target.isLocked &&
|
|
1883
|
-
!source.isLocked &&
|
|
1884
|
-
this.columnsContainer.nonLockedColumns.length === 1;
|
|
1885
|
-
if (lastNonLocked) {
|
|
1886
|
-
return;
|
|
1887
|
-
}
|
|
1888
|
-
if (isSpanColumnComponent(target) && !options.before) {
|
|
1889
|
-
target = target.children.last;
|
|
1890
|
-
}
|
|
1891
|
-
this.reorder({
|
|
1892
|
-
before: options.before,
|
|
1893
|
-
source: source,
|
|
1894
|
-
target: target
|
|
1895
|
-
});
|
|
1896
|
-
}
|
|
1897
|
-
/**
|
|
1898
|
-
* @hidden
|
|
1899
|
-
*/
|
|
1900
|
-
updateNavigationMetadata() {
|
|
1901
|
-
this.navigationService.metadata = this.navigationMetadata();
|
|
1902
|
-
}
|
|
1903
|
-
reorder({ target, source, before, changeContainer }) {
|
|
1904
|
-
this.ngZone.run(() => {
|
|
1905
|
-
const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
|
|
1906
|
-
let newIndex = columnsForLevel.indexOf(target);
|
|
1907
|
-
if (target.parent && target.parent.isSpanColumn) {
|
|
1908
|
-
newIndex = columnsForLevel.indexOf(target.parent);
|
|
1909
|
-
if (before) {
|
|
1910
|
-
target = target.parent;
|
|
1911
|
-
}
|
|
1912
|
-
}
|
|
1913
|
-
const oldIndex = columnsForLevel.indexOf(source);
|
|
1914
|
-
if (changeContainer) {
|
|
1915
|
-
if (before && 0 < newIndex && oldIndex < newIndex) { // dropped before the first not locked column
|
|
1916
|
-
newIndex--;
|
|
1917
|
-
}
|
|
1918
|
-
else if (!before && oldIndex > newIndex) { // dropped after the last locked column
|
|
1919
|
-
newIndex++;
|
|
1920
|
-
}
|
|
1921
|
-
}
|
|
1922
|
-
const args = new ColumnReorderEvent({
|
|
1923
|
-
column: source,
|
|
1924
|
-
oldIndex: oldIndex,
|
|
1925
|
-
newIndex: newIndex
|
|
1926
|
-
});
|
|
1927
|
-
this.columnReorder.emit(args);
|
|
1928
|
-
if (args.isDefaultPrevented()) {
|
|
1929
|
-
return;
|
|
1930
|
-
}
|
|
1931
|
-
if (changeContainer) {
|
|
1932
|
-
this.columnLockedChange.emit(new ColumnLockedChangeEvent([source]));
|
|
1933
|
-
}
|
|
1934
|
-
this.updateColumnIndices({ columnsForLevel, source, target, before });
|
|
1935
|
-
if (source.locked !== target.locked) {
|
|
1936
|
-
source.locked = target.locked;
|
|
1937
|
-
}
|
|
1938
|
-
this.columnsContainer.refresh();
|
|
1939
|
-
if (this.virtualColumns) {
|
|
1940
|
-
this.listComponent.updateViewportColumns();
|
|
1941
|
-
}
|
|
1942
|
-
this.changeDetectorRef.markForCheck();
|
|
1943
|
-
});
|
|
1944
|
-
}
|
|
1945
|
-
updateColumnIndices({ columnsForLevel, source, target, before }) {
|
|
1946
|
-
const expandedColumns = expandColumnsWithSpan(columnsForLevel);
|
|
1947
|
-
const sourceColumnIndex = expandedColumns.indexOf(source);
|
|
1948
|
-
let nextSourceIndex = 0;
|
|
1949
|
-
let nextIndex = 0;
|
|
1950
|
-
let toSkip = 1;
|
|
1951
|
-
// Possible only when called from the API.
|
|
1952
|
-
if (source.isSpanColumn) {
|
|
1953
|
-
toSkip += source.children.length;
|
|
1954
|
-
}
|
|
1955
|
-
let i = 0;
|
|
1956
|
-
while (i < expandedColumns.length) {
|
|
1957
|
-
const column = expandedColumns[i];
|
|
1958
|
-
if (column === target) {
|
|
1959
|
-
nextSourceIndex = before ? nextIndex : nextIndex + 1;
|
|
1960
|
-
nextIndex = before ? nextIndex + toSkip : nextIndex;
|
|
1961
|
-
column.orderIndex = nextIndex;
|
|
1962
|
-
if (nextSourceIndex === nextIndex + 1) {
|
|
1963
|
-
nextIndex += toSkip;
|
|
1964
|
-
}
|
|
1965
|
-
}
|
|
1966
|
-
else if (column === source) {
|
|
1967
|
-
i += toSkip;
|
|
1968
|
-
column.isReordered = true;
|
|
1969
|
-
continue;
|
|
1970
|
-
}
|
|
1971
|
-
else {
|
|
1972
|
-
column.orderIndex = nextIndex;
|
|
1973
|
-
}
|
|
1974
|
-
column.isReordered = true;
|
|
1975
|
-
nextIndex++;
|
|
1976
|
-
i++;
|
|
1977
|
-
}
|
|
1978
|
-
for (i = sourceColumnIndex; i < sourceColumnIndex + toSkip; i++) {
|
|
1979
|
-
expandedColumns[i].orderIndex = nextSourceIndex++;
|
|
1980
|
-
expandedColumns[i].isReordered = true;
|
|
1981
|
-
}
|
|
1982
|
-
this.updateIndicesForLevel(source.level + 1);
|
|
1983
|
-
this.columnResizingService.areColumnsReordered = true;
|
|
1984
|
-
}
|
|
1985
|
-
updateIndicesForLevel(level) {
|
|
1986
|
-
const colsForParentLevel = this.allColumnsForLevel(level - 1);
|
|
1987
|
-
const colsForLevel = [];
|
|
1988
|
-
sortColumns(colsForParentLevel).forEach((c) => {
|
|
1989
|
-
if (c.isColumnGroup) {
|
|
1990
|
-
colsForLevel.push(...c.childrenArray.sort((a, b) => a.orderIndex - b.orderIndex));
|
|
1991
|
-
}
|
|
1992
|
-
});
|
|
1993
|
-
expandColumnsWithSpan(colsForLevel).forEach((c, i) => {
|
|
1994
|
-
c.orderIndex = i;
|
|
1995
|
-
c.isReordered = true;
|
|
1996
|
-
});
|
|
1997
|
-
if (level < this.columnList.totalColumnLevels()) {
|
|
1998
|
-
this.updateIndicesForLevel(level + 1);
|
|
1999
|
-
}
|
|
2000
|
-
}
|
|
2001
|
-
allColumnsForLevel(level) {
|
|
2002
|
-
return this.columnList.toArray().filter(column => column.level === level);
|
|
2003
|
-
}
|
|
2004
|
-
initSelectionService() {
|
|
2005
|
-
if (!this.selectable) {
|
|
2006
|
-
this.selectionService.ngOnDestroy();
|
|
2007
|
-
this.cellSelectionService.ngOnDestroy();
|
|
2008
|
-
return;
|
|
2009
|
-
}
|
|
2010
|
-
if (!this.selectionDirective && !isPresent(this.defaultSelection)) {
|
|
2011
|
-
this.defaultSelection = new Selection(this.ctx, this.changeDetectorRef);
|
|
2012
|
-
}
|
|
2013
|
-
const cellSelectionMode = this.selectable['cell'];
|
|
2014
|
-
const activeService = cellSelectionMode ? this.cellSelectionService : this.selectionService;
|
|
2015
|
-
const inactiveService = cellSelectionMode ? this.selectionService : this.cellSelectionService;
|
|
2016
|
-
if (inactiveService.active) {
|
|
2017
|
-
inactiveService.ngOnDestroy();
|
|
2018
|
-
activeService.addSubscriptions();
|
|
2019
|
-
inactiveService.active = false;
|
|
2020
|
-
}
|
|
2021
|
-
activeService.active = true;
|
|
2022
|
-
activeService.init({
|
|
2023
|
-
cellSelected: cellSelectionMode ? this.cellSelected : undefined,
|
|
2024
|
-
rowSelected: cellSelectionMode ? undefined : this.rowSelected,
|
|
2025
|
-
isRowSelectable: this.isRowSelectable,
|
|
2026
|
-
selectable: this.selectable,
|
|
2027
|
-
view: this.view,
|
|
2028
|
-
columns: cellSelectionMode ? this.columnList.toArray() : undefined,
|
|
2029
|
-
isStacked: this.isStacked
|
|
2030
|
-
});
|
|
2031
|
-
if (!this.selectionDirective && !this.selectableSettings.enabled) {
|
|
2032
|
-
this.defaultSelection.reset();
|
|
2033
|
-
}
|
|
2034
|
-
if (this.selectionSubscription) {
|
|
2035
|
-
this.selectionSubscription.unsubscribe();
|
|
2036
|
-
}
|
|
2037
|
-
if (cellSelectionMode) {
|
|
2038
|
-
this.selectionSubscription = this.cellSelectionService.changes.subscribe((event) => {
|
|
2039
|
-
this.ngZone.run(() => this.selectionChange.emit(event));
|
|
2040
|
-
});
|
|
2041
|
-
}
|
|
2042
|
-
else {
|
|
2043
|
-
this.selectionSubscription = this.selectionService.changes.subscribe((event) => {
|
|
2044
|
-
this.ngZone.run(() => this.selectionChange.emit(event));
|
|
2045
|
-
});
|
|
2046
|
-
}
|
|
2047
|
-
}
|
|
2048
|
-
setEditFocus(element) {
|
|
2049
|
-
if (element) {
|
|
2050
|
-
return this.navigationService.tryFocus(element);
|
|
2051
|
-
}
|
|
2052
|
-
}
|
|
2053
|
-
columnInstance(column) {
|
|
2054
|
-
let instance;
|
|
2055
|
-
if (typeof column === 'number') {
|
|
2056
|
-
instance = this.columnsContainer.lockedLeafColumns.toArray()
|
|
2057
|
-
.concat(this.columnsContainer.nonLockedLeafColumns.toArray())[column];
|
|
2058
|
-
}
|
|
2059
|
-
else if (typeof column === 'string') {
|
|
2060
|
-
instance = this.columnList.filter((item) => item.field === column)[0];
|
|
2061
|
-
}
|
|
2062
|
-
else {
|
|
2063
|
-
instance = column;
|
|
2064
|
-
}
|
|
2065
|
-
if (!instance && isDevMode()) {
|
|
2066
|
-
throw new Error(ColumnConfigurationErrorMessages.invalidColumn(column));
|
|
2067
|
-
}
|
|
2068
|
-
return instance;
|
|
2069
|
-
}
|
|
2070
|
-
verifySettings() {
|
|
2071
|
-
if (isDevMode()) {
|
|
2072
|
-
const locked = this.lockedLeafColumns.length || (this.columnMenu && this.columnMenu.lock);
|
|
2073
|
-
const stickyColumns = this.stickyColumns.length || (this.columnMenu && this.columnMenu.stick);
|
|
2074
|
-
if (locked && this.detailTemplate) {
|
|
2075
|
-
throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('detail template', 'locked columns'));
|
|
2076
|
-
}
|
|
2077
|
-
if (stickyColumns && this.detailTemplate) {
|
|
2078
|
-
throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('detail template', 'sticky columns'));
|
|
2079
|
-
}
|
|
2080
|
-
if (this.lockedLeafColumns.length && !this.nonLockedLeafColumns.length) {
|
|
2081
|
-
console.warn(GridConfigurationErrorMessages.nonLockedColumnPresent);
|
|
2082
|
-
}
|
|
2083
|
-
if (!this.isStacked && (locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
2084
|
-
console.warn(ColumnConfigurationErrorMessages.requiredWidth(locked ? 'Locked' : 'Virtual'));
|
|
2085
|
-
}
|
|
2086
|
-
if (locked && !this.isScrollable) {
|
|
2087
|
-
console.warn(ColumnConfigurationErrorMessages.requiredScroll('Locked'));
|
|
2088
|
-
}
|
|
2089
|
-
if (stickyColumns && !this.isScrollable) {
|
|
2090
|
-
console.warn(ColumnConfigurationErrorMessages.requiredScroll('Sticky'));
|
|
2091
|
-
}
|
|
2092
|
-
if (this.virtualColumns && !this.isScrollable) {
|
|
2093
|
-
console.warn(ColumnConfigurationErrorMessages.requiredScroll('Virtual'));
|
|
2094
|
-
}
|
|
2095
|
-
if (this.columnList.filter(isColumnGroupComponent).filter((x) => !x.hasChildren).length) {
|
|
2096
|
-
throw new Error(ColumnConfigurationErrorMessages.groupColumnContent);
|
|
2097
|
-
}
|
|
2098
|
-
if (this.columnList.filter(x => x.locked && x.parent && !x.parent.isLocked).length) {
|
|
2099
|
-
throw new Error(ColumnConfigurationErrorMessages.lockedParent);
|
|
2100
|
-
}
|
|
2101
|
-
if (!this.isStacked && stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {
|
|
2102
|
-
console.warn(ColumnConfigurationErrorMessages.requiredWidth('Sticky'));
|
|
2103
|
-
}
|
|
2104
|
-
if (this.rowSticky && this.scrollable === 'virtual') {
|
|
2105
|
-
throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('sticky rows', 'row virtualization (scrollable="virtual")'));
|
|
2106
|
-
}
|
|
2107
|
-
if (this.rowSticky && this.groupable) {
|
|
2108
|
-
throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('sticky rows', 'grouping'));
|
|
2109
|
-
}
|
|
2110
|
-
if (this.wrapper?.nativeElement?.querySelector('kendo-toolbar') && this.toolbarTemplate) {
|
|
2111
|
-
console.warn(GridConfigurationErrorMessages.unsupportedToolbarConfig);
|
|
2112
|
-
}
|
|
2113
|
-
validateColumnsField(this.columnList);
|
|
2114
|
-
}
|
|
2115
|
-
}
|
|
2116
|
-
autoGenerateColumns() {
|
|
2117
|
-
if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {
|
|
2118
|
-
this.columns.reset(Object.keys(this.view.at(0)).map(field => {
|
|
2119
|
-
const column = new ColumnComponent(undefined, this.idService);
|
|
2120
|
-
column.field = field;
|
|
2121
|
-
return column;
|
|
2122
|
-
}));
|
|
2123
|
-
}
|
|
2124
|
-
}
|
|
2125
|
-
/**
|
|
2126
|
-
* @hidden
|
|
2127
|
-
*/
|
|
2128
|
-
stackedColumns = { columns: [], areDefault: false };
|
|
2129
|
-
generateStackedColumns() {
|
|
2130
|
-
if (!this.isStacked || !isPresent(this.dataLayoutMode)) {
|
|
2131
|
-
return;
|
|
2132
|
-
}
|
|
2133
|
-
this.stackedColumns.columns = [];
|
|
2134
|
-
if (typeof this.dataLayoutMode === 'object') {
|
|
2135
|
-
if (this.dataLayoutMode.mode === 'stacked' && this.dataLayoutMode.stackedCols) {
|
|
2136
|
-
const columns = this.dataLayoutMode.stackedCols;
|
|
2137
|
-
if (typeof columns === 'number') {
|
|
2138
|
-
for (let i = 0; i < columns; i++) {
|
|
2139
|
-
const currCol = { width: `${this.wrapper.nativeElement.clientWidth / columns}px` };
|
|
2140
|
-
this.stackedColumns.columns.push(currCol);
|
|
2141
|
-
}
|
|
2142
|
-
this.stackedColumns.areDefault = true;
|
|
2143
|
-
}
|
|
2144
|
-
else if (Array.isArray(columns)) {
|
|
2145
|
-
this.stackedColumns.columns = columns.map((colSize) => {
|
|
2146
|
-
const stackedColumn = {};
|
|
2147
|
-
if (typeof colSize === 'number') {
|
|
2148
|
-
stackedColumn.width = `${colSize}px`;
|
|
2149
|
-
}
|
|
2150
|
-
else if (typeof colSize === 'object' && colSize?.width) {
|
|
2151
|
-
stackedColumn.width = typeof colSize.width === 'number' ? `${colSize.width}px` : colSize.width;
|
|
2152
|
-
}
|
|
2153
|
-
else if (typeof colSize === 'string') {
|
|
2154
|
-
stackedColumn.width = colSize;
|
|
2155
|
-
}
|
|
2156
|
-
return stackedColumn;
|
|
2157
|
-
});
|
|
2158
|
-
this.stackedColumns.areDefault = false;
|
|
2159
|
-
}
|
|
2160
|
-
}
|
|
2161
|
-
}
|
|
2162
|
-
else {
|
|
2163
|
-
this.stackedColumns = { columns: [{ width: this.wrapper.nativeElement.clientWidth }], areDefault: true };
|
|
2164
|
-
}
|
|
2165
|
-
}
|
|
2166
|
-
attachStateChangesEmitter() {
|
|
2167
|
-
this.stateChangeSubscription =
|
|
2168
|
-
merge(this.pageChange.pipe(tap(() => {
|
|
2169
|
-
if (this.pageable) {
|
|
2170
|
-
this.ctx.scroller?.reset();
|
|
2171
|
-
}
|
|
2172
|
-
}), map(x => ({
|
|
2173
|
-
filter: this.filter, group: this.group, skip: x.skip, sort: this.sort, take: x.take
|
|
2174
|
-
}))), this.sortChange.pipe(tap(() => {
|
|
2175
|
-
this.ctx.scroller?.reset();
|
|
2176
|
-
}), map(sort => ({ filter: this.filter, group: this.group, skip: this.isVirtual && !this.pageable ? 0 : this.skip, sort: sort, take: this.pageSize }))), this.groupChange.pipe(tap(() => {
|
|
2177
|
-
this.ctx.scroller?.reset();
|
|
2178
|
-
}), map(group => ({
|
|
2179
|
-
filter: this.filter, group: group, skip: this.pageable ? this.skip : 0, sort: this.sort, take: (this.pageable || !group?.length) ? this.pageSize : undefined
|
|
2180
|
-
}))), this.filterChange.pipe(tap(() => {
|
|
2181
|
-
this.ctx.scroller?.reset();
|
|
2182
|
-
}), map(filter => ({
|
|
2183
|
-
filter: filter, group: this.group, skip: 0, sort: this.sort, take: this.pageSize
|
|
2184
|
-
}))))
|
|
2185
|
-
.subscribe(x => {
|
|
2186
|
-
this.closeCell();
|
|
2187
|
-
this.cancelCell();
|
|
2188
|
-
if (this.selectable && this.selectableSettings?.enabled && this.isVirtual) {
|
|
2189
|
-
this.blockArrowSelection = true;
|
|
2190
|
-
}
|
|
2191
|
-
this.isVirtual && this.ctx.scroller?.resetVirtualSkip();
|
|
2192
|
-
this.dataStateChange.emit(x);
|
|
2193
|
-
hasObservers(this.gridStateChange) && this.gridStateChange.emit({ ...this.currentState, ...x });
|
|
2194
|
-
});
|
|
2195
|
-
this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
|
|
2196
|
-
.subscribe(() => this.ngZone.run(() => {
|
|
2197
|
-
hasObservers(this.gridStateChange) && this.gridStateChange.emit(this.currentState);
|
|
2198
|
-
if (this.isVirtual) {
|
|
2199
|
-
this.ctx.scroller?.update();
|
|
2200
|
-
this.listComponent?.resetNavigationViewport();
|
|
2201
|
-
}
|
|
2202
|
-
})));
|
|
2203
|
-
}
|
|
2204
|
-
attachEditHandlers() {
|
|
2205
|
-
if (!this.editService) {
|
|
2206
|
-
return;
|
|
2207
|
-
}
|
|
2208
|
-
this.editServiceSubscription = this.editService
|
|
2209
|
-
.changes.subscribe(this.emitCRUDEvent.bind(this));
|
|
2210
|
-
}
|
|
2211
|
-
emitCRUDEvent(args) {
|
|
2212
|
-
const { action, rowIndex, formGroup } = args;
|
|
2213
|
-
let dataItem = this.view.at(rowIndex - this.skip);
|
|
2214
|
-
if (action !== 'add' && !dataItem) {
|
|
2215
|
-
dataItem = formGroup.value;
|
|
2216
|
-
}
|
|
2217
|
-
this.closeCell();
|
|
2218
|
-
Object.assign(args, {
|
|
2219
|
-
dataItem: dataItem,
|
|
2220
|
-
sender: this
|
|
2221
|
-
});
|
|
2222
|
-
switch (action) {
|
|
2223
|
-
case 'add':
|
|
2224
|
-
this.add.emit(args);
|
|
2225
|
-
break;
|
|
2226
|
-
case 'cancel':
|
|
2227
|
-
this.cancel.emit(args);
|
|
2228
|
-
break;
|
|
2229
|
-
case 'edit':
|
|
2230
|
-
this.edit.emit(args);
|
|
2231
|
-
break;
|
|
2232
|
-
case 'remove':
|
|
2233
|
-
this.remove.emit(args);
|
|
2234
|
-
break;
|
|
2235
|
-
case 'save':
|
|
2236
|
-
this.save.emit(args);
|
|
2237
|
-
break;
|
|
2238
|
-
case 'cellClose':
|
|
2239
|
-
this.cellClose.emit(args);
|
|
2240
|
-
break;
|
|
2241
|
-
default: break;
|
|
2242
|
-
}
|
|
2243
|
-
}
|
|
2244
|
-
attachDomEventHandlers() {
|
|
2245
|
-
this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {
|
|
2246
|
-
if (this.isStacked && !isPresent(args.column)) {
|
|
2247
|
-
return;
|
|
2248
|
-
}
|
|
2249
|
-
this.cellClick.emit(Object.assign({ sender: this }, args));
|
|
2250
|
-
});
|
|
2251
|
-
}
|
|
2252
|
-
attachElementEventHandlers() {
|
|
2253
|
-
if (isUniversal()) {
|
|
2254
|
-
return;
|
|
2255
|
-
}
|
|
2256
|
-
const wrapper = this.wrapper.nativeElement;
|
|
2257
|
-
const ariaRoot = this.ariaRoot.nativeElement;
|
|
2258
|
-
this.ngZone.runOutsideAngular(() => {
|
|
2259
|
-
const resizeCheck = this.resizeCheck.bind(this);
|
|
2260
|
-
const resizeSubscription = this.renderer.listen('window', 'resize', resizeCheck);
|
|
2261
|
-
const orientationSubscription = this.renderer.listen('window', 'orientationchange', resizeCheck);
|
|
2262
|
-
const documentClickSubscription = this.renderer.listen('document', 'click', (args) => {
|
|
2263
|
-
const activeElement = document.activeElement;
|
|
2264
|
-
if (this.editService.shouldCloseCell() &&
|
|
2265
|
-
!closest(args.target, matchesClasses('k-animation-container k-grid-ignore-click')) &&
|
|
2266
|
-
!(activeElement &&
|
|
2267
|
-
(closest(activeElement, matchesClasses('k-animation-container')) ||
|
|
2268
|
-
isInEditedCell(activeElement, this.wrapper.nativeElement, this.isStacked)))) {
|
|
2269
|
-
this.editService.closeCell(args);
|
|
2270
|
-
}
|
|
2271
|
-
});
|
|
2272
|
-
const windowBlurSubscription = this.renderer.listen('window', 'blur', (args) => {
|
|
2273
|
-
const activeElement = document.activeElement;
|
|
2274
|
-
if (activeElement && !(matchesNodeName('input')(activeElement) && activeElement.type === 'file' &&
|
|
2275
|
-
isInEditedCell(activeElement, this.wrapper.nativeElement, this.isStacked))) {
|
|
2276
|
-
this.editService.closeCell(args);
|
|
2277
|
-
}
|
|
2278
|
-
this.domEvents.windowBlur.emit(args);
|
|
2279
|
-
});
|
|
2280
|
-
const clickSubscription = this.renderer.listen(wrapper, 'click', (args) => {
|
|
2281
|
-
this.domEvents.click.emit(args);
|
|
2282
|
-
});
|
|
2283
|
-
const keydownSubscription = this.renderer.listen(wrapper, 'keydown', (args) => {
|
|
2284
|
-
this.domEvents.keydown.emit(args);
|
|
2285
|
-
});
|
|
2286
|
-
const shiftKeyupSubscription = this.renderer.listen(wrapper, 'keyup', (args) => {
|
|
2287
|
-
if (args.key === 'Shift') {
|
|
2288
|
-
this.domEvents.shiftKeyup.emit(args);
|
|
2289
|
-
}
|
|
2290
|
-
});
|
|
2291
|
-
// focusIn and focusOut are relative to the element with ARIA role "grid"
|
|
2292
|
-
let focused = false;
|
|
2293
|
-
const focusInSubscription = this.renderer.listen(ariaRoot, 'focusin', (args) => {
|
|
2294
|
-
this.domEvents.focus.emit(args);
|
|
2295
|
-
if (!focused) {
|
|
2296
|
-
this.domEvents.focusIn.emit(args);
|
|
2297
|
-
focused = true;
|
|
2298
|
-
}
|
|
2299
|
-
});
|
|
2300
|
-
const focusOutSubscription = this.renderer.listen(ariaRoot, 'focusout', (args) => {
|
|
2301
|
-
const next = args.relatedTarget || document.activeElement;
|
|
2302
|
-
const outside = !closest(next, (node) => node === ariaRoot);
|
|
2303
|
-
if (outside) {
|
|
2304
|
-
this.domEvents.focusOut.emit(args);
|
|
2305
|
-
this.domEvents.shiftKeyup.emit(args);
|
|
2306
|
-
focused = false;
|
|
2307
|
-
}
|
|
2308
|
-
});
|
|
2309
|
-
this.detachElementEventHandlers = () => {
|
|
2310
|
-
resizeSubscription();
|
|
2311
|
-
orientationSubscription();
|
|
2312
|
-
documentClickSubscription();
|
|
2313
|
-
windowBlurSubscription();
|
|
2314
|
-
clickSubscription();
|
|
2315
|
-
keydownSubscription();
|
|
2316
|
-
shiftKeyupSubscription();
|
|
2317
|
-
focusInSubscription();
|
|
2318
|
-
focusOutSubscription();
|
|
2319
|
-
};
|
|
2320
|
-
});
|
|
2321
|
-
}
|
|
2322
|
-
matchesMedia(c) {
|
|
2323
|
-
return this.responsiveService.matchesMedia(c.media);
|
|
2324
|
-
}
|
|
2325
|
-
resizeCheck() {
|
|
2326
|
-
if (window.innerWidth !== this.cachedWindowWidth) {
|
|
2327
|
-
this.cachedWindowWidth = window.innerWidth;
|
|
2328
|
-
let hasChanges = false;
|
|
2329
|
-
this.columnList.filterHierarchy(column => {
|
|
2330
|
-
const matchesMedia = this.matchesMedia(column);
|
|
2331
|
-
if (column.matchesMedia !== matchesMedia) {
|
|
2332
|
-
hasChanges = true;
|
|
2333
|
-
column.matchesMedia = matchesMedia;
|
|
2334
|
-
}
|
|
2335
|
-
return column.isVisible;
|
|
2336
|
-
});
|
|
2337
|
-
if (hasChanges) {
|
|
2338
|
-
this.ngZone.run(() => {
|
|
2339
|
-
this.changeDetectorRef.markForCheck();
|
|
2340
|
-
});
|
|
2341
|
-
}
|
|
2342
|
-
}
|
|
2343
|
-
}
|
|
2344
|
-
emitPDFExportEvent() {
|
|
2345
|
-
const args = new PDFExportEvent();
|
|
2346
|
-
this.pdfExport.emit(args);
|
|
2347
|
-
if (!args.isDefaultPrevented()) {
|
|
2348
|
-
this.saveAsPDF();
|
|
2349
|
-
}
|
|
2350
|
-
}
|
|
2351
|
-
syncHeaderHeight(observable) {
|
|
2352
|
-
return observable
|
|
2353
|
-
.pipe(filter(() => isPresent(this.lockedHeader)))
|
|
2354
|
-
.subscribe(() => syncRowsHeight(this.lockedHeader.nativeElement.children[0], this.header.nativeElement.children[0]));
|
|
2355
|
-
}
|
|
2356
|
-
columnsContainerChange() {
|
|
2357
|
-
this.columnsContainerChangeSubscription =
|
|
2358
|
-
this.syncHeaderHeight(this.columnsContainer.changes.pipe(filter(() => this.lockedColumns.length > 0), switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1)))));
|
|
2359
|
-
}
|
|
2360
|
-
handleColumnResize() {
|
|
2361
|
-
const resizes = this.columnResizingService.changes;
|
|
2362
|
-
this.columnResizingSubscription = resizes.pipe(tap(e => {
|
|
2363
|
-
if (e.type === 'start') {
|
|
2364
|
-
this.renderer.addClass(this.wrapper.nativeElement, 'k-grid-column-resizing');
|
|
2365
|
-
}
|
|
2366
|
-
else if (e.type === 'end') {
|
|
2367
|
-
this.renderer.removeClass(this.wrapper.nativeElement, 'k-grid-column-resizing');
|
|
2368
|
-
}
|
|
2369
|
-
}), filter(e => e.type === 'start'), switchMap(() => resizes.pipe(takeUntil(resizes.pipe(filter(e => e.type === 'triggerAutoFit'))), filter(e => e.type === 'end'))))
|
|
2370
|
-
.subscribe(this.notifyResize.bind(this));
|
|
2371
|
-
}
|
|
2372
|
-
notifyResize(e) {
|
|
2373
|
-
const args = e.resizedColumns
|
|
2374
|
-
.filter(item => isTruthy(item.column.resizable) && !item.column.isColumnGroup)
|
|
2375
|
-
.map(item => ({
|
|
2376
|
-
column: item.column,
|
|
2377
|
-
newWidth: roundDown(item.column.width),
|
|
2378
|
-
oldWidth: roundDown(item.oldWidth)
|
|
2379
|
-
}));
|
|
2380
|
-
this.columnResize.emit(args);
|
|
2381
|
-
}
|
|
2382
|
-
assertNavigable() {
|
|
2383
|
-
if (isDevMode() && !this.navigationService.enabled) {
|
|
2384
|
-
throw new Error(GridConfigurationErrorMessages.focusNavigable);
|
|
2385
|
-
}
|
|
2386
|
-
}
|
|
2387
|
-
_rowClass = () => null;
|
|
2388
|
-
navigationMetadata() {
|
|
2389
|
-
const isVirtual = this.isVirtual;
|
|
2390
|
-
const dataVirtualization = isVirtual && !this.pageable && !this.group?.length;
|
|
2391
|
-
const groupedVirtual = isVirtual && this.group?.length > 0;
|
|
2392
|
-
let dataRows;
|
|
2393
|
-
if (this.pageable) {
|
|
2394
|
-
dataRows = this.skip + Math.min(this.pageSize, this.view.length); // last page might have less rows than the rest
|
|
2395
|
-
}
|
|
2396
|
-
else {
|
|
2397
|
-
dataRows = this.view.total;
|
|
2398
|
-
}
|
|
2399
|
-
if (groupedVirtual) {
|
|
2400
|
-
dataRows = this.ctx.scroller?.total ?? 0;
|
|
2401
|
-
if (!dataVirtualization) {
|
|
2402
|
-
dataRows += this.skip;
|
|
2403
|
-
}
|
|
2404
|
-
}
|
|
2405
|
-
const addRowOffset = this.editService.hasNewItem ? 1 : 0;
|
|
2406
|
-
const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
|
|
2407
|
-
const headerRows = this.isStacked ? 0 : this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
|
|
2408
|
-
return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.showFooter ? 1 : 0, this.isStacked);
|
|
2409
|
-
}
|
|
2410
|
-
applyAutoSize() {
|
|
2411
|
-
const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
|
|
2412
|
-
if (cols.length > 0) {
|
|
2413
|
-
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.autoFitColumns(cols));
|
|
2414
|
-
}
|
|
2415
|
-
}
|
|
2416
|
-
onColumnRangeChange(range) {
|
|
2417
|
-
const viewportColumns = this.viewportColumns = [];
|
|
2418
|
-
const columnsArray = this.columnsContainer.nonLockedLeafColumns.toArray();
|
|
2419
|
-
let leafViewportColumns = columnsArray.slice(range.start, range.end + 1);
|
|
2420
|
-
const stickyBeforeStart = columnsArray.slice(0, range.start).filter(c => c.sticky && !leafViewportColumns.some(col => col === c));
|
|
2421
|
-
const stickyAfterEnd = columnsArray.slice(range.end, columnsArray.length).filter(c => c.sticky && !leafViewportColumns.some(col => col === c));
|
|
2422
|
-
leafViewportColumns = [...stickyBeforeStart, ...leafViewportColumns, ...stickyAfterEnd];
|
|
2423
|
-
for (let idx = 0; idx < leafViewportColumns.length; idx++) {
|
|
2424
|
-
let column = leafViewportColumns[idx];
|
|
2425
|
-
while (column.parent) {
|
|
2426
|
-
column = column.parent;
|
|
2427
|
-
}
|
|
2428
|
-
const toAdd = [column];
|
|
2429
|
-
while (toAdd.length) {
|
|
2430
|
-
column = toAdd.shift();
|
|
2431
|
-
viewportColumns.push(column);
|
|
2432
|
-
if (column.isColumnGroup) {
|
|
2433
|
-
const children = columnsArray.filter(c => c.parent && c.parent.id === column.id);
|
|
2434
|
-
toAdd.unshift(...children);
|
|
2435
|
-
}
|
|
2436
|
-
}
|
|
2437
|
-
const lastFromGroup = viewportColumns[viewportColumns.length - 1];
|
|
2438
|
-
column = leafViewportColumns[idx];
|
|
2439
|
-
while (column !== lastFromGroup && idx < leafViewportColumns.length) {
|
|
2440
|
-
idx++;
|
|
2441
|
-
column = leafViewportColumns[idx];
|
|
2442
|
-
}
|
|
2443
|
-
}
|
|
2444
|
-
if (range.start > 0) {
|
|
2445
|
-
const first = leafViewportColumns[0];
|
|
2446
|
-
let offset = range.offset;
|
|
2447
|
-
let current = viewportColumns[0];
|
|
2448
|
-
let index = 0;
|
|
2449
|
-
while (current !== first) {
|
|
2450
|
-
offset -= current.isColumnGroup ? 0 : current.width;
|
|
2451
|
-
index++;
|
|
2452
|
-
current = viewportColumns[index];
|
|
2453
|
-
}
|
|
2454
|
-
if (offset > 0) {
|
|
2455
|
-
const totalLevels = this.columnsContainer.totalLevels;
|
|
2456
|
-
let previous;
|
|
2457
|
-
for (let idx = 0; idx <= totalLevels; idx++) {
|
|
2458
|
-
const offsetColumn = idx < totalLevels ? new ColumnGroupComponent(previous) : new ColumnBase(previous);
|
|
2459
|
-
previous = offsetColumn;
|
|
2460
|
-
offsetColumn.title = "\u00A0";
|
|
2461
|
-
offsetColumn.width = offset;
|
|
2462
|
-
viewportColumns.unshift(offsetColumn);
|
|
2463
|
-
}
|
|
2464
|
-
}
|
|
2465
|
-
}
|
|
2466
|
-
this.leafViewportColumns = viewportColumns.filter(c => !c.isColumnGroup);
|
|
2467
|
-
}
|
|
2468
|
-
toggleDetailRowLegacy(index, expand) {
|
|
2469
|
-
const hasCallback = typeof this.isDetailExpanded === 'function';
|
|
2470
|
-
if (isDevMode() && hasCallback) {
|
|
2471
|
-
throw new Error(GridConfigurationErrorMessages.expandCollapseMethods('expandRow', 'collapseRow', 'kendoGridDetailsExpandBy', 'isDetailExpanded'));
|
|
2472
|
-
}
|
|
2473
|
-
if (!isDevMode() && hasCallback) {
|
|
2474
|
-
return;
|
|
2475
|
-
}
|
|
2476
|
-
if (this.detailsService.isExpanded(index, null) !== expand) {
|
|
2477
|
-
this.detailsService.toggleRow(index, null);
|
|
2478
|
-
}
|
|
2479
|
-
}
|
|
2480
|
-
toggleGroupRowLegacy(index, expand) {
|
|
2481
|
-
const hasCallback = typeof this.isGroupExpanded === 'function';
|
|
2482
|
-
if (isDevMode() && hasCallback) {
|
|
2483
|
-
throw new Error(GridConfigurationErrorMessages.expandCollapseMethods('expandGroup', 'collapseGroup', 'kendoGridExpandGroupBy', 'isGroupExpanded'));
|
|
2484
|
-
}
|
|
2485
|
-
if (!isDevMode() && hasCallback) {
|
|
2486
|
-
return;
|
|
2487
|
-
}
|
|
2488
|
-
if (this.groupsService.isExpanded({ groupIndex: index }) !== expand) {
|
|
2489
|
-
this.groupsService.toggleRow({ index }, false);
|
|
2490
|
-
}
|
|
2491
|
-
this.changeDetectorRef.markForCheck();
|
|
2492
|
-
}
|
|
2493
|
-
shouldResetSelection(selectableChanges) {
|
|
2494
|
-
const previousValue = selectableChanges.previousValue;
|
|
2495
|
-
if (!previousValue) {
|
|
2496
|
-
// Selection was disabled, no need to reset.
|
|
2497
|
-
return false;
|
|
2498
|
-
}
|
|
2499
|
-
const currentValue = selectableChanges.currentValue;
|
|
2500
|
-
if (!currentValue || currentValue.enabled === false) {
|
|
2501
|
-
// Selection disabled, reset.
|
|
2502
|
-
return true;
|
|
2503
|
-
}
|
|
2504
|
-
return previousValue.cell !== currentValue.cell;
|
|
2505
|
-
}
|
|
2506
|
-
notifyReorderContainers() {
|
|
2507
|
-
this.dragTargetContainer?.notify();
|
|
2508
|
-
this.dropTargetContainer?.notify();
|
|
2509
|
-
}
|
|
2510
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridComponent, deps: [{ token: i1.BrowserSupportService }, { token: i2.SelectionService }, { token: i3.CellSelectionService }, { token: i0.ElementRef }, { token: i4.GroupInfoService }, { token: i5.GroupsService }, { token: i6.ChangeNotificationService }, { token: i7.DetailsService }, { token: i8.EditService }, { token: i9.FilterService }, { token: i10.PDFService }, { token: i11.ResponsiveService }, { token: i0.Renderer2 }, { token: i12.ExcelService }, { token: i0.NgZone }, { token: i13.ScrollSyncService }, { token: i14.DomEventsService }, { token: i15.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i16.ColumnReorderService }, { token: i17.ColumnInfoService }, { token: i18.NavigationService }, { token: i19.SortService }, { token: i20.ScrollRequestService }, { token: i21.LocalizationService }, { token: i22.ContextService }, { token: i23.SizingOptionsService }, { token: i24.AdaptiveGridService }, { token: i25.RowReorderService }, { token: i26.DataMappingService }, { token: i27.GridAIRequestResponseService }, { token: i28.IdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2511
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GridComponent, isStandalone: true, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", adaptiveMode: "adaptiveMode", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", gridResizable: "gridResizable", rowReorderable: "rowReorderable", navigable: "navigable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", isRowSelectable: "isRowSelectable", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", showInactiveTools: "showInactiveTools", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded", dataLayoutMode: "dataLayoutMode" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", gridStateChange: "gridStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-stack": "this.stackedClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass", "class.k-grid-resizable": "this.isResizable", "style.minWidth": "this.minWidth", "style.maxWidth": "this.maxWidth", "style.minHeight": "this.minHeight", "style.maxHeight": "this.maxHeight" } }, providers: [
|
|
2512
|
-
BrowserSupportService,
|
|
2513
|
-
LocalizationService,
|
|
2514
|
-
ColumnInfoService,
|
|
2515
|
-
SelectionService,
|
|
2516
|
-
CellSelectionService,
|
|
2517
|
-
DetailsService,
|
|
2518
|
-
GroupsService,
|
|
2519
|
-
GroupInfoService,
|
|
2520
|
-
ChangeNotificationService,
|
|
2521
|
-
EditService,
|
|
2522
|
-
PDFService,
|
|
2523
|
-
SuspendService,
|
|
2524
|
-
{
|
|
2525
|
-
provide: CELL_CONTEXT,
|
|
2526
|
-
useValue: EMPTY_CELL_CONTEXT
|
|
2527
|
-
},
|
|
2528
|
-
{
|
|
2529
|
-
provide: L10N_PREFIX,
|
|
2530
|
-
useValue: 'kendo.grid'
|
|
2531
|
-
},
|
|
2532
|
-
FilterService,
|
|
2533
|
-
ResponsiveService,
|
|
2534
|
-
PagerContextService,
|
|
2535
|
-
PagerNavigationService,
|
|
2536
|
-
ExcelService,
|
|
2537
|
-
ScrollSyncService,
|
|
2538
|
-
ResizeService,
|
|
2539
|
-
LocalDataChangesService,
|
|
2540
|
-
DomEventsService,
|
|
2541
|
-
ColumnResizingService,
|
|
2542
|
-
SinglePopupService,
|
|
2543
|
-
DragAndDropService,
|
|
2544
|
-
DragHintService,
|
|
2545
|
-
DropCueService,
|
|
2546
|
-
ColumnReorderService,
|
|
2547
|
-
NavigationService,
|
|
2548
|
-
FocusRoot,
|
|
2549
|
-
IdService,
|
|
2550
|
-
CellSelectionAggregateService,
|
|
2551
|
-
ScrollRequestService,
|
|
2552
|
-
SortService,
|
|
2553
|
-
ContextService,
|
|
2554
|
-
SizingOptionsService,
|
|
2555
|
-
RowReorderService,
|
|
2556
|
-
ClipboardService,
|
|
2557
|
-
GridAIRequestResponseService,
|
|
2558
|
-
RowspanService,
|
|
2559
|
-
AdaptiveGridService,
|
|
2560
|
-
ColumnMenuService,
|
|
2561
|
-
MenuTabbingService,
|
|
2562
|
-
DataMappingService
|
|
2563
|
-
], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "statusBarTemplateChildren", predicate: StatusBarTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "windowContainer", first: true, predicate: ["windowContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
|
|
2564
|
-
<ng-container kendoGridLocalizedMessages
|
|
2565
|
-
i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
|
|
2566
|
-
groupPanelEmpty="Drag a column header and drop it here to group by that column"
|
|
2567
|
-
|
|
2568
|
-
i18n-noRecords="kendo.grid.noRecords|The label visible in the Grid when there are no records"
|
|
2569
|
-
noRecords="No records available."
|
|
2570
|
-
|
|
2571
|
-
i18n-pagerLabel="kendo.grid.pagerLabel|The label for the Grid pager"
|
|
2572
|
-
pagerLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
|
|
2573
|
-
|
|
2574
|
-
i18n-pagerFirstPage="kendo.grid.pagerFirstPage|The label for the first page button in Grid pager"
|
|
2575
|
-
pagerFirstPage="Go to the first page"
|
|
2576
|
-
|
|
2577
|
-
i18n-pagerPreviousPage="kendo.grid.pagerPreviousPage|The label for the previous page button in Grid pager"
|
|
2578
|
-
pagerPreviousPage="Go to the previous page"
|
|
2579
|
-
|
|
2580
|
-
i18n-pagerNextPage="kendo.grid.pagerNextPage|The label for the next page button in Grid pager"
|
|
2581
|
-
pagerNextPage="Go to the next page"
|
|
2582
|
-
|
|
2583
|
-
i18n-pagerLastPage="kendo.grid.pagerLastPage|The label for the last page button in Grid pager"
|
|
2584
|
-
pagerLastPage="Go to the last page"
|
|
2585
|
-
|
|
2586
|
-
i18n-pagerPage="kendo.grid.pagerPage|The label before the current page number in the Grid pager"
|
|
2587
|
-
pagerPage="Page"
|
|
2588
|
-
|
|
2589
|
-
i18n-pagerOf="kendo.grid.pagerOf|The label before the total pages number in the Grid pager"
|
|
2590
|
-
pagerOf="of"
|
|
2591
|
-
|
|
2592
|
-
i18n-pagerItems="kendo.grid.pagerItems|The label after the total pages number in the Grid pager"
|
|
2593
|
-
pagerItems="items"
|
|
2594
|
-
|
|
2595
|
-
i18n-pagerPageNumberInputTitle="kendo.grid.pagerPageNumberInputTitle|The label for the pager input in the Grid pager"
|
|
2596
|
-
pagerPageNumberInputTitle="Page Number"
|
|
2597
|
-
|
|
2598
|
-
i18n-pagerItemsPerPage="kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager"
|
|
2599
|
-
pagerItemsPerPage="items per page"
|
|
2600
|
-
|
|
2601
|
-
i18n-pagerInputLabel="kendo.grid.pagerInputLabel|The text of the aria-label attribute applied to the input element for entering the page number"
|
|
2602
|
-
pagerInputLabel="Type a page number"
|
|
2603
|
-
|
|
2604
|
-
i18n-filter="kendo.grid.filter|The label of the filter cell or icon"
|
|
2605
|
-
filter="Filter"
|
|
2606
|
-
|
|
2607
|
-
i18n-filterInputLabel="kendo.grid.filterInputLabel|The label of the filter row and menu inputs"
|
|
2608
|
-
filterInputLabel="{{ '{columnName} Filter' }}"
|
|
2609
|
-
|
|
2610
|
-
i18n-filterMenuTitle="kendo.grid.filterMenuTitle|The title of the filter menu icon"
|
|
2611
|
-
filterMenuTitle="{{ '{columnName} Filter Menu' }}"
|
|
2612
|
-
|
|
2613
|
-
i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
|
|
2614
|
-
filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
|
|
2615
|
-
|
|
2616
|
-
i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
|
|
2617
|
-
filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
|
|
2618
|
-
|
|
2619
|
-
i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
|
|
2620
|
-
booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
|
|
2621
|
-
|
|
2622
|
-
i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
|
|
2623
|
-
filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
|
|
2624
|
-
|
|
2625
|
-
i18n-filterEqOperator="kendo.grid.filterEqOperator|The text of the equal filter operator"
|
|
2626
|
-
filterEqOperator="Is equal to"
|
|
2627
|
-
|
|
2628
|
-
i18n-filterNotEqOperator="kendo.grid.filterNotEqOperator|The text of the not equal filter operator"
|
|
2629
|
-
filterNotEqOperator="Is not equal to"
|
|
2630
|
-
|
|
2631
|
-
i18n-filterIsNullOperator="kendo.grid.filterIsNullOperator|The text of the is null filter operator"
|
|
2632
|
-
filterIsNullOperator="Is null"
|
|
2633
|
-
|
|
2634
|
-
i18n-filterIsNotNullOperator="kendo.grid.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
2635
|
-
filterIsNotNullOperator="Is not null"
|
|
2636
|
-
|
|
2637
|
-
i18n-filterIsEmptyOperator="kendo.grid.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
2638
|
-
filterIsEmptyOperator="Is empty"
|
|
2639
|
-
|
|
2640
|
-
i18n-filterIsNotEmptyOperator="kendo.grid.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
2641
|
-
filterIsNotEmptyOperator="Is not empty"
|
|
2642
|
-
|
|
2643
|
-
i18n-filterStartsWithOperator="kendo.grid.filterStartsWithOperator|The text of the starts with filter operator"
|
|
2644
|
-
filterStartsWithOperator="Starts with"
|
|
2645
|
-
|
|
2646
|
-
i18n-filterContainsOperator="kendo.grid.filterContainsOperator|The text of the contains filter operator"
|
|
2647
|
-
filterContainsOperator="Contains"
|
|
2648
|
-
|
|
2649
|
-
i18n-filterNotContainsOperator="kendo.grid.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
2650
|
-
filterNotContainsOperator="Does not contain"
|
|
2651
|
-
|
|
2652
|
-
i18n-filterEndsWithOperator="kendo.grid.filterEndsWithOperator|The text of the ends with filter operator"
|
|
2653
|
-
filterEndsWithOperator="Ends with"
|
|
2654
|
-
|
|
2655
|
-
i18n-filterGteOperator="kendo.grid.filterGteOperator|The text of the greater than or equal filter operator"
|
|
2656
|
-
filterGteOperator="Is greater than or equal to"
|
|
2657
|
-
|
|
2658
|
-
i18n-filterGtOperator="kendo.grid.filterGtOperator|The text of the greater than filter operator"
|
|
2659
|
-
filterGtOperator="Is greater than"
|
|
2660
|
-
|
|
2661
|
-
i18n-filterLteOperator="kendo.grid.filterLteOperator|The text of the less than or equal filter operator"
|
|
2662
|
-
filterLteOperator="Is less than or equal to"
|
|
2663
|
-
|
|
2664
|
-
i18n-filterLtOperator="kendo.grid.filterLtOperator|The text of the less than filter operator"
|
|
2665
|
-
filterLtOperator="Is less than"
|
|
2666
|
-
|
|
2667
|
-
i18n-filterIsTrue="kendo.grid.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
2668
|
-
filterIsTrue="Is True"
|
|
2669
|
-
|
|
2670
|
-
i18n-filterIsFalse="kendo.grid.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
2671
|
-
filterIsFalse="Is False"
|
|
2672
|
-
|
|
2673
|
-
i18n-filterBooleanAll="kendo.grid.filterBooleanAll|The text of the (All) boolean filter option"
|
|
2674
|
-
filterBooleanAll="(All)"
|
|
2675
|
-
|
|
2676
|
-
i18n-filterAfterOrEqualOperator="kendo.grid.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
2677
|
-
filterAfterOrEqualOperator="Is after or equal to"
|
|
2678
|
-
|
|
2679
|
-
i18n-filterAfterOperator="kendo.grid.filterAfterOperator|The text of the after date filter operator"
|
|
2680
|
-
filterAfterOperator="Is after"
|
|
2681
|
-
|
|
2682
|
-
i18n-filterBeforeOperator="kendo.grid.filterBeforeOperator|The text of the before date filter operator"
|
|
2683
|
-
filterBeforeOperator="Is before"
|
|
2684
|
-
|
|
2685
|
-
i18n-filterBeforeOrEqualOperator="kendo.grid.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
2686
|
-
filterBeforeOrEqualOperator="Is before or equal to"
|
|
2687
|
-
|
|
2688
|
-
i18n-filterFilterButton="kendo.grid.filterFilterButton|The text of the filter button"
|
|
2689
|
-
filterFilterButton="Filter"
|
|
2690
|
-
|
|
2691
|
-
i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
|
|
2692
|
-
filterClearButton="Clear"
|
|
2693
|
-
|
|
2694
|
-
i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
|
|
2695
|
-
sortClearButton="Clear sorting"
|
|
2696
|
-
|
|
2697
|
-
i18n-adaptiveCloseButtonTitle="kendo.grid.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
|
|
2698
|
-
adaptiveCloseButtonTitle="Close"
|
|
2699
|
-
|
|
2700
|
-
i18n-adaptiveBackButtonTitle="kendo.grid.adaptiveBackButtonTitle|The title of the Back button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
|
|
2701
|
-
adaptiveBackButtonTitle="Back"
|
|
2702
|
-
|
|
2703
|
-
i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
|
|
2704
|
-
filterClearAllButton="Clear all filters"
|
|
2705
|
-
|
|
2706
|
-
i18n-groupClearButton="kendo.grid.groupClearButton|The text of the clear grouping button in the Group Toolbar Tool and adaptive Group Toolbar Tool"
|
|
2707
|
-
groupClearButton="Clear grouping"
|
|
2708
|
-
|
|
2709
|
-
i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
|
|
2710
|
-
sortDoneButton="Done"
|
|
2711
|
-
|
|
2712
|
-
i18n-groupDoneButton="kendo.grid.groupDoneButton|The text of the done group button in the adaptive Group Toolbar Tool"
|
|
2713
|
-
groupDoneButton="Done"
|
|
2714
|
-
|
|
2715
|
-
i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
|
|
2716
|
-
filterAndLogic="And"
|
|
2717
|
-
|
|
2718
|
-
i18n-filterOrLogic="kendo.grid.filterOrLogic|The text of the Or filter logic"
|
|
2719
|
-
filterOrLogic="Or"
|
|
2720
|
-
|
|
2721
|
-
i18n-filterToolbarToolText="kendo.grid.filterToolbarToolText|The button text of the Filter toolbar tool"
|
|
2722
|
-
filterToolbarToolText="Filter"
|
|
2723
|
-
|
|
2724
|
-
i18n-loading="kendo.grid.loading|The loading text"
|
|
2725
|
-
loading="Loading"
|
|
2726
|
-
|
|
2727
|
-
i18n-gridLabel="kendo.grid.gridLabel|The Grid aria-label"
|
|
2728
|
-
gridLabel="Data table"
|
|
2729
|
-
|
|
2730
|
-
i18n-columnMenu="kendo.grid.columnMenu|The title of the column menu icon"
|
|
2731
|
-
columnMenu="{{ '{columnName} Column Menu' }}"
|
|
2732
|
-
|
|
2733
|
-
i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
|
|
2734
|
-
columns="Columns"
|
|
2735
|
-
|
|
2736
|
-
i18n-columnsSubtitle="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
|
|
2737
|
-
columnsSubtitle="Selected fields are visible"
|
|
2738
|
-
|
|
2739
|
-
i18n-adaptiveFilterTitle="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
|
|
2740
|
-
adaptiveFilterTitle="Filter by"
|
|
2741
|
-
|
|
2742
|
-
i18n-adaptiveFilterOperatorsTitle="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
|
|
2743
|
-
adaptiveFilterOperatorsTitle="Operators"
|
|
2744
|
-
|
|
2745
|
-
i18n-adaptiveSortTitle="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
|
|
2746
|
-
adaptiveSortTitle="Sort by"
|
|
2747
|
-
|
|
2748
|
-
i18n-adaptiveGroupTitle="kendo.grid.adaptiveGroupTitle|The title that is displayed in the adaptive Group Toolbar Tool."
|
|
2749
|
-
adaptiveGroupTitle="Group by"
|
|
2750
|
-
|
|
2751
|
-
i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
|
|
2752
|
-
lock="Lock"
|
|
2753
|
-
|
|
2754
|
-
i18n-unlock="kendo.grid.unlock|The text shown in the column menu for the unlock item"
|
|
2755
|
-
unlock="Unlock"
|
|
2756
|
-
|
|
2757
|
-
i18n-setColumnPosition="kendo.grid.setColumnPosition|The text shown in the column menu for the set column position item"
|
|
2758
|
-
setColumnPosition="Set Column Position"
|
|
2759
|
-
|
|
2760
|
-
i18n-stick="kendo.grid.stick|The text shown in the column menu for the stick item"
|
|
2761
|
-
stick="Stick"
|
|
2762
|
-
|
|
2763
|
-
i18n-unstick="kendo.grid.unstick|The text shown in the column menu for the unstick item"
|
|
2764
|
-
unstick="Unstick"
|
|
2765
|
-
|
|
2766
|
-
i18n-sortable="kendo.grid.sortable|The label of the sort icon"
|
|
2767
|
-
sortable="Sortable"
|
|
2768
|
-
|
|
2769
|
-
i18n-sortAscending="kendo.grid.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
2770
|
-
sortAscending="Sort Ascending"
|
|
2771
|
-
|
|
2772
|
-
i18n-sortDescending="kendo.grid.sortDescending|The text shown in the column menu for the sort descending item"
|
|
2773
|
-
sortDescending="Sort Descending"
|
|
2774
|
-
|
|
2775
|
-
i18n-autosizeAllColumns="kendo.grid.autosizeAllColumns|The text shown in the column menu for the autosize all columns item"
|
|
2776
|
-
autosizeAllColumns="Autosize All Columns"
|
|
2777
|
-
|
|
2778
|
-
i18n-autosizeThisColumn="kendo.grid.autosizeThisColumn|The text shown in the column menu for the autosize this column item"
|
|
2779
|
-
autosizeThisColumn="Autosize This Column"
|
|
2780
|
-
|
|
2781
|
-
i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
|
|
2782
|
-
sortedDefault="Not Sorted"
|
|
2783
|
-
|
|
2784
|
-
i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
|
|
2785
|
-
sortedAscending="Sorted Ascending"
|
|
2786
|
-
|
|
2787
|
-
i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
|
|
2788
|
-
sortedDescending="Sorted Descending"
|
|
2789
|
-
|
|
2790
|
-
i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
2791
|
-
columnsApply="Apply"
|
|
2792
|
-
|
|
2793
|
-
i18n-columnsReset="kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
2794
|
-
columnsReset="Reset"
|
|
2795
|
-
|
|
2796
|
-
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows. Applies also to the expand button text in stacked mode."
|
|
2797
|
-
detailExpand="Expand Details"
|
|
2798
|
-
|
|
2799
|
-
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows. Applies also to the collapse button text in stacked mode."
|
|
2800
|
-
detailCollapse="Collapse Details"
|
|
2801
|
-
|
|
2802
|
-
i18n-filterDateToday="kendo.grid.filterDateToday|The text of the Today button of the Date filter."
|
|
2803
|
-
filterDateToday="TODAY"
|
|
2804
|
-
|
|
2805
|
-
i18n-filterDateToggle="kendo.grid.filterDateToggle|The title of the Toggle button of the Date filter."
|
|
2806
|
-
filterDateToggle="Toggle Calendar"
|
|
2807
|
-
|
|
2808
|
-
i18n-filterNumericDecrement="kendo.grid.filterNumericDecrement|The title of the Decrement button of the Numeric filter."
|
|
2809
|
-
filterNumericDecrement="Decrement"
|
|
2810
|
-
|
|
2811
|
-
i18n-filterNumericIncrement="kendo.grid.filterNumericIncrement|The title of the Increment button of the Numeric filter."
|
|
2812
|
-
filterNumericIncrement="Increment"
|
|
2813
|
-
|
|
2814
|
-
i18n-selectionCheckboxLabel="kendo.grid.selectionCheckboxLabel|The labels of the checkbox column checkboxes."
|
|
2815
|
-
selectionCheckboxLabel="Select Row"
|
|
2816
|
-
|
|
2817
|
-
i18n-selectAllCheckboxLabel="kendo.grid.selectAllCheckboxLabel|The label of the checkbox column select all checkbox."
|
|
2818
|
-
selectAllCheckboxLabel="Select All Rows"
|
|
2819
|
-
|
|
2820
|
-
i18n-sortToolbarToolText="kendo.grid.sortToolbarToolText|The button text of the Sort toolbar tool."
|
|
2821
|
-
sortToolbarToolText="Sort"
|
|
2822
|
-
|
|
2823
|
-
i18n-groupCollapse="kendo.grid.groupCollapse|The text of the title and aria-label attributes applied to the collapse icon of group rows."
|
|
2824
|
-
groupCollapse="Collapse Group"
|
|
2825
|
-
|
|
2826
|
-
i18n-groupExpand="kendo.grid.groupExpand|The text of the title and aria-label attributes applied to the expand icon of group rows."
|
|
2827
|
-
groupExpand="Expand Group"
|
|
2828
|
-
|
|
2829
|
-
i18n-pagerSelectPage="kendo.grid.pagerSelectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
|
|
2830
|
-
pagerSelectPage="Select page"
|
|
2831
|
-
|
|
2832
|
-
i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
|
|
2833
|
-
topToolbarLabel="Top toolbar"
|
|
2834
|
-
|
|
2835
|
-
i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
|
|
2836
|
-
bottomToolbarLabel="Bottom toolbar"
|
|
2837
|
-
|
|
2838
|
-
i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
|
|
2839
|
-
editToolbarToolText="Edit"
|
|
2840
|
-
|
|
2841
|
-
i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
|
|
2842
|
-
saveToolbarToolText="Save"
|
|
2843
|
-
|
|
2844
|
-
i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
|
|
2845
|
-
addToolbarToolText="Add"
|
|
2846
|
-
|
|
2847
|
-
i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
|
|
2848
|
-
cancelToolbarToolText="Cancel"
|
|
2849
|
-
|
|
2850
|
-
i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
|
|
2851
|
-
removeToolbarToolText="Delete"
|
|
2852
|
-
|
|
2853
|
-
i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
|
|
2854
|
-
excelExportToolbarToolText="Excel Export"
|
|
2855
|
-
|
|
2856
|
-
i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
|
|
2857
|
-
pdfExportToolbarToolText="PDF Export"
|
|
2858
|
-
|
|
2859
|
-
i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
|
|
2860
|
-
groupPanelLabel="Group panel"
|
|
2861
|
-
|
|
2862
|
-
i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
|
|
2863
|
-
dragRowHandleLabel="Drag row"
|
|
2864
|
-
|
|
2865
|
-
i18n-columnMenuFilterTabTitle="kendo.grid.columnMenuFilterTabTitle|The title for the column menu Filter tab"
|
|
2866
|
-
columnMenuFilterTabTitle="Filter"
|
|
2867
|
-
|
|
2868
|
-
i18n-columnMenuGeneralTabTitle="kendo.grid.columnMenuGeneralTabTitle|The title for the column menu General tab"
|
|
2869
|
-
columnMenuGeneralTabTitle="General"
|
|
2870
|
-
|
|
2871
|
-
i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
|
|
2872
|
-
columnMenuColumnsTabTitle="Columns"
|
|
2873
|
-
|
|
2874
|
-
i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
|
|
2875
|
-
groupChipMenuPrevious="Move as previous"
|
|
2876
|
-
|
|
2877
|
-
i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
|
|
2878
|
-
groupChipMenuNext="Move as next"
|
|
2879
|
-
|
|
2880
|
-
i18n-groupToolbarToolText="kendo.grid.groupToolbarToolText|The button text of the Group toolbar tool"
|
|
2881
|
-
groupToolbarToolText="Group"
|
|
2882
|
-
|
|
2883
|
-
i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
|
|
2884
|
-
formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
|
|
2885
|
-
|
|
2886
|
-
i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
|
|
2887
|
-
removeConfirmationDialogTitle="Please confirm"
|
|
2888
|
-
|
|
2889
|
-
i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
|
|
2890
|
-
removeConfirmationDialogContent="Are you sure you want to delete this item?"
|
|
2891
|
-
|
|
2892
|
-
i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
|
|
2893
|
-
removeConfirmationDialogConfirmText="Yes"
|
|
2894
|
-
|
|
2895
|
-
i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
|
|
2896
|
-
removeConfirmationDialogRejectText="No"
|
|
2897
|
-
|
|
2898
|
-
i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
|
|
2899
|
-
externalEditingTitle="Edit"
|
|
2900
|
-
|
|
2901
|
-
i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
|
|
2902
|
-
externalEditingAddTitle="Add"
|
|
2903
|
-
|
|
2904
|
-
i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
|
|
2905
|
-
externalEditingSaveText="Save"
|
|
2906
|
-
|
|
2907
|
-
i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
|
|
2908
|
-
externalEditingCancelText="Cancel"
|
|
2909
|
-
|
|
2910
|
-
i18n-aiAssistantToolbarToolText="kendo.grid.aiAssistantToolbarToolText|The text of the AI Assistant toolbar tool"
|
|
2911
|
-
aiAssistantToolbarToolText="AI Assistant"
|
|
2912
|
-
|
|
2913
|
-
i18n-aiAssistantWindowTitle="kendo.grid.aiAssistantWindowTitle|The text of the AI Assistant Window title"
|
|
2914
|
-
aiAssistantWindowTitle="AI Assistant"
|
|
2915
|
-
|
|
2916
|
-
i18n-aiAssistantApplyButtonText="kendo.grid.aiAssistantApplyButtonText|The text of the AI Assistant Apply button"
|
|
2917
|
-
aiAssistantApplyButtonText="Apply"
|
|
2918
|
-
|
|
2919
|
-
i18n-aiAssistantWindowCloseTitle="kendo.grid.aiAssistantWindowCloseTitle|The title of the AI Assistant Window close button"
|
|
2920
|
-
aiAssistantWindowCloseTitle="Close"
|
|
2921
|
-
|
|
2922
|
-
i18n-aiAssistantWindowMaximizeTitle="kendo.grid.aiAssistantWindowMaximizeTitle|The title of the AI Assistant Window maximize button"
|
|
2923
|
-
aiAssistantWindowMaximizeTitle="Maximize"
|
|
2924
|
-
|
|
2925
|
-
i18n-aiAssistantWindowMinimizeTitle="kendo.grid.aiAssistantWindowMinimizeTitle|The title of the AI Assistant Window minimize button"
|
|
2926
|
-
aiAssistantWindowMinimizeTitle="Minimize"
|
|
2927
|
-
|
|
2928
|
-
i18n-aiAssistantWindowRestoreTitle="kendo.grid.aiAssistantWindowRestoreTitle|The title of the AI Assistant Window restore button"
|
|
2929
|
-
aiAssistantWindowRestoreTitle="Restore"
|
|
2930
|
-
|
|
2931
|
-
i18n-aiAssistantOutputCardTitle="kendo.grid.aiAssistantOutputCardTitle|The title of the AI Assistant Prompt Output Card"
|
|
2932
|
-
aiAssistantOutputCardTitle="Generated with AI"
|
|
2933
|
-
|
|
2934
|
-
i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
|
|
2935
|
-
aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
|
|
2936
|
-
|
|
2937
|
-
i18n-aiAssistantSelectionNotEnabled="kendo.grid.aiAssistantSelectionNotEnabled|The message shown when AI selection requires the Grid selectable option"
|
|
2938
|
-
aiAssistantSelectionNotEnabled="Selection can be applied only when the Grid selectable option is enabled."
|
|
2939
|
-
|
|
2940
|
-
i18n-aiAssistantSelectionRowModeRequired="kendo.grid.aiAssistantSelectionRowModeRequired|The message shown when AI selection requires row selection mode"
|
|
2941
|
-
aiAssistantSelectionRowModeRequired="Selection can be applied only when row selection mode is enabled."
|
|
2942
|
-
|
|
2943
|
-
i18n-aiAssistantSelectionCellModeRequired="kendo.grid.aiAssistantSelectionCellModeRequired|The message shown when AI selection requires cell selection mode"
|
|
2944
|
-
aiAssistantSelectionCellModeRequired="Selection can be applied only when cell selection mode is enabled."
|
|
2945
|
-
|
|
2946
|
-
i18n-columnChooserSelectAll="kendo.grid.columnChooserSelectAll|The text for the Select all checkbox in the Column Chooser"
|
|
2947
|
-
columnChooserSelectAll="Select all"
|
|
2948
|
-
|
|
2949
|
-
i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
|
|
2950
|
-
columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
|
|
2951
|
-
|
|
2952
|
-
i18n-multiCheckboxFilterSearchPlaceholder="kendo.grid.multiCheckboxFilterSearchPlaceholder|The placeholder text for the multi-checkbox filter search input"
|
|
2953
|
-
multiCheckboxFilterSearchPlaceholder="Search..."
|
|
2954
|
-
|
|
2955
|
-
i18n-multiCheckboxFilterSelectAllLabel="kendo.grid.multiCheckboxFilterSelectAllLabel|The label for the multi-checkbox filter select all option"
|
|
2956
|
-
multiCheckboxFilterSelectAllLabel="Select all"
|
|
2957
|
-
|
|
2958
|
-
i18n-multiCheckboxFilterSelectedItemsCount="kendo.grid.multiCheckboxFilterSelectedItemsCount|The text for the multi-checkbox filter selected items count"
|
|
2959
|
-
multiCheckboxFilterSelectedItemsCount="{{ '{selectedItemsCount} selected items' }}"
|
|
2960
|
-
>
|
|
2961
|
-
</ng-container>
|
|
2962
|
-
@if (showTopToolbar) {
|
|
2963
|
-
<kendo-grid-toolbar
|
|
2964
|
-
[size]="size"
|
|
2965
|
-
[attr.aria-label]="messageFor('topToolbarLabel')"
|
|
2966
|
-
[navigable]="navigation.toolbarEnabled"
|
|
2967
|
-
[attr.aria-controls]="ariaRootId"
|
|
2968
|
-
position="top"></kendo-grid-toolbar>
|
|
2969
|
-
}
|
|
2970
|
-
<ng-content select="kendo-toolbar"></ng-content>
|
|
2971
|
-
@if (showTopPager) {
|
|
2972
|
-
<kendo-pager
|
|
2973
|
-
#topPager
|
|
2974
|
-
[navigable]="navigation.pagerEnabled"
|
|
2975
|
-
class="k-grid-pager k-grid-pager-top"
|
|
2976
|
-
[pageSize]="pageSize"
|
|
2977
|
-
[total]="view.total"
|
|
2978
|
-
[skip]="skip"
|
|
2979
|
-
[size]="size"
|
|
2980
|
-
[responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
|
|
2981
|
-
[buttonCount]="normalizedPageableSettings.buttonCount"
|
|
2982
|
-
[info]="normalizedPageableSettings.info"
|
|
2983
|
-
[pageSizeValues]="normalizedPageableSettings.pageSizes"
|
|
2984
|
-
[previousNext]="normalizedPageableSettings.previousNext"
|
|
2985
|
-
[type]="normalizedPageableSettings.type"
|
|
2986
|
-
(pageChange)="notifyPageChange('pager', $event)"
|
|
2987
|
-
(pagerInputVisibilityChange)="handlePagerVisibilityChange('showPagerInput', $event)"
|
|
2988
|
-
(pageTextVisibilityChange)="handlePagerVisibilityChange('showPagerPageText', $event)"
|
|
2989
|
-
(itemsTextVisibilityChange)="handlePagerVisibilityChange('showPagerItemsText', $event)">
|
|
2990
|
-
<ng-template kendoPagerTemplate>
|
|
2991
|
-
<ng-container
|
|
2992
|
-
[ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
|
|
2993
|
-
[ngTemplateOutletContext]="topPager.templateContext"></ng-container>
|
|
2994
|
-
</ng-template>
|
|
2995
|
-
<kendo-pager-messages
|
|
2996
|
-
[ariaLabel]="messageFor('pagerLabel')"
|
|
2997
|
-
[firstPage]="messageFor('pagerFirstPage')"
|
|
2998
|
-
[inputLabel]="messageFor('pagerInputLabel')"
|
|
2999
|
-
[previousPage]="messageFor('pagerPreviousPage')"
|
|
3000
|
-
[nextPage]="messageFor('pagerNextPage')"
|
|
3001
|
-
[lastPage]="messageFor('pagerLastPage')"
|
|
3002
|
-
[selectPage]="messageFor('pagerSelectPage')"
|
|
3003
|
-
[page]="messageFor('pagerPage')"
|
|
3004
|
-
[itemsPerPage]="messageFor('pagerItemsPerPage')"
|
|
3005
|
-
[items]="messageFor('pagerItems')"
|
|
3006
|
-
[of]="messageFor('pagerOf')"
|
|
3007
|
-
[pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
|
|
3008
|
-
</kendo-pager-messages>
|
|
3009
|
-
</kendo-pager>
|
|
3010
|
-
}
|
|
3011
|
-
@if (showGroupPanel) {
|
|
3012
|
-
<kendo-grid-group-panel
|
|
3013
|
-
[navigable]="navigation.toolbarEnabled"
|
|
3014
|
-
[text]="groupableEmptyText"
|
|
3015
|
-
[groups]="group"
|
|
3016
|
-
role="toolbar"
|
|
3017
|
-
[attr.aria-label]="messageFor('groupPanelLabel')"
|
|
3018
|
-
[attr.aria-controls]="ariaRootId"
|
|
3019
|
-
(change)="groupChange.emit($event)">
|
|
3020
|
-
</kendo-grid-group-panel>
|
|
3021
|
-
}
|
|
3022
|
-
<div #ariaRoot
|
|
3023
|
-
class="k-grid-aria-root"
|
|
3024
|
-
role="grid"
|
|
3025
|
-
kendoDragTargetContainer
|
|
3026
|
-
kendoDropTargetContainer
|
|
3027
|
-
mode="manual"
|
|
3028
|
-
[dragDisabled]="!rowReorderable"
|
|
3029
|
-
[dropDisabled]="!rowReorderable"
|
|
3030
|
-
[dragTargetFilter]="getDefaultSelectors('dragTarget')"
|
|
3031
|
-
[dropTargetFilter]="getDefaultSelectors('dropTarget')"
|
|
3032
|
-
[dragHandle]="getDefaultSelectors('handle')"
|
|
3033
|
-
[hint]="{hintTemplate: customHintTemplate || defaultHint}"
|
|
3034
|
-
[hintContext]="hintContext"
|
|
3035
|
-
(onPress)="handleReorderEvents($event, 'press')"
|
|
3036
|
-
(onDragStart)="handleReorderEvents($event, 'dragStart')"
|
|
3037
|
-
(onDrag)="handleReorderEvents($event, 'drag')"
|
|
3038
|
-
(onDragEnter)="handleReorderEvents($event, 'dragEnter')"
|
|
3039
|
-
(onDragLeave)="handleReorderEvents($event, 'dragLeave')"
|
|
3040
|
-
(onDragEnd)="handleReorderEvents($event, 'dragEnd')"
|
|
3041
|
-
(onDrop)="handleReorderEvents($event, 'drop')"
|
|
3042
|
-
[dragData]="gridData"
|
|
3043
|
-
[id]="ariaRootId"
|
|
3044
|
-
[attr.aria-label]="ariaLabel"
|
|
3045
|
-
[attr.aria-rowcount]="ariaRowCount"
|
|
3046
|
-
[attr.aria-colcount]="ariaColCount">
|
|
3047
|
-
@if (isScrollable) {
|
|
3048
|
-
@if (!hideHeader && !isStacked) {
|
|
3049
|
-
<div
|
|
3050
|
-
class="k-grid-header"
|
|
3051
|
-
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3052
|
-
role="presentation"
|
|
3053
|
-
[style.padding]="headerPadding">
|
|
3054
|
-
@if (isLocked) {
|
|
3055
|
-
<div
|
|
3056
|
-
#lockedHeader
|
|
3057
|
-
role="presentation"
|
|
3058
|
-
class="k-grid-header-locked"
|
|
3059
|
-
[style.width.px]="lockedWidth">
|
|
3060
|
-
<table
|
|
3061
|
-
kendoGridResizableTable
|
|
3062
|
-
[locked]="true"
|
|
3063
|
-
role="presentation"
|
|
3064
|
-
class="k-grid-header-table"
|
|
3065
|
-
[style.width.px]="lockedWidth"
|
|
3066
|
-
kendoGridTable
|
|
3067
|
-
[size]="size">
|
|
3068
|
-
<colgroup kendoGridColGroup
|
|
3069
|
-
[columns]="$any(lockedLeafColumns)"
|
|
3070
|
-
[groups]="group"
|
|
3071
|
-
[detailTemplate]="detailTemplate">
|
|
3072
|
-
</colgroup>
|
|
3073
|
-
<thead kendoGridHeader
|
|
3074
|
-
role="rowgroup"
|
|
3075
|
-
[resizable]="resizable"
|
|
3076
|
-
[scrollable]="true"
|
|
3077
|
-
[columns]="$any(lockedColumns)"
|
|
3078
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
3079
|
-
[sort]="sort"
|
|
3080
|
-
[groups]="group"
|
|
3081
|
-
[filter]="filter"
|
|
3082
|
-
[filterable]="filterable"
|
|
3083
|
-
[groupable]="showGroupPanel"
|
|
3084
|
-
[reorderable]="reorderable"
|
|
3085
|
-
[sortable]="sortable"
|
|
3086
|
-
[columnMenu]="columnMenuOptions"
|
|
3087
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
3088
|
-
[totalColumnsCount]="leafColumns.length"
|
|
3089
|
-
[totalColumns]="columnsContainer"
|
|
3090
|
-
[detailTemplate]="detailTemplate"
|
|
3091
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
3092
|
-
</thead>
|
|
3093
|
-
</table>
|
|
3094
|
-
</div>
|
|
3095
|
-
}
|
|
3096
|
-
<div #header class="k-grid-header-wrap" role="presentation" data-scrollable
|
|
3097
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0"
|
|
3098
|
-
[lockedWidth]="lockedWidth + scrollbarWidth + 2">
|
|
3099
|
-
<table
|
|
3100
|
-
role="presentation"
|
|
3101
|
-
class="k-grid-header-table"
|
|
3102
|
-
[style.width.px]="nonLockedWidth"
|
|
3103
|
-
kendoGridResizableTable
|
|
3104
|
-
[virtualColumns]="virtualColumns"
|
|
3105
|
-
kendoGridTable
|
|
3106
|
-
[size]="size">
|
|
3107
|
-
<colgroup kendoGridColGroup
|
|
3108
|
-
[columns]="headerLeafColumns"
|
|
3109
|
-
[groups]="isLocked ? [] : group"
|
|
3110
|
-
[detailTemplate]="detailTemplate">
|
|
3111
|
-
</colgroup>
|
|
3112
|
-
<thead kendoGridHeader
|
|
3113
|
-
[resizable]="resizable"
|
|
3114
|
-
role="rowgroup"
|
|
3115
|
-
[scrollable]="true"
|
|
3116
|
-
[columns]="headerColumns"
|
|
3117
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
3118
|
-
[sort]="sort"
|
|
3119
|
-
[filter]="filter"
|
|
3120
|
-
[filterable]="filterable"
|
|
3121
|
-
[groupable]="showGroupPanel"
|
|
3122
|
-
[reorderable]="reorderable"
|
|
3123
|
-
[groups]="isLocked ? [] : group"
|
|
3124
|
-
[sortable]="sortable"
|
|
3125
|
-
[columnMenu]="columnMenuOptions"
|
|
3126
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
3127
|
-
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
3128
|
-
[totalColumnsCount]="leafColumns.length"
|
|
3129
|
-
[totalColumns]="columnsContainer"
|
|
3130
|
-
[detailTemplate]="detailTemplate"
|
|
3131
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
3132
|
-
</thead>
|
|
3133
|
-
</table>
|
|
3134
|
-
@if (virtualColumns) {
|
|
3135
|
-
<div class="k-width-container" role="presentation">
|
|
3136
|
-
<div [style.width.px]="columnsContainer.unlockedWidth"></div>
|
|
3137
|
-
</div>
|
|
3138
|
-
}
|
|
3139
|
-
</div>
|
|
3140
|
-
</div>
|
|
3141
|
-
}
|
|
3142
|
-
<kendo-grid-list
|
|
3143
|
-
[data]="$any(view)"
|
|
3144
|
-
[rowHeight]="rowHeight"
|
|
3145
|
-
[detailRowHeight]="detailRowHeight"
|
|
3146
|
-
[total]="totalCount"
|
|
3147
|
-
[take]="pageSize"
|
|
3148
|
-
[groups]="group"
|
|
3149
|
-
[groupable]="groupable"
|
|
3150
|
-
[skip]="skip"
|
|
3151
|
-
[trackBy]="trackBy"
|
|
3152
|
-
[columns]="columnsContainer"
|
|
3153
|
-
[selectable]="selectable"
|
|
3154
|
-
[filterable]="filterable"
|
|
3155
|
-
[detailTemplate]="detailTemplate"
|
|
3156
|
-
[noRecordsTemplate]="noRecordsTemplate"
|
|
3157
|
-
[size]="size"
|
|
3158
|
-
(pageChange)="notifyPageChange('list', $event)"
|
|
3159
|
-
[rowClass]="rowClass"
|
|
3160
|
-
[rowSticky]="rowSticky"
|
|
3161
|
-
[loading]="loading"
|
|
3162
|
-
[isVirtual]="isVirtual"
|
|
3163
|
-
[cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
|
|
3164
|
-
[loadingTemplate]="loadingTemplate?.templateRef"
|
|
3165
|
-
[virtualColumns]="virtualColumns"
|
|
3166
|
-
(scrollBottom)="notifyScrollBottom()"
|
|
3167
|
-
(contentScroll)="contentScroll.emit($event)"
|
|
3168
|
-
kendoDraggable
|
|
3169
|
-
kendoGridSelectionMarquee
|
|
3170
|
-
[enableDrag]="marqueeSelection"
|
|
3171
|
-
[sort]="sort">
|
|
3172
|
-
</kendo-grid-list>
|
|
3173
|
-
@if (showFooter) {
|
|
3174
|
-
<div
|
|
3175
|
-
class="k-grid-footer"
|
|
3176
|
-
[style.padding]="headerPadding">
|
|
3177
|
-
@if (lockedLeafColumns.length && !isStacked) {
|
|
3178
|
-
<div
|
|
3179
|
-
class="k-grid-footer-locked"
|
|
3180
|
-
[style.width.px]="lockedWidth">
|
|
3181
|
-
<table
|
|
3182
|
-
role="presentation"
|
|
3183
|
-
class="k-grid-footer-table"
|
|
3184
|
-
kendoGridResizableTable
|
|
3185
|
-
[locked]="true"
|
|
3186
|
-
[style.width.px]="lockedWidth"
|
|
3187
|
-
kendoGridTable
|
|
3188
|
-
[size]="size">
|
|
3189
|
-
@if (!isStacked) {
|
|
3190
|
-
<colgroup kendoGridColGroup
|
|
3191
|
-
[columns]="$any(lockedLeafColumns)"
|
|
3192
|
-
[groups]="group"
|
|
3193
|
-
[detailTemplate]="detailTemplate">
|
|
3194
|
-
</colgroup>
|
|
3195
|
-
}
|
|
3196
|
-
<tfoot kendoGridFooter
|
|
3197
|
-
[scrollable]="true"
|
|
3198
|
-
[groups]="group"
|
|
3199
|
-
[columns]="$any(lockedLeafColumns)"
|
|
3200
|
-
[detailTemplate]="detailTemplate"
|
|
3201
|
-
[logicalRowIndex]="ariaRowCount"
|
|
3202
|
-
[totalColumns]="columnsContainer"
|
|
3203
|
-
[totalColumnsCount]="leafColumns.length">
|
|
3204
|
-
</tfoot>
|
|
3205
|
-
</table>
|
|
3206
|
-
</div>
|
|
3207
|
-
}
|
|
3208
|
-
<div #footer
|
|
3209
|
-
class="k-grid-footer-wrap" data-scrollable
|
|
3210
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0 && !isStacked"
|
|
3211
|
-
[lockedWidth]="lockedWidth + scrollbarWidth + 3">
|
|
3212
|
-
<table
|
|
3213
|
-
role="presentation"
|
|
3214
|
-
class="k-grid-footer-table"
|
|
3215
|
-
[style.width.px]="nonLockedWidth"
|
|
3216
|
-
kendoGridTable
|
|
3217
|
-
kendoGridResizableTable
|
|
3218
|
-
[size]="size">
|
|
3219
|
-
@if (!isStacked) {
|
|
3220
|
-
<colgroup kendoGridColGroup
|
|
3221
|
-
[columns]="$any(headerLeafColumns)"
|
|
3222
|
-
[groups]="isLocked ? [] : group"
|
|
3223
|
-
[detailTemplate]="detailTemplate">
|
|
3224
|
-
</colgroup>
|
|
3225
|
-
}
|
|
3226
|
-
<tfoot kendoGridFooter
|
|
3227
|
-
[logicalRowIndex]="ariaRowCount"
|
|
3228
|
-
[scrollable]="true"
|
|
3229
|
-
[groups]="isLocked ? [] : group"
|
|
3230
|
-
[columns]="$any(headerColumns)"
|
|
3231
|
-
[lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
|
|
3232
|
-
[detailTemplate]="detailTemplate"
|
|
3233
|
-
[totalColumns]="columnsContainer"
|
|
3234
|
-
[totalColumnsCount]="leafColumns.length">
|
|
3235
|
-
</tfoot>
|
|
3236
|
-
</table>
|
|
3237
|
-
</div>
|
|
3238
|
-
</div>
|
|
3239
|
-
}
|
|
3240
|
-
}
|
|
3241
|
-
@if (!isScrollable) {
|
|
3242
|
-
<table
|
|
3243
|
-
[style.table-layout]="resizable ? 'fixed' : null"
|
|
3244
|
-
kendoGridTable
|
|
3245
|
-
kendoGridResizableTable
|
|
3246
|
-
class="k-grid-table"
|
|
3247
|
-
role="presentation"
|
|
3248
|
-
[size]="size">
|
|
3249
|
-
<colgroup kendoGridColGroup
|
|
3250
|
-
[columns]="$any(leafColumns)"
|
|
3251
|
-
[groups]="group"
|
|
3252
|
-
[sort]="sort"
|
|
3253
|
-
[detailTemplate]="detailTemplate">
|
|
3254
|
-
</colgroup>
|
|
3255
|
-
@if (!hideHeader && !isStacked) {
|
|
3256
|
-
<thead kendoGridHeader
|
|
3257
|
-
class="k-grid-header"
|
|
3258
|
-
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3259
|
-
role="rowgroup"
|
|
3260
|
-
[resizable]="resizable"
|
|
3261
|
-
[scrollable]="false"
|
|
3262
|
-
[columns]="$any(visibleColumns)"
|
|
3263
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
3264
|
-
[totalColumns]="columnsContainer"
|
|
3265
|
-
[groups]="group"
|
|
3266
|
-
[groupable]="showGroupPanel"
|
|
3267
|
-
[reorderable]="reorderable"
|
|
3268
|
-
[sort]="sort"
|
|
3269
|
-
[sortable]="sortable"
|
|
3270
|
-
[filter]="filter"
|
|
3271
|
-
[filterable]="filterable"
|
|
3272
|
-
[columnMenu]="columnMenuOptions"
|
|
3273
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
3274
|
-
[detailTemplate]="detailTemplate"
|
|
3275
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
3276
|
-
</thead>
|
|
3277
|
-
}
|
|
3278
|
-
<tbody kendoGridTableBody
|
|
3279
|
-
[isLoading]="loading"
|
|
3280
|
-
[rowHeight]="rowHeight"
|
|
3281
|
-
[detailRowHeight]="detailRowHeight"
|
|
3282
|
-
[groups]="group"
|
|
3283
|
-
[rowsToRender]="rowsToRender"
|
|
3284
|
-
[skip]="skip"
|
|
3285
|
-
[columns]="$any(leafColumns)"
|
|
3286
|
-
[totalColumnsCount]="leafColumns.length"
|
|
3287
|
-
[totalColumns]="columnsContainer"
|
|
3288
|
-
[selectable]="selectable"
|
|
3289
|
-
[filterable]="filterable"
|
|
3290
|
-
[noRecordsTemplate]="noRecordsTemplate"
|
|
3291
|
-
[detailTemplate]="detailTemplate"
|
|
3292
|
-
[trackBy]="trackBy"
|
|
3293
|
-
[rowClass]="rowClass"
|
|
3294
|
-
kendoDraggable
|
|
3295
|
-
kendoGridSelectionMarquee
|
|
3296
|
-
[enableDrag]="marqueeSelection">
|
|
3297
|
-
</tbody>
|
|
3298
|
-
@if (showFooter) {
|
|
3299
|
-
<tfoot kendoGridFooter
|
|
3300
|
-
[scrollable]="false"
|
|
3301
|
-
[logicalRowIndex]="ariaRowCount"
|
|
3302
|
-
[groups]="group"
|
|
3303
|
-
[columns]="$any(leafColumns)"
|
|
3304
|
-
[detailTemplate]="detailTemplate"
|
|
3305
|
-
[totalColumns]="columnsContainer"
|
|
3306
|
-
[totalColumnsCount]="leafColumns.length">
|
|
3307
|
-
</tfoot>
|
|
3308
|
-
}
|
|
3309
|
-
</table>
|
|
3310
|
-
}
|
|
3311
|
-
@if (loading) {
|
|
3312
|
-
<div [loadingTemplate]="loadingTemplate" kendoGridLoading></div>
|
|
3313
|
-
}
|
|
3314
|
-
</div>
|
|
3315
|
-
@if (showStatusBar) {
|
|
3316
|
-
<kendo-grid-status-bar
|
|
3317
|
-
[statusBarTemplate]="statusBarTemplate">
|
|
3318
|
-
</kendo-grid-status-bar>
|
|
3319
|
-
}
|
|
3320
|
-
@if (showBottomPager) {
|
|
3321
|
-
<kendo-pager
|
|
3322
|
-
#bottomPager
|
|
3323
|
-
class="k-grid-pager"
|
|
3324
|
-
[navigable]="navigation.pagerEnabled"
|
|
3325
|
-
[pageSize]="pageSize"
|
|
3326
|
-
[total]="view.total"
|
|
3327
|
-
[skip]="skip"
|
|
3328
|
-
[size]="size"
|
|
3329
|
-
[responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
|
|
3330
|
-
[buttonCount]="normalizedPageableSettings.buttonCount"
|
|
3331
|
-
[info]="normalizedPageableSettings.info"
|
|
3332
|
-
[pageSizeValues]="normalizedPageableSettings.pageSizes"
|
|
3333
|
-
[previousNext]="normalizedPageableSettings.previousNext"
|
|
3334
|
-
[type]="normalizedPageableSettings.type"
|
|
3335
|
-
(pageChange)="notifyPageChange('pager', $event)"
|
|
3336
|
-
(pagerInputVisibilityChange)="handlePagerVisibilityChange('showPagerInput', $event)"
|
|
3337
|
-
(pageTextVisibilityChange)="handlePagerVisibilityChange('showPagerPageText', $event)"
|
|
3338
|
-
(itemsTextVisibilityChange)="handlePagerVisibilityChange('showPagerItemsText', $event)">
|
|
3339
|
-
<ng-template kendoPagerTemplate>
|
|
3340
|
-
<ng-container
|
|
3341
|
-
[ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
|
|
3342
|
-
[ngTemplateOutletContext]="bottomPager.templateContext"></ng-container>
|
|
3343
|
-
</ng-template>
|
|
3344
|
-
<kendo-pager-messages
|
|
3345
|
-
[ariaLabel]="messageFor('pagerLabel')"
|
|
3346
|
-
[firstPage]="messageFor('pagerFirstPage')"
|
|
3347
|
-
[inputLabel]="messageFor('pagerInputLabel')"
|
|
3348
|
-
[previousPage]="messageFor('pagerPreviousPage')"
|
|
3349
|
-
[nextPage]="messageFor('pagerNextPage')"
|
|
3350
|
-
[lastPage]="messageFor('pagerLastPage')"
|
|
3351
|
-
[selectPage]="messageFor('pagerSelectPage')"
|
|
3352
|
-
[page]="messageFor('pagerPage')"
|
|
3353
|
-
[itemsPerPage]="messageFor('pagerItemsPerPage')"
|
|
3354
|
-
[items]="messageFor('pagerItems')"
|
|
3355
|
-
[of]="messageFor('pagerOf')"
|
|
3356
|
-
[pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
|
|
3357
|
-
</kendo-pager-messages>
|
|
3358
|
-
</kendo-pager>
|
|
3359
|
-
}
|
|
3360
|
-
@if (showBottomToolbar) {
|
|
3361
|
-
<kendo-grid-toolbar
|
|
3362
|
-
class="k-grid-toolbar-bottom"
|
|
3363
|
-
[size]="size"
|
|
3364
|
-
[navigable]="navigation.toolbarEnabled"
|
|
3365
|
-
[attr.aria-label]="messageFor('bottomToolbarLabel')"
|
|
3366
|
-
[attr.aria-controls]="ariaRootId"
|
|
3367
|
-
position="bottom">
|
|
3368
|
-
</kendo-grid-toolbar>
|
|
3369
|
-
}
|
|
3370
|
-
|
|
3371
|
-
<ng-template #defaultHint>
|
|
3372
|
-
<kendo-icon-wrapper
|
|
3373
|
-
[name]="getHintSettings('hintIcon')"
|
|
3374
|
-
[svgIcon]="getHintSettings('hintSVGIcon')"
|
|
3375
|
-
innerCssClass="k-drag-status">
|
|
3376
|
-
</kendo-icon-wrapper>
|
|
3377
|
-
{{hintText}}
|
|
3378
|
-
</ng-template>
|
|
3379
|
-
|
|
3380
|
-
<ng-template #defaultPager>
|
|
3381
|
-
<div class="k-pager-numbers-wrap">
|
|
3382
|
-
@if (normalizedPageableSettings.previousNext) {
|
|
3383
|
-
<kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
|
|
3384
|
-
}
|
|
3385
|
-
@if (normalizedPageableSettings.type === 'numeric' && normalizedPageableSettings.buttonCount > 0) {
|
|
3386
|
-
<kendo-pager-numeric-buttons
|
|
3387
|
-
[size]="size"
|
|
3388
|
-
[buttonCount]="normalizedPageableSettings.buttonCount">
|
|
3389
|
-
</kendo-pager-numeric-buttons>
|
|
3390
|
-
}
|
|
3391
|
-
@if (normalizedPageableSettings.type === 'input' || showPagerInput) {
|
|
3392
|
-
<kendo-pager-input [size]="size" [showPageText]="showPagerPageText"></kendo-pager-input>
|
|
3393
|
-
}
|
|
3394
|
-
@if (normalizedPageableSettings.previousNext) {
|
|
3395
|
-
<kendo-pager-next-buttons [size]="size"></kendo-pager-next-buttons>
|
|
3396
|
-
}
|
|
3397
|
-
</div>
|
|
3398
|
-
@if (normalizedPageableSettings.pageSizes) {
|
|
3399
|
-
<kendo-pager-page-sizes
|
|
3400
|
-
[size]="size"
|
|
3401
|
-
[pageSizes]="normalizedPageableSettings.pageSizes"
|
|
3402
|
-
[showItemsText]="showPagerItemsText">
|
|
3403
|
-
</kendo-pager-page-sizes>
|
|
3404
|
-
}
|
|
3405
|
-
@if (normalizedPageableSettings.info) {
|
|
3406
|
-
<kendo-pager-info>
|
|
3407
|
-
</kendo-pager-info>
|
|
3408
|
-
}
|
|
3409
|
-
</ng-template>
|
|
3410
|
-
<div #dialogContainer></div>
|
|
3411
|
-
<div #windowContainer></div>
|
|
3412
|
-
|
|
3413
|
-
@if (isAdaptiveModeEnabled) {
|
|
3414
|
-
<kendo-grid-adaptive-renderer></kendo-grid-adaptive-renderer>
|
|
3415
|
-
}
|
|
3416
|
-
@if (isVirtual) {
|
|
3417
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
3418
|
-
}
|
|
3419
|
-
|
|
3420
|
-
@if (showLicenseWatermark) {
|
|
3421
|
-
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
3422
|
-
}
|
|
3423
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "component", type: GridToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns", "totalColumnsCount"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }, { kind: "component", type: i29.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i29.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i29.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i29.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i29.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i29.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i29.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i29.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i29.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange", "pagerInputVisibilityChange", "pageTextVisibilityChange", "itemsTextVisibilityChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3424
|
-
}
|
|
3425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridComponent, decorators: [{
|
|
3426
|
-
type: Component,
|
|
3427
|
-
args: [{
|
|
3428
|
-
encapsulation: ViewEncapsulation.None,
|
|
3429
|
-
exportAs: 'kendoGrid',
|
|
3430
|
-
providers: [
|
|
3431
|
-
BrowserSupportService,
|
|
3432
|
-
LocalizationService,
|
|
3433
|
-
ColumnInfoService,
|
|
3434
|
-
SelectionService,
|
|
3435
|
-
CellSelectionService,
|
|
3436
|
-
DetailsService,
|
|
3437
|
-
GroupsService,
|
|
3438
|
-
GroupInfoService,
|
|
3439
|
-
ChangeNotificationService,
|
|
3440
|
-
EditService,
|
|
3441
|
-
PDFService,
|
|
3442
|
-
SuspendService,
|
|
3443
|
-
{
|
|
3444
|
-
provide: CELL_CONTEXT,
|
|
3445
|
-
useValue: EMPTY_CELL_CONTEXT
|
|
3446
|
-
},
|
|
3447
|
-
{
|
|
3448
|
-
provide: L10N_PREFIX,
|
|
3449
|
-
useValue: 'kendo.grid'
|
|
3450
|
-
},
|
|
3451
|
-
FilterService,
|
|
3452
|
-
ResponsiveService,
|
|
3453
|
-
PagerContextService,
|
|
3454
|
-
PagerNavigationService,
|
|
3455
|
-
ExcelService,
|
|
3456
|
-
ScrollSyncService,
|
|
3457
|
-
ResizeService,
|
|
3458
|
-
LocalDataChangesService,
|
|
3459
|
-
DomEventsService,
|
|
3460
|
-
ColumnResizingService,
|
|
3461
|
-
SinglePopupService,
|
|
3462
|
-
DragAndDropService,
|
|
3463
|
-
DragHintService,
|
|
3464
|
-
DropCueService,
|
|
3465
|
-
ColumnReorderService,
|
|
3466
|
-
NavigationService,
|
|
3467
|
-
FocusRoot,
|
|
3468
|
-
IdService,
|
|
3469
|
-
CellSelectionAggregateService,
|
|
3470
|
-
ScrollRequestService,
|
|
3471
|
-
SortService,
|
|
3472
|
-
ContextService,
|
|
3473
|
-
SizingOptionsService,
|
|
3474
|
-
RowReorderService,
|
|
3475
|
-
ClipboardService,
|
|
3476
|
-
GridAIRequestResponseService,
|
|
3477
|
-
RowspanService,
|
|
3478
|
-
AdaptiveGridService,
|
|
3479
|
-
ColumnMenuService,
|
|
3480
|
-
MenuTabbingService,
|
|
3481
|
-
DataMappingService
|
|
3482
|
-
],
|
|
3483
|
-
selector: 'kendo-grid',
|
|
3484
|
-
template: `
|
|
3485
|
-
<ng-container kendoGridLocalizedMessages
|
|
3486
|
-
i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
|
|
3487
|
-
groupPanelEmpty="Drag a column header and drop it here to group by that column"
|
|
3488
|
-
|
|
3489
|
-
i18n-noRecords="kendo.grid.noRecords|The label visible in the Grid when there are no records"
|
|
3490
|
-
noRecords="No records available."
|
|
3491
|
-
|
|
3492
|
-
i18n-pagerLabel="kendo.grid.pagerLabel|The label for the Grid pager"
|
|
3493
|
-
pagerLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
|
|
3494
|
-
|
|
3495
|
-
i18n-pagerFirstPage="kendo.grid.pagerFirstPage|The label for the first page button in Grid pager"
|
|
3496
|
-
pagerFirstPage="Go to the first page"
|
|
3497
|
-
|
|
3498
|
-
i18n-pagerPreviousPage="kendo.grid.pagerPreviousPage|The label for the previous page button in Grid pager"
|
|
3499
|
-
pagerPreviousPage="Go to the previous page"
|
|
3500
|
-
|
|
3501
|
-
i18n-pagerNextPage="kendo.grid.pagerNextPage|The label for the next page button in Grid pager"
|
|
3502
|
-
pagerNextPage="Go to the next page"
|
|
3503
|
-
|
|
3504
|
-
i18n-pagerLastPage="kendo.grid.pagerLastPage|The label for the last page button in Grid pager"
|
|
3505
|
-
pagerLastPage="Go to the last page"
|
|
3506
|
-
|
|
3507
|
-
i18n-pagerPage="kendo.grid.pagerPage|The label before the current page number in the Grid pager"
|
|
3508
|
-
pagerPage="Page"
|
|
3509
|
-
|
|
3510
|
-
i18n-pagerOf="kendo.grid.pagerOf|The label before the total pages number in the Grid pager"
|
|
3511
|
-
pagerOf="of"
|
|
3512
|
-
|
|
3513
|
-
i18n-pagerItems="kendo.grid.pagerItems|The label after the total pages number in the Grid pager"
|
|
3514
|
-
pagerItems="items"
|
|
3515
|
-
|
|
3516
|
-
i18n-pagerPageNumberInputTitle="kendo.grid.pagerPageNumberInputTitle|The label for the pager input in the Grid pager"
|
|
3517
|
-
pagerPageNumberInputTitle="Page Number"
|
|
3518
|
-
|
|
3519
|
-
i18n-pagerItemsPerPage="kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager"
|
|
3520
|
-
pagerItemsPerPage="items per page"
|
|
3521
|
-
|
|
3522
|
-
i18n-pagerInputLabel="kendo.grid.pagerInputLabel|The text of the aria-label attribute applied to the input element for entering the page number"
|
|
3523
|
-
pagerInputLabel="Type a page number"
|
|
3524
|
-
|
|
3525
|
-
i18n-filter="kendo.grid.filter|The label of the filter cell or icon"
|
|
3526
|
-
filter="Filter"
|
|
3527
|
-
|
|
3528
|
-
i18n-filterInputLabel="kendo.grid.filterInputLabel|The label of the filter row and menu inputs"
|
|
3529
|
-
filterInputLabel="{{ '{columnName} Filter' }}"
|
|
3530
|
-
|
|
3531
|
-
i18n-filterMenuTitle="kendo.grid.filterMenuTitle|The title of the filter menu icon"
|
|
3532
|
-
filterMenuTitle="{{ '{columnName} Filter Menu' }}"
|
|
3533
|
-
|
|
3534
|
-
i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
|
|
3535
|
-
filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
|
|
3536
|
-
|
|
3537
|
-
i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
|
|
3538
|
-
filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
|
|
3539
|
-
|
|
3540
|
-
i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
|
|
3541
|
-
booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
|
|
3542
|
-
|
|
3543
|
-
i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
|
|
3544
|
-
filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
|
|
3545
|
-
|
|
3546
|
-
i18n-filterEqOperator="kendo.grid.filterEqOperator|The text of the equal filter operator"
|
|
3547
|
-
filterEqOperator="Is equal to"
|
|
3548
|
-
|
|
3549
|
-
i18n-filterNotEqOperator="kendo.grid.filterNotEqOperator|The text of the not equal filter operator"
|
|
3550
|
-
filterNotEqOperator="Is not equal to"
|
|
3551
|
-
|
|
3552
|
-
i18n-filterIsNullOperator="kendo.grid.filterIsNullOperator|The text of the is null filter operator"
|
|
3553
|
-
filterIsNullOperator="Is null"
|
|
3554
|
-
|
|
3555
|
-
i18n-filterIsNotNullOperator="kendo.grid.filterIsNotNullOperator|The text of the is not null filter operator"
|
|
3556
|
-
filterIsNotNullOperator="Is not null"
|
|
3557
|
-
|
|
3558
|
-
i18n-filterIsEmptyOperator="kendo.grid.filterIsEmptyOperator|The text of the is empty filter operator"
|
|
3559
|
-
filterIsEmptyOperator="Is empty"
|
|
3560
|
-
|
|
3561
|
-
i18n-filterIsNotEmptyOperator="kendo.grid.filterIsNotEmptyOperator|The text of the is not empty filter operator"
|
|
3562
|
-
filterIsNotEmptyOperator="Is not empty"
|
|
3563
|
-
|
|
3564
|
-
i18n-filterStartsWithOperator="kendo.grid.filterStartsWithOperator|The text of the starts with filter operator"
|
|
3565
|
-
filterStartsWithOperator="Starts with"
|
|
3566
|
-
|
|
3567
|
-
i18n-filterContainsOperator="kendo.grid.filterContainsOperator|The text of the contains filter operator"
|
|
3568
|
-
filterContainsOperator="Contains"
|
|
3569
|
-
|
|
3570
|
-
i18n-filterNotContainsOperator="kendo.grid.filterNotContainsOperator|The text of the does not contain filter operator"
|
|
3571
|
-
filterNotContainsOperator="Does not contain"
|
|
3572
|
-
|
|
3573
|
-
i18n-filterEndsWithOperator="kendo.grid.filterEndsWithOperator|The text of the ends with filter operator"
|
|
3574
|
-
filterEndsWithOperator="Ends with"
|
|
3575
|
-
|
|
3576
|
-
i18n-filterGteOperator="kendo.grid.filterGteOperator|The text of the greater than or equal filter operator"
|
|
3577
|
-
filterGteOperator="Is greater than or equal to"
|
|
3578
|
-
|
|
3579
|
-
i18n-filterGtOperator="kendo.grid.filterGtOperator|The text of the greater than filter operator"
|
|
3580
|
-
filterGtOperator="Is greater than"
|
|
3581
|
-
|
|
3582
|
-
i18n-filterLteOperator="kendo.grid.filterLteOperator|The text of the less than or equal filter operator"
|
|
3583
|
-
filterLteOperator="Is less than or equal to"
|
|
3584
|
-
|
|
3585
|
-
i18n-filterLtOperator="kendo.grid.filterLtOperator|The text of the less than filter operator"
|
|
3586
|
-
filterLtOperator="Is less than"
|
|
3587
|
-
|
|
3588
|
-
i18n-filterIsTrue="kendo.grid.filterIsTrue|The text of the IsTrue boolean filter option"
|
|
3589
|
-
filterIsTrue="Is True"
|
|
3590
|
-
|
|
3591
|
-
i18n-filterIsFalse="kendo.grid.filterIsFalse|The text of the IsFalse boolean filter option"
|
|
3592
|
-
filterIsFalse="Is False"
|
|
3593
|
-
|
|
3594
|
-
i18n-filterBooleanAll="kendo.grid.filterBooleanAll|The text of the (All) boolean filter option"
|
|
3595
|
-
filterBooleanAll="(All)"
|
|
3596
|
-
|
|
3597
|
-
i18n-filterAfterOrEqualOperator="kendo.grid.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
|
|
3598
|
-
filterAfterOrEqualOperator="Is after or equal to"
|
|
3599
|
-
|
|
3600
|
-
i18n-filterAfterOperator="kendo.grid.filterAfterOperator|The text of the after date filter operator"
|
|
3601
|
-
filterAfterOperator="Is after"
|
|
3602
|
-
|
|
3603
|
-
i18n-filterBeforeOperator="kendo.grid.filterBeforeOperator|The text of the before date filter operator"
|
|
3604
|
-
filterBeforeOperator="Is before"
|
|
3605
|
-
|
|
3606
|
-
i18n-filterBeforeOrEqualOperator="kendo.grid.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
|
|
3607
|
-
filterBeforeOrEqualOperator="Is before or equal to"
|
|
3608
|
-
|
|
3609
|
-
i18n-filterFilterButton="kendo.grid.filterFilterButton|The text of the filter button"
|
|
3610
|
-
filterFilterButton="Filter"
|
|
3611
|
-
|
|
3612
|
-
i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
|
|
3613
|
-
filterClearButton="Clear"
|
|
3614
|
-
|
|
3615
|
-
i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
|
|
3616
|
-
sortClearButton="Clear sorting"
|
|
3617
|
-
|
|
3618
|
-
i18n-adaptiveCloseButtonTitle="kendo.grid.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
|
|
3619
|
-
adaptiveCloseButtonTitle="Close"
|
|
3620
|
-
|
|
3621
|
-
i18n-adaptiveBackButtonTitle="kendo.grid.adaptiveBackButtonTitle|The title of the Back button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
|
|
3622
|
-
adaptiveBackButtonTitle="Back"
|
|
3623
|
-
|
|
3624
|
-
i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
|
|
3625
|
-
filterClearAllButton="Clear all filters"
|
|
3626
|
-
|
|
3627
|
-
i18n-groupClearButton="kendo.grid.groupClearButton|The text of the clear grouping button in the Group Toolbar Tool and adaptive Group Toolbar Tool"
|
|
3628
|
-
groupClearButton="Clear grouping"
|
|
3629
|
-
|
|
3630
|
-
i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
|
|
3631
|
-
sortDoneButton="Done"
|
|
3632
|
-
|
|
3633
|
-
i18n-groupDoneButton="kendo.grid.groupDoneButton|The text of the done group button in the adaptive Group Toolbar Tool"
|
|
3634
|
-
groupDoneButton="Done"
|
|
3635
|
-
|
|
3636
|
-
i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
|
|
3637
|
-
filterAndLogic="And"
|
|
3638
|
-
|
|
3639
|
-
i18n-filterOrLogic="kendo.grid.filterOrLogic|The text of the Or filter logic"
|
|
3640
|
-
filterOrLogic="Or"
|
|
3641
|
-
|
|
3642
|
-
i18n-filterToolbarToolText="kendo.grid.filterToolbarToolText|The button text of the Filter toolbar tool"
|
|
3643
|
-
filterToolbarToolText="Filter"
|
|
3644
|
-
|
|
3645
|
-
i18n-loading="kendo.grid.loading|The loading text"
|
|
3646
|
-
loading="Loading"
|
|
3647
|
-
|
|
3648
|
-
i18n-gridLabel="kendo.grid.gridLabel|The Grid aria-label"
|
|
3649
|
-
gridLabel="Data table"
|
|
3650
|
-
|
|
3651
|
-
i18n-columnMenu="kendo.grid.columnMenu|The title of the column menu icon"
|
|
3652
|
-
columnMenu="{{ '{columnName} Column Menu' }}"
|
|
3653
|
-
|
|
3654
|
-
i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
|
|
3655
|
-
columns="Columns"
|
|
3656
|
-
|
|
3657
|
-
i18n-columnsSubtitle="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
|
|
3658
|
-
columnsSubtitle="Selected fields are visible"
|
|
3659
|
-
|
|
3660
|
-
i18n-adaptiveFilterTitle="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
|
|
3661
|
-
adaptiveFilterTitle="Filter by"
|
|
3662
|
-
|
|
3663
|
-
i18n-adaptiveFilterOperatorsTitle="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
|
|
3664
|
-
adaptiveFilterOperatorsTitle="Operators"
|
|
3665
|
-
|
|
3666
|
-
i18n-adaptiveSortTitle="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
|
|
3667
|
-
adaptiveSortTitle="Sort by"
|
|
3668
|
-
|
|
3669
|
-
i18n-adaptiveGroupTitle="kendo.grid.adaptiveGroupTitle|The title that is displayed in the adaptive Group Toolbar Tool."
|
|
3670
|
-
adaptiveGroupTitle="Group by"
|
|
3671
|
-
|
|
3672
|
-
i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
|
|
3673
|
-
lock="Lock"
|
|
3674
|
-
|
|
3675
|
-
i18n-unlock="kendo.grid.unlock|The text shown in the column menu for the unlock item"
|
|
3676
|
-
unlock="Unlock"
|
|
3677
|
-
|
|
3678
|
-
i18n-setColumnPosition="kendo.grid.setColumnPosition|The text shown in the column menu for the set column position item"
|
|
3679
|
-
setColumnPosition="Set Column Position"
|
|
3680
|
-
|
|
3681
|
-
i18n-stick="kendo.grid.stick|The text shown in the column menu for the stick item"
|
|
3682
|
-
stick="Stick"
|
|
3683
|
-
|
|
3684
|
-
i18n-unstick="kendo.grid.unstick|The text shown in the column menu for the unstick item"
|
|
3685
|
-
unstick="Unstick"
|
|
3686
|
-
|
|
3687
|
-
i18n-sortable="kendo.grid.sortable|The label of the sort icon"
|
|
3688
|
-
sortable="Sortable"
|
|
3689
|
-
|
|
3690
|
-
i18n-sortAscending="kendo.grid.sortAscending|The text shown in the column menu for the sort ascending item"
|
|
3691
|
-
sortAscending="Sort Ascending"
|
|
3692
|
-
|
|
3693
|
-
i18n-sortDescending="kendo.grid.sortDescending|The text shown in the column menu for the sort descending item"
|
|
3694
|
-
sortDescending="Sort Descending"
|
|
3695
|
-
|
|
3696
|
-
i18n-autosizeAllColumns="kendo.grid.autosizeAllColumns|The text shown in the column menu for the autosize all columns item"
|
|
3697
|
-
autosizeAllColumns="Autosize All Columns"
|
|
3698
|
-
|
|
3699
|
-
i18n-autosizeThisColumn="kendo.grid.autosizeThisColumn|The text shown in the column menu for the autosize this column item"
|
|
3700
|
-
autosizeThisColumn="Autosize This Column"
|
|
3701
|
-
|
|
3702
|
-
i18n-sortedDefault="kendo.grid.sortedDefault|The status announcement when a column is no longer sorted"
|
|
3703
|
-
sortedDefault="Not Sorted"
|
|
3704
|
-
|
|
3705
|
-
i18n-sortedAscending="kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups"
|
|
3706
|
-
sortedAscending="Sorted Ascending"
|
|
3707
|
-
|
|
3708
|
-
i18n-sortedDescending="kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups"
|
|
3709
|
-
sortedDescending="Sorted Descending"
|
|
3710
|
-
|
|
3711
|
-
i18n-columnsApply="kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
|
|
3712
|
-
columnsApply="Apply"
|
|
3713
|
-
|
|
3714
|
-
i18n-columnsReset="kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
|
|
3715
|
-
columnsReset="Reset"
|
|
3716
|
-
|
|
3717
|
-
i18n-detailExpand="kendo.grid.detailExpand|The title of the expand icon of detail rows. Applies also to the expand button text in stacked mode."
|
|
3718
|
-
detailExpand="Expand Details"
|
|
3719
|
-
|
|
3720
|
-
i18n-detailCollapse="kendo.grid.detailCollapse|The title of the collapse icon of detail rows. Applies also to the collapse button text in stacked mode."
|
|
3721
|
-
detailCollapse="Collapse Details"
|
|
3722
|
-
|
|
3723
|
-
i18n-filterDateToday="kendo.grid.filterDateToday|The text of the Today button of the Date filter."
|
|
3724
|
-
filterDateToday="TODAY"
|
|
3725
|
-
|
|
3726
|
-
i18n-filterDateToggle="kendo.grid.filterDateToggle|The title of the Toggle button of the Date filter."
|
|
3727
|
-
filterDateToggle="Toggle Calendar"
|
|
3728
|
-
|
|
3729
|
-
i18n-filterNumericDecrement="kendo.grid.filterNumericDecrement|The title of the Decrement button of the Numeric filter."
|
|
3730
|
-
filterNumericDecrement="Decrement"
|
|
3731
|
-
|
|
3732
|
-
i18n-filterNumericIncrement="kendo.grid.filterNumericIncrement|The title of the Increment button of the Numeric filter."
|
|
3733
|
-
filterNumericIncrement="Increment"
|
|
3734
|
-
|
|
3735
|
-
i18n-selectionCheckboxLabel="kendo.grid.selectionCheckboxLabel|The labels of the checkbox column checkboxes."
|
|
3736
|
-
selectionCheckboxLabel="Select Row"
|
|
3737
|
-
|
|
3738
|
-
i18n-selectAllCheckboxLabel="kendo.grid.selectAllCheckboxLabel|The label of the checkbox column select all checkbox."
|
|
3739
|
-
selectAllCheckboxLabel="Select All Rows"
|
|
3740
|
-
|
|
3741
|
-
i18n-sortToolbarToolText="kendo.grid.sortToolbarToolText|The button text of the Sort toolbar tool."
|
|
3742
|
-
sortToolbarToolText="Sort"
|
|
3743
|
-
|
|
3744
|
-
i18n-groupCollapse="kendo.grid.groupCollapse|The text of the title and aria-label attributes applied to the collapse icon of group rows."
|
|
3745
|
-
groupCollapse="Collapse Group"
|
|
3746
|
-
|
|
3747
|
-
i18n-groupExpand="kendo.grid.groupExpand|The text of the title and aria-label attributes applied to the expand icon of group rows."
|
|
3748
|
-
groupExpand="Expand Group"
|
|
3749
|
-
|
|
3750
|
-
i18n-pagerSelectPage="kendo.grid.pagerSelectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager"
|
|
3751
|
-
pagerSelectPage="Select page"
|
|
3752
|
-
|
|
3753
|
-
i18n-topToolbarLabel="kendo.grid.topToolbarLabel|The label for the Grid top toolbar"
|
|
3754
|
-
topToolbarLabel="Top toolbar"
|
|
3755
|
-
|
|
3756
|
-
i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
|
|
3757
|
-
bottomToolbarLabel="Bottom toolbar"
|
|
3758
|
-
|
|
3759
|
-
i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
|
|
3760
|
-
editToolbarToolText="Edit"
|
|
3761
|
-
|
|
3762
|
-
i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
|
|
3763
|
-
saveToolbarToolText="Save"
|
|
3764
|
-
|
|
3765
|
-
i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
|
|
3766
|
-
addToolbarToolText="Add"
|
|
3767
|
-
|
|
3768
|
-
i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
|
|
3769
|
-
cancelToolbarToolText="Cancel"
|
|
3770
|
-
|
|
3771
|
-
i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
|
|
3772
|
-
removeToolbarToolText="Delete"
|
|
3773
|
-
|
|
3774
|
-
i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
|
|
3775
|
-
excelExportToolbarToolText="Excel Export"
|
|
3776
|
-
|
|
3777
|
-
i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
|
|
3778
|
-
pdfExportToolbarToolText="PDF Export"
|
|
3779
|
-
|
|
3780
|
-
i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
|
|
3781
|
-
groupPanelLabel="Group panel"
|
|
3782
|
-
|
|
3783
|
-
i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
|
|
3784
|
-
dragRowHandleLabel="Drag row"
|
|
3785
|
-
|
|
3786
|
-
i18n-columnMenuFilterTabTitle="kendo.grid.columnMenuFilterTabTitle|The title for the column menu Filter tab"
|
|
3787
|
-
columnMenuFilterTabTitle="Filter"
|
|
3788
|
-
|
|
3789
|
-
i18n-columnMenuGeneralTabTitle="kendo.grid.columnMenuGeneralTabTitle|The title for the column menu General tab"
|
|
3790
|
-
columnMenuGeneralTabTitle="General"
|
|
3791
|
-
|
|
3792
|
-
i18n-columnMenuColumnsTabTitle="kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab"
|
|
3793
|
-
columnMenuColumnsTabTitle="Columns"
|
|
3794
|
-
|
|
3795
|
-
i18n-groupChipMenuPrevious="kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item"
|
|
3796
|
-
groupChipMenuPrevious="Move as previous"
|
|
3797
|
-
|
|
3798
|
-
i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
|
|
3799
|
-
groupChipMenuNext="Move as next"
|
|
3800
|
-
|
|
3801
|
-
i18n-groupToolbarToolText="kendo.grid.groupToolbarToolText|The button text of the Group toolbar tool"
|
|
3802
|
-
groupToolbarToolText="Group"
|
|
3803
|
-
|
|
3804
|
-
i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
|
|
3805
|
-
formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
|
|
3806
|
-
|
|
3807
|
-
i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
|
|
3808
|
-
removeConfirmationDialogTitle="Please confirm"
|
|
3809
|
-
|
|
3810
|
-
i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
|
|
3811
|
-
removeConfirmationDialogContent="Are you sure you want to delete this item?"
|
|
3812
|
-
|
|
3813
|
-
i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
|
|
3814
|
-
removeConfirmationDialogConfirmText="Yes"
|
|
3815
|
-
|
|
3816
|
-
i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
|
|
3817
|
-
removeConfirmationDialogRejectText="No"
|
|
3818
|
-
|
|
3819
|
-
i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
|
|
3820
|
-
externalEditingTitle="Edit"
|
|
3821
|
-
|
|
3822
|
-
i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
|
|
3823
|
-
externalEditingAddTitle="Add"
|
|
3824
|
-
|
|
3825
|
-
i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
|
|
3826
|
-
externalEditingSaveText="Save"
|
|
3827
|
-
|
|
3828
|
-
i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
|
|
3829
|
-
externalEditingCancelText="Cancel"
|
|
3830
|
-
|
|
3831
|
-
i18n-aiAssistantToolbarToolText="kendo.grid.aiAssistantToolbarToolText|The text of the AI Assistant toolbar tool"
|
|
3832
|
-
aiAssistantToolbarToolText="AI Assistant"
|
|
3833
|
-
|
|
3834
|
-
i18n-aiAssistantWindowTitle="kendo.grid.aiAssistantWindowTitle|The text of the AI Assistant Window title"
|
|
3835
|
-
aiAssistantWindowTitle="AI Assistant"
|
|
3836
|
-
|
|
3837
|
-
i18n-aiAssistantApplyButtonText="kendo.grid.aiAssistantApplyButtonText|The text of the AI Assistant Apply button"
|
|
3838
|
-
aiAssistantApplyButtonText="Apply"
|
|
3839
|
-
|
|
3840
|
-
i18n-aiAssistantWindowCloseTitle="kendo.grid.aiAssistantWindowCloseTitle|The title of the AI Assistant Window close button"
|
|
3841
|
-
aiAssistantWindowCloseTitle="Close"
|
|
3842
|
-
|
|
3843
|
-
i18n-aiAssistantWindowMaximizeTitle="kendo.grid.aiAssistantWindowMaximizeTitle|The title of the AI Assistant Window maximize button"
|
|
3844
|
-
aiAssistantWindowMaximizeTitle="Maximize"
|
|
3845
|
-
|
|
3846
|
-
i18n-aiAssistantWindowMinimizeTitle="kendo.grid.aiAssistantWindowMinimizeTitle|The title of the AI Assistant Window minimize button"
|
|
3847
|
-
aiAssistantWindowMinimizeTitle="Minimize"
|
|
3848
|
-
|
|
3849
|
-
i18n-aiAssistantWindowRestoreTitle="kendo.grid.aiAssistantWindowRestoreTitle|The title of the AI Assistant Window restore button"
|
|
3850
|
-
aiAssistantWindowRestoreTitle="Restore"
|
|
3851
|
-
|
|
3852
|
-
i18n-aiAssistantOutputCardTitle="kendo.grid.aiAssistantOutputCardTitle|The title of the AI Assistant Prompt Output Card"
|
|
3853
|
-
aiAssistantOutputCardTitle="Generated with AI"
|
|
3854
|
-
|
|
3855
|
-
i18n-aiAssistantOutputCardBodyContent="kendo.grid.aiAssistantOutputCardBodyContent|The success message dispayed in the AI Assistant Prompt Output Card's body"
|
|
3856
|
-
aiAssistantOutputCardBodyContent="Operation is successful. Data is:"
|
|
3857
|
-
|
|
3858
|
-
i18n-aiAssistantSelectionNotEnabled="kendo.grid.aiAssistantSelectionNotEnabled|The message shown when AI selection requires the Grid selectable option"
|
|
3859
|
-
aiAssistantSelectionNotEnabled="Selection can be applied only when the Grid selectable option is enabled."
|
|
3860
|
-
|
|
3861
|
-
i18n-aiAssistantSelectionRowModeRequired="kendo.grid.aiAssistantSelectionRowModeRequired|The message shown when AI selection requires row selection mode"
|
|
3862
|
-
aiAssistantSelectionRowModeRequired="Selection can be applied only when row selection mode is enabled."
|
|
3863
|
-
|
|
3864
|
-
i18n-aiAssistantSelectionCellModeRequired="kendo.grid.aiAssistantSelectionCellModeRequired|The message shown when AI selection requires cell selection mode"
|
|
3865
|
-
aiAssistantSelectionCellModeRequired="Selection can be applied only when cell selection mode is enabled."
|
|
3866
|
-
|
|
3867
|
-
i18n-columnChooserSelectAll="kendo.grid.columnChooserSelectAll|The text for the Select all checkbox in the Column Chooser"
|
|
3868
|
-
columnChooserSelectAll="Select all"
|
|
3869
|
-
|
|
3870
|
-
i18n-columnChooserSelectedColumnsCount="kendo.grid.columnChooserSelectedColumnsCount|The text displayed in the Column Chooser for the number of selected columns"
|
|
3871
|
-
columnChooserSelectedColumnsCount="{{ '{selectedColumnsCount} Selected items' }}"
|
|
3872
|
-
|
|
3873
|
-
i18n-multiCheckboxFilterSearchPlaceholder="kendo.grid.multiCheckboxFilterSearchPlaceholder|The placeholder text for the multi-checkbox filter search input"
|
|
3874
|
-
multiCheckboxFilterSearchPlaceholder="Search..."
|
|
3875
|
-
|
|
3876
|
-
i18n-multiCheckboxFilterSelectAllLabel="kendo.grid.multiCheckboxFilterSelectAllLabel|The label for the multi-checkbox filter select all option"
|
|
3877
|
-
multiCheckboxFilterSelectAllLabel="Select all"
|
|
3878
|
-
|
|
3879
|
-
i18n-multiCheckboxFilterSelectedItemsCount="kendo.grid.multiCheckboxFilterSelectedItemsCount|The text for the multi-checkbox filter selected items count"
|
|
3880
|
-
multiCheckboxFilterSelectedItemsCount="{{ '{selectedItemsCount} selected items' }}"
|
|
3881
|
-
>
|
|
3882
|
-
</ng-container>
|
|
3883
|
-
@if (showTopToolbar) {
|
|
3884
|
-
<kendo-grid-toolbar
|
|
3885
|
-
[size]="size"
|
|
3886
|
-
[attr.aria-label]="messageFor('topToolbarLabel')"
|
|
3887
|
-
[navigable]="navigation.toolbarEnabled"
|
|
3888
|
-
[attr.aria-controls]="ariaRootId"
|
|
3889
|
-
position="top"></kendo-grid-toolbar>
|
|
3890
|
-
}
|
|
3891
|
-
<ng-content select="kendo-toolbar"></ng-content>
|
|
3892
|
-
@if (showTopPager) {
|
|
3893
|
-
<kendo-pager
|
|
3894
|
-
#topPager
|
|
3895
|
-
[navigable]="navigation.pagerEnabled"
|
|
3896
|
-
class="k-grid-pager k-grid-pager-top"
|
|
3897
|
-
[pageSize]="pageSize"
|
|
3898
|
-
[total]="view.total"
|
|
3899
|
-
[skip]="skip"
|
|
3900
|
-
[size]="size"
|
|
3901
|
-
[responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
|
|
3902
|
-
[buttonCount]="normalizedPageableSettings.buttonCount"
|
|
3903
|
-
[info]="normalizedPageableSettings.info"
|
|
3904
|
-
[pageSizeValues]="normalizedPageableSettings.pageSizes"
|
|
3905
|
-
[previousNext]="normalizedPageableSettings.previousNext"
|
|
3906
|
-
[type]="normalizedPageableSettings.type"
|
|
3907
|
-
(pageChange)="notifyPageChange('pager', $event)"
|
|
3908
|
-
(pagerInputVisibilityChange)="handlePagerVisibilityChange('showPagerInput', $event)"
|
|
3909
|
-
(pageTextVisibilityChange)="handlePagerVisibilityChange('showPagerPageText', $event)"
|
|
3910
|
-
(itemsTextVisibilityChange)="handlePagerVisibilityChange('showPagerItemsText', $event)">
|
|
3911
|
-
<ng-template kendoPagerTemplate>
|
|
3912
|
-
<ng-container
|
|
3913
|
-
[ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
|
|
3914
|
-
[ngTemplateOutletContext]="topPager.templateContext"></ng-container>
|
|
3915
|
-
</ng-template>
|
|
3916
|
-
<kendo-pager-messages
|
|
3917
|
-
[ariaLabel]="messageFor('pagerLabel')"
|
|
3918
|
-
[firstPage]="messageFor('pagerFirstPage')"
|
|
3919
|
-
[inputLabel]="messageFor('pagerInputLabel')"
|
|
3920
|
-
[previousPage]="messageFor('pagerPreviousPage')"
|
|
3921
|
-
[nextPage]="messageFor('pagerNextPage')"
|
|
3922
|
-
[lastPage]="messageFor('pagerLastPage')"
|
|
3923
|
-
[selectPage]="messageFor('pagerSelectPage')"
|
|
3924
|
-
[page]="messageFor('pagerPage')"
|
|
3925
|
-
[itemsPerPage]="messageFor('pagerItemsPerPage')"
|
|
3926
|
-
[items]="messageFor('pagerItems')"
|
|
3927
|
-
[of]="messageFor('pagerOf')"
|
|
3928
|
-
[pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
|
|
3929
|
-
</kendo-pager-messages>
|
|
3930
|
-
</kendo-pager>
|
|
3931
|
-
}
|
|
3932
|
-
@if (showGroupPanel) {
|
|
3933
|
-
<kendo-grid-group-panel
|
|
3934
|
-
[navigable]="navigation.toolbarEnabled"
|
|
3935
|
-
[text]="groupableEmptyText"
|
|
3936
|
-
[groups]="group"
|
|
3937
|
-
role="toolbar"
|
|
3938
|
-
[attr.aria-label]="messageFor('groupPanelLabel')"
|
|
3939
|
-
[attr.aria-controls]="ariaRootId"
|
|
3940
|
-
(change)="groupChange.emit($event)">
|
|
3941
|
-
</kendo-grid-group-panel>
|
|
3942
|
-
}
|
|
3943
|
-
<div #ariaRoot
|
|
3944
|
-
class="k-grid-aria-root"
|
|
3945
|
-
role="grid"
|
|
3946
|
-
kendoDragTargetContainer
|
|
3947
|
-
kendoDropTargetContainer
|
|
3948
|
-
mode="manual"
|
|
3949
|
-
[dragDisabled]="!rowReorderable"
|
|
3950
|
-
[dropDisabled]="!rowReorderable"
|
|
3951
|
-
[dragTargetFilter]="getDefaultSelectors('dragTarget')"
|
|
3952
|
-
[dropTargetFilter]="getDefaultSelectors('dropTarget')"
|
|
3953
|
-
[dragHandle]="getDefaultSelectors('handle')"
|
|
3954
|
-
[hint]="{hintTemplate: customHintTemplate || defaultHint}"
|
|
3955
|
-
[hintContext]="hintContext"
|
|
3956
|
-
(onPress)="handleReorderEvents($event, 'press')"
|
|
3957
|
-
(onDragStart)="handleReorderEvents($event, 'dragStart')"
|
|
3958
|
-
(onDrag)="handleReorderEvents($event, 'drag')"
|
|
3959
|
-
(onDragEnter)="handleReorderEvents($event, 'dragEnter')"
|
|
3960
|
-
(onDragLeave)="handleReorderEvents($event, 'dragLeave')"
|
|
3961
|
-
(onDragEnd)="handleReorderEvents($event, 'dragEnd')"
|
|
3962
|
-
(onDrop)="handleReorderEvents($event, 'drop')"
|
|
3963
|
-
[dragData]="gridData"
|
|
3964
|
-
[id]="ariaRootId"
|
|
3965
|
-
[attr.aria-label]="ariaLabel"
|
|
3966
|
-
[attr.aria-rowcount]="ariaRowCount"
|
|
3967
|
-
[attr.aria-colcount]="ariaColCount">
|
|
3968
|
-
@if (isScrollable) {
|
|
3969
|
-
@if (!hideHeader && !isStacked) {
|
|
3970
|
-
<div
|
|
3971
|
-
class="k-grid-header"
|
|
3972
|
-
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
3973
|
-
role="presentation"
|
|
3974
|
-
[style.padding]="headerPadding">
|
|
3975
|
-
@if (isLocked) {
|
|
3976
|
-
<div
|
|
3977
|
-
#lockedHeader
|
|
3978
|
-
role="presentation"
|
|
3979
|
-
class="k-grid-header-locked"
|
|
3980
|
-
[style.width.px]="lockedWidth">
|
|
3981
|
-
<table
|
|
3982
|
-
kendoGridResizableTable
|
|
3983
|
-
[locked]="true"
|
|
3984
|
-
role="presentation"
|
|
3985
|
-
class="k-grid-header-table"
|
|
3986
|
-
[style.width.px]="lockedWidth"
|
|
3987
|
-
kendoGridTable
|
|
3988
|
-
[size]="size">
|
|
3989
|
-
<colgroup kendoGridColGroup
|
|
3990
|
-
[columns]="$any(lockedLeafColumns)"
|
|
3991
|
-
[groups]="group"
|
|
3992
|
-
[detailTemplate]="detailTemplate">
|
|
3993
|
-
</colgroup>
|
|
3994
|
-
<thead kendoGridHeader
|
|
3995
|
-
role="rowgroup"
|
|
3996
|
-
[resizable]="resizable"
|
|
3997
|
-
[scrollable]="true"
|
|
3998
|
-
[columns]="$any(lockedColumns)"
|
|
3999
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
4000
|
-
[sort]="sort"
|
|
4001
|
-
[groups]="group"
|
|
4002
|
-
[filter]="filter"
|
|
4003
|
-
[filterable]="filterable"
|
|
4004
|
-
[groupable]="showGroupPanel"
|
|
4005
|
-
[reorderable]="reorderable"
|
|
4006
|
-
[sortable]="sortable"
|
|
4007
|
-
[columnMenu]="columnMenuOptions"
|
|
4008
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
4009
|
-
[totalColumnsCount]="leafColumns.length"
|
|
4010
|
-
[totalColumns]="columnsContainer"
|
|
4011
|
-
[detailTemplate]="detailTemplate"
|
|
4012
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
4013
|
-
</thead>
|
|
4014
|
-
</table>
|
|
4015
|
-
</div>
|
|
4016
|
-
}
|
|
4017
|
-
<div #header class="k-grid-header-wrap" role="presentation" data-scrollable
|
|
4018
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0"
|
|
4019
|
-
[lockedWidth]="lockedWidth + scrollbarWidth + 2">
|
|
4020
|
-
<table
|
|
4021
|
-
role="presentation"
|
|
4022
|
-
class="k-grid-header-table"
|
|
4023
|
-
[style.width.px]="nonLockedWidth"
|
|
4024
|
-
kendoGridResizableTable
|
|
4025
|
-
[virtualColumns]="virtualColumns"
|
|
4026
|
-
kendoGridTable
|
|
4027
|
-
[size]="size">
|
|
4028
|
-
<colgroup kendoGridColGroup
|
|
4029
|
-
[columns]="headerLeafColumns"
|
|
4030
|
-
[groups]="isLocked ? [] : group"
|
|
4031
|
-
[detailTemplate]="detailTemplate">
|
|
4032
|
-
</colgroup>
|
|
4033
|
-
<thead kendoGridHeader
|
|
4034
|
-
[resizable]="resizable"
|
|
4035
|
-
role="rowgroup"
|
|
4036
|
-
[scrollable]="true"
|
|
4037
|
-
[columns]="headerColumns"
|
|
4038
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
4039
|
-
[sort]="sort"
|
|
4040
|
-
[filter]="filter"
|
|
4041
|
-
[filterable]="filterable"
|
|
4042
|
-
[groupable]="showGroupPanel"
|
|
4043
|
-
[reorderable]="reorderable"
|
|
4044
|
-
[groups]="isLocked ? [] : group"
|
|
4045
|
-
[sortable]="sortable"
|
|
4046
|
-
[columnMenu]="columnMenuOptions"
|
|
4047
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
4048
|
-
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
4049
|
-
[totalColumnsCount]="leafColumns.length"
|
|
4050
|
-
[totalColumns]="columnsContainer"
|
|
4051
|
-
[detailTemplate]="detailTemplate"
|
|
4052
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
4053
|
-
</thead>
|
|
4054
|
-
</table>
|
|
4055
|
-
@if (virtualColumns) {
|
|
4056
|
-
<div class="k-width-container" role="presentation">
|
|
4057
|
-
<div [style.width.px]="columnsContainer.unlockedWidth"></div>
|
|
4058
|
-
</div>
|
|
4059
|
-
}
|
|
4060
|
-
</div>
|
|
4061
|
-
</div>
|
|
4062
|
-
}
|
|
4063
|
-
<kendo-grid-list
|
|
4064
|
-
[data]="$any(view)"
|
|
4065
|
-
[rowHeight]="rowHeight"
|
|
4066
|
-
[detailRowHeight]="detailRowHeight"
|
|
4067
|
-
[total]="totalCount"
|
|
4068
|
-
[take]="pageSize"
|
|
4069
|
-
[groups]="group"
|
|
4070
|
-
[groupable]="groupable"
|
|
4071
|
-
[skip]="skip"
|
|
4072
|
-
[trackBy]="trackBy"
|
|
4073
|
-
[columns]="columnsContainer"
|
|
4074
|
-
[selectable]="selectable"
|
|
4075
|
-
[filterable]="filterable"
|
|
4076
|
-
[detailTemplate]="detailTemplate"
|
|
4077
|
-
[noRecordsTemplate]="noRecordsTemplate"
|
|
4078
|
-
[size]="size"
|
|
4079
|
-
(pageChange)="notifyPageChange('list', $event)"
|
|
4080
|
-
[rowClass]="rowClass"
|
|
4081
|
-
[rowSticky]="rowSticky"
|
|
4082
|
-
[loading]="loading"
|
|
4083
|
-
[isVirtual]="isVirtual"
|
|
4084
|
-
[cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
|
|
4085
|
-
[loadingTemplate]="loadingTemplate?.templateRef"
|
|
4086
|
-
[virtualColumns]="virtualColumns"
|
|
4087
|
-
(scrollBottom)="notifyScrollBottom()"
|
|
4088
|
-
(contentScroll)="contentScroll.emit($event)"
|
|
4089
|
-
kendoDraggable
|
|
4090
|
-
kendoGridSelectionMarquee
|
|
4091
|
-
[enableDrag]="marqueeSelection"
|
|
4092
|
-
[sort]="sort">
|
|
4093
|
-
</kendo-grid-list>
|
|
4094
|
-
@if (showFooter) {
|
|
4095
|
-
<div
|
|
4096
|
-
class="k-grid-footer"
|
|
4097
|
-
[style.padding]="headerPadding">
|
|
4098
|
-
@if (lockedLeafColumns.length && !isStacked) {
|
|
4099
|
-
<div
|
|
4100
|
-
class="k-grid-footer-locked"
|
|
4101
|
-
[style.width.px]="lockedWidth">
|
|
4102
|
-
<table
|
|
4103
|
-
role="presentation"
|
|
4104
|
-
class="k-grid-footer-table"
|
|
4105
|
-
kendoGridResizableTable
|
|
4106
|
-
[locked]="true"
|
|
4107
|
-
[style.width.px]="lockedWidth"
|
|
4108
|
-
kendoGridTable
|
|
4109
|
-
[size]="size">
|
|
4110
|
-
@if (!isStacked) {
|
|
4111
|
-
<colgroup kendoGridColGroup
|
|
4112
|
-
[columns]="$any(lockedLeafColumns)"
|
|
4113
|
-
[groups]="group"
|
|
4114
|
-
[detailTemplate]="detailTemplate">
|
|
4115
|
-
</colgroup>
|
|
4116
|
-
}
|
|
4117
|
-
<tfoot kendoGridFooter
|
|
4118
|
-
[scrollable]="true"
|
|
4119
|
-
[groups]="group"
|
|
4120
|
-
[columns]="$any(lockedLeafColumns)"
|
|
4121
|
-
[detailTemplate]="detailTemplate"
|
|
4122
|
-
[logicalRowIndex]="ariaRowCount"
|
|
4123
|
-
[totalColumns]="columnsContainer"
|
|
4124
|
-
[totalColumnsCount]="leafColumns.length">
|
|
4125
|
-
</tfoot>
|
|
4126
|
-
</table>
|
|
4127
|
-
</div>
|
|
4128
|
-
}
|
|
4129
|
-
<div #footer
|
|
4130
|
-
class="k-grid-footer-wrap" data-scrollable
|
|
4131
|
-
[kendoGridResizableContainer]="lockedLeafColumns.length > 0 && !isStacked"
|
|
4132
|
-
[lockedWidth]="lockedWidth + scrollbarWidth + 3">
|
|
4133
|
-
<table
|
|
4134
|
-
role="presentation"
|
|
4135
|
-
class="k-grid-footer-table"
|
|
4136
|
-
[style.width.px]="nonLockedWidth"
|
|
4137
|
-
kendoGridTable
|
|
4138
|
-
kendoGridResizableTable
|
|
4139
|
-
[size]="size">
|
|
4140
|
-
@if (!isStacked) {
|
|
4141
|
-
<colgroup kendoGridColGroup
|
|
4142
|
-
[columns]="$any(headerLeafColumns)"
|
|
4143
|
-
[groups]="isLocked ? [] : group"
|
|
4144
|
-
[detailTemplate]="detailTemplate">
|
|
4145
|
-
</colgroup>
|
|
4146
|
-
}
|
|
4147
|
-
<tfoot kendoGridFooter
|
|
4148
|
-
[logicalRowIndex]="ariaRowCount"
|
|
4149
|
-
[scrollable]="true"
|
|
4150
|
-
[groups]="isLocked ? [] : group"
|
|
4151
|
-
[columns]="$any(headerColumns)"
|
|
4152
|
-
[lockedColumnsCount]="isStacked ? 0 : lockedLeafColumns.length"
|
|
4153
|
-
[detailTemplate]="detailTemplate"
|
|
4154
|
-
[totalColumns]="columnsContainer"
|
|
4155
|
-
[totalColumnsCount]="leafColumns.length">
|
|
4156
|
-
</tfoot>
|
|
4157
|
-
</table>
|
|
4158
|
-
</div>
|
|
4159
|
-
</div>
|
|
4160
|
-
}
|
|
4161
|
-
}
|
|
4162
|
-
@if (!isScrollable) {
|
|
4163
|
-
<table
|
|
4164
|
-
[style.table-layout]="resizable ? 'fixed' : null"
|
|
4165
|
-
kendoGridTable
|
|
4166
|
-
kendoGridResizableTable
|
|
4167
|
-
class="k-grid-table"
|
|
4168
|
-
role="presentation"
|
|
4169
|
-
[size]="size">
|
|
4170
|
-
<colgroup kendoGridColGroup
|
|
4171
|
-
[columns]="$any(leafColumns)"
|
|
4172
|
-
[groups]="group"
|
|
4173
|
-
[sort]="sort"
|
|
4174
|
-
[detailTemplate]="detailTemplate">
|
|
4175
|
-
</colgroup>
|
|
4176
|
-
@if (!hideHeader && !isStacked) {
|
|
4177
|
-
<thead kendoGridHeader
|
|
4178
|
-
class="k-grid-header"
|
|
4179
|
-
[class.k-grid-draggable-header]="groupable || reorderable"
|
|
4180
|
-
role="rowgroup"
|
|
4181
|
-
[resizable]="resizable"
|
|
4182
|
-
[scrollable]="false"
|
|
4183
|
-
[columns]="$any(visibleColumns)"
|
|
4184
|
-
[totalColumnLevels]="totalColumnLevels"
|
|
4185
|
-
[totalColumns]="columnsContainer"
|
|
4186
|
-
[groups]="group"
|
|
4187
|
-
[groupable]="showGroupPanel"
|
|
4188
|
-
[reorderable]="reorderable"
|
|
4189
|
-
[sort]="sort"
|
|
4190
|
-
[sortable]="sortable"
|
|
4191
|
-
[filter]="filter"
|
|
4192
|
-
[filterable]="filterable"
|
|
4193
|
-
[columnMenu]="columnMenuOptions"
|
|
4194
|
-
[columnMenuTemplate]="columnMenuTemplate"
|
|
4195
|
-
[detailTemplate]="detailTemplate"
|
|
4196
|
-
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
4197
|
-
</thead>
|
|
4198
|
-
}
|
|
4199
|
-
<tbody kendoGridTableBody
|
|
4200
|
-
[isLoading]="loading"
|
|
4201
|
-
[rowHeight]="rowHeight"
|
|
4202
|
-
[detailRowHeight]="detailRowHeight"
|
|
4203
|
-
[groups]="group"
|
|
4204
|
-
[rowsToRender]="rowsToRender"
|
|
4205
|
-
[skip]="skip"
|
|
4206
|
-
[columns]="$any(leafColumns)"
|
|
4207
|
-
[totalColumnsCount]="leafColumns.length"
|
|
4208
|
-
[totalColumns]="columnsContainer"
|
|
4209
|
-
[selectable]="selectable"
|
|
4210
|
-
[filterable]="filterable"
|
|
4211
|
-
[noRecordsTemplate]="noRecordsTemplate"
|
|
4212
|
-
[detailTemplate]="detailTemplate"
|
|
4213
|
-
[trackBy]="trackBy"
|
|
4214
|
-
[rowClass]="rowClass"
|
|
4215
|
-
kendoDraggable
|
|
4216
|
-
kendoGridSelectionMarquee
|
|
4217
|
-
[enableDrag]="marqueeSelection">
|
|
4218
|
-
</tbody>
|
|
4219
|
-
@if (showFooter) {
|
|
4220
|
-
<tfoot kendoGridFooter
|
|
4221
|
-
[scrollable]="false"
|
|
4222
|
-
[logicalRowIndex]="ariaRowCount"
|
|
4223
|
-
[groups]="group"
|
|
4224
|
-
[columns]="$any(leafColumns)"
|
|
4225
|
-
[detailTemplate]="detailTemplate"
|
|
4226
|
-
[totalColumns]="columnsContainer"
|
|
4227
|
-
[totalColumnsCount]="leafColumns.length">
|
|
4228
|
-
</tfoot>
|
|
4229
|
-
}
|
|
4230
|
-
</table>
|
|
4231
|
-
}
|
|
4232
|
-
@if (loading) {
|
|
4233
|
-
<div [loadingTemplate]="loadingTemplate" kendoGridLoading></div>
|
|
4234
|
-
}
|
|
4235
|
-
</div>
|
|
4236
|
-
@if (showStatusBar) {
|
|
4237
|
-
<kendo-grid-status-bar
|
|
4238
|
-
[statusBarTemplate]="statusBarTemplate">
|
|
4239
|
-
</kendo-grid-status-bar>
|
|
4240
|
-
}
|
|
4241
|
-
@if (showBottomPager) {
|
|
4242
|
-
<kendo-pager
|
|
4243
|
-
#bottomPager
|
|
4244
|
-
class="k-grid-pager"
|
|
4245
|
-
[navigable]="navigation.pagerEnabled"
|
|
4246
|
-
[pageSize]="pageSize"
|
|
4247
|
-
[total]="view.total"
|
|
4248
|
-
[skip]="skip"
|
|
4249
|
-
[size]="size"
|
|
4250
|
-
[responsive]="normalizedPageableSettings.responsive && !pagerTemplate"
|
|
4251
|
-
[buttonCount]="normalizedPageableSettings.buttonCount"
|
|
4252
|
-
[info]="normalizedPageableSettings.info"
|
|
4253
|
-
[pageSizeValues]="normalizedPageableSettings.pageSizes"
|
|
4254
|
-
[previousNext]="normalizedPageableSettings.previousNext"
|
|
4255
|
-
[type]="normalizedPageableSettings.type"
|
|
4256
|
-
(pageChange)="notifyPageChange('pager', $event)"
|
|
4257
|
-
(pagerInputVisibilityChange)="handlePagerVisibilityChange('showPagerInput', $event)"
|
|
4258
|
-
(pageTextVisibilityChange)="handlePagerVisibilityChange('showPagerPageText', $event)"
|
|
4259
|
-
(itemsTextVisibilityChange)="handlePagerVisibilityChange('showPagerItemsText', $event)">
|
|
4260
|
-
<ng-template kendoPagerTemplate>
|
|
4261
|
-
<ng-container
|
|
4262
|
-
[ngTemplateOutlet]="pagerTemplate ? pagerTemplate?.templateRef : defaultPager"
|
|
4263
|
-
[ngTemplateOutletContext]="bottomPager.templateContext"></ng-container>
|
|
4264
|
-
</ng-template>
|
|
4265
|
-
<kendo-pager-messages
|
|
4266
|
-
[ariaLabel]="messageFor('pagerLabel')"
|
|
4267
|
-
[firstPage]="messageFor('pagerFirstPage')"
|
|
4268
|
-
[inputLabel]="messageFor('pagerInputLabel')"
|
|
4269
|
-
[previousPage]="messageFor('pagerPreviousPage')"
|
|
4270
|
-
[nextPage]="messageFor('pagerNextPage')"
|
|
4271
|
-
[lastPage]="messageFor('pagerLastPage')"
|
|
4272
|
-
[selectPage]="messageFor('pagerSelectPage')"
|
|
4273
|
-
[page]="messageFor('pagerPage')"
|
|
4274
|
-
[itemsPerPage]="messageFor('pagerItemsPerPage')"
|
|
4275
|
-
[items]="messageFor('pagerItems')"
|
|
4276
|
-
[of]="messageFor('pagerOf')"
|
|
4277
|
-
[pageNumberInputTitle]="messageFor('pagerPageNumberInputTitle')">
|
|
4278
|
-
</kendo-pager-messages>
|
|
4279
|
-
</kendo-pager>
|
|
4280
|
-
}
|
|
4281
|
-
@if (showBottomToolbar) {
|
|
4282
|
-
<kendo-grid-toolbar
|
|
4283
|
-
class="k-grid-toolbar-bottom"
|
|
4284
|
-
[size]="size"
|
|
4285
|
-
[navigable]="navigation.toolbarEnabled"
|
|
4286
|
-
[attr.aria-label]="messageFor('bottomToolbarLabel')"
|
|
4287
|
-
[attr.aria-controls]="ariaRootId"
|
|
4288
|
-
position="bottom">
|
|
4289
|
-
</kendo-grid-toolbar>
|
|
4290
|
-
}
|
|
4291
|
-
|
|
4292
|
-
<ng-template #defaultHint>
|
|
4293
|
-
<kendo-icon-wrapper
|
|
4294
|
-
[name]="getHintSettings('hintIcon')"
|
|
4295
|
-
[svgIcon]="getHintSettings('hintSVGIcon')"
|
|
4296
|
-
innerCssClass="k-drag-status">
|
|
4297
|
-
</kendo-icon-wrapper>
|
|
4298
|
-
{{hintText}}
|
|
4299
|
-
</ng-template>
|
|
4300
|
-
|
|
4301
|
-
<ng-template #defaultPager>
|
|
4302
|
-
<div class="k-pager-numbers-wrap">
|
|
4303
|
-
@if (normalizedPageableSettings.previousNext) {
|
|
4304
|
-
<kendo-pager-prev-buttons [size]="size"></kendo-pager-prev-buttons>
|
|
4305
|
-
}
|
|
4306
|
-
@if (normalizedPageableSettings.type === 'numeric' && normalizedPageableSettings.buttonCount > 0) {
|
|
4307
|
-
<kendo-pager-numeric-buttons
|
|
4308
|
-
[size]="size"
|
|
4309
|
-
[buttonCount]="normalizedPageableSettings.buttonCount">
|
|
4310
|
-
</kendo-pager-numeric-buttons>
|
|
4311
|
-
}
|
|
4312
|
-
@if (normalizedPageableSettings.type === 'input' || showPagerInput) {
|
|
4313
|
-
<kendo-pager-input [size]="size" [showPageText]="showPagerPageText"></kendo-pager-input>
|
|
4314
|
-
}
|
|
4315
|
-
@if (normalizedPageableSettings.previousNext) {
|
|
4316
|
-
<kendo-pager-next-buttons [size]="size"></kendo-pager-next-buttons>
|
|
4317
|
-
}
|
|
4318
|
-
</div>
|
|
4319
|
-
@if (normalizedPageableSettings.pageSizes) {
|
|
4320
|
-
<kendo-pager-page-sizes
|
|
4321
|
-
[size]="size"
|
|
4322
|
-
[pageSizes]="normalizedPageableSettings.pageSizes"
|
|
4323
|
-
[showItemsText]="showPagerItemsText">
|
|
4324
|
-
</kendo-pager-page-sizes>
|
|
4325
|
-
}
|
|
4326
|
-
@if (normalizedPageableSettings.info) {
|
|
4327
|
-
<kendo-pager-info>
|
|
4328
|
-
</kendo-pager-info>
|
|
4329
|
-
}
|
|
4330
|
-
</ng-template>
|
|
4331
|
-
<div #dialogContainer></div>
|
|
4332
|
-
<div #windowContainer></div>
|
|
4333
|
-
|
|
4334
|
-
@if (isAdaptiveModeEnabled) {
|
|
4335
|
-
<kendo-grid-adaptive-renderer></kendo-grid-adaptive-renderer>
|
|
4336
|
-
}
|
|
4337
|
-
@if (isVirtual) {
|
|
4338
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
4339
|
-
}
|
|
4340
|
-
|
|
4341
|
-
@if (showLicenseWatermark) {
|
|
4342
|
-
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
4343
|
-
}
|
|
4344
|
-
`,
|
|
4345
|
-
standalone: true,
|
|
4346
|
-
imports: [
|
|
4347
|
-
LocalizedMessagesDirective,
|
|
4348
|
-
GridToolbarComponent,
|
|
4349
|
-
GroupPanelComponent,
|
|
4350
|
-
TableDirective,
|
|
4351
|
-
GridTableDirective,
|
|
4352
|
-
ColGroupComponent,
|
|
4353
|
-
HeaderComponent,
|
|
4354
|
-
ResizableContainerDirective,
|
|
4355
|
-
ListComponent,
|
|
4356
|
-
DragTargetContainerDirective,
|
|
4357
|
-
DropTargetContainerDirective,
|
|
4358
|
-
DraggableDirective,
|
|
4359
|
-
GridMarqueeDirective,
|
|
4360
|
-
FooterComponent,
|
|
4361
|
-
TableBodyComponent,
|
|
4362
|
-
LoadingComponent,
|
|
4363
|
-
StatusBarComponent,
|
|
4364
|
-
IconWrapperComponent,
|
|
4365
|
-
WatermarkOverlayComponent,
|
|
4366
|
-
...KENDO_PAGER,
|
|
4367
|
-
NgTemplateOutlet,
|
|
4368
|
-
AdaptiveRendererComponent,
|
|
4369
|
-
ResizeSensorComponent
|
|
4370
|
-
]
|
|
4371
|
-
}]
|
|
4372
|
-
}], ctorParameters: () => [{ type: i1.BrowserSupportService }, { type: i2.SelectionService }, { type: i3.CellSelectionService }, { type: i0.ElementRef }, { type: i4.GroupInfoService }, { type: i5.GroupsService }, { type: i6.ChangeNotificationService }, { type: i7.DetailsService }, { type: i8.EditService }, { type: i9.FilterService }, { type: i10.PDFService }, { type: i11.ResponsiveService }, { type: i0.Renderer2 }, { type: i12.ExcelService }, { type: i0.NgZone }, { type: i13.ScrollSyncService }, { type: i14.DomEventsService }, { type: i15.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i16.ColumnReorderService }, { type: i17.ColumnInfoService }, { type: i18.NavigationService }, { type: i19.SortService }, { type: i20.ScrollRequestService }, { type: i21.LocalizationService }, { type: i22.ContextService }, { type: i23.SizingOptionsService }, { type: i24.AdaptiveGridService }, { type: i25.RowReorderService }, { type: i26.DataMappingService }, { type: i27.GridAIRequestResponseService }, { type: i28.IdService }], propDecorators: { data: [{
|
|
4373
|
-
type: Input
|
|
4374
|
-
}], pageSize: [{
|
|
4375
|
-
type: Input
|
|
4376
|
-
}], height: [{
|
|
4377
|
-
type: Input
|
|
4378
|
-
}], rowHeight: [{
|
|
4379
|
-
type: Input
|
|
4380
|
-
}], adaptiveMode: [{
|
|
4381
|
-
type: Input
|
|
4382
|
-
}], detailRowHeight: [{
|
|
4383
|
-
type: Input
|
|
4384
|
-
}], skip: [{
|
|
4385
|
-
type: Input
|
|
4386
|
-
}], scrollable: [{
|
|
4387
|
-
type: Input
|
|
4388
|
-
}], selectable: [{
|
|
4389
|
-
type: Input
|
|
4390
|
-
}], sort: [{
|
|
4391
|
-
type: Input
|
|
4392
|
-
}], size: [{
|
|
4393
|
-
type: Input
|
|
4394
|
-
}], trackBy: [{
|
|
4395
|
-
type: Input
|
|
4396
|
-
}], filter: [{
|
|
4397
|
-
type: Input
|
|
4398
|
-
}], group: [{
|
|
4399
|
-
type: Input
|
|
4400
|
-
}], virtualColumns: [{
|
|
4401
|
-
type: Input
|
|
4402
|
-
}], filterable: [{
|
|
4403
|
-
type: Input
|
|
4404
|
-
}], sortable: [{
|
|
4405
|
-
type: Input
|
|
4406
|
-
}], pageable: [{
|
|
4407
|
-
type: Input
|
|
4408
|
-
}], groupable: [{
|
|
4409
|
-
type: Input
|
|
4410
|
-
}], gridResizable: [{
|
|
4411
|
-
type: Input
|
|
4412
|
-
}], rowReorderable: [{
|
|
4413
|
-
type: Input
|
|
4414
|
-
}], navigable: [{
|
|
4415
|
-
type: Input
|
|
4416
|
-
}], autoSize: [{
|
|
4417
|
-
type: Input
|
|
4418
|
-
}], rowClass: [{
|
|
4419
|
-
type: Input
|
|
4420
|
-
}], rowSticky: [{
|
|
4421
|
-
type: Input
|
|
4422
|
-
}], rowSelected: [{
|
|
4423
|
-
type: Input
|
|
4424
|
-
}], isRowSelectable: [{
|
|
4425
|
-
type: Input
|
|
4426
|
-
}], cellSelected: [{
|
|
4427
|
-
type: Input
|
|
4428
|
-
}], resizable: [{
|
|
4429
|
-
type: Input
|
|
4430
|
-
}], reorderable: [{
|
|
4431
|
-
type: Input
|
|
4432
|
-
}], loading: [{
|
|
4433
|
-
type: Input
|
|
4434
|
-
}], columnMenu: [{
|
|
4435
|
-
type: Input
|
|
4436
|
-
}], hideHeader: [{
|
|
4437
|
-
type: Input
|
|
4438
|
-
}], showInactiveTools: [{
|
|
4439
|
-
type: Input
|
|
4440
|
-
}], isDetailExpanded: [{
|
|
4441
|
-
type: Input
|
|
4442
|
-
}], isGroupExpanded: [{
|
|
4443
|
-
type: Input
|
|
4444
|
-
}], dataLayoutMode: [{
|
|
4445
|
-
type: Input
|
|
4446
|
-
}], filterChange: [{
|
|
4447
|
-
type: Output
|
|
4448
|
-
}], pageChange: [{
|
|
4449
|
-
type: Output
|
|
4450
|
-
}], groupChange: [{
|
|
4451
|
-
type: Output
|
|
4452
|
-
}], sortChange: [{
|
|
4453
|
-
type: Output
|
|
4454
|
-
}], selectionChange: [{
|
|
4455
|
-
type: Output
|
|
4456
|
-
}], rowReorder: [{
|
|
4457
|
-
type: Output
|
|
4458
|
-
}], dataStateChange: [{
|
|
4459
|
-
type: Output
|
|
4460
|
-
}], gridStateChange: [{
|
|
4461
|
-
type: Output
|
|
4462
|
-
}], groupExpand: [{
|
|
4463
|
-
type: Output
|
|
4464
|
-
}], groupCollapse: [{
|
|
4465
|
-
type: Output
|
|
4466
|
-
}], detailExpand: [{
|
|
4467
|
-
type: Output
|
|
4468
|
-
}], detailCollapse: [{
|
|
4469
|
-
type: Output
|
|
4470
|
-
}], edit: [{
|
|
4471
|
-
type: Output
|
|
4472
|
-
}], cancel: [{
|
|
4473
|
-
type: Output
|
|
4474
|
-
}], save: [{
|
|
4475
|
-
type: Output
|
|
4476
|
-
}], remove: [{
|
|
4477
|
-
type: Output
|
|
4478
|
-
}], add: [{
|
|
4479
|
-
type: Output
|
|
4480
|
-
}], cellClose: [{
|
|
4481
|
-
type: Output
|
|
4482
|
-
}], cellClick: [{
|
|
4483
|
-
type: Output
|
|
4484
|
-
}], pdfExport: [{
|
|
4485
|
-
type: Output
|
|
4486
|
-
}], excelExport: [{
|
|
4487
|
-
type: Output
|
|
4488
|
-
}], columnResize: [{
|
|
4489
|
-
type: Output
|
|
4490
|
-
}], columnReorder: [{
|
|
4491
|
-
type: Output
|
|
4492
|
-
}], columnVisibilityChange: [{
|
|
4493
|
-
type: Output
|
|
4494
|
-
}], columnLockedChange: [{
|
|
4495
|
-
type: Output
|
|
4496
|
-
}], columnStickyChange: [{
|
|
4497
|
-
type: Output
|
|
4498
|
-
}], scrollBottom: [{
|
|
4499
|
-
type: Output
|
|
4500
|
-
}], contentScroll: [{
|
|
4501
|
-
type: Output
|
|
4502
|
-
}], columns: [{
|
|
4503
|
-
type: ContentChildren,
|
|
4504
|
-
args: [ColumnBase]
|
|
4505
|
-
}], dir: [{
|
|
4506
|
-
type: HostBinding,
|
|
4507
|
-
args: ['attr.dir']
|
|
4508
|
-
}], hostClass: [{
|
|
4509
|
-
type: HostBinding,
|
|
4510
|
-
args: ['class.k-grid']
|
|
4511
|
-
}], sizeSmallClass: [{
|
|
4512
|
-
type: HostBinding,
|
|
4513
|
-
args: ['class.k-grid-sm']
|
|
4514
|
-
}], sizeMediumClass: [{
|
|
4515
|
-
type: HostBinding,
|
|
4516
|
-
args: ['class.k-grid-md']
|
|
4517
|
-
}], stackedClass: [{
|
|
4518
|
-
type: HostBinding,
|
|
4519
|
-
args: ['class.k-grid-stack']
|
|
4520
|
-
}], lockedClasses: [{
|
|
4521
|
-
type: HostBinding,
|
|
4522
|
-
args: ['class.k-grid-lockedcolumns']
|
|
4523
|
-
}], virtualClasses: [{
|
|
4524
|
-
type: HostBinding,
|
|
4525
|
-
args: ['class.k-grid-virtual']
|
|
4526
|
-
}], noScrollbarClass: [{
|
|
4527
|
-
type: HostBinding,
|
|
4528
|
-
args: ['class.k-grid-no-scrollbar']
|
|
4529
|
-
}], isResizable: [{
|
|
4530
|
-
type: HostBinding,
|
|
4531
|
-
args: ['class.k-grid-resizable']
|
|
4532
|
-
}], minWidth: [{
|
|
4533
|
-
type: HostBinding,
|
|
4534
|
-
args: ['style.minWidth']
|
|
4535
|
-
}], maxWidth: [{
|
|
4536
|
-
type: HostBinding,
|
|
4537
|
-
args: ['style.maxWidth']
|
|
4538
|
-
}], minHeight: [{
|
|
4539
|
-
type: HostBinding,
|
|
4540
|
-
args: ['style.minHeight']
|
|
4541
|
-
}], maxHeight: [{
|
|
4542
|
-
type: HostBinding,
|
|
4543
|
-
args: ['style.maxHeight']
|
|
4544
|
-
}], detailTemplateChildren: [{
|
|
4545
|
-
type: ContentChildren,
|
|
4546
|
-
args: [DetailTemplateDirective]
|
|
4547
|
-
}], cellLoadingTemplateChildren: [{
|
|
4548
|
-
type: ContentChildren,
|
|
4549
|
-
args: [CellLoadingTemplateDirective]
|
|
4550
|
-
}], loadingTemplateChildren: [{
|
|
4551
|
-
type: ContentChildren,
|
|
4552
|
-
args: [LoadingTemplateDirective]
|
|
4553
|
-
}], statusBarTemplateChildren: [{
|
|
4554
|
-
type: ContentChildren,
|
|
4555
|
-
args: [StatusBarTemplateDirective]
|
|
4556
|
-
}], noRecordsTemplateChildren: [{
|
|
4557
|
-
type: ContentChildren,
|
|
4558
|
-
args: [NoRecordsTemplateDirective]
|
|
4559
|
-
}], pagerTemplateChildren: [{
|
|
4560
|
-
type: ContentChildren,
|
|
4561
|
-
args: [PagerTemplateDirective]
|
|
4562
|
-
}], toolbarTemplateChildren: [{
|
|
4563
|
-
type: ContentChildren,
|
|
4564
|
-
args: [ToolbarTemplateDirective]
|
|
4565
|
-
}], columnMenuTemplates: [{
|
|
4566
|
-
type: ContentChildren,
|
|
4567
|
-
args: [ColumnMenuTemplateDirective]
|
|
4568
|
-
}], lockedHeader: [{
|
|
4569
|
-
type: ViewChild,
|
|
4570
|
-
args: ['lockedHeader']
|
|
4571
|
-
}], header: [{
|
|
4572
|
-
type: ViewChild,
|
|
4573
|
-
args: ['header']
|
|
4574
|
-
}], footer: [{
|
|
4575
|
-
type: ViewChildren,
|
|
4576
|
-
args: ['footer']
|
|
4577
|
-
}], ariaRoot: [{
|
|
4578
|
-
type: ViewChild,
|
|
4579
|
-
args: ['ariaRoot', { static: true }]
|
|
4580
|
-
}], dragTargetContainer: [{
|
|
4581
|
-
type: ViewChild,
|
|
4582
|
-
args: [DragTargetContainerDirective]
|
|
4583
|
-
}], dropTargetContainer: [{
|
|
4584
|
-
type: ViewChild,
|
|
4585
|
-
args: [DropTargetContainerDirective]
|
|
4586
|
-
}], dialogContainer: [{
|
|
4587
|
-
type: ViewChild,
|
|
4588
|
-
args: ['dialogContainer', { read: ViewContainerRef }]
|
|
4589
|
-
}], windowContainer: [{
|
|
4590
|
-
type: ViewChild,
|
|
4591
|
-
args: ['windowContainer', { read: ViewContainerRef }]
|
|
4592
|
-
}], adaptiveRenderer: [{
|
|
4593
|
-
type: ViewChild,
|
|
4594
|
-
args: [AdaptiveRendererComponent]
|
|
4595
|
-
}], listComponent: [{
|
|
4596
|
-
type: ViewChild,
|
|
4597
|
-
args: [ListComponent]
|
|
4598
|
-
}] } });
|