@progress/kendo-angular-grid 13.0.0-develop.9 → 13.0.1-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.
Files changed (38) hide show
  1. package/aggregates/aggregate-types.d.ts +58 -0
  2. package/aggregates/status-bar-template.directive.d.ts +19 -0
  3. package/aggregates/status-bar.component.d.ts +53 -0
  4. package/column-menu/column-menu.component.d.ts +1 -1
  5. package/esm2020/aggregates/aggregate-types.mjs +6 -0
  6. package/esm2020/aggregates/status-bar-template.directive.mjs +26 -0
  7. package/esm2020/aggregates/status-bar.component.mjs +236 -0
  8. package/esm2020/column-menu/column-menu.component.mjs +6 -6
  9. package/esm2020/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  10. package/esm2020/filtering/cell/filter-cell-operators.component.mjs +15 -1
  11. package/esm2020/filtering/cell/filter-cell-wrapper.component.mjs +3 -1
  12. package/esm2020/filtering/cell/string-filter-cell.component.mjs +1 -1
  13. package/esm2020/filtering/filter-input.directive.mjs +5 -1
  14. package/esm2020/grid.component.mjs +574 -540
  15. package/esm2020/grid.module.mjs +10 -2
  16. package/esm2020/grouping/group-panel.component.mjs +2 -2
  17. package/esm2020/index.mjs +1 -0
  18. package/esm2020/localization/messages.mjs +5 -1
  19. package/esm2020/package-metadata.mjs +2 -2
  20. package/esm2020/rendering/list.component.mjs +12 -14
  21. package/esm2020/selection/cell-selection.service.mjs +20 -1
  22. package/esm2020/selection/selection-checkbox.directive.mjs +2 -0
  23. package/esm2020/selection/selection-default.mjs +14 -1
  24. package/esm2020/selection/selection.service.mjs +31 -5
  25. package/fesm2015/progress-kendo-angular-grid.mjs +926 -572
  26. package/fesm2020/progress-kendo-angular-grid.mjs +927 -572
  27. package/filtering/cell/filter-cell-operators.component.d.ts +10 -1
  28. package/grid.component.d.ts +10 -1
  29. package/grid.module.d.ts +100 -98
  30. package/grouping/group-panel.component.d.ts +0 -1
  31. package/index.d.ts +2 -0
  32. package/localization/messages.d.ts +25 -1
  33. package/package.json +16 -16
  34. package/schematics/ngAdd/index.js +3 -3
  35. package/selection/cell-selection.service.d.ts +3 -0
  36. package/selection/selection-default.d.ts +17 -2
  37. package/selection/selection.service.d.ts +8 -2
  38. package/selection/types.d.ts +27 -0
@@ -18,11 +18,11 @@ import { validatePackage } from '@progress/kendo-licensing';
18
18
  import { orderBy, isCompositeFilterDescriptor, process, filterBy } from '@progress/kendo-data-query';
19
19
  import * as i1$2 from '@progress/kendo-angular-popup';
20
20
  import { PopupModule } from '@progress/kendo-angular-popup';
21
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineFlexIcon, moreHorizontalIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon } from '@progress/kendo-svg-icons';
21
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineFlexIcon, slidersIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon } from '@progress/kendo-svg-icons';
22
22
  import * as i1$3 from '@angular/platform-browser';
23
23
  import * as i3 from '@progress/kendo-angular-icons';
24
24
  import { IconsModule } from '@progress/kendo-angular-icons';
25
- import * as i40 from '@progress/kendo-angular-utils';
25
+ import * as i41 from '@progress/kendo-angular-utils';
26
26
  import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
27
27
  import * as i4$1 from '@progress/kendo-angular-buttons';
28
28
  import { ButtonModule, ChipModule, Button } from '@progress/kendo-angular-buttons';
@@ -2076,16 +2076,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2076
2076
  * @hidden
2077
2077
  */
2078
2078
  class SelectionService {
2079
- constructor(domEvents, localDataChangesService, navigationService) {
2079
+ constructor(domEvents, localDataChangesService, navigationService, ctxService) {
2080
2080
  this.domEvents = domEvents;
2081
2081
  this.localDataChangesService = localDataChangesService;
2082
2082
  this.navigationService = navigationService;
2083
+ this.ctxService = ctxService;
2083
2084
  this.changes = new EventEmitter();
2084
- this.lastSelectionStartIndex = 0;
2085
+ this.aggregateChanges = new EventEmitter();
2085
2086
  this.currentSelection = [];
2086
2087
  this.selectAllChecked = false;
2087
2088
  this.active = false;
2088
2089
  this.dragging = false;
2090
+ this.lastSelectionData = {};
2089
2091
  this.addSubscriptions();
2090
2092
  }
2091
2093
  get enableMarquee() {
@@ -2103,7 +2105,12 @@ class SelectionService {
2103
2105
  return this.active && dragAndMultiple;
2104
2106
  }
2105
2107
  init(settings) {
2108
+ var _a, _b, _c, _d, _e, _f;
2106
2109
  this.settings = settings;
2110
+ if (!isPresent(this.lastSelectionStartIndex)) {
2111
+ this.lastSelectionStartIndex = ((_c = (_b = (_a = this.ctxService) === null || _a === void 0 ? void 0 : _a.grid.selectionDirective) === null || _b === void 0 ? void 0 : _b.rangeSelectionStartRow) === null || _c === void 0 ? void 0 : _c.index) || 0;
2112
+ this.lastSelectionData = ((_f = (_e = (_d = this.ctxService) === null || _d === void 0 ? void 0 : _d.grid.selectionDirective) === null || _e === void 0 ? void 0 : _e.rangeSelectionStartRow) === null || _f === void 0 ? void 0 : _f.dataItem) || {};
2113
+ }
2107
2114
  this.currentSelection = [];
2108
2115
  if (settings.selectable && settings.selectable.enabled !== false) {
2109
2116
  const iterator = this.getIterator();
@@ -2164,12 +2171,21 @@ class SelectionService {
2164
2171
  }
2165
2172
  ev.ctrlKey = ctrlKey;
2166
2173
  ev.shiftKey = event.shiftKey;
2174
+ if (this.options.cellAggregates) {
2175
+ this.aggregateChanges.emit(ev);
2176
+ ev.cellAggregates = this.aggregates;
2177
+ }
2178
+ if (ev.shiftKey) {
2179
+ ev.rangeStartRow = { dataItem: this.lastSelectionData, index: this.lastSelectionStartIndex };
2180
+ ev.rangeEndRow = { dataItem: item.data, index: item.index };
2181
+ }
2167
2182
  this.changes.emit(ev);
2168
2183
  }
2169
2184
  toggle(item) {
2170
2185
  const selectedRows = [];
2171
2186
  const deselectedRows = [];
2172
2187
  this.lastSelectionStartIndex = item.index;
2188
+ this.lastSelectionData = item.data;
2173
2189
  const rowArgs = { dataItem: item.data, index: item.index };
2174
2190
  if (this.isSelected(item.index)) {
2175
2191
  deselectedRows.push(rowArgs);
@@ -2208,6 +2224,7 @@ class SelectionService {
2208
2224
  const deselectedRows = [];
2209
2225
  const selectedRows = [];
2210
2226
  this.lastSelectionStartIndex = item.index;
2227
+ this.lastSelectionData = item.data;
2211
2228
  if (!this.isSelected(item.index)) {
2212
2229
  selectedRows.push({ dataItem: item.data, index: item.index });
2213
2230
  }
@@ -2318,9 +2335,15 @@ class SelectionService {
2318
2335
  }
2319
2336
  next = iterator.next();
2320
2337
  }
2338
+ let cellAggregates;
2339
+ if (this.options.cellAggregates) {
2340
+ this.aggregateChanges.emit({ selectedRows, deselectedRows });
2341
+ cellAggregates = this.aggregates;
2342
+ }
2321
2343
  return {
2322
2344
  deselectedRows: deselectedRows,
2323
- selectedRows: selectedRows
2345
+ selectedRows: selectedRows,
2346
+ cellAggregates
2324
2347
  };
2325
2348
  }
2326
2349
  get selectAllState() {
@@ -2333,6 +2356,7 @@ class SelectionService {
2333
2356
  }
2334
2357
  get options() {
2335
2358
  const defaultOptions = {
2359
+ cellAggregates: false,
2336
2360
  checkboxOnly: false,
2337
2361
  enabled: true,
2338
2362
  mode: "multiple"
@@ -2342,6 +2366,7 @@ class SelectionService {
2342
2366
  }
2343
2367
  if (typeof this.settings.selectable === 'boolean') {
2344
2368
  return {
2369
+ cellAggregates: false,
2345
2370
  checkboxOnly: false,
2346
2371
  enabled: this.settings.selectable,
2347
2372
  mode: "multiple"
@@ -2414,11 +2439,11 @@ class SelectionService {
2414
2439
  }
2415
2440
  }
2416
2441
  }
2417
- SelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });
2442
+ SelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Injectable });
2418
2443
  SelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService });
2419
2444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService, decorators: [{
2420
2445
  type: Injectable
2421
- }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });
2446
+ }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }, { type: ContextService }]; } });
2422
2447
 
2423
2448
  /**
2424
2449
  * @hidden
@@ -2429,6 +2454,7 @@ class CellSelectionService {
2429
2454
  this.localDataChangesService = localDataChangesService;
2430
2455
  this.navigationService = navigationService;
2431
2456
  this.changes = new EventEmitter();
2457
+ this.aggregateChanges = new EventEmitter();
2432
2458
  this.mouseUpEvent = new EventEmitter();
2433
2459
  this.currentSelection = [];
2434
2460
  this.active = false;
@@ -2514,6 +2540,14 @@ class CellSelectionService {
2514
2540
  }
2515
2541
  ev.ctrlKey = ctrlKey;
2516
2542
  ev.shiftKey = event.shiftKey;
2543
+ if (this.options.cellAggregates) {
2544
+ this.aggregateChanges.emit(ev);
2545
+ ev.cellAggregates = this.aggregates;
2546
+ }
2547
+ if (ev.shiftKey) {
2548
+ ev.rangeStartCell = this.lastSelectionItem;
2549
+ ev.rangeEndCell = Object.assign({}, this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item);
2550
+ }
2517
2551
  this.changes.emit(ev);
2518
2552
  }
2519
2553
  toggle(item) {
@@ -2617,13 +2651,20 @@ class CellSelectionService {
2617
2651
  }
2618
2652
  next = iterator.next();
2619
2653
  }
2654
+ let cellAggregates;
2655
+ if (this.options.cellAggregates) {
2656
+ this.aggregateChanges.emit({ selectedCells, deselectedCells });
2657
+ cellAggregates = this.aggregates;
2658
+ }
2620
2659
  return {
2621
2660
  deselectedCells,
2622
- selectedCells
2661
+ selectedCells,
2662
+ cellAggregates
2623
2663
  };
2624
2664
  }
2625
2665
  get options() {
2626
2666
  const defaultOptions = {
2667
+ cellAggregates: false,
2627
2668
  checkboxOnly: false,
2628
2669
  enabled: true,
2629
2670
  mode: "multiple"
@@ -2633,6 +2674,7 @@ class CellSelectionService {
2633
2674
  }
2634
2675
  if (typeof this.settings.selectable === 'boolean') {
2635
2676
  return {
2677
+ cellAggregates: false,
2636
2678
  checkboxOnly: false,
2637
2679
  enabled: this.settings.selectable,
2638
2680
  mode: "multiple"
@@ -2906,8 +2948,8 @@ const packageMetadata = {
2906
2948
  name: '@progress/kendo-angular-grid',
2907
2949
  productName: 'Kendo UI for Angular',
2908
2950
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2909
- publishDate: 1685111107,
2910
- version: '13.0.0-develop.9',
2951
+ publishDate: 1686070747,
2952
+ version: '13.0.1-develop.1',
2911
2953
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2912
2954
  };
2913
2955
 
@@ -4553,6 +4595,12 @@ class Selection {
4553
4595
  * @default []
4554
4596
  */
4555
4597
  this.selectedKeys = [];
4598
+ /**
4599
+ * Defines the initial shift-click range selection starting column index when cell selection is enabled.
4600
+ *
4601
+ * @default 0
4602
+ */
4603
+ this.rangeSelectionStartColumnIndex = 0;
4556
4604
  /**
4557
4605
  * Fires when the `selectedKeys` collection has been updated.
4558
4606
  */
@@ -4600,6 +4648,9 @@ class Selection {
4600
4648
  this.rowSelectionState.clear();
4601
4649
  this.cellSelectionState.clear();
4602
4650
  }
4651
+ /**
4652
+ * @hidden
4653
+ */
4603
4654
  getItemKey(row) {
4604
4655
  if (this.selectionKey) {
4605
4656
  if (typeof this.selectionKey === "string") {
@@ -4678,7 +4729,7 @@ class Selection {
4678
4729
  }
4679
4730
  }
4680
4731
  Selection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Selection, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
4681
- Selection.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Selection, selector: "kendo-grid-selection-base", inputs: { selectedKeys: "selectedKeys", selectionKey: ["kendoGridSelectBy", "selectionKey"], columnKey: "columnKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, usesOnChanges: true, ngImport: i0 });
4732
+ Selection.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: Selection, selector: "kendo-grid-selection-base", inputs: { selectedKeys: "selectedKeys", rangeSelectionStartRow: "rangeSelectionStartRow", rangeSelectionStartColumnIndex: "rangeSelectionStartColumnIndex", selectionKey: ["kendoGridSelectBy", "selectionKey"], columnKey: "columnKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, usesOnChanges: true, ngImport: i0 });
4682
4733
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Selection, decorators: [{
4683
4734
  type: Directive,
4684
4735
  args: [{
@@ -4687,6 +4738,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4687
4738
  }]
4688
4739
  }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedKeys: [{
4689
4740
  type: Input
4741
+ }], rangeSelectionStartRow: [{
4742
+ type: Input
4743
+ }], rangeSelectionStartColumnIndex: [{
4744
+ type: Input
4690
4745
  }], selectionKey: [{
4691
4746
  type: Input,
4692
4747
  args: ["kendoGridSelectBy"]
@@ -6497,6 +6552,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6497
6552
  type: Output
6498
6553
  }] } });
6499
6554
 
6555
+ /**
6556
+ * Represents the status bar template of the Grid. Allows you to visualize the aggregates using custom rendering inside the template.
6557
+ * The template context has the following field:
6558
+ * - `aggregates`—The [SelectionAggregates]({% slug api_grid_selectionaggregates %}) object that contains all calculated aggregates.
6559
+ * Use the Angular [ngFor](link:site.data.urls.angular['ngfor']) structural directive combined with the [KeyValuePipe](https://angular.io/api/common/KeyValuePipe)
6560
+ * to loop through the aggregates as key-value pairs.
6561
+ */
6562
+ class StatusBarTemplateDirective {
6563
+ constructor(templateRef) {
6564
+ this.templateRef = templateRef;
6565
+ }
6566
+ }
6567
+ StatusBarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
6568
+ StatusBarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: StatusBarTemplateDirective, selector: "[kendoGridStatusBarTemplate]", ngImport: i0 });
6569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarTemplateDirective, decorators: [{
6570
+ type: Directive,
6571
+ args: [{
6572
+ selector: '[kendoGridStatusBarTemplate]'
6573
+ }]
6574
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
6575
+
6500
6576
  /**
6501
6577
  * @hidden
6502
6578
  */
@@ -8335,7 +8411,7 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8335
8411
  [label]="groupTitles[index]"
8336
8412
  [removable]="true"
8337
8413
  [icon]="getDirectionIcon(group)"
8338
- [svgIcon]=""
8414
+ [svgIcon]="getDirectionSvgIcon(group)"
8339
8415
  (contentClick)="directionChange(group)"
8340
8416
  (remove)="remove(group)"
8341
8417
  >
@@ -8387,7 +8463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8387
8463
  [label]="groupTitles[index]"
8388
8464
  [removable]="true"
8389
8465
  [icon]="getDirectionIcon(group)"
8390
- [svgIcon]=""
8466
+ [svgIcon]="getDirectionSvgIcon(group)"
8391
8467
  (contentClick)="directionChange(group)"
8392
8468
  (remove)="remove(group)"
8393
8469
  >
@@ -9036,7 +9112,11 @@ class FilterInputDirective {
9036
9112
  this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);
9037
9113
  }
9038
9114
  else {
9039
- this.renderer.setAttribute(this.element.nativeElement, 'aria-label', ariaValue);
9115
+ const inputElement = this.element.nativeElement.querySelector('.k-input-inner');
9116
+ const elementToSetLabel = inputElement ? inputElement : this.element.nativeElement;
9117
+ if (ariaValue) {
9118
+ this.renderer.setAttribute(elementToSetLabel, 'aria-label', ariaValue);
9119
+ }
9040
9120
  }
9041
9121
  }
9042
9122
  }
@@ -12571,7 +12651,7 @@ class ColumnMenuComponent {
12571
12651
  /**
12572
12652
  * @hidden
12573
12653
  */
12574
- this.moreHorizontalIcon = moreHorizontalIcon;
12654
+ this.slidersIcon = slidersIcon;
12575
12655
  /**
12576
12656
  * @hidden
12577
12657
  */
@@ -12849,8 +12929,8 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12849
12929
  <ng-template kendoTabTitle>
12850
12930
  <kendo-icon-wrapper
12851
12931
  [attr.title]="ctx.localization.get('columnMenuGeneralTabTitle')"
12852
- name="more-horizontal"
12853
- [svgIcon]="moreHorizontalIcon">
12932
+ name="sliders"
12933
+ [svgIcon]="slidersIcon">
12854
12934
  </kendo-icon-wrapper>
12855
12935
  </ng-template>
12856
12936
  <ng-template kendoTabContent>
@@ -13018,8 +13098,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13018
13098
  <ng-template kendoTabTitle>
13019
13099
  <kendo-icon-wrapper
13020
13100
  [attr.title]="ctx.localization.get('columnMenuGeneralTabTitle')"
13021
- name="more-horizontal"
13022
- [svgIcon]="moreHorizontalIcon">
13101
+ name="sliders"
13102
+ [svgIcon]="slidersIcon">
13023
13103
  </kendo-icon-wrapper>
13024
13104
  </ng-template>
13025
13105
  <ng-template kendoTabContent>
@@ -13215,13 +13295,22 @@ class FilterCellOperatorsComponent {
13215
13295
  this.subs.unsubscribe();
13216
13296
  }
13217
13297
  }
13298
+ /**
13299
+ * @hidden
13300
+ */
13301
+ get columnLabel() {
13302
+ const localizationMsg = this.ctx.localization.get('filterCellOperatorLabel') || '';
13303
+ const columnName = this.column.title || this.column.field;
13304
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
13305
+ }
13218
13306
  }
13219
13307
  FilterCellOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellOperatorsComponent, deps: [{ token: ContextService }, { token: SizingOptionsService }], target: i0.ɵɵFactoryTarget.Component });
13220
- FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: { operators: "operators", showButton: "showButton", showOperators: "showOperators", value: "value" }, outputs: { valueChange: "valueChange", clear: "clear" }, host: { properties: { "class.k-filtercell-operator": "this.hostClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: `
13308
+ FilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: { operators: "operators", showButton: "showButton", showOperators: "showOperators", value: "value", column: "column" }, outputs: { valueChange: "valueChange", clear: "clear" }, host: { properties: { "class.k-filtercell-operator": "this.hostClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: `
13221
13309
  <kendo-dropdownlist
13222
13310
  #dropdown
13223
13311
  *ngIf="showOperators"
13224
13312
  kendoGridFocusable
13313
+ [attr.aria-label]="columnLabel"
13225
13314
  [data]="operators"
13226
13315
  class="k-dropdown-operator"
13227
13316
  (valueChange)="onChange($event)"
@@ -13254,6 +13343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13254
13343
  #dropdown
13255
13344
  *ngIf="showOperators"
13256
13345
  kendoGridFocusable
13346
+ [attr.aria-label]="columnLabel"
13257
13347
  [data]="operators"
13258
13348
  class="k-dropdown-operator"
13259
13349
  (valueChange)="onChange($event)"
@@ -13292,6 +13382,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13292
13382
  type: Input
13293
13383
  }], value: [{
13294
13384
  type: Input
13385
+ }], column: [{
13386
+ type: Input
13295
13387
  }], valueChange: [{
13296
13388
  type: Output
13297
13389
  }], clear: [{
@@ -13327,12 +13419,13 @@ FilterCellWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
13327
13419
  <ng-content></ng-content>
13328
13420
  <kendo-grid-filter-cell-operators
13329
13421
  [showOperators]="showOperators"
13422
+ [column]="column"
13330
13423
  [operators]="operators"
13331
13424
  (clear)="onClear()"
13332
13425
  [showButton]="showButton"
13333
13426
  [(value)]="currentOperator">
13334
13427
  </kendo-grid-filter-cell-operators>
13335
- `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value"], outputs: ["valueChange", "clear"] }] });
13428
+ `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value", "column"], outputs: ["valueChange", "clear"] }] });
13336
13429
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellWrapperComponent, decorators: [{
13337
13430
  type: Component,
13338
13431
  args: [{
@@ -13341,6 +13434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13341
13434
  <ng-content></ng-content>
13342
13435
  <kendo-grid-filter-cell-operators
13343
13436
  [showOperators]="showOperators"
13437
+ [column]="column"
13344
13438
  [operators]="operators"
13345
13439
  (clear)="onClear()"
13346
13440
  [showButton]="showButton"
@@ -13423,7 +13517,7 @@ StringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13423
13517
  [filterDelay]="filterDelay"
13424
13518
  [ngModel]="currentFilter?.value"></kendo-textbox>
13425
13519
  </kendo-grid-filter-wrapper-cell>
13426
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i3$1.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }], directives: [{ type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
13520
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i3$1.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }], directives: [{ type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
13427
13521
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterCellComponent, decorators: [{
13428
13522
  type: Component,
13429
13523
  args: [{
@@ -13618,7 +13712,7 @@ class BooleanFilterCellComponent extends BooleanFilterComponent {
13618
13712
  * @hidden
13619
13713
  */
13620
13714
  get columnLabel() {
13621
- const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';
13715
+ const localizationMsg = this.ctx.localization.get('booleanFilterCellLabel') || '';
13622
13716
  const columnName = this.column.title || this.column.field;
13623
13717
  return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
13624
13718
  }
@@ -15867,6 +15961,8 @@ class SelectionCheckboxDirective {
15867
15961
  const ev = this.selectionService.toggleByIndex(this.itemIndex);
15868
15962
  ev.ctrlKey = true;
15869
15963
  ev.shiftKey = false;
15964
+ this.selectionService.aggregateChanges.emit(ev);
15965
+ ev.cellAggregates = this.selectionService.aggregates;
15870
15966
  this.selectionService.changes.emit(ev);
15871
15967
  });
15872
15968
  }
@@ -18147,7 +18243,6 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18147
18243
  [size]="size"
18148
18244
  [style.width.px]="lockedWidth">
18149
18245
  <colgroup kendoGridColGroup
18150
- role="presentation"
18151
18246
  [groups]="groups"
18152
18247
  [columns]="$any(lockedLeafColumns)"
18153
18248
  [detailTemplate]="detailTemplate"
@@ -18179,11 +18274,12 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18179
18274
  <div [style.height.px]="totalHeight"></div>
18180
18275
  </div>
18181
18276
  </div>
18182
- <div #container
18183
- class="k-grid-content k-virtual-content"
18184
- role="presentation" tabindex="-1"
18185
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18186
- [lockedWidth]="lockedWidth + 1">
18277
+ <div
18278
+ #container
18279
+ class="k-grid-content k-virtual-content"
18280
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18281
+ [lockedWidth]="lockedWidth + 1"
18282
+ >
18187
18283
  <div role="presentation" class="k-grid-table-wrap">
18188
18284
  <table
18189
18285
  [style.width.px]="nonLockedWidth"
@@ -18194,7 +18290,6 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18194
18290
  [size]="size"
18195
18291
  role="presentation">
18196
18292
  <colgroup kendoGridColGroup
18197
- role="presentation"
18198
18293
  [groups]="isLocked ? [] : groups"
18199
18294
  [columns]="$any(nonLockedColumnsToRender)"
18200
18295
  [detailTemplate]="detailTemplate"
@@ -18266,7 +18361,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18266
18361
  [size]="size"
18267
18362
  [style.width.px]="lockedWidth">
18268
18363
  <colgroup kendoGridColGroup
18269
- role="presentation"
18270
18364
  [groups]="groups"
18271
18365
  [columns]="$any(lockedLeafColumns)"
18272
18366
  [detailTemplate]="detailTemplate"
@@ -18298,11 +18392,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18298
18392
  <div [style.height.px]="totalHeight"></div>
18299
18393
  </div>
18300
18394
  </div>
18301
- <div #container
18302
- class="k-grid-content k-virtual-content"
18303
- role="presentation" tabindex="-1"
18304
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18305
- [lockedWidth]="lockedWidth + 1">
18395
+ <div
18396
+ #container
18397
+ class="k-grid-content k-virtual-content"
18398
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18399
+ [lockedWidth]="lockedWidth + 1"
18400
+ >
18306
18401
  <div role="presentation" class="k-grid-table-wrap">
18307
18402
  <table
18308
18403
  [style.width.px]="nonLockedWidth"
@@ -18313,7 +18408,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18313
18408
  [size]="size"
18314
18409
  role="presentation">
18315
18410
  <colgroup kendoGridColGroup
18316
- role="presentation"
18317
18411
  [groups]="isLocked ? [] : groups"
18318
18412
  [columns]="$any(nonLockedColumnsToRender)"
18319
18413
  [detailTemplate]="detailTemplate"
@@ -18626,13 +18720,231 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18626
18720
  type: Input
18627
18721
  }] } });
18628
18722
 
18723
+ /* eslint-disable @typescript-eslint/no-explicit-any */
18724
+ ;
18725
+ /**
18726
+ * @hidden
18727
+ */
18728
+ class StatusBarComponent {
18729
+ constructor(ctx, selectionService, dataChanges, columnInfoService, cellSelectionService) {
18730
+ this.ctx = ctx;
18731
+ this.selectionService = selectionService;
18732
+ this.dataChanges = dataChanges;
18733
+ this.columnInfoService = columnInfoService;
18734
+ this.cellSelectionService = cellSelectionService;
18735
+ this.hostClasses = true;
18736
+ this.groupedAggregates = { dates: [], numbers: [], booleans: [] };
18737
+ this.aggregates = {
18738
+ sum: null,
18739
+ average: null,
18740
+ min: null,
18741
+ max: null,
18742
+ count: null,
18743
+ isTrue: null,
18744
+ isFalse: null,
18745
+ earliest: null,
18746
+ latest: null
18747
+ };
18748
+ this.subs = new Subscription();
18749
+ this.selectedItems = [];
18750
+ }
18751
+ get isStatusBarTemplate() {
18752
+ return this.statusBarTemplate ? '' : 'none';
18753
+ }
18754
+ ngOnInit() {
18755
+ if (this.selectableSettings.cellAggregates) {
18756
+ this.data = this.dataChanges.data ? this.dataChanges.data : this.ctx.grid.data;
18757
+ this.selectService = this.isRowSelection ? this.selectionService : this.cellSelectionService;
18758
+ if (this.isAggregateIncluded('count')) {
18759
+ this.aggregates['count'] = 0;
18760
+ }
18761
+ const selectionDirective = this.ctx.grid.selectionDirective;
18762
+ if (selectionDirective && !this.isRowSelection) {
18763
+ this.selectedItems = selectionDirective.selectedKeys;
18764
+ }
18765
+ this.subs.add(this.selectService.aggregateChanges.subscribe((selectionArgs) => this.onSelectionChange(selectionArgs)));
18766
+ }
18767
+ }
18768
+ ngOnDestroy() {
18769
+ this.subs.unsubscribe();
18770
+ }
18771
+ onSelectionChange(selectionArgs) {
18772
+ this.handleSelectedItems(selectionArgs);
18773
+ this.nullifyAggregates();
18774
+ this.handleAggregateChanges();
18775
+ this.selectService.aggregates = this.aggregates;
18776
+ }
18777
+ handleAggregateChanges() {
18778
+ const lockedColumns = this.columnInfoService.lockedLeafColumns.toArray();
18779
+ const nonLockedColumns = this.columnInfoService.nonLockedLeafColumns.toArray();
18780
+ const selectedItemsLength = this.selectedItems.length;
18781
+ const columns = [...lockedColumns, ...nonLockedColumns];
18782
+ const fields = columns.map(col => col.field);
18783
+ if (this.isAggregateIncluded('count')) {
18784
+ this.aggregates['count'] = this.isRowSelection ? (selectedItemsLength * columns.length) : selectedItemsLength;
18785
+ }
18786
+ this.selectedItems.forEach((item) => {
18787
+ if (this.isRowSelection) {
18788
+ fields.forEach((field) => {
18789
+ const cellValue = item.dataItem;
18790
+ if (cellValue && cellValue.hasOwnProperty(field)) {
18791
+ const cellValue = item.dataItem[field];
18792
+ this.groupAggregates(cellValue);
18793
+ }
18794
+ });
18795
+ }
18796
+ else if (this.selectService.options.cell) {
18797
+ const itemKey = this.data[item.itemKey];
18798
+ const field = fields[item.columnKey];
18799
+ if (itemKey && itemKey.hasOwnProperty(field)) {
18800
+ const cellValue = itemKey[fields[item.columnKey]];
18801
+ this.groupAggregates(cellValue);
18802
+ }
18803
+ }
18804
+ });
18805
+ this.calculateAggregates();
18806
+ }
18807
+ groupAggregates(aggregate) {
18808
+ if (typeof aggregate === 'number') {
18809
+ this.groupedAggregates.numbers.push(aggregate);
18810
+ }
18811
+ else if (typeof aggregate === 'boolean') {
18812
+ this.groupedAggregates.booleans.push(aggregate);
18813
+ }
18814
+ else if (aggregate instanceof Date) {
18815
+ this.groupedAggregates.dates.push(aggregate);
18816
+ }
18817
+ }
18818
+ calculateAggregates() {
18819
+ if (this.groupedAggregates.numbers.length > 0) {
18820
+ if (this.isAggregateIncluded('min')) {
18821
+ this.aggregates['min'] = Math.min(...this.groupedAggregates.numbers);
18822
+ }
18823
+ if (this.isAggregateIncluded('max')) {
18824
+ this.aggregates['max'] = Math.max(...this.groupedAggregates.numbers);
18825
+ }
18826
+ if (this.isAggregateIncluded('sum')) {
18827
+ this.aggregates['sum'] = this.groupedAggregates.numbers.reduce((acc, curr) => acc += curr, 0);
18828
+ }
18829
+ if (this.isAggregateIncluded('average')) {
18830
+ this.aggregates['average'] = this.aggregates['sum'] / this.groupedAggregates.numbers.length;
18831
+ }
18832
+ }
18833
+ if (this.groupedAggregates.booleans.length > 0) {
18834
+ if (this.isAggregateIncluded('isTrue')) {
18835
+ const isTrueCount = this.groupedAggregates.booleans.filter(bool => bool).length;
18836
+ this.aggregates['isTrue'] = isTrueCount > 0 ? isTrueCount : null;
18837
+ }
18838
+ if (this.isAggregateIncluded('isFalse')) {
18839
+ const isFalseCount = this.groupedAggregates.booleans.length - this.aggregates['isTrue'];
18840
+ this.aggregates['isFalse'] = isFalseCount > 0 ? isFalseCount : null;
18841
+ }
18842
+ }
18843
+ if (this.groupedAggregates.dates.length > 0) {
18844
+ if (this.isAggregateIncluded('earliest')) {
18845
+ this.aggregates['earliest'] = new Date(Math.min(...this.groupedAggregates.dates));
18846
+ }
18847
+ if (this.isAggregateIncluded('latest')) {
18848
+ this.aggregates['latest'] = new Date(Math.max(...this.groupedAggregates.dates));
18849
+ }
18850
+ }
18851
+ }
18852
+ handleSelectedItems(selectionArgs) {
18853
+ const rowOrCellSelect = `${this.isRowSelection ? 'selectedRows' : 'selectedCells'}`;
18854
+ const rowOrCellDeselect = `${this.isRowSelection ? 'deselectedRows' : 'deselectedCells'}`;
18855
+ const selectedItems = selectionArgs[rowOrCellSelect];
18856
+ const deselectedItems = selectionArgs[rowOrCellDeselect];
18857
+ if (!this.isRowSelection) {
18858
+ // Needed when we have column groups with cell selection, the deselected items are duplicated
18859
+ deselectedItems.forEach((item, index) => {
18860
+ if (index + 1 < deselectedItems.length) {
18861
+ if (item.itemKey === deselectedItems[index + 1].itemKey
18862
+ && item.columnKey === deselectedItems[index + 1].columnKey) {
18863
+ deselectedItems.splice(index, 1);
18864
+ }
18865
+ }
18866
+ });
18867
+ }
18868
+ if (selectedItems.length > 0) {
18869
+ selectedItems.forEach((item) => {
18870
+ this.selectedItems = [...this.selectedItems, item];
18871
+ });
18872
+ }
18873
+ if (deselectedItems.length > 0) {
18874
+ if (this.isRowSelection) {
18875
+ deselectedItems.forEach((row) => {
18876
+ this.selectedItems = this.selectedItems.filter((elem) => elem.dataItem !== row.dataItem);
18877
+ });
18878
+ }
18879
+ else {
18880
+ deselectedItems.forEach((cell) => {
18881
+ const index = this.selectedItems.findIndex((elem) => elem.itemKey === cell.itemKey && elem.columnKey === cell.columnKey);
18882
+ this.selectedItems.splice(index, 1);
18883
+ });
18884
+ }
18885
+ }
18886
+ }
18887
+ isAggregateIncluded(aggregate) {
18888
+ const { cellAggregates } = this.selectService.options;
18889
+ if (typeof cellAggregates !== 'boolean') {
18890
+ return cellAggregates.includes(aggregate);
18891
+ }
18892
+ return true;
18893
+ }
18894
+ nullifyAggregates() {
18895
+ this.groupedAggregates = { dates: [], numbers: [], booleans: [] };
18896
+ this.aggregates['count'] = null;
18897
+ this.aggregates['sum'] = this.aggregates['average'] = null;
18898
+ this.aggregates['max'] = this.aggregates['min'] = null;
18899
+ this.aggregates['isFalse'] = this.aggregates['isTrue'] = null;
18900
+ this.aggregates['earliest'] = this.aggregates['latest'] = null;
18901
+ }
18902
+ get isRowSelection() {
18903
+ return typeof this.selectableSettings === 'boolean' || !this.selectableSettings.cell;
18904
+ }
18905
+ }
18906
+ StatusBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarComponent, deps: [{ token: ContextService }, { token: SelectionService }, { token: LocalDataChangesService }, { token: ColumnInfoService }, { token: CellSelectionService }], target: i0.ɵɵFactoryTarget.Component });
18907
+ StatusBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: { selectableSettings: "selectableSettings", statusBarTemplate: "statusBarTemplate" }, host: { properties: { "class.k-selection-aggregates": "this.hostClasses", "class.k-grid-selection-aggregates": "this.hostClasses", "style.display": "this.isStatusBarTemplate" } }, ngImport: i0, template: `
18908
+ <ng-template
18909
+ *ngIf="statusBarTemplate"
18910
+ [ngTemplateOutlet]="statusBarTemplate?.templateRef"
18911
+ [ngTemplateOutletContext]="{ aggregates: aggregates }">
18912
+ </ng-template>
18913
+ `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
18914
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarComponent, decorators: [{
18915
+ type: Component,
18916
+ args: [{
18917
+ selector: 'kendo-grid-status-bar',
18918
+ template: `
18919
+ <ng-template
18920
+ *ngIf="statusBarTemplate"
18921
+ [ngTemplateOutlet]="statusBarTemplate?.templateRef"
18922
+ [ngTemplateOutletContext]="{ aggregates: aggregates }">
18923
+ </ng-template>
18924
+ `
18925
+ }]
18926
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: SelectionService }, { type: LocalDataChangesService }, { type: ColumnInfoService }, { type: CellSelectionService }]; }, propDecorators: { hostClasses: [{
18927
+ type: HostBinding,
18928
+ args: ['class.k-selection-aggregates']
18929
+ }, {
18930
+ type: HostBinding,
18931
+ args: ['class.k-grid-selection-aggregates']
18932
+ }], isStatusBarTemplate: [{
18933
+ type: HostBinding,
18934
+ args: ['style.display']
18935
+ }], selectableSettings: [{
18936
+ type: Input
18937
+ }], statusBarTemplate: [{
18938
+ type: Input
18939
+ }] } });
18940
+
18629
18941
  /**
18630
18942
  * @hidden
18631
18943
  */
18632
18944
  class GridMessages extends ComponentMessages {
18633
18945
  }
18634
18946
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18635
- GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle" }, usesInheritance: true, ngImport: i0 });
18947
+ GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle" }, usesInheritance: true, ngImport: i0 });
18636
18948
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18637
18949
  type: Directive,
18638
18950
  args: [{
@@ -18675,6 +18987,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18675
18987
  type: Input
18676
18988
  }], filterMenuLogicDropDownLabel: [{
18677
18989
  type: Input
18990
+ }], filterCellOperatorLabel: [{
18991
+ type: Input
18992
+ }], booleanFilterCellLabel: [{
18993
+ type: Input
18678
18994
  }], filterEqOperator: [{
18679
18995
  type: Input
18680
18996
  }], filterNotEqOperator: [{
@@ -19219,6 +19535,12 @@ class GridComponent {
19219
19535
  get group() {
19220
19536
  return this._group;
19221
19537
  }
19538
+ /**
19539
+ * @hidden
19540
+ */
19541
+ get showStatusBar() {
19542
+ return !!(this.selectable);
19543
+ }
19222
19544
  /**
19223
19545
  * @hidden
19224
19546
  */
@@ -19453,6 +19775,15 @@ class GridComponent {
19453
19775
  set loadingTemplate(loadingTemplate) {
19454
19776
  this._loadingTemplate = loadingTemplate;
19455
19777
  }
19778
+ get statusBarTemplate() {
19779
+ if (this._statusBarTemplate) {
19780
+ return this._statusBarTemplate;
19781
+ }
19782
+ return this.statusBarTemplateChildren ? this.statusBarTemplateChildren.first : undefined;
19783
+ }
19784
+ set statusBarTemplate(statusBarTemplate) {
19785
+ this._statusBarTemplate = statusBarTemplate;
19786
+ }
19456
19787
  get noRecordsTemplate() {
19457
19788
  if (this._customNoRecordsTemplate) {
19458
19789
  return this._customNoRecordsTemplate;
@@ -19502,7 +19833,7 @@ class GridComponent {
19502
19833
  return this.groupable && this.groupable.showFooter;
19503
19834
  }
19504
19835
  get ariaRowCount() {
19505
- return this.totalColumnLevels + 1 + this.view.total;
19836
+ return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0);
19506
19837
  }
19507
19838
  get ariaColCount() {
19508
19839
  return this.columnsContainer.leafColumnsToRender.length;
@@ -20716,7 +21047,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20716
21047
  ContextService,
20717
21048
  SizingOptionsService,
20718
21049
  RowReorderService
20719
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { 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: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
21050
+ ], 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: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
20720
21051
  <ng-container kendoGridLocalizedMessages
20721
21052
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
20722
21053
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -20765,6 +21096,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20765
21096
 
20766
21097
  i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
20767
21098
  filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
21099
+
21100
+ i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
21101
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
21102
+
21103
+ i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
21104
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
20768
21105
 
20769
21106
  i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
20770
21107
  filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
@@ -20964,285 +21301,286 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20964
21301
  [navigable]="navigation.toolbarEnabled"
20965
21302
  [attr.aria-controls]="ariaRootId"
20966
21303
  position="top"></kendo-grid-toolbar>
20967
- <kendo-pager
20968
- *ngIf="showTopPager"
20969
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
20970
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
20971
- class="k-grid-pager-top k-pager"
20972
- [template]="pagerTemplate"
20973
- [pageSize]="pageSize"
20974
- [total]="view.total"
20975
- [skip]="skip"
20976
- [size]="size"
20977
- [options]="pageable"
20978
- (pageChange)="notifyPageChange('pager', $event)">
20979
- </kendo-pager>
20980
- <kendo-grid-group-panel
20981
- *ngIf="showGroupPanel"
20982
- [navigable]="navigation.toolbarEnabled"
20983
- [text]="groupableEmptyText"
20984
- [groups]="group"
20985
- role="toolbar"
20986
- [attr.aria-label]="messageFor('groupPanelLabel')"
20987
- [attr.aria-controls]="ariaRootId"
20988
- (change)="groupChange.emit($event)">
20989
- </kendo-grid-group-panel>
20990
- <div #ariaRoot
20991
- class="k-grid-aria-root"
20992
- role="grid"
20993
- [id]="ariaRootId"
20994
- [attr.aria-label]="ariaLabel"
20995
- [attr.aria-rowcount]="ariaRowCount"
20996
- [attr.aria-colcount]="ariaColCount">
20997
- <ng-container *ngIf="isScrollable">
20998
- <div *ngIf="!hideHeader"
20999
- class="k-grid-header"
21000
- role="presentation"
21001
- [style.padding]="headerPadding">
21002
- <div *ngIf="isLocked"
21003
- #lockedHeader
21004
- role="presentation"
21005
- class="k-grid-header-locked"
21006
- [style.width.px]="lockedWidth">
21007
- <table
21008
- [locked]="true"
21304
+ <kendo-pager
21305
+ *ngIf="showTopPager"
21306
+ [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21307
+ [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21308
+ class="k-grid-pager-top k-pager"
21309
+ [template]="pagerTemplate"
21310
+ [pageSize]="pageSize"
21311
+ [total]="view.total"
21312
+ [skip]="skip"
21313
+ [size]="size"
21314
+ [options]="pageable"
21315
+ (pageChange)="notifyPageChange('pager', $event)">
21316
+ </kendo-pager>
21317
+ <kendo-grid-group-panel
21318
+ *ngIf="showGroupPanel"
21319
+ [navigable]="navigation.toolbarEnabled"
21320
+ [text]="groupableEmptyText"
21321
+ [groups]="group"
21322
+ role="toolbar"
21323
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21324
+ [attr.aria-controls]="ariaRootId"
21325
+ (change)="groupChange.emit($event)">
21326
+ </kendo-grid-group-panel>
21327
+ <div #ariaRoot
21328
+ class="k-grid-aria-root"
21329
+ role="grid"
21330
+ [id]="ariaRootId"
21331
+ [attr.aria-label]="ariaLabel"
21332
+ [attr.aria-rowcount]="ariaRowCount"
21333
+ [attr.aria-colcount]="ariaColCount">
21334
+ <ng-container *ngIf="isScrollable">
21335
+ <div *ngIf="!hideHeader"
21336
+ class="k-grid-header"
21337
+ role="presentation"
21338
+ [style.padding]="headerPadding">
21339
+ <div *ngIf="isLocked"
21340
+ #lockedHeader
21009
21341
  role="presentation"
21010
- class="k-grid-header-table"
21011
- [style.width.px]="lockedWidth"
21012
- kendoGridTable
21013
- [size]="size">
21014
- <colgroup kendoGridColGroup
21342
+ class="k-grid-header-locked"
21343
+ [style.width.px]="lockedWidth">
21344
+ <table
21345
+ [locked]="true"
21015
21346
  role="presentation"
21016
- [columns]="$any(lockedLeafColumns)"
21017
- [groups]="group"
21018
- [detailTemplate]="detailTemplate">
21019
- </colgroup>
21020
- <thead kendoGridHeader
21021
- role="rowgroup"
21022
- [resizable]="resizable"
21023
- [scrollable]="true"
21024
- [columns]="$any(lockedColumns)"
21025
- [totalColumnLevels]="totalColumnLevels"
21026
- [sort]="sort"
21027
- [groups]="group"
21028
- [filter]="filter"
21029
- [filterable]="filterable"
21030
- [groupable]="showGroupPanel"
21031
- [reorderable]="reorderable"
21032
- [sortable]="sortable"
21033
- [columnMenu]="columnMenuOptions"
21034
- [columnMenuTemplate]="columnMenuTemplate"
21035
- [totalColumnsCount]="leafColumns.length"
21036
- [detailTemplate]="detailTemplate"
21037
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21038
- </thead>
21039
- </table>
21040
- </div>
21041
- <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21042
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21043
- [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21044
- <table
21045
- role="presentation"
21046
- class="k-grid-header-table"
21047
- [style.width.px]="nonLockedWidth"
21048
- [virtualColumns]="virtualColumns"
21049
- kendoGridTable
21050
- [size]="size">
21051
- <colgroup kendoGridColGroup
21347
+ class="k-grid-header-table"
21348
+ [style.width.px]="lockedWidth"
21349
+ kendoGridTable
21350
+ [size]="size">
21351
+ <colgroup kendoGridColGroup
21352
+ [columns]="$any(lockedLeafColumns)"
21353
+ [groups]="group"
21354
+ [detailTemplate]="detailTemplate">
21355
+ </colgroup>
21356
+ <thead kendoGridHeader
21357
+ role="rowgroup"
21358
+ [resizable]="resizable"
21359
+ [scrollable]="true"
21360
+ [columns]="$any(lockedColumns)"
21361
+ [totalColumnLevels]="totalColumnLevels"
21362
+ [sort]="sort"
21363
+ [groups]="group"
21364
+ [filter]="filter"
21365
+ [filterable]="filterable"
21366
+ [groupable]="showGroupPanel"
21367
+ [reorderable]="reorderable"
21368
+ [sortable]="sortable"
21369
+ [columnMenu]="columnMenuOptions"
21370
+ [columnMenuTemplate]="columnMenuTemplate"
21371
+ [totalColumnsCount]="leafColumns.length"
21372
+ [detailTemplate]="detailTemplate"
21373
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21374
+ </thead>
21375
+ </table>
21376
+ </div>
21377
+ <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21378
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21379
+ [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21380
+ <table
21052
21381
  role="presentation"
21053
- [columns]="headerLeafColumns"
21054
- [groups]="isLocked ? [] : group"
21055
- [detailTemplate]="detailTemplate">
21056
- </colgroup>
21057
- <thead kendoGridHeader
21058
- [resizable]="resizable"
21059
- role="rowgroup"
21060
- [scrollable]="true"
21061
- [columns]="headerColumns"
21062
- [totalColumnLevels]="totalColumnLevels"
21063
- [sort]="sort"
21064
- [filter]="filter"
21065
- [filterable]="filterable"
21066
- [groupable]="showGroupPanel"
21067
- [reorderable]="reorderable"
21068
- [groups]="isLocked ? [] : group"
21069
- [sortable]="sortable"
21070
- [columnMenu]="columnMenuOptions"
21071
- [columnMenuTemplate]="columnMenuTemplate"
21072
- [lockedColumnsCount]="lockedLeafColumns.length"
21073
- [totalColumnsCount]="leafColumns.length"
21074
- [detailTemplate]="detailTemplate"
21075
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21076
- </thead>
21077
- </table>
21078
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21079
- <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21382
+ class="k-grid-header-table"
21383
+ [style.width.px]="nonLockedWidth"
21384
+ [virtualColumns]="virtualColumns"
21385
+ kendoGridTable
21386
+ [size]="size">
21387
+ <colgroup kendoGridColGroup
21388
+ [columns]="headerLeafColumns"
21389
+ [groups]="isLocked ? [] : group"
21390
+ [detailTemplate]="detailTemplate">
21391
+ </colgroup>
21392
+ <thead kendoGridHeader
21393
+ [resizable]="resizable"
21394
+ role="rowgroup"
21395
+ [scrollable]="true"
21396
+ [columns]="headerColumns"
21397
+ [totalColumnLevels]="totalColumnLevels"
21398
+ [sort]="sort"
21399
+ [filter]="filter"
21400
+ [filterable]="filterable"
21401
+ [groupable]="showGroupPanel"
21402
+ [reorderable]="reorderable"
21403
+ [groups]="isLocked ? [] : group"
21404
+ [sortable]="sortable"
21405
+ [columnMenu]="columnMenuOptions"
21406
+ [columnMenuTemplate]="columnMenuTemplate"
21407
+ [lockedColumnsCount]="lockedLeafColumns.length"
21408
+ [totalColumnsCount]="leafColumns.length"
21409
+ [detailTemplate]="detailTemplate"
21410
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21411
+ </thead>
21412
+ </table>
21413
+ <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21414
+ <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21415
+ </div>
21080
21416
  </div>
21081
21417
  </div>
21082
- </div>
21083
- <kendo-grid-list
21084
- kendoDragTargetContainer
21085
- kendoDropTargetContainer
21086
- mode="manual"
21087
- [dragDisabled]="!rowReorderable"
21088
- [dropDisabled]="!rowReorderable"
21089
- [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21090
- [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21091
- [dragHandle]="getDefaultSelectors('handle')"
21092
- [hint]="{hintTemplate: defaultHint}"
21093
- (onPress)="handleReorderEvents($event, 'press')"
21094
- (onDragStart)="handleReorderEvents($event, 'dragStart')"
21095
- (onDrag)="handleReorderEvents($event, 'drag')"
21096
- (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21097
- (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21098
- (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21099
- (onDrop)="handleReorderEvents($event, 'drop')"
21100
- [dragData]="gridData"
21101
- [data]="$any(view)"
21102
- [rowHeight]="rowHeight"
21103
- [detailRowHeight]="detailRowHeight"
21104
- [total]="totalCount"
21105
- [take]="pageSize"
21106
- [groups]="group"
21107
- [groupable]="groupable"
21108
- [skip]="skip"
21109
- [trackBy]="trackBy"
21110
- [columns]="columnsContainer"
21111
- [selectable]="selectable"
21112
- [filterable]="filterable"
21113
- [detailTemplate]="detailTemplate"
21114
- [noRecordsTemplate]="noRecordsTemplate"
21115
- [size]="size"
21116
- (pageChange)="notifyPageChange('list', $event)"
21117
- [rowClass]="rowClass"
21118
- [rowSticky]="rowSticky"
21119
- [loading]="loading"
21120
- [isVirtual]="isVirtual"
21121
- [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21122
- [loadingTemplate]="loadingTemplate?.templateRef"
21123
- [virtualColumns]="virtualColumns"
21124
- (scrollBottom)="notifyScrollBottom()"
21125
- (contentScroll)="contentScroll.emit($event)"
21126
- kendoDraggable
21127
- kendoGridSelectionMarquee
21128
- [enableDrag]="marqueeSelection"
21129
- [sort]="sort"
21130
- >
21131
- </kendo-grid-list>
21132
- <div
21133
- *ngIf="showFooter"
21134
- class="k-grid-footer"
21135
- [style.padding]="headerPadding">
21136
- <div
21137
- *ngIf="lockedLeafColumns.length"
21138
- class="k-grid-footer-locked"
21139
- [style.width.px]="lockedWidth">
21140
- <table
21141
- role="presentation"
21142
- class="k-grid-footer-table"
21143
- [locked]="true"
21144
- [style.width.px]="lockedWidth"
21145
- kendoGridTable
21146
- [size]="size">
21147
- <colgroup kendoGridColGroup
21148
- [columns]="$any(lockedLeafColumns)"
21149
- [groups]="group"
21150
- [detailTemplate]="detailTemplate">
21151
- </colgroup>
21152
- <tfoot kendoGridFooter
21153
- [scrollable]="true"
21154
- [groups]="group"
21155
- [columns]="$any(lockedLeafColumns)"
21156
- [detailTemplate]="detailTemplate"
21157
- [logicalRowIndex]="ariaRowCount">
21158
- </tfoot>
21159
- </table>
21160
- </div>
21161
- <div #footer
21162
- class="k-grid-footer-wrap" data-scrollable
21163
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21164
- [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21165
- <table
21166
- role="presentation"
21167
- class="k-grid-footer-table"
21168
- [style.width.px]="nonLockedWidth"
21169
- kendoGridTable
21170
- [size]="size">
21171
- <colgroup kendoGridColGroup
21172
- [columns]="$any(nonLockedLeafColumns)"
21173
- [groups]="isLocked ? [] : group"
21174
- [detailTemplate]="detailTemplate">
21175
- </colgroup>
21176
- <tfoot kendoGridFooter
21177
- [logicalRowIndex]="ariaRowCount"
21178
- [scrollable]="true"
21179
- [groups]="isLocked ? [] : group"
21180
- [columns]="$any(nonLockedLeafColumns)"
21181
- [lockedColumnsCount]="lockedLeafColumns.length"
21182
- [detailTemplate]="detailTemplate">
21183
- </tfoot>
21184
- </table>
21185
- </div>
21186
- </div>
21187
- </ng-container>
21188
- <ng-container *ngIf="!isScrollable">
21189
- <table
21190
- [style.table-layout]="resizable ? 'fixed' : null"
21191
- kendoGridTable
21192
- [size]="size">
21193
- <colgroup kendoGridColGroup
21194
- [columns]="$any(leafColumns)"
21195
- [groups]="group"
21196
- [detailTemplate]="detailTemplate">
21197
- </colgroup>
21198
- <thead kendoGridHeader
21199
- *ngIf="!hideHeader"
21200
- [resizable]="resizable"
21201
- [scrollable]="false"
21202
- [columns]="$any(visibleColumns)"
21203
- [totalColumnLevels]="totalColumnLevels"
21204
- [groups]="group"
21205
- [groupable]="showGroupPanel"
21206
- [reorderable]="reorderable"
21207
- [sort]="sort"
21208
- [sortable]="sortable"
21209
- [filter]="filter"
21210
- [filterable]="filterable"
21211
- [columnMenu]="columnMenuOptions"
21212
- [columnMenuTemplate]="columnMenuTemplate"
21213
- [detailTemplate]="detailTemplate"
21214
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21215
- </thead>
21216
- <tbody kendoGridTableBody
21217
- [isLoading]="loading"
21218
- [groups]="group"
21418
+ <kendo-grid-list
21419
+ kendoDragTargetContainer
21420
+ kendoDropTargetContainer
21421
+ mode="manual"
21422
+ [dragDisabled]="!rowReorderable"
21423
+ [dropDisabled]="!rowReorderable"
21424
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21425
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21426
+ [dragHandle]="getDefaultSelectors('handle')"
21427
+ [hint]="{hintTemplate: defaultHint}"
21428
+ (onPress)="handleReorderEvents($event, 'press')"
21429
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
21430
+ (onDrag)="handleReorderEvents($event, 'drag')"
21431
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21432
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21433
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21434
+ (onDrop)="handleReorderEvents($event, 'drop')"
21435
+ [dragData]="gridData"
21219
21436
  [data]="$any(view)"
21437
+ [rowHeight]="rowHeight"
21438
+ [detailRowHeight]="detailRowHeight"
21439
+ [total]="totalCount"
21440
+ [take]="pageSize"
21441
+ [groups]="group"
21442
+ [groupable]="groupable"
21220
21443
  [skip]="skip"
21221
- [columns]="$any(leafColumns)"
21444
+ [trackBy]="trackBy"
21445
+ [columns]="columnsContainer"
21222
21446
  [selectable]="selectable"
21223
21447
  [filterable]="filterable"
21224
- [noRecordsTemplate]="noRecordsTemplate"
21225
21448
  [detailTemplate]="detailTemplate"
21226
- [showGroupFooters]="showGroupFooters"
21227
- [trackBy]="trackBy"
21449
+ [noRecordsTemplate]="noRecordsTemplate"
21450
+ [size]="size"
21451
+ (pageChange)="notifyPageChange('list', $event)"
21228
21452
  [rowClass]="rowClass"
21453
+ [rowSticky]="rowSticky"
21454
+ [loading]="loading"
21455
+ [isVirtual]="isVirtual"
21456
+ [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21457
+ [loadingTemplate]="loadingTemplate?.templateRef"
21458
+ [virtualColumns]="virtualColumns"
21459
+ (scrollBottom)="notifyScrollBottom()"
21460
+ (contentScroll)="contentScroll.emit($event)"
21229
21461
  kendoDraggable
21230
21462
  kendoGridSelectionMarquee
21231
- [enableDrag]="marqueeSelection">
21232
- </tbody>
21233
- <tfoot kendoGridFooter
21463
+ [enableDrag]="marqueeSelection"
21464
+ [sort]="sort">
21465
+ </kendo-grid-list>
21466
+ <div
21234
21467
  *ngIf="showFooter"
21235
- [scrollable]="false"
21236
- [logicalRowIndex]="ariaRowCount"
21237
- [groups]="group"
21238
- [columns]="$any(leafColumns)"
21239
- [detailTemplate]="detailTemplate">
21240
- </tfoot>
21241
- </table>
21242
- </ng-container>
21243
- <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading>
21244
- </div>
21468
+ class="k-grid-footer"
21469
+ [style.padding]="headerPadding">
21470
+ <div
21471
+ *ngIf="lockedLeafColumns.length"
21472
+ class="k-grid-footer-locked"
21473
+ [style.width.px]="lockedWidth">
21474
+ <table
21475
+ role="presentation"
21476
+ class="k-grid-footer-table"
21477
+ [locked]="true"
21478
+ [style.width.px]="lockedWidth"
21479
+ kendoGridTable
21480
+ [size]="size">
21481
+ <colgroup kendoGridColGroup
21482
+ [columns]="$any(lockedLeafColumns)"
21483
+ [groups]="group"
21484
+ [detailTemplate]="detailTemplate">
21485
+ </colgroup>
21486
+ <tfoot kendoGridFooter
21487
+ [scrollable]="true"
21488
+ [groups]="group"
21489
+ [columns]="$any(lockedLeafColumns)"
21490
+ [detailTemplate]="detailTemplate"
21491
+ [logicalRowIndex]="ariaRowCount">
21492
+ </tfoot>
21493
+ </table>
21494
+ </div>
21495
+ <div #footer
21496
+ class="k-grid-footer-wrap" data-scrollable
21497
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21498
+ [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21499
+ <table
21500
+ role="presentation"
21501
+ class="k-grid-footer-table"
21502
+ [style.width.px]="nonLockedWidth"
21503
+ kendoGridTable
21504
+ [size]="size">
21505
+ <colgroup kendoGridColGroup
21506
+ [columns]="$any(nonLockedLeafColumns)"
21507
+ [groups]="isLocked ? [] : group"
21508
+ [detailTemplate]="detailTemplate">
21509
+ </colgroup>
21510
+ <tfoot kendoGridFooter
21511
+ [logicalRowIndex]="ariaRowCount"
21512
+ [scrollable]="true"
21513
+ [groups]="isLocked ? [] : group"
21514
+ [columns]="$any(nonLockedLeafColumns)"
21515
+ [lockedColumnsCount]="lockedLeafColumns.length"
21516
+ [detailTemplate]="detailTemplate">
21517
+ </tfoot>
21518
+ </table>
21519
+ </div>
21520
+ </div>
21521
+ </ng-container>
21522
+ <ng-container *ngIf="!isScrollable">
21523
+ <table
21524
+ [style.table-layout]="resizable ? 'fixed' : null"
21525
+ kendoGridTable
21526
+ [size]="size">
21527
+ <colgroup kendoGridColGroup
21528
+ [columns]="$any(leafColumns)"
21529
+ [groups]="group"
21530
+ [detailTemplate]="detailTemplate">
21531
+ </colgroup>
21532
+ <thead kendoGridHeader
21533
+ *ngIf="!hideHeader"
21534
+ [resizable]="resizable"
21535
+ [scrollable]="false"
21536
+ [columns]="$any(visibleColumns)"
21537
+ [totalColumnLevels]="totalColumnLevels"
21538
+ [groups]="group"
21539
+ [groupable]="showGroupPanel"
21540
+ [reorderable]="reorderable"
21541
+ [sort]="sort"
21542
+ [sortable]="sortable"
21543
+ [filter]="filter"
21544
+ [filterable]="filterable"
21545
+ [columnMenu]="columnMenuOptions"
21546
+ [columnMenuTemplate]="columnMenuTemplate"
21547
+ [detailTemplate]="detailTemplate"
21548
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21549
+ </thead>
21550
+ <tbody kendoGridTableBody
21551
+ [isLoading]="loading"
21552
+ [groups]="group"
21553
+ [data]="$any(view)"
21554
+ [skip]="skip"
21555
+ [columns]="$any(leafColumns)"
21556
+ [selectable]="selectable"
21557
+ [filterable]="filterable"
21558
+ [noRecordsTemplate]="noRecordsTemplate"
21559
+ [detailTemplate]="detailTemplate"
21560
+ [showGroupFooters]="showGroupFooters"
21561
+ [trackBy]="trackBy"
21562
+ [rowClass]="rowClass"
21563
+ kendoDraggable
21564
+ kendoGridSelectionMarquee
21565
+ [enableDrag]="marqueeSelection">
21566
+ </tbody>
21567
+ <tfoot kendoGridFooter
21568
+ *ngIf="showFooter"
21569
+ [scrollable]="false"
21570
+ [logicalRowIndex]="ariaRowCount"
21571
+ [groups]="group"
21572
+ [columns]="$any(leafColumns)"
21573
+ [detailTemplate]="detailTemplate">
21574
+ </tfoot>
21575
+ </table>
21576
+ </ng-container>
21577
+ <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading></div>
21245
21578
  </div>
21579
+ <kendo-grid-status-bar
21580
+ *ngIf="showStatusBar"
21581
+ [selectableSettings]="selectable"
21582
+ [statusBarTemplate]="statusBarTemplate">
21583
+ </kendo-grid-status-bar>
21246
21584
  <kendo-pager
21247
21585
  *ngIf="showBottomPager"
21248
21586
  [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
@@ -21274,7 +21612,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21274
21612
  </kendo-icon-wrapper>
21275
21613
  {{hintText}}
21276
21614
  </ng-template>
21277
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i40.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { type: i40.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21615
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["selectableSettings", "statusBarTemplate"] }, { type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i41.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { type: i41.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21278
21616
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21279
21617
  type: Component,
21280
21618
  args: [{
@@ -21374,6 +21712,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21374
21712
 
21375
21713
  i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
21376
21714
  filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
21715
+
21716
+ i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
21717
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
21718
+
21719
+ i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
21720
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
21377
21721
 
21378
21722
  i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
21379
21723
  filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
@@ -21573,285 +21917,286 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21573
21917
  [navigable]="navigation.toolbarEnabled"
21574
21918
  [attr.aria-controls]="ariaRootId"
21575
21919
  position="top"></kendo-grid-toolbar>
21576
- <kendo-pager
21577
- *ngIf="showTopPager"
21578
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21579
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21580
- class="k-grid-pager-top k-pager"
21581
- [template]="pagerTemplate"
21582
- [pageSize]="pageSize"
21583
- [total]="view.total"
21584
- [skip]="skip"
21585
- [size]="size"
21586
- [options]="pageable"
21587
- (pageChange)="notifyPageChange('pager', $event)">
21588
- </kendo-pager>
21589
- <kendo-grid-group-panel
21590
- *ngIf="showGroupPanel"
21591
- [navigable]="navigation.toolbarEnabled"
21592
- [text]="groupableEmptyText"
21593
- [groups]="group"
21594
- role="toolbar"
21595
- [attr.aria-label]="messageFor('groupPanelLabel')"
21596
- [attr.aria-controls]="ariaRootId"
21597
- (change)="groupChange.emit($event)">
21598
- </kendo-grid-group-panel>
21599
- <div #ariaRoot
21600
- class="k-grid-aria-root"
21601
- role="grid"
21602
- [id]="ariaRootId"
21603
- [attr.aria-label]="ariaLabel"
21604
- [attr.aria-rowcount]="ariaRowCount"
21605
- [attr.aria-colcount]="ariaColCount">
21606
- <ng-container *ngIf="isScrollable">
21607
- <div *ngIf="!hideHeader"
21608
- class="k-grid-header"
21609
- role="presentation"
21610
- [style.padding]="headerPadding">
21611
- <div *ngIf="isLocked"
21612
- #lockedHeader
21613
- role="presentation"
21614
- class="k-grid-header-locked"
21615
- [style.width.px]="lockedWidth">
21616
- <table
21617
- [locked]="true"
21920
+ <kendo-pager
21921
+ *ngIf="showTopPager"
21922
+ [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21923
+ [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21924
+ class="k-grid-pager-top k-pager"
21925
+ [template]="pagerTemplate"
21926
+ [pageSize]="pageSize"
21927
+ [total]="view.total"
21928
+ [skip]="skip"
21929
+ [size]="size"
21930
+ [options]="pageable"
21931
+ (pageChange)="notifyPageChange('pager', $event)">
21932
+ </kendo-pager>
21933
+ <kendo-grid-group-panel
21934
+ *ngIf="showGroupPanel"
21935
+ [navigable]="navigation.toolbarEnabled"
21936
+ [text]="groupableEmptyText"
21937
+ [groups]="group"
21938
+ role="toolbar"
21939
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21940
+ [attr.aria-controls]="ariaRootId"
21941
+ (change)="groupChange.emit($event)">
21942
+ </kendo-grid-group-panel>
21943
+ <div #ariaRoot
21944
+ class="k-grid-aria-root"
21945
+ role="grid"
21946
+ [id]="ariaRootId"
21947
+ [attr.aria-label]="ariaLabel"
21948
+ [attr.aria-rowcount]="ariaRowCount"
21949
+ [attr.aria-colcount]="ariaColCount">
21950
+ <ng-container *ngIf="isScrollable">
21951
+ <div *ngIf="!hideHeader"
21952
+ class="k-grid-header"
21953
+ role="presentation"
21954
+ [style.padding]="headerPadding">
21955
+ <div *ngIf="isLocked"
21956
+ #lockedHeader
21618
21957
  role="presentation"
21619
- class="k-grid-header-table"
21620
- [style.width.px]="lockedWidth"
21621
- kendoGridTable
21622
- [size]="size">
21623
- <colgroup kendoGridColGroup
21958
+ class="k-grid-header-locked"
21959
+ [style.width.px]="lockedWidth">
21960
+ <table
21961
+ [locked]="true"
21624
21962
  role="presentation"
21625
- [columns]="$any(lockedLeafColumns)"
21626
- [groups]="group"
21627
- [detailTemplate]="detailTemplate">
21628
- </colgroup>
21629
- <thead kendoGridHeader
21630
- role="rowgroup"
21631
- [resizable]="resizable"
21632
- [scrollable]="true"
21633
- [columns]="$any(lockedColumns)"
21634
- [totalColumnLevels]="totalColumnLevels"
21635
- [sort]="sort"
21636
- [groups]="group"
21637
- [filter]="filter"
21638
- [filterable]="filterable"
21639
- [groupable]="showGroupPanel"
21640
- [reorderable]="reorderable"
21641
- [sortable]="sortable"
21642
- [columnMenu]="columnMenuOptions"
21643
- [columnMenuTemplate]="columnMenuTemplate"
21644
- [totalColumnsCount]="leafColumns.length"
21645
- [detailTemplate]="detailTemplate"
21646
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21647
- </thead>
21648
- </table>
21649
- </div>
21650
- <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21651
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21652
- [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21653
- <table
21654
- role="presentation"
21655
- class="k-grid-header-table"
21656
- [style.width.px]="nonLockedWidth"
21657
- [virtualColumns]="virtualColumns"
21658
- kendoGridTable
21659
- [size]="size">
21660
- <colgroup kendoGridColGroup
21963
+ class="k-grid-header-table"
21964
+ [style.width.px]="lockedWidth"
21965
+ kendoGridTable
21966
+ [size]="size">
21967
+ <colgroup kendoGridColGroup
21968
+ [columns]="$any(lockedLeafColumns)"
21969
+ [groups]="group"
21970
+ [detailTemplate]="detailTemplate">
21971
+ </colgroup>
21972
+ <thead kendoGridHeader
21973
+ role="rowgroup"
21974
+ [resizable]="resizable"
21975
+ [scrollable]="true"
21976
+ [columns]="$any(lockedColumns)"
21977
+ [totalColumnLevels]="totalColumnLevels"
21978
+ [sort]="sort"
21979
+ [groups]="group"
21980
+ [filter]="filter"
21981
+ [filterable]="filterable"
21982
+ [groupable]="showGroupPanel"
21983
+ [reorderable]="reorderable"
21984
+ [sortable]="sortable"
21985
+ [columnMenu]="columnMenuOptions"
21986
+ [columnMenuTemplate]="columnMenuTemplate"
21987
+ [totalColumnsCount]="leafColumns.length"
21988
+ [detailTemplate]="detailTemplate"
21989
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21990
+ </thead>
21991
+ </table>
21992
+ </div>
21993
+ <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21994
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21995
+ [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21996
+ <table
21661
21997
  role="presentation"
21662
- [columns]="headerLeafColumns"
21663
- [groups]="isLocked ? [] : group"
21664
- [detailTemplate]="detailTemplate">
21665
- </colgroup>
21666
- <thead kendoGridHeader
21667
- [resizable]="resizable"
21668
- role="rowgroup"
21669
- [scrollable]="true"
21670
- [columns]="headerColumns"
21671
- [totalColumnLevels]="totalColumnLevels"
21672
- [sort]="sort"
21673
- [filter]="filter"
21674
- [filterable]="filterable"
21675
- [groupable]="showGroupPanel"
21676
- [reorderable]="reorderable"
21677
- [groups]="isLocked ? [] : group"
21678
- [sortable]="sortable"
21679
- [columnMenu]="columnMenuOptions"
21680
- [columnMenuTemplate]="columnMenuTemplate"
21681
- [lockedColumnsCount]="lockedLeafColumns.length"
21682
- [totalColumnsCount]="leafColumns.length"
21683
- [detailTemplate]="detailTemplate"
21684
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21685
- </thead>
21686
- </table>
21687
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21688
- <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21998
+ class="k-grid-header-table"
21999
+ [style.width.px]="nonLockedWidth"
22000
+ [virtualColumns]="virtualColumns"
22001
+ kendoGridTable
22002
+ [size]="size">
22003
+ <colgroup kendoGridColGroup
22004
+ [columns]="headerLeafColumns"
22005
+ [groups]="isLocked ? [] : group"
22006
+ [detailTemplate]="detailTemplate">
22007
+ </colgroup>
22008
+ <thead kendoGridHeader
22009
+ [resizable]="resizable"
22010
+ role="rowgroup"
22011
+ [scrollable]="true"
22012
+ [columns]="headerColumns"
22013
+ [totalColumnLevels]="totalColumnLevels"
22014
+ [sort]="sort"
22015
+ [filter]="filter"
22016
+ [filterable]="filterable"
22017
+ [groupable]="showGroupPanel"
22018
+ [reorderable]="reorderable"
22019
+ [groups]="isLocked ? [] : group"
22020
+ [sortable]="sortable"
22021
+ [columnMenu]="columnMenuOptions"
22022
+ [columnMenuTemplate]="columnMenuTemplate"
22023
+ [lockedColumnsCount]="lockedLeafColumns.length"
22024
+ [totalColumnsCount]="leafColumns.length"
22025
+ [detailTemplate]="detailTemplate"
22026
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
22027
+ </thead>
22028
+ </table>
22029
+ <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
22030
+ <div [style.width.px]="columnsContainer.unlockedWidth"></div>
22031
+ </div>
21689
22032
  </div>
21690
22033
  </div>
21691
- </div>
21692
- <kendo-grid-list
21693
- kendoDragTargetContainer
21694
- kendoDropTargetContainer
21695
- mode="manual"
21696
- [dragDisabled]="!rowReorderable"
21697
- [dropDisabled]="!rowReorderable"
21698
- [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21699
- [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21700
- [dragHandle]="getDefaultSelectors('handle')"
21701
- [hint]="{hintTemplate: defaultHint}"
21702
- (onPress)="handleReorderEvents($event, 'press')"
21703
- (onDragStart)="handleReorderEvents($event, 'dragStart')"
21704
- (onDrag)="handleReorderEvents($event, 'drag')"
21705
- (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21706
- (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21707
- (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21708
- (onDrop)="handleReorderEvents($event, 'drop')"
21709
- [dragData]="gridData"
21710
- [data]="$any(view)"
21711
- [rowHeight]="rowHeight"
21712
- [detailRowHeight]="detailRowHeight"
21713
- [total]="totalCount"
21714
- [take]="pageSize"
21715
- [groups]="group"
21716
- [groupable]="groupable"
21717
- [skip]="skip"
21718
- [trackBy]="trackBy"
21719
- [columns]="columnsContainer"
21720
- [selectable]="selectable"
21721
- [filterable]="filterable"
21722
- [detailTemplate]="detailTemplate"
21723
- [noRecordsTemplate]="noRecordsTemplate"
21724
- [size]="size"
21725
- (pageChange)="notifyPageChange('list', $event)"
21726
- [rowClass]="rowClass"
21727
- [rowSticky]="rowSticky"
21728
- [loading]="loading"
21729
- [isVirtual]="isVirtual"
21730
- [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21731
- [loadingTemplate]="loadingTemplate?.templateRef"
21732
- [virtualColumns]="virtualColumns"
21733
- (scrollBottom)="notifyScrollBottom()"
21734
- (contentScroll)="contentScroll.emit($event)"
21735
- kendoDraggable
21736
- kendoGridSelectionMarquee
21737
- [enableDrag]="marqueeSelection"
21738
- [sort]="sort"
21739
- >
21740
- </kendo-grid-list>
21741
- <div
21742
- *ngIf="showFooter"
21743
- class="k-grid-footer"
21744
- [style.padding]="headerPadding">
21745
- <div
21746
- *ngIf="lockedLeafColumns.length"
21747
- class="k-grid-footer-locked"
21748
- [style.width.px]="lockedWidth">
21749
- <table
21750
- role="presentation"
21751
- class="k-grid-footer-table"
21752
- [locked]="true"
21753
- [style.width.px]="lockedWidth"
21754
- kendoGridTable
21755
- [size]="size">
21756
- <colgroup kendoGridColGroup
21757
- [columns]="$any(lockedLeafColumns)"
21758
- [groups]="group"
21759
- [detailTemplate]="detailTemplate">
21760
- </colgroup>
21761
- <tfoot kendoGridFooter
21762
- [scrollable]="true"
21763
- [groups]="group"
21764
- [columns]="$any(lockedLeafColumns)"
21765
- [detailTemplate]="detailTemplate"
21766
- [logicalRowIndex]="ariaRowCount">
21767
- </tfoot>
21768
- </table>
21769
- </div>
21770
- <div #footer
21771
- class="k-grid-footer-wrap" data-scrollable
21772
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21773
- [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21774
- <table
21775
- role="presentation"
21776
- class="k-grid-footer-table"
21777
- [style.width.px]="nonLockedWidth"
21778
- kendoGridTable
21779
- [size]="size">
21780
- <colgroup kendoGridColGroup
21781
- [columns]="$any(nonLockedLeafColumns)"
21782
- [groups]="isLocked ? [] : group"
21783
- [detailTemplate]="detailTemplate">
21784
- </colgroup>
21785
- <tfoot kendoGridFooter
21786
- [logicalRowIndex]="ariaRowCount"
21787
- [scrollable]="true"
21788
- [groups]="isLocked ? [] : group"
21789
- [columns]="$any(nonLockedLeafColumns)"
21790
- [lockedColumnsCount]="lockedLeafColumns.length"
21791
- [detailTemplate]="detailTemplate">
21792
- </tfoot>
21793
- </table>
21794
- </div>
21795
- </div>
21796
- </ng-container>
21797
- <ng-container *ngIf="!isScrollable">
21798
- <table
21799
- [style.table-layout]="resizable ? 'fixed' : null"
21800
- kendoGridTable
21801
- [size]="size">
21802
- <colgroup kendoGridColGroup
21803
- [columns]="$any(leafColumns)"
21804
- [groups]="group"
21805
- [detailTemplate]="detailTemplate">
21806
- </colgroup>
21807
- <thead kendoGridHeader
21808
- *ngIf="!hideHeader"
21809
- [resizable]="resizable"
21810
- [scrollable]="false"
21811
- [columns]="$any(visibleColumns)"
21812
- [totalColumnLevels]="totalColumnLevels"
21813
- [groups]="group"
21814
- [groupable]="showGroupPanel"
21815
- [reorderable]="reorderable"
21816
- [sort]="sort"
21817
- [sortable]="sortable"
21818
- [filter]="filter"
21819
- [filterable]="filterable"
21820
- [columnMenu]="columnMenuOptions"
21821
- [columnMenuTemplate]="columnMenuTemplate"
21822
- [detailTemplate]="detailTemplate"
21823
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21824
- </thead>
21825
- <tbody kendoGridTableBody
21826
- [isLoading]="loading"
21827
- [groups]="group"
22034
+ <kendo-grid-list
22035
+ kendoDragTargetContainer
22036
+ kendoDropTargetContainer
22037
+ mode="manual"
22038
+ [dragDisabled]="!rowReorderable"
22039
+ [dropDisabled]="!rowReorderable"
22040
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
22041
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
22042
+ [dragHandle]="getDefaultSelectors('handle')"
22043
+ [hint]="{hintTemplate: defaultHint}"
22044
+ (onPress)="handleReorderEvents($event, 'press')"
22045
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
22046
+ (onDrag)="handleReorderEvents($event, 'drag')"
22047
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
22048
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
22049
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
22050
+ (onDrop)="handleReorderEvents($event, 'drop')"
22051
+ [dragData]="gridData"
21828
22052
  [data]="$any(view)"
22053
+ [rowHeight]="rowHeight"
22054
+ [detailRowHeight]="detailRowHeight"
22055
+ [total]="totalCount"
22056
+ [take]="pageSize"
22057
+ [groups]="group"
22058
+ [groupable]="groupable"
21829
22059
  [skip]="skip"
21830
- [columns]="$any(leafColumns)"
22060
+ [trackBy]="trackBy"
22061
+ [columns]="columnsContainer"
21831
22062
  [selectable]="selectable"
21832
22063
  [filterable]="filterable"
21833
- [noRecordsTemplate]="noRecordsTemplate"
21834
22064
  [detailTemplate]="detailTemplate"
21835
- [showGroupFooters]="showGroupFooters"
21836
- [trackBy]="trackBy"
22065
+ [noRecordsTemplate]="noRecordsTemplate"
22066
+ [size]="size"
22067
+ (pageChange)="notifyPageChange('list', $event)"
21837
22068
  [rowClass]="rowClass"
22069
+ [rowSticky]="rowSticky"
22070
+ [loading]="loading"
22071
+ [isVirtual]="isVirtual"
22072
+ [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
22073
+ [loadingTemplate]="loadingTemplate?.templateRef"
22074
+ [virtualColumns]="virtualColumns"
22075
+ (scrollBottom)="notifyScrollBottom()"
22076
+ (contentScroll)="contentScroll.emit($event)"
21838
22077
  kendoDraggable
21839
22078
  kendoGridSelectionMarquee
21840
- [enableDrag]="marqueeSelection">
21841
- </tbody>
21842
- <tfoot kendoGridFooter
22079
+ [enableDrag]="marqueeSelection"
22080
+ [sort]="sort">
22081
+ </kendo-grid-list>
22082
+ <div
21843
22083
  *ngIf="showFooter"
21844
- [scrollable]="false"
21845
- [logicalRowIndex]="ariaRowCount"
21846
- [groups]="group"
21847
- [columns]="$any(leafColumns)"
21848
- [detailTemplate]="detailTemplate">
21849
- </tfoot>
21850
- </table>
21851
- </ng-container>
21852
- <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading>
21853
- </div>
22084
+ class="k-grid-footer"
22085
+ [style.padding]="headerPadding">
22086
+ <div
22087
+ *ngIf="lockedLeafColumns.length"
22088
+ class="k-grid-footer-locked"
22089
+ [style.width.px]="lockedWidth">
22090
+ <table
22091
+ role="presentation"
22092
+ class="k-grid-footer-table"
22093
+ [locked]="true"
22094
+ [style.width.px]="lockedWidth"
22095
+ kendoGridTable
22096
+ [size]="size">
22097
+ <colgroup kendoGridColGroup
22098
+ [columns]="$any(lockedLeafColumns)"
22099
+ [groups]="group"
22100
+ [detailTemplate]="detailTemplate">
22101
+ </colgroup>
22102
+ <tfoot kendoGridFooter
22103
+ [scrollable]="true"
22104
+ [groups]="group"
22105
+ [columns]="$any(lockedLeafColumns)"
22106
+ [detailTemplate]="detailTemplate"
22107
+ [logicalRowIndex]="ariaRowCount">
22108
+ </tfoot>
22109
+ </table>
22110
+ </div>
22111
+ <div #footer
22112
+ class="k-grid-footer-wrap" data-scrollable
22113
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
22114
+ [lockedWidth]="lockedWidth + scrollbarWidth + 3">
22115
+ <table
22116
+ role="presentation"
22117
+ class="k-grid-footer-table"
22118
+ [style.width.px]="nonLockedWidth"
22119
+ kendoGridTable
22120
+ [size]="size">
22121
+ <colgroup kendoGridColGroup
22122
+ [columns]="$any(nonLockedLeafColumns)"
22123
+ [groups]="isLocked ? [] : group"
22124
+ [detailTemplate]="detailTemplate">
22125
+ </colgroup>
22126
+ <tfoot kendoGridFooter
22127
+ [logicalRowIndex]="ariaRowCount"
22128
+ [scrollable]="true"
22129
+ [groups]="isLocked ? [] : group"
22130
+ [columns]="$any(nonLockedLeafColumns)"
22131
+ [lockedColumnsCount]="lockedLeafColumns.length"
22132
+ [detailTemplate]="detailTemplate">
22133
+ </tfoot>
22134
+ </table>
22135
+ </div>
22136
+ </div>
22137
+ </ng-container>
22138
+ <ng-container *ngIf="!isScrollable">
22139
+ <table
22140
+ [style.table-layout]="resizable ? 'fixed' : null"
22141
+ kendoGridTable
22142
+ [size]="size">
22143
+ <colgroup kendoGridColGroup
22144
+ [columns]="$any(leafColumns)"
22145
+ [groups]="group"
22146
+ [detailTemplate]="detailTemplate">
22147
+ </colgroup>
22148
+ <thead kendoGridHeader
22149
+ *ngIf="!hideHeader"
22150
+ [resizable]="resizable"
22151
+ [scrollable]="false"
22152
+ [columns]="$any(visibleColumns)"
22153
+ [totalColumnLevels]="totalColumnLevels"
22154
+ [groups]="group"
22155
+ [groupable]="showGroupPanel"
22156
+ [reorderable]="reorderable"
22157
+ [sort]="sort"
22158
+ [sortable]="sortable"
22159
+ [filter]="filter"
22160
+ [filterable]="filterable"
22161
+ [columnMenu]="columnMenuOptions"
22162
+ [columnMenuTemplate]="columnMenuTemplate"
22163
+ [detailTemplate]="detailTemplate"
22164
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
22165
+ </thead>
22166
+ <tbody kendoGridTableBody
22167
+ [isLoading]="loading"
22168
+ [groups]="group"
22169
+ [data]="$any(view)"
22170
+ [skip]="skip"
22171
+ [columns]="$any(leafColumns)"
22172
+ [selectable]="selectable"
22173
+ [filterable]="filterable"
22174
+ [noRecordsTemplate]="noRecordsTemplate"
22175
+ [detailTemplate]="detailTemplate"
22176
+ [showGroupFooters]="showGroupFooters"
22177
+ [trackBy]="trackBy"
22178
+ [rowClass]="rowClass"
22179
+ kendoDraggable
22180
+ kendoGridSelectionMarquee
22181
+ [enableDrag]="marqueeSelection">
22182
+ </tbody>
22183
+ <tfoot kendoGridFooter
22184
+ *ngIf="showFooter"
22185
+ [scrollable]="false"
22186
+ [logicalRowIndex]="ariaRowCount"
22187
+ [groups]="group"
22188
+ [columns]="$any(leafColumns)"
22189
+ [detailTemplate]="detailTemplate">
22190
+ </tfoot>
22191
+ </table>
22192
+ </ng-container>
22193
+ <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading></div>
21854
22194
  </div>
22195
+ <kendo-grid-status-bar
22196
+ *ngIf="showStatusBar"
22197
+ [selectableSettings]="selectable"
22198
+ [statusBarTemplate]="statusBarTemplate">
22199
+ </kendo-grid-status-bar>
21855
22200
  <kendo-pager
21856
22201
  *ngIf="showBottomPager"
21857
22202
  [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
@@ -22034,6 +22379,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22034
22379
  }], loadingTemplateChildren: [{
22035
22380
  type: ContentChildren,
22036
22381
  args: [LoadingTemplateDirective]
22382
+ }], statusBarTemplateChildren: [{
22383
+ type: ContentChildren,
22384
+ args: [StatusBarTemplateDirective]
22037
22385
  }], noRecordsTemplateChildren: [{
22038
22386
  type: ContentChildren,
22039
22387
  args: [NoRecordsTemplateDirective]
@@ -25355,6 +25703,7 @@ const exportedModules$1 = [
25355
25703
  ToolbarTemplateDirective,
25356
25704
  ToolbarComponent,
25357
25705
  GridSpacerComponent,
25706
+ StatusBarTemplateDirective,
25358
25707
  DataBindingDirective,
25359
25708
  SelectionDirective,
25360
25709
  CustomMessagesComponent,
@@ -25392,7 +25741,9 @@ const declarations$2 = [
25392
25741
  GroupBindingDirective,
25393
25742
  GridMarqueeDirective,
25394
25743
  GridSpacerComponent,
25395
- GridToolbarFocusableDirective
25744
+ GridToolbarFocusableDirective,
25745
+ StatusBarComponent,
25746
+ StatusBarTemplateDirective
25396
25747
  ];
25397
25748
  /**
25398
25749
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -25434,7 +25785,9 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25434
25785
  GroupBindingDirective,
25435
25786
  GridMarqueeDirective,
25436
25787
  GridSpacerComponent,
25437
- GridToolbarFocusableDirective], imports: [CommonModule,
25788
+ GridToolbarFocusableDirective,
25789
+ StatusBarComponent,
25790
+ StatusBarTemplateDirective], imports: [CommonModule,
25438
25791
  GroupModule,
25439
25792
  SharedModule,
25440
25793
  BodyModule,
@@ -25449,6 +25802,7 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25449
25802
  ToolbarTemplateDirective,
25450
25803
  ToolbarComponent,
25451
25804
  GridSpacerComponent,
25805
+ StatusBarTemplateDirective,
25452
25806
  DataBindingDirective,
25453
25807
  SelectionDirective,
25454
25808
  CustomMessagesComponent,
@@ -26346,5 +26700,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26346
26700
  * Generated bundle index. Do not edit.
26347
26701
  */
26348
26702
 
26349
- export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26703
+ export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26350
26704