@progress/kendo-angular-grid 13.0.0-develop.9 → 13.0.0

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
@@ -21,8 +21,8 @@ import { PopupModule } from '@progress/kendo-angular-popup';
21
21
  import * as i1$3 from '@angular/platform-browser';
22
22
  import * as i3 from '@progress/kendo-angular-icons';
23
23
  import { IconsModule } from '@progress/kendo-angular-icons';
24
- 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';
25
- import * as i40 from '@progress/kendo-angular-utils';
24
+ 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';
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';
@@ -2069,16 +2069,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2069
2069
  * @hidden
2070
2070
  */
2071
2071
  class SelectionService {
2072
- constructor(domEvents, localDataChangesService, navigationService) {
2072
+ constructor(domEvents, localDataChangesService, navigationService, ctxService) {
2073
2073
  this.domEvents = domEvents;
2074
2074
  this.localDataChangesService = localDataChangesService;
2075
2075
  this.navigationService = navigationService;
2076
+ this.ctxService = ctxService;
2076
2077
  this.changes = new EventEmitter();
2077
- this.lastSelectionStartIndex = 0;
2078
+ this.aggregateChanges = new EventEmitter();
2078
2079
  this.currentSelection = [];
2079
2080
  this.selectAllChecked = false;
2080
2081
  this.active = false;
2081
2082
  this.dragging = false;
2083
+ this.lastSelectionData = {};
2082
2084
  this.addSubscriptions();
2083
2085
  }
2084
2086
  get enableMarquee() {
@@ -2097,6 +2099,10 @@ class SelectionService {
2097
2099
  }
2098
2100
  init(settings) {
2099
2101
  this.settings = settings;
2102
+ if (!isPresent(this.lastSelectionStartIndex)) {
2103
+ this.lastSelectionStartIndex = this.ctxService?.grid.selectionDirective?.rangeSelectionStartRow?.index || 0;
2104
+ this.lastSelectionData = this.ctxService?.grid.selectionDirective?.rangeSelectionStartRow?.dataItem || {};
2105
+ }
2100
2106
  this.currentSelection = [];
2101
2107
  if (settings.selectable && settings.selectable.enabled !== false) {
2102
2108
  const iterator = this.getIterator();
@@ -2157,12 +2163,21 @@ class SelectionService {
2157
2163
  }
2158
2164
  ev.ctrlKey = ctrlKey;
2159
2165
  ev.shiftKey = event.shiftKey;
2166
+ if (this.options.cellAggregates) {
2167
+ this.aggregateChanges.emit(ev);
2168
+ ev.cellAggregates = this.aggregates;
2169
+ }
2170
+ if (ev.shiftKey) {
2171
+ ev.rangeStartRow = { dataItem: this.lastSelectionData, index: this.lastSelectionStartIndex };
2172
+ ev.rangeEndRow = { dataItem: item.data, index: item.index };
2173
+ }
2160
2174
  this.changes.emit(ev);
2161
2175
  }
2162
2176
  toggle(item) {
2163
2177
  const selectedRows = [];
2164
2178
  const deselectedRows = [];
2165
2179
  this.lastSelectionStartIndex = item.index;
2180
+ this.lastSelectionData = item.data;
2166
2181
  const rowArgs = { dataItem: item.data, index: item.index };
2167
2182
  if (this.isSelected(item.index)) {
2168
2183
  deselectedRows.push(rowArgs);
@@ -2201,6 +2216,7 @@ class SelectionService {
2201
2216
  const deselectedRows = [];
2202
2217
  const selectedRows = [];
2203
2218
  this.lastSelectionStartIndex = item.index;
2219
+ this.lastSelectionData = item.data;
2204
2220
  if (!this.isSelected(item.index)) {
2205
2221
  selectedRows.push({ dataItem: item.data, index: item.index });
2206
2222
  }
@@ -2311,9 +2327,15 @@ class SelectionService {
2311
2327
  }
2312
2328
  next = iterator.next();
2313
2329
  }
2330
+ let cellAggregates;
2331
+ if (this.options.cellAggregates) {
2332
+ this.aggregateChanges.emit({ selectedRows, deselectedRows });
2333
+ cellAggregates = this.aggregates;
2334
+ }
2314
2335
  return {
2315
2336
  deselectedRows: deselectedRows,
2316
- selectedRows: selectedRows
2337
+ selectedRows: selectedRows,
2338
+ cellAggregates
2317
2339
  };
2318
2340
  }
2319
2341
  get selectAllState() {
@@ -2326,6 +2348,7 @@ class SelectionService {
2326
2348
  }
2327
2349
  get options() {
2328
2350
  const defaultOptions = {
2351
+ cellAggregates: false,
2329
2352
  checkboxOnly: false,
2330
2353
  enabled: true,
2331
2354
  mode: "multiple"
@@ -2335,6 +2358,7 @@ class SelectionService {
2335
2358
  }
2336
2359
  if (typeof this.settings.selectable === 'boolean') {
2337
2360
  return {
2361
+ cellAggregates: false,
2338
2362
  checkboxOnly: false,
2339
2363
  enabled: this.settings.selectable,
2340
2364
  mode: "multiple"
@@ -2407,11 +2431,11 @@ class SelectionService {
2407
2431
  }
2408
2432
  }
2409
2433
  }
2410
- 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 });
2434
+ 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 });
2411
2435
  SelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService });
2412
2436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SelectionService, decorators: [{
2413
2437
  type: Injectable
2414
- }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });
2438
+ }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }, { type: ContextService }]; } });
2415
2439
 
2416
2440
  /**
2417
2441
  * @hidden
@@ -2422,6 +2446,7 @@ class CellSelectionService {
2422
2446
  this.localDataChangesService = localDataChangesService;
2423
2447
  this.navigationService = navigationService;
2424
2448
  this.changes = new EventEmitter();
2449
+ this.aggregateChanges = new EventEmitter();
2425
2450
  this.mouseUpEvent = new EventEmitter();
2426
2451
  this.currentSelection = [];
2427
2452
  this.active = false;
@@ -2507,6 +2532,16 @@ class CellSelectionService {
2507
2532
  }
2508
2533
  ev.ctrlKey = ctrlKey;
2509
2534
  ev.shiftKey = event.shiftKey;
2535
+ if (this.options.cellAggregates) {
2536
+ this.aggregateChanges.emit(ev);
2537
+ ev.cellAggregates = this.aggregates;
2538
+ }
2539
+ if (ev.shiftKey) {
2540
+ ev.rangeStartCell = this.lastSelectionItem;
2541
+ ev.rangeEndCell = {
2542
+ ...this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item
2543
+ };
2544
+ }
2510
2545
  this.changes.emit(ev);
2511
2546
  }
2512
2547
  toggle(item) {
@@ -2610,13 +2645,20 @@ class CellSelectionService {
2610
2645
  }
2611
2646
  next = iterator.next();
2612
2647
  }
2648
+ let cellAggregates;
2649
+ if (this.options.cellAggregates) {
2650
+ this.aggregateChanges.emit({ selectedCells, deselectedCells });
2651
+ cellAggregates = this.aggregates;
2652
+ }
2613
2653
  return {
2614
2654
  deselectedCells,
2615
- selectedCells
2655
+ selectedCells,
2656
+ cellAggregates
2616
2657
  };
2617
2658
  }
2618
2659
  get options() {
2619
2660
  const defaultOptions = {
2661
+ cellAggregates: false,
2620
2662
  checkboxOnly: false,
2621
2663
  enabled: true,
2622
2664
  mode: "multiple"
@@ -2626,6 +2668,7 @@ class CellSelectionService {
2626
2668
  }
2627
2669
  if (typeof this.settings.selectable === 'boolean') {
2628
2670
  return {
2671
+ cellAggregates: false,
2629
2672
  checkboxOnly: false,
2630
2673
  enabled: this.settings.selectable,
2631
2674
  mode: "multiple"
@@ -2899,8 +2942,8 @@ const packageMetadata = {
2899
2942
  name: '@progress/kendo-angular-grid',
2900
2943
  productName: 'Kendo UI for Angular',
2901
2944
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2902
- publishDate: 1685111107,
2903
- version: '13.0.0-develop.9',
2945
+ publishDate: 1686055792,
2946
+ version: '13.0.0',
2904
2947
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2905
2948
  };
2906
2949
 
@@ -4518,6 +4561,12 @@ class Selection {
4518
4561
  * @default []
4519
4562
  */
4520
4563
  this.selectedKeys = [];
4564
+ /**
4565
+ * Defines the initial shift-click range selection starting column index when cell selection is enabled.
4566
+ *
4567
+ * @default 0
4568
+ */
4569
+ this.rangeSelectionStartColumnIndex = 0;
4521
4570
  /**
4522
4571
  * Fires when the `selectedKeys` collection has been updated.
4523
4572
  */
@@ -4565,6 +4614,9 @@ class Selection {
4565
4614
  this.rowSelectionState.clear();
4566
4615
  this.cellSelectionState.clear();
4567
4616
  }
4617
+ /**
4618
+ * @hidden
4619
+ */
4568
4620
  getItemKey(row) {
4569
4621
  if (this.selectionKey) {
4570
4622
  if (typeof this.selectionKey === "string") {
@@ -4643,7 +4695,7 @@ class Selection {
4643
4695
  }
4644
4696
  }
4645
4697
  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 });
4646
- 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 });
4698
+ 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 });
4647
4699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: Selection, decorators: [{
4648
4700
  type: Directive,
4649
4701
  args: [{
@@ -4652,6 +4704,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4652
4704
  }]
4653
4705
  }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedKeys: [{
4654
4706
  type: Input
4707
+ }], rangeSelectionStartRow: [{
4708
+ type: Input
4709
+ }], rangeSelectionStartColumnIndex: [{
4710
+ type: Input
4655
4711
  }], selectionKey: [{
4656
4712
  type: Input,
4657
4713
  args: ["kendoGridSelectBy"]
@@ -6450,6 +6506,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6450
6506
  type: Output
6451
6507
  }] } });
6452
6508
 
6509
+ /**
6510
+ * Represents the status bar template of the Grid. Allows you to visualize the aggregates using custom rendering inside the template.
6511
+ * The template context has the following field:
6512
+ * - `aggregates`—The [SelectionAggregates]({% slug api_grid_selectionaggregates %}) object that contains all calculated aggregates.
6513
+ * Use the Angular [ngFor](link:site.data.urls.angular['ngfor']) structural directive combined with the [KeyValuePipe](https://angular.io/api/common/KeyValuePipe)
6514
+ * to loop through the aggregates as key-value pairs.
6515
+ */
6516
+ class StatusBarTemplateDirective {
6517
+ constructor(templateRef) {
6518
+ this.templateRef = templateRef;
6519
+ }
6520
+ }
6521
+ StatusBarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
6522
+ StatusBarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: StatusBarTemplateDirective, selector: "[kendoGridStatusBarTemplate]", ngImport: i0 });
6523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarTemplateDirective, decorators: [{
6524
+ type: Directive,
6525
+ args: [{
6526
+ selector: '[kendoGridStatusBarTemplate]'
6527
+ }]
6528
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
6529
+
6453
6530
  /**
6454
6531
  * @hidden
6455
6532
  */
@@ -8284,7 +8361,7 @@ GroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
8284
8361
  [label]="groupTitles[index]"
8285
8362
  [removable]="true"
8286
8363
  [icon]="getDirectionIcon(group)"
8287
- [svgIcon]=""
8364
+ [svgIcon]="getDirectionSvgIcon(group)"
8288
8365
  (contentClick)="directionChange(group)"
8289
8366
  (remove)="remove(group)"
8290
8367
  >
@@ -8336,7 +8413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8336
8413
  [label]="groupTitles[index]"
8337
8414
  [removable]="true"
8338
8415
  [icon]="getDirectionIcon(group)"
8339
- [svgIcon]=""
8416
+ [svgIcon]="getDirectionSvgIcon(group)"
8340
8417
  (contentClick)="directionChange(group)"
8341
8418
  (remove)="remove(group)"
8342
8419
  >
@@ -8982,7 +9059,11 @@ class FilterInputDirective {
8982
9059
  this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);
8983
9060
  }
8984
9061
  else {
8985
- this.renderer.setAttribute(this.element.nativeElement, 'aria-label', ariaValue);
9062
+ const inputElement = this.element.nativeElement.querySelector('.k-input-inner');
9063
+ const elementToSetLabel = inputElement ? inputElement : this.element.nativeElement;
9064
+ if (ariaValue) {
9065
+ this.renderer.setAttribute(elementToSetLabel, 'aria-label', ariaValue);
9066
+ }
8986
9067
  }
8987
9068
  }
8988
9069
  }
@@ -12509,7 +12590,7 @@ class ColumnMenuComponent {
12509
12590
  /**
12510
12591
  * @hidden
12511
12592
  */
12512
- this.moreHorizontalIcon = moreHorizontalIcon;
12593
+ this.slidersIcon = slidersIcon;
12513
12594
  /**
12514
12595
  * @hidden
12515
12596
  */
@@ -12786,8 +12867,8 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12786
12867
  <ng-template kendoTabTitle>
12787
12868
  <kendo-icon-wrapper
12788
12869
  [attr.title]="ctx.localization.get('columnMenuGeneralTabTitle')"
12789
- name="more-horizontal"
12790
- [svgIcon]="moreHorizontalIcon">
12870
+ name="sliders"
12871
+ [svgIcon]="slidersIcon">
12791
12872
  </kendo-icon-wrapper>
12792
12873
  </ng-template>
12793
12874
  <ng-template kendoTabContent>
@@ -12955,8 +13036,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12955
13036
  <ng-template kendoTabTitle>
12956
13037
  <kendo-icon-wrapper
12957
13038
  [attr.title]="ctx.localization.get('columnMenuGeneralTabTitle')"
12958
- name="more-horizontal"
12959
- [svgIcon]="moreHorizontalIcon">
13039
+ name="sliders"
13040
+ [svgIcon]="slidersIcon">
12960
13041
  </kendo-icon-wrapper>
12961
13042
  </ng-template>
12962
13043
  <ng-template kendoTabContent>
@@ -13152,13 +13233,22 @@ class FilterCellOperatorsComponent {
13152
13233
  this.subs.unsubscribe();
13153
13234
  }
13154
13235
  }
13236
+ /**
13237
+ * @hidden
13238
+ */
13239
+ get columnLabel() {
13240
+ const localizationMsg = this.ctx.localization.get('filterCellOperatorLabel') || '';
13241
+ const columnName = this.column.title || this.column.field;
13242
+ return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
13243
+ }
13155
13244
  }
13156
13245
  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 });
13157
- 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: `
13246
+ 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: `
13158
13247
  <kendo-dropdownlist
13159
13248
  #dropdown
13160
13249
  *ngIf="showOperators"
13161
13250
  kendoGridFocusable
13251
+ [attr.aria-label]="columnLabel"
13162
13252
  [data]="operators"
13163
13253
  class="k-dropdown-operator"
13164
13254
  (valueChange)="onChange($event)"
@@ -13191,6 +13281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13191
13281
  #dropdown
13192
13282
  *ngIf="showOperators"
13193
13283
  kendoGridFocusable
13284
+ [attr.aria-label]="columnLabel"
13194
13285
  [data]="operators"
13195
13286
  class="k-dropdown-operator"
13196
13287
  (valueChange)="onChange($event)"
@@ -13229,6 +13320,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13229
13320
  type: Input
13230
13321
  }], value: [{
13231
13322
  type: Input
13323
+ }], column: [{
13324
+ type: Input
13232
13325
  }], valueChange: [{
13233
13326
  type: Output
13234
13327
  }], clear: [{
@@ -13264,12 +13357,13 @@ FilterCellWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
13264
13357
  <ng-content></ng-content>
13265
13358
  <kendo-grid-filter-cell-operators
13266
13359
  [showOperators]="showOperators"
13360
+ [column]="column"
13267
13361
  [operators]="operators"
13268
13362
  (clear)="onClear()"
13269
13363
  [showButton]="showButton"
13270
13364
  [(value)]="currentOperator">
13271
13365
  </kendo-grid-filter-cell-operators>
13272
- `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value"], outputs: ["valueChange", "clear"] }] });
13366
+ `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: "kendo-grid-filter-cell-operators", inputs: ["operators", "showButton", "showOperators", "value", "column"], outputs: ["valueChange", "clear"] }] });
13273
13367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterCellWrapperComponent, decorators: [{
13274
13368
  type: Component,
13275
13369
  args: [{
@@ -13278,6 +13372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13278
13372
  <ng-content></ng-content>
13279
13373
  <kendo-grid-filter-cell-operators
13280
13374
  [showOperators]="showOperators"
13375
+ [column]="column"
13281
13376
  [operators]="operators"
13282
13377
  (clear)="onClear()"
13283
13378
  [showButton]="showButton"
@@ -13360,7 +13455,7 @@ StringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
13360
13455
  [filterDelay]="filterDelay"
13361
13456
  [ngModel]="currentFilter?.value"></kendo-textbox>
13362
13457
  </kendo-grid-filter-wrapper-cell>
13363
- `, 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"] }] });
13458
+ `, 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"] }] });
13364
13459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StringFilterCellComponent, decorators: [{
13365
13460
  type: Component,
13366
13461
  args: [{
@@ -13555,7 +13650,7 @@ class BooleanFilterCellComponent extends BooleanFilterComponent {
13555
13650
  * @hidden
13556
13651
  */
13557
13652
  get columnLabel() {
13558
- const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';
13653
+ const localizationMsg = this.ctx.localization.get('booleanFilterCellLabel') || '';
13559
13654
  const columnName = this.column.title || this.column.field;
13560
13655
  return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
13561
13656
  }
@@ -15798,6 +15893,8 @@ class SelectionCheckboxDirective {
15798
15893
  const ev = this.selectionService.toggleByIndex(this.itemIndex);
15799
15894
  ev.ctrlKey = true;
15800
15895
  ev.shiftKey = false;
15896
+ this.selectionService.aggregateChanges.emit(ev);
15897
+ ev.cellAggregates = this.selectionService.aggregates;
15801
15898
  this.selectionService.changes.emit(ev);
15802
15899
  });
15803
15900
  }
@@ -18076,7 +18173,6 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18076
18173
  [size]="size"
18077
18174
  [style.width.px]="lockedWidth">
18078
18175
  <colgroup kendoGridColGroup
18079
- role="presentation"
18080
18176
  [groups]="groups"
18081
18177
  [columns]="$any(lockedLeafColumns)"
18082
18178
  [detailTemplate]="detailTemplate"
@@ -18108,11 +18204,12 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18108
18204
  <div [style.height.px]="totalHeight"></div>
18109
18205
  </div>
18110
18206
  </div>
18111
- <div #container
18112
- class="k-grid-content k-virtual-content"
18113
- role="presentation" tabindex="-1"
18114
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18115
- [lockedWidth]="lockedWidth + 1">
18207
+ <div
18208
+ #container
18209
+ class="k-grid-content k-virtual-content"
18210
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18211
+ [lockedWidth]="lockedWidth + 1"
18212
+ >
18116
18213
  <div role="presentation" class="k-grid-table-wrap">
18117
18214
  <table
18118
18215
  [style.width.px]="nonLockedWidth"
@@ -18123,7 +18220,6 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
18123
18220
  [size]="size"
18124
18221
  role="presentation">
18125
18222
  <colgroup kendoGridColGroup
18126
- role="presentation"
18127
18223
  [groups]="isLocked ? [] : groups"
18128
18224
  [columns]="$any(nonLockedColumnsToRender)"
18129
18225
  [detailTemplate]="detailTemplate"
@@ -18195,7 +18291,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18195
18291
  [size]="size"
18196
18292
  [style.width.px]="lockedWidth">
18197
18293
  <colgroup kendoGridColGroup
18198
- role="presentation"
18199
18294
  [groups]="groups"
18200
18295
  [columns]="$any(lockedLeafColumns)"
18201
18296
  [detailTemplate]="detailTemplate"
@@ -18227,11 +18322,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18227
18322
  <div [style.height.px]="totalHeight"></div>
18228
18323
  </div>
18229
18324
  </div>
18230
- <div #container
18231
- class="k-grid-content k-virtual-content"
18232
- role="presentation" tabindex="-1"
18233
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18234
- [lockedWidth]="lockedWidth + 1">
18325
+ <div
18326
+ #container
18327
+ class="k-grid-content k-virtual-content"
18328
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
18329
+ [lockedWidth]="lockedWidth + 1"
18330
+ >
18235
18331
  <div role="presentation" class="k-grid-table-wrap">
18236
18332
  <table
18237
18333
  [style.width.px]="nonLockedWidth"
@@ -18242,7 +18338,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18242
18338
  [size]="size"
18243
18339
  role="presentation">
18244
18340
  <colgroup kendoGridColGroup
18245
- role="presentation"
18246
18341
  [groups]="isLocked ? [] : groups"
18247
18342
  [columns]="$any(nonLockedColumnsToRender)"
18248
18343
  [detailTemplate]="detailTemplate"
@@ -18553,13 +18648,231 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18553
18648
  type: Input
18554
18649
  }] } });
18555
18650
 
18651
+ /* eslint-disable @typescript-eslint/no-explicit-any */
18652
+ ;
18653
+ /**
18654
+ * @hidden
18655
+ */
18656
+ class StatusBarComponent {
18657
+ constructor(ctx, selectionService, dataChanges, columnInfoService, cellSelectionService) {
18658
+ this.ctx = ctx;
18659
+ this.selectionService = selectionService;
18660
+ this.dataChanges = dataChanges;
18661
+ this.columnInfoService = columnInfoService;
18662
+ this.cellSelectionService = cellSelectionService;
18663
+ this.hostClasses = true;
18664
+ this.groupedAggregates = { dates: [], numbers: [], booleans: [] };
18665
+ this.aggregates = {
18666
+ sum: null,
18667
+ average: null,
18668
+ min: null,
18669
+ max: null,
18670
+ count: null,
18671
+ isTrue: null,
18672
+ isFalse: null,
18673
+ earliest: null,
18674
+ latest: null
18675
+ };
18676
+ this.subs = new Subscription();
18677
+ this.selectedItems = [];
18678
+ }
18679
+ get isStatusBarTemplate() {
18680
+ return this.statusBarTemplate ? '' : 'none';
18681
+ }
18682
+ ngOnInit() {
18683
+ if (this.selectableSettings.cellAggregates) {
18684
+ this.data = this.dataChanges.data ? this.dataChanges.data : this.ctx.grid.data;
18685
+ this.selectService = this.isRowSelection ? this.selectionService : this.cellSelectionService;
18686
+ if (this.isAggregateIncluded('count')) {
18687
+ this.aggregates['count'] = 0;
18688
+ }
18689
+ const selectionDirective = this.ctx.grid.selectionDirective;
18690
+ if (selectionDirective && !this.isRowSelection) {
18691
+ this.selectedItems = selectionDirective.selectedKeys;
18692
+ }
18693
+ this.subs.add(this.selectService.aggregateChanges.subscribe((selectionArgs) => this.onSelectionChange(selectionArgs)));
18694
+ }
18695
+ }
18696
+ ngOnDestroy() {
18697
+ this.subs.unsubscribe();
18698
+ }
18699
+ onSelectionChange(selectionArgs) {
18700
+ this.handleSelectedItems(selectionArgs);
18701
+ this.nullifyAggregates();
18702
+ this.handleAggregateChanges();
18703
+ this.selectService.aggregates = this.aggregates;
18704
+ }
18705
+ handleAggregateChanges() {
18706
+ const lockedColumns = this.columnInfoService.lockedLeafColumns.toArray();
18707
+ const nonLockedColumns = this.columnInfoService.nonLockedLeafColumns.toArray();
18708
+ const selectedItemsLength = this.selectedItems.length;
18709
+ const columns = [...lockedColumns, ...nonLockedColumns];
18710
+ const fields = columns.map(col => col.field);
18711
+ if (this.isAggregateIncluded('count')) {
18712
+ this.aggregates['count'] = this.isRowSelection ? (selectedItemsLength * columns.length) : selectedItemsLength;
18713
+ }
18714
+ this.selectedItems.forEach((item) => {
18715
+ if (this.isRowSelection) {
18716
+ fields.forEach((field) => {
18717
+ const cellValue = item.dataItem;
18718
+ if (cellValue && cellValue.hasOwnProperty(field)) {
18719
+ const cellValue = item.dataItem[field];
18720
+ this.groupAggregates(cellValue);
18721
+ }
18722
+ });
18723
+ }
18724
+ else if (this.selectService.options.cell) {
18725
+ const itemKey = this.data[item.itemKey];
18726
+ const field = fields[item.columnKey];
18727
+ if (itemKey && itemKey.hasOwnProperty(field)) {
18728
+ const cellValue = itemKey[fields[item.columnKey]];
18729
+ this.groupAggregates(cellValue);
18730
+ }
18731
+ }
18732
+ });
18733
+ this.calculateAggregates();
18734
+ }
18735
+ groupAggregates(aggregate) {
18736
+ if (typeof aggregate === 'number') {
18737
+ this.groupedAggregates.numbers.push(aggregate);
18738
+ }
18739
+ else if (typeof aggregate === 'boolean') {
18740
+ this.groupedAggregates.booleans.push(aggregate);
18741
+ }
18742
+ else if (aggregate instanceof Date) {
18743
+ this.groupedAggregates.dates.push(aggregate);
18744
+ }
18745
+ }
18746
+ calculateAggregates() {
18747
+ if (this.groupedAggregates.numbers.length > 0) {
18748
+ if (this.isAggregateIncluded('min')) {
18749
+ this.aggregates['min'] = Math.min(...this.groupedAggregates.numbers);
18750
+ }
18751
+ if (this.isAggregateIncluded('max')) {
18752
+ this.aggregates['max'] = Math.max(...this.groupedAggregates.numbers);
18753
+ }
18754
+ if (this.isAggregateIncluded('sum')) {
18755
+ this.aggregates['sum'] = this.groupedAggregates.numbers.reduce((acc, curr) => acc += curr, 0);
18756
+ }
18757
+ if (this.isAggregateIncluded('average')) {
18758
+ this.aggregates['average'] = this.aggregates['sum'] / this.groupedAggregates.numbers.length;
18759
+ }
18760
+ }
18761
+ if (this.groupedAggregates.booleans.length > 0) {
18762
+ if (this.isAggregateIncluded('isTrue')) {
18763
+ const isTrueCount = this.groupedAggregates.booleans.filter(bool => bool).length;
18764
+ this.aggregates['isTrue'] = isTrueCount > 0 ? isTrueCount : null;
18765
+ }
18766
+ if (this.isAggregateIncluded('isFalse')) {
18767
+ const isFalseCount = this.groupedAggregates.booleans.length - this.aggregates['isTrue'];
18768
+ this.aggregates['isFalse'] = isFalseCount > 0 ? isFalseCount : null;
18769
+ }
18770
+ }
18771
+ if (this.groupedAggregates.dates.length > 0) {
18772
+ if (this.isAggregateIncluded('earliest')) {
18773
+ this.aggregates['earliest'] = new Date(Math.min(...this.groupedAggregates.dates));
18774
+ }
18775
+ if (this.isAggregateIncluded('latest')) {
18776
+ this.aggregates['latest'] = new Date(Math.max(...this.groupedAggregates.dates));
18777
+ }
18778
+ }
18779
+ }
18780
+ handleSelectedItems(selectionArgs) {
18781
+ const rowOrCellSelect = `${this.isRowSelection ? 'selectedRows' : 'selectedCells'}`;
18782
+ const rowOrCellDeselect = `${this.isRowSelection ? 'deselectedRows' : 'deselectedCells'}`;
18783
+ const selectedItems = selectionArgs[rowOrCellSelect];
18784
+ const deselectedItems = selectionArgs[rowOrCellDeselect];
18785
+ if (!this.isRowSelection) {
18786
+ // Needed when we have column groups with cell selection, the deselected items are duplicated
18787
+ deselectedItems.forEach((item, index) => {
18788
+ if (index + 1 < deselectedItems.length) {
18789
+ if (item.itemKey === deselectedItems[index + 1].itemKey
18790
+ && item.columnKey === deselectedItems[index + 1].columnKey) {
18791
+ deselectedItems.splice(index, 1);
18792
+ }
18793
+ }
18794
+ });
18795
+ }
18796
+ if (selectedItems.length > 0) {
18797
+ selectedItems.forEach((item) => {
18798
+ this.selectedItems = [...this.selectedItems, item];
18799
+ });
18800
+ }
18801
+ if (deselectedItems.length > 0) {
18802
+ if (this.isRowSelection) {
18803
+ deselectedItems.forEach((row) => {
18804
+ this.selectedItems = this.selectedItems.filter((elem) => elem.dataItem !== row.dataItem);
18805
+ });
18806
+ }
18807
+ else {
18808
+ deselectedItems.forEach((cell) => {
18809
+ const index = this.selectedItems.findIndex((elem) => elem.itemKey === cell.itemKey && elem.columnKey === cell.columnKey);
18810
+ this.selectedItems.splice(index, 1);
18811
+ });
18812
+ }
18813
+ }
18814
+ }
18815
+ isAggregateIncluded(aggregate) {
18816
+ const { cellAggregates } = this.selectService.options;
18817
+ if (typeof cellAggregates !== 'boolean') {
18818
+ return cellAggregates.includes(aggregate);
18819
+ }
18820
+ return true;
18821
+ }
18822
+ nullifyAggregates() {
18823
+ this.groupedAggregates = { dates: [], numbers: [], booleans: [] };
18824
+ this.aggregates['count'] = null;
18825
+ this.aggregates['sum'] = this.aggregates['average'] = null;
18826
+ this.aggregates['max'] = this.aggregates['min'] = null;
18827
+ this.aggregates['isFalse'] = this.aggregates['isTrue'] = null;
18828
+ this.aggregates['earliest'] = this.aggregates['latest'] = null;
18829
+ }
18830
+ get isRowSelection() {
18831
+ return typeof this.selectableSettings === 'boolean' || !this.selectableSettings.cell;
18832
+ }
18833
+ }
18834
+ 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 });
18835
+ 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: `
18836
+ <ng-template
18837
+ *ngIf="statusBarTemplate"
18838
+ [ngTemplateOutlet]="statusBarTemplate?.templateRef"
18839
+ [ngTemplateOutletContext]="{ aggregates: aggregates }">
18840
+ </ng-template>
18841
+ `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
18842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: StatusBarComponent, decorators: [{
18843
+ type: Component,
18844
+ args: [{
18845
+ selector: 'kendo-grid-status-bar',
18846
+ template: `
18847
+ <ng-template
18848
+ *ngIf="statusBarTemplate"
18849
+ [ngTemplateOutlet]="statusBarTemplate?.templateRef"
18850
+ [ngTemplateOutletContext]="{ aggregates: aggregates }">
18851
+ </ng-template>
18852
+ `
18853
+ }]
18854
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: SelectionService }, { type: LocalDataChangesService }, { type: ColumnInfoService }, { type: CellSelectionService }]; }, propDecorators: { hostClasses: [{
18855
+ type: HostBinding,
18856
+ args: ['class.k-selection-aggregates']
18857
+ }, {
18858
+ type: HostBinding,
18859
+ args: ['class.k-grid-selection-aggregates']
18860
+ }], isStatusBarTemplate: [{
18861
+ type: HostBinding,
18862
+ args: ['style.display']
18863
+ }], selectableSettings: [{
18864
+ type: Input
18865
+ }], statusBarTemplate: [{
18866
+ type: Input
18867
+ }] } });
18868
+
18556
18869
  /**
18557
18870
  * @hidden
18558
18871
  */
18559
18872
  class GridMessages extends ComponentMessages {
18560
18873
  }
18561
18874
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18562
- 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 });
18875
+ 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 });
18563
18876
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18564
18877
  type: Directive,
18565
18878
  args: [{
@@ -18602,6 +18915,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18602
18915
  type: Input
18603
18916
  }], filterMenuLogicDropDownLabel: [{
18604
18917
  type: Input
18918
+ }], filterCellOperatorLabel: [{
18919
+ type: Input
18920
+ }], booleanFilterCellLabel: [{
18921
+ type: Input
18605
18922
  }], filterEqOperator: [{
18606
18923
  type: Input
18607
18924
  }], filterNotEqOperator: [{
@@ -19146,6 +19463,12 @@ class GridComponent {
19146
19463
  get group() {
19147
19464
  return this._group;
19148
19465
  }
19466
+ /**
19467
+ * @hidden
19468
+ */
19469
+ get showStatusBar() {
19470
+ return !!(this.selectable);
19471
+ }
19149
19472
  /**
19150
19473
  * @hidden
19151
19474
  */
@@ -19379,6 +19702,15 @@ class GridComponent {
19379
19702
  set loadingTemplate(loadingTemplate) {
19380
19703
  this._loadingTemplate = loadingTemplate;
19381
19704
  }
19705
+ get statusBarTemplate() {
19706
+ if (this._statusBarTemplate) {
19707
+ return this._statusBarTemplate;
19708
+ }
19709
+ return this.statusBarTemplateChildren ? this.statusBarTemplateChildren.first : undefined;
19710
+ }
19711
+ set statusBarTemplate(statusBarTemplate) {
19712
+ this._statusBarTemplate = statusBarTemplate;
19713
+ }
19382
19714
  get noRecordsTemplate() {
19383
19715
  if (this._customNoRecordsTemplate) {
19384
19716
  return this._customNoRecordsTemplate;
@@ -19428,7 +19760,7 @@ class GridComponent {
19428
19760
  return this.groupable && this.groupable.showFooter;
19429
19761
  }
19430
19762
  get ariaRowCount() {
19431
- return this.totalColumnLevels + 1 + this.view.total;
19763
+ return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0);
19432
19764
  }
19433
19765
  get ariaColCount() {
19434
19766
  return this.columnsContainer.leafColumnsToRender.length;
@@ -20640,7 +20972,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20640
20972
  ContextService,
20641
20973
  SizingOptionsService,
20642
20974
  RowReorderService
20643
- ], 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: `
20975
+ ], 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: `
20644
20976
  <ng-container kendoGridLocalizedMessages
20645
20977
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
20646
20978
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -20689,6 +21021,12 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20689
21021
 
20690
21022
  i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
20691
21023
  filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
21024
+
21025
+ i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
21026
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
21027
+
21028
+ i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
21029
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
20692
21030
 
20693
21031
  i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
20694
21032
  filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
@@ -20888,285 +21226,286 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
20888
21226
  [navigable]="navigation.toolbarEnabled"
20889
21227
  [attr.aria-controls]="ariaRootId"
20890
21228
  position="top"></kendo-grid-toolbar>
20891
- <kendo-pager
20892
- *ngIf="showTopPager"
20893
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
20894
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
20895
- class="k-grid-pager-top k-pager"
20896
- [template]="pagerTemplate"
20897
- [pageSize]="pageSize"
20898
- [total]="view.total"
20899
- [skip]="skip"
20900
- [size]="size"
20901
- [options]="pageable"
20902
- (pageChange)="notifyPageChange('pager', $event)">
20903
- </kendo-pager>
20904
- <kendo-grid-group-panel
20905
- *ngIf="showGroupPanel"
20906
- [navigable]="navigation.toolbarEnabled"
20907
- [text]="groupableEmptyText"
20908
- [groups]="group"
20909
- role="toolbar"
20910
- [attr.aria-label]="messageFor('groupPanelLabel')"
20911
- [attr.aria-controls]="ariaRootId"
20912
- (change)="groupChange.emit($event)">
20913
- </kendo-grid-group-panel>
20914
- <div #ariaRoot
20915
- class="k-grid-aria-root"
20916
- role="grid"
20917
- [id]="ariaRootId"
20918
- [attr.aria-label]="ariaLabel"
20919
- [attr.aria-rowcount]="ariaRowCount"
20920
- [attr.aria-colcount]="ariaColCount">
20921
- <ng-container *ngIf="isScrollable">
20922
- <div *ngIf="!hideHeader"
20923
- class="k-grid-header"
20924
- role="presentation"
20925
- [style.padding]="headerPadding">
20926
- <div *ngIf="isLocked"
20927
- #lockedHeader
20928
- role="presentation"
20929
- class="k-grid-header-locked"
20930
- [style.width.px]="lockedWidth">
20931
- <table
20932
- [locked]="true"
21229
+ <kendo-pager
21230
+ *ngIf="showTopPager"
21231
+ [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21232
+ [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21233
+ class="k-grid-pager-top k-pager"
21234
+ [template]="pagerTemplate"
21235
+ [pageSize]="pageSize"
21236
+ [total]="view.total"
21237
+ [skip]="skip"
21238
+ [size]="size"
21239
+ [options]="pageable"
21240
+ (pageChange)="notifyPageChange('pager', $event)">
21241
+ </kendo-pager>
21242
+ <kendo-grid-group-panel
21243
+ *ngIf="showGroupPanel"
21244
+ [navigable]="navigation.toolbarEnabled"
21245
+ [text]="groupableEmptyText"
21246
+ [groups]="group"
21247
+ role="toolbar"
21248
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21249
+ [attr.aria-controls]="ariaRootId"
21250
+ (change)="groupChange.emit($event)">
21251
+ </kendo-grid-group-panel>
21252
+ <div #ariaRoot
21253
+ class="k-grid-aria-root"
21254
+ role="grid"
21255
+ [id]="ariaRootId"
21256
+ [attr.aria-label]="ariaLabel"
21257
+ [attr.aria-rowcount]="ariaRowCount"
21258
+ [attr.aria-colcount]="ariaColCount">
21259
+ <ng-container *ngIf="isScrollable">
21260
+ <div *ngIf="!hideHeader"
21261
+ class="k-grid-header"
21262
+ role="presentation"
21263
+ [style.padding]="headerPadding">
21264
+ <div *ngIf="isLocked"
21265
+ #lockedHeader
20933
21266
  role="presentation"
20934
- class="k-grid-header-table"
20935
- [style.width.px]="lockedWidth"
20936
- kendoGridTable
20937
- [size]="size">
20938
- <colgroup kendoGridColGroup
21267
+ class="k-grid-header-locked"
21268
+ [style.width.px]="lockedWidth">
21269
+ <table
21270
+ [locked]="true"
20939
21271
  role="presentation"
20940
- [columns]="$any(lockedLeafColumns)"
20941
- [groups]="group"
20942
- [detailTemplate]="detailTemplate">
20943
- </colgroup>
20944
- <thead kendoGridHeader
20945
- role="rowgroup"
20946
- [resizable]="resizable"
20947
- [scrollable]="true"
20948
- [columns]="$any(lockedColumns)"
20949
- [totalColumnLevels]="totalColumnLevels"
20950
- [sort]="sort"
20951
- [groups]="group"
20952
- [filter]="filter"
20953
- [filterable]="filterable"
20954
- [groupable]="showGroupPanel"
20955
- [reorderable]="reorderable"
20956
- [sortable]="sortable"
20957
- [columnMenu]="columnMenuOptions"
20958
- [columnMenuTemplate]="columnMenuTemplate"
20959
- [totalColumnsCount]="leafColumns.length"
20960
- [detailTemplate]="detailTemplate"
20961
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
20962
- </thead>
20963
- </table>
20964
- </div>
20965
- <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
20966
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
20967
- [lockedWidth]="lockedWidth + scrollbarWidth + 2">
20968
- <table
20969
- role="presentation"
20970
- class="k-grid-header-table"
20971
- [style.width.px]="nonLockedWidth"
20972
- [virtualColumns]="virtualColumns"
20973
- kendoGridTable
20974
- [size]="size">
20975
- <colgroup kendoGridColGroup
21272
+ class="k-grid-header-table"
21273
+ [style.width.px]="lockedWidth"
21274
+ kendoGridTable
21275
+ [size]="size">
21276
+ <colgroup kendoGridColGroup
21277
+ [columns]="$any(lockedLeafColumns)"
21278
+ [groups]="group"
21279
+ [detailTemplate]="detailTemplate">
21280
+ </colgroup>
21281
+ <thead kendoGridHeader
21282
+ role="rowgroup"
21283
+ [resizable]="resizable"
21284
+ [scrollable]="true"
21285
+ [columns]="$any(lockedColumns)"
21286
+ [totalColumnLevels]="totalColumnLevels"
21287
+ [sort]="sort"
21288
+ [groups]="group"
21289
+ [filter]="filter"
21290
+ [filterable]="filterable"
21291
+ [groupable]="showGroupPanel"
21292
+ [reorderable]="reorderable"
21293
+ [sortable]="sortable"
21294
+ [columnMenu]="columnMenuOptions"
21295
+ [columnMenuTemplate]="columnMenuTemplate"
21296
+ [totalColumnsCount]="leafColumns.length"
21297
+ [detailTemplate]="detailTemplate"
21298
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21299
+ </thead>
21300
+ </table>
21301
+ </div>
21302
+ <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21303
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21304
+ [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21305
+ <table
20976
21306
  role="presentation"
20977
- [columns]="headerLeafColumns"
20978
- [groups]="isLocked ? [] : group"
20979
- [detailTemplate]="detailTemplate">
20980
- </colgroup>
20981
- <thead kendoGridHeader
20982
- [resizable]="resizable"
20983
- role="rowgroup"
20984
- [scrollable]="true"
20985
- [columns]="headerColumns"
20986
- [totalColumnLevels]="totalColumnLevels"
20987
- [sort]="sort"
20988
- [filter]="filter"
20989
- [filterable]="filterable"
20990
- [groupable]="showGroupPanel"
20991
- [reorderable]="reorderable"
20992
- [groups]="isLocked ? [] : group"
20993
- [sortable]="sortable"
20994
- [columnMenu]="columnMenuOptions"
20995
- [columnMenuTemplate]="columnMenuTemplate"
20996
- [lockedColumnsCount]="lockedLeafColumns.length"
20997
- [totalColumnsCount]="leafColumns.length"
20998
- [detailTemplate]="detailTemplate"
20999
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21000
- </thead>
21001
- </table>
21002
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21003
- <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21307
+ class="k-grid-header-table"
21308
+ [style.width.px]="nonLockedWidth"
21309
+ [virtualColumns]="virtualColumns"
21310
+ kendoGridTable
21311
+ [size]="size">
21312
+ <colgroup kendoGridColGroup
21313
+ [columns]="headerLeafColumns"
21314
+ [groups]="isLocked ? [] : group"
21315
+ [detailTemplate]="detailTemplate">
21316
+ </colgroup>
21317
+ <thead kendoGridHeader
21318
+ [resizable]="resizable"
21319
+ role="rowgroup"
21320
+ [scrollable]="true"
21321
+ [columns]="headerColumns"
21322
+ [totalColumnLevels]="totalColumnLevels"
21323
+ [sort]="sort"
21324
+ [filter]="filter"
21325
+ [filterable]="filterable"
21326
+ [groupable]="showGroupPanel"
21327
+ [reorderable]="reorderable"
21328
+ [groups]="isLocked ? [] : group"
21329
+ [sortable]="sortable"
21330
+ [columnMenu]="columnMenuOptions"
21331
+ [columnMenuTemplate]="columnMenuTemplate"
21332
+ [lockedColumnsCount]="lockedLeafColumns.length"
21333
+ [totalColumnsCount]="leafColumns.length"
21334
+ [detailTemplate]="detailTemplate"
21335
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21336
+ </thead>
21337
+ </table>
21338
+ <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21339
+ <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21340
+ </div>
21004
21341
  </div>
21005
21342
  </div>
21006
- </div>
21007
- <kendo-grid-list
21008
- kendoDragTargetContainer
21009
- kendoDropTargetContainer
21010
- mode="manual"
21011
- [dragDisabled]="!rowReorderable"
21012
- [dropDisabled]="!rowReorderable"
21013
- [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21014
- [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21015
- [dragHandle]="getDefaultSelectors('handle')"
21016
- [hint]="{hintTemplate: defaultHint}"
21017
- (onPress)="handleReorderEvents($event, 'press')"
21018
- (onDragStart)="handleReorderEvents($event, 'dragStart')"
21019
- (onDrag)="handleReorderEvents($event, 'drag')"
21020
- (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21021
- (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21022
- (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21023
- (onDrop)="handleReorderEvents($event, 'drop')"
21024
- [dragData]="gridData"
21025
- [data]="$any(view)"
21026
- [rowHeight]="rowHeight"
21027
- [detailRowHeight]="detailRowHeight"
21028
- [total]="totalCount"
21029
- [take]="pageSize"
21030
- [groups]="group"
21031
- [groupable]="groupable"
21032
- [skip]="skip"
21033
- [trackBy]="trackBy"
21034
- [columns]="columnsContainer"
21035
- [selectable]="selectable"
21036
- [filterable]="filterable"
21037
- [detailTemplate]="detailTemplate"
21038
- [noRecordsTemplate]="noRecordsTemplate"
21039
- [size]="size"
21040
- (pageChange)="notifyPageChange('list', $event)"
21041
- [rowClass]="rowClass"
21042
- [rowSticky]="rowSticky"
21043
- [loading]="loading"
21044
- [isVirtual]="isVirtual"
21045
- [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21046
- [loadingTemplate]="loadingTemplate?.templateRef"
21047
- [virtualColumns]="virtualColumns"
21048
- (scrollBottom)="notifyScrollBottom()"
21049
- (contentScroll)="contentScroll.emit($event)"
21050
- kendoDraggable
21051
- kendoGridSelectionMarquee
21052
- [enableDrag]="marqueeSelection"
21053
- [sort]="sort"
21054
- >
21055
- </kendo-grid-list>
21056
- <div
21057
- *ngIf="showFooter"
21058
- class="k-grid-footer"
21059
- [style.padding]="headerPadding">
21060
- <div
21061
- *ngIf="lockedLeafColumns.length"
21062
- class="k-grid-footer-locked"
21063
- [style.width.px]="lockedWidth">
21064
- <table
21065
- role="presentation"
21066
- class="k-grid-footer-table"
21067
- [locked]="true"
21068
- [style.width.px]="lockedWidth"
21069
- kendoGridTable
21070
- [size]="size">
21071
- <colgroup kendoGridColGroup
21072
- [columns]="$any(lockedLeafColumns)"
21073
- [groups]="group"
21074
- [detailTemplate]="detailTemplate">
21075
- </colgroup>
21076
- <tfoot kendoGridFooter
21077
- [scrollable]="true"
21078
- [groups]="group"
21079
- [columns]="$any(lockedLeafColumns)"
21080
- [detailTemplate]="detailTemplate"
21081
- [logicalRowIndex]="ariaRowCount">
21082
- </tfoot>
21083
- </table>
21084
- </div>
21085
- <div #footer
21086
- class="k-grid-footer-wrap" data-scrollable
21087
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21088
- [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21089
- <table
21090
- role="presentation"
21091
- class="k-grid-footer-table"
21092
- [style.width.px]="nonLockedWidth"
21093
- kendoGridTable
21094
- [size]="size">
21095
- <colgroup kendoGridColGroup
21096
- [columns]="$any(nonLockedLeafColumns)"
21097
- [groups]="isLocked ? [] : group"
21098
- [detailTemplate]="detailTemplate">
21099
- </colgroup>
21100
- <tfoot kendoGridFooter
21101
- [logicalRowIndex]="ariaRowCount"
21102
- [scrollable]="true"
21103
- [groups]="isLocked ? [] : group"
21104
- [columns]="$any(nonLockedLeafColumns)"
21105
- [lockedColumnsCount]="lockedLeafColumns.length"
21106
- [detailTemplate]="detailTemplate">
21107
- </tfoot>
21108
- </table>
21109
- </div>
21110
- </div>
21111
- </ng-container>
21112
- <ng-container *ngIf="!isScrollable">
21113
- <table
21114
- [style.table-layout]="resizable ? 'fixed' : null"
21115
- kendoGridTable
21116
- [size]="size">
21117
- <colgroup kendoGridColGroup
21118
- [columns]="$any(leafColumns)"
21119
- [groups]="group"
21120
- [detailTemplate]="detailTemplate">
21121
- </colgroup>
21122
- <thead kendoGridHeader
21123
- *ngIf="!hideHeader"
21124
- [resizable]="resizable"
21125
- [scrollable]="false"
21126
- [columns]="$any(visibleColumns)"
21127
- [totalColumnLevels]="totalColumnLevels"
21128
- [groups]="group"
21129
- [groupable]="showGroupPanel"
21130
- [reorderable]="reorderable"
21131
- [sort]="sort"
21132
- [sortable]="sortable"
21133
- [filter]="filter"
21134
- [filterable]="filterable"
21135
- [columnMenu]="columnMenuOptions"
21136
- [columnMenuTemplate]="columnMenuTemplate"
21137
- [detailTemplate]="detailTemplate"
21138
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21139
- </thead>
21140
- <tbody kendoGridTableBody
21141
- [isLoading]="loading"
21142
- [groups]="group"
21343
+ <kendo-grid-list
21344
+ kendoDragTargetContainer
21345
+ kendoDropTargetContainer
21346
+ mode="manual"
21347
+ [dragDisabled]="!rowReorderable"
21348
+ [dropDisabled]="!rowReorderable"
21349
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21350
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21351
+ [dragHandle]="getDefaultSelectors('handle')"
21352
+ [hint]="{hintTemplate: defaultHint}"
21353
+ (onPress)="handleReorderEvents($event, 'press')"
21354
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
21355
+ (onDrag)="handleReorderEvents($event, 'drag')"
21356
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21357
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21358
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21359
+ (onDrop)="handleReorderEvents($event, 'drop')"
21360
+ [dragData]="gridData"
21143
21361
  [data]="$any(view)"
21362
+ [rowHeight]="rowHeight"
21363
+ [detailRowHeight]="detailRowHeight"
21364
+ [total]="totalCount"
21365
+ [take]="pageSize"
21366
+ [groups]="group"
21367
+ [groupable]="groupable"
21144
21368
  [skip]="skip"
21145
- [columns]="$any(leafColumns)"
21369
+ [trackBy]="trackBy"
21370
+ [columns]="columnsContainer"
21146
21371
  [selectable]="selectable"
21147
21372
  [filterable]="filterable"
21148
- [noRecordsTemplate]="noRecordsTemplate"
21149
21373
  [detailTemplate]="detailTemplate"
21150
- [showGroupFooters]="showGroupFooters"
21151
- [trackBy]="trackBy"
21374
+ [noRecordsTemplate]="noRecordsTemplate"
21375
+ [size]="size"
21376
+ (pageChange)="notifyPageChange('list', $event)"
21152
21377
  [rowClass]="rowClass"
21378
+ [rowSticky]="rowSticky"
21379
+ [loading]="loading"
21380
+ [isVirtual]="isVirtual"
21381
+ [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21382
+ [loadingTemplate]="loadingTemplate?.templateRef"
21383
+ [virtualColumns]="virtualColumns"
21384
+ (scrollBottom)="notifyScrollBottom()"
21385
+ (contentScroll)="contentScroll.emit($event)"
21153
21386
  kendoDraggable
21154
21387
  kendoGridSelectionMarquee
21155
- [enableDrag]="marqueeSelection">
21156
- </tbody>
21157
- <tfoot kendoGridFooter
21388
+ [enableDrag]="marqueeSelection"
21389
+ [sort]="sort">
21390
+ </kendo-grid-list>
21391
+ <div
21158
21392
  *ngIf="showFooter"
21159
- [scrollable]="false"
21160
- [logicalRowIndex]="ariaRowCount"
21161
- [groups]="group"
21162
- [columns]="$any(leafColumns)"
21163
- [detailTemplate]="detailTemplate">
21164
- </tfoot>
21165
- </table>
21166
- </ng-container>
21167
- <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading>
21168
- </div>
21393
+ class="k-grid-footer"
21394
+ [style.padding]="headerPadding">
21395
+ <div
21396
+ *ngIf="lockedLeafColumns.length"
21397
+ class="k-grid-footer-locked"
21398
+ [style.width.px]="lockedWidth">
21399
+ <table
21400
+ role="presentation"
21401
+ class="k-grid-footer-table"
21402
+ [locked]="true"
21403
+ [style.width.px]="lockedWidth"
21404
+ kendoGridTable
21405
+ [size]="size">
21406
+ <colgroup kendoGridColGroup
21407
+ [columns]="$any(lockedLeafColumns)"
21408
+ [groups]="group"
21409
+ [detailTemplate]="detailTemplate">
21410
+ </colgroup>
21411
+ <tfoot kendoGridFooter
21412
+ [scrollable]="true"
21413
+ [groups]="group"
21414
+ [columns]="$any(lockedLeafColumns)"
21415
+ [detailTemplate]="detailTemplate"
21416
+ [logicalRowIndex]="ariaRowCount">
21417
+ </tfoot>
21418
+ </table>
21419
+ </div>
21420
+ <div #footer
21421
+ class="k-grid-footer-wrap" data-scrollable
21422
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21423
+ [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21424
+ <table
21425
+ role="presentation"
21426
+ class="k-grid-footer-table"
21427
+ [style.width.px]="nonLockedWidth"
21428
+ kendoGridTable
21429
+ [size]="size">
21430
+ <colgroup kendoGridColGroup
21431
+ [columns]="$any(nonLockedLeafColumns)"
21432
+ [groups]="isLocked ? [] : group"
21433
+ [detailTemplate]="detailTemplate">
21434
+ </colgroup>
21435
+ <tfoot kendoGridFooter
21436
+ [logicalRowIndex]="ariaRowCount"
21437
+ [scrollable]="true"
21438
+ [groups]="isLocked ? [] : group"
21439
+ [columns]="$any(nonLockedLeafColumns)"
21440
+ [lockedColumnsCount]="lockedLeafColumns.length"
21441
+ [detailTemplate]="detailTemplate">
21442
+ </tfoot>
21443
+ </table>
21444
+ </div>
21445
+ </div>
21446
+ </ng-container>
21447
+ <ng-container *ngIf="!isScrollable">
21448
+ <table
21449
+ [style.table-layout]="resizable ? 'fixed' : null"
21450
+ kendoGridTable
21451
+ [size]="size">
21452
+ <colgroup kendoGridColGroup
21453
+ [columns]="$any(leafColumns)"
21454
+ [groups]="group"
21455
+ [detailTemplate]="detailTemplate">
21456
+ </colgroup>
21457
+ <thead kendoGridHeader
21458
+ *ngIf="!hideHeader"
21459
+ [resizable]="resizable"
21460
+ [scrollable]="false"
21461
+ [columns]="$any(visibleColumns)"
21462
+ [totalColumnLevels]="totalColumnLevels"
21463
+ [groups]="group"
21464
+ [groupable]="showGroupPanel"
21465
+ [reorderable]="reorderable"
21466
+ [sort]="sort"
21467
+ [sortable]="sortable"
21468
+ [filter]="filter"
21469
+ [filterable]="filterable"
21470
+ [columnMenu]="columnMenuOptions"
21471
+ [columnMenuTemplate]="columnMenuTemplate"
21472
+ [detailTemplate]="detailTemplate"
21473
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21474
+ </thead>
21475
+ <tbody kendoGridTableBody
21476
+ [isLoading]="loading"
21477
+ [groups]="group"
21478
+ [data]="$any(view)"
21479
+ [skip]="skip"
21480
+ [columns]="$any(leafColumns)"
21481
+ [selectable]="selectable"
21482
+ [filterable]="filterable"
21483
+ [noRecordsTemplate]="noRecordsTemplate"
21484
+ [detailTemplate]="detailTemplate"
21485
+ [showGroupFooters]="showGroupFooters"
21486
+ [trackBy]="trackBy"
21487
+ [rowClass]="rowClass"
21488
+ kendoDraggable
21489
+ kendoGridSelectionMarquee
21490
+ [enableDrag]="marqueeSelection">
21491
+ </tbody>
21492
+ <tfoot kendoGridFooter
21493
+ *ngIf="showFooter"
21494
+ [scrollable]="false"
21495
+ [logicalRowIndex]="ariaRowCount"
21496
+ [groups]="group"
21497
+ [columns]="$any(leafColumns)"
21498
+ [detailTemplate]="detailTemplate">
21499
+ </tfoot>
21500
+ </table>
21501
+ </ng-container>
21502
+ <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading></div>
21169
21503
  </div>
21504
+ <kendo-grid-status-bar
21505
+ *ngIf="showStatusBar"
21506
+ [selectableSettings]="selectable"
21507
+ [statusBarTemplate]="statusBarTemplate">
21508
+ </kendo-grid-status-bar>
21170
21509
  <kendo-pager
21171
21510
  *ngIf="showBottomPager"
21172
21511
  [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
@@ -21198,7 +21537,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21198
21537
  </kendo-icon-wrapper>
21199
21538
  {{hintText}}
21200
21539
  </ng-template>
21201
- `, 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 });
21540
+ `, 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 });
21202
21541
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21203
21542
  type: Component,
21204
21543
  args: [{
@@ -21298,6 +21637,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21298
21637
 
21299
21638
  i18n-filterMenuOperatorsDropDownLabel="kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown"
21300
21639
  filterMenuOperatorsDropDownLabel="{{ '{columnName} Filter Operators' }}"
21640
+
21641
+ i18n-filterCellOperatorLabel="kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown"
21642
+ filterCellOperatorLabel="{{ 'Filter cell operators for {columnName}' }}"
21643
+
21644
+ i18n-booleanFilterCellLabel="kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown"
21645
+ booleanFilterCellLabel="{{ 'Boolean filter cell for {columnName}' }}"
21301
21646
 
21302
21647
  i18n-filterMenuLogicDropDownLabel="kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown"
21303
21648
  filterMenuLogicDropDownLabel="{{ '{columnName} Filter Logic' }}"
@@ -21497,285 +21842,286 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21497
21842
  [navigable]="navigation.toolbarEnabled"
21498
21843
  [attr.aria-controls]="ariaRootId"
21499
21844
  position="top"></kendo-grid-toolbar>
21500
- <kendo-pager
21501
- *ngIf="showTopPager"
21502
- [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21503
- [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21504
- class="k-grid-pager-top k-pager"
21505
- [template]="pagerTemplate"
21506
- [pageSize]="pageSize"
21507
- [total]="view.total"
21508
- [skip]="skip"
21509
- [size]="size"
21510
- [options]="pageable"
21511
- (pageChange)="notifyPageChange('pager', $event)">
21512
- </kendo-pager>
21513
- <kendo-grid-group-panel
21514
- *ngIf="showGroupPanel"
21515
- [navigable]="navigation.toolbarEnabled"
21516
- [text]="groupableEmptyText"
21517
- [groups]="group"
21518
- role="toolbar"
21519
- [attr.aria-label]="messageFor('groupPanelLabel')"
21520
- [attr.aria-controls]="ariaRootId"
21521
- (change)="groupChange.emit($event)">
21522
- </kendo-grid-group-panel>
21523
- <div #ariaRoot
21524
- class="k-grid-aria-root"
21525
- role="grid"
21526
- [id]="ariaRootId"
21527
- [attr.aria-label]="ariaLabel"
21528
- [attr.aria-rowcount]="ariaRowCount"
21529
- [attr.aria-colcount]="ariaColCount">
21530
- <ng-container *ngIf="isScrollable">
21531
- <div *ngIf="!hideHeader"
21532
- class="k-grid-header"
21533
- role="presentation"
21534
- [style.padding]="headerPadding">
21535
- <div *ngIf="isLocked"
21536
- #lockedHeader
21537
- role="presentation"
21538
- class="k-grid-header-locked"
21539
- [style.width.px]="lockedWidth">
21540
- <table
21541
- [locked]="true"
21845
+ <kendo-pager
21846
+ *ngIf="showTopPager"
21847
+ [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
21848
+ [attr.role]="navigation.pagerEnabled ? 'application' : undefined"
21849
+ class="k-grid-pager-top k-pager"
21850
+ [template]="pagerTemplate"
21851
+ [pageSize]="pageSize"
21852
+ [total]="view.total"
21853
+ [skip]="skip"
21854
+ [size]="size"
21855
+ [options]="pageable"
21856
+ (pageChange)="notifyPageChange('pager', $event)">
21857
+ </kendo-pager>
21858
+ <kendo-grid-group-panel
21859
+ *ngIf="showGroupPanel"
21860
+ [navigable]="navigation.toolbarEnabled"
21861
+ [text]="groupableEmptyText"
21862
+ [groups]="group"
21863
+ role="toolbar"
21864
+ [attr.aria-label]="messageFor('groupPanelLabel')"
21865
+ [attr.aria-controls]="ariaRootId"
21866
+ (change)="groupChange.emit($event)">
21867
+ </kendo-grid-group-panel>
21868
+ <div #ariaRoot
21869
+ class="k-grid-aria-root"
21870
+ role="grid"
21871
+ [id]="ariaRootId"
21872
+ [attr.aria-label]="ariaLabel"
21873
+ [attr.aria-rowcount]="ariaRowCount"
21874
+ [attr.aria-colcount]="ariaColCount">
21875
+ <ng-container *ngIf="isScrollable">
21876
+ <div *ngIf="!hideHeader"
21877
+ class="k-grid-header"
21878
+ role="presentation"
21879
+ [style.padding]="headerPadding">
21880
+ <div *ngIf="isLocked"
21881
+ #lockedHeader
21542
21882
  role="presentation"
21543
- class="k-grid-header-table"
21544
- [style.width.px]="lockedWidth"
21545
- kendoGridTable
21546
- [size]="size">
21547
- <colgroup kendoGridColGroup
21883
+ class="k-grid-header-locked"
21884
+ [style.width.px]="lockedWidth">
21885
+ <table
21886
+ [locked]="true"
21548
21887
  role="presentation"
21549
- [columns]="$any(lockedLeafColumns)"
21550
- [groups]="group"
21551
- [detailTemplate]="detailTemplate">
21552
- </colgroup>
21553
- <thead kendoGridHeader
21554
- role="rowgroup"
21555
- [resizable]="resizable"
21556
- [scrollable]="true"
21557
- [columns]="$any(lockedColumns)"
21558
- [totalColumnLevels]="totalColumnLevels"
21559
- [sort]="sort"
21560
- [groups]="group"
21561
- [filter]="filter"
21562
- [filterable]="filterable"
21563
- [groupable]="showGroupPanel"
21564
- [reorderable]="reorderable"
21565
- [sortable]="sortable"
21566
- [columnMenu]="columnMenuOptions"
21567
- [columnMenuTemplate]="columnMenuTemplate"
21568
- [totalColumnsCount]="leafColumns.length"
21569
- [detailTemplate]="detailTemplate"
21570
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21571
- </thead>
21572
- </table>
21573
- </div>
21574
- <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21575
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21576
- [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21577
- <table
21578
- role="presentation"
21579
- class="k-grid-header-table"
21580
- [style.width.px]="nonLockedWidth"
21581
- [virtualColumns]="virtualColumns"
21582
- kendoGridTable
21583
- [size]="size">
21584
- <colgroup kendoGridColGroup
21888
+ class="k-grid-header-table"
21889
+ [style.width.px]="lockedWidth"
21890
+ kendoGridTable
21891
+ [size]="size">
21892
+ <colgroup kendoGridColGroup
21893
+ [columns]="$any(lockedLeafColumns)"
21894
+ [groups]="group"
21895
+ [detailTemplate]="detailTemplate">
21896
+ </colgroup>
21897
+ <thead kendoGridHeader
21898
+ role="rowgroup"
21899
+ [resizable]="resizable"
21900
+ [scrollable]="true"
21901
+ [columns]="$any(lockedColumns)"
21902
+ [totalColumnLevels]="totalColumnLevels"
21903
+ [sort]="sort"
21904
+ [groups]="group"
21905
+ [filter]="filter"
21906
+ [filterable]="filterable"
21907
+ [groupable]="showGroupPanel"
21908
+ [reorderable]="reorderable"
21909
+ [sortable]="sortable"
21910
+ [columnMenu]="columnMenuOptions"
21911
+ [columnMenuTemplate]="columnMenuTemplate"
21912
+ [totalColumnsCount]="leafColumns.length"
21913
+ [detailTemplate]="detailTemplate"
21914
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21915
+ </thead>
21916
+ </table>
21917
+ </div>
21918
+ <div #header class="k-grid-header-wrap" role="presentation" data-scrollable
21919
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21920
+ [lockedWidth]="lockedWidth + scrollbarWidth + 2">
21921
+ <table
21585
21922
  role="presentation"
21586
- [columns]="headerLeafColumns"
21587
- [groups]="isLocked ? [] : group"
21588
- [detailTemplate]="detailTemplate">
21589
- </colgroup>
21590
- <thead kendoGridHeader
21591
- [resizable]="resizable"
21592
- role="rowgroup"
21593
- [scrollable]="true"
21594
- [columns]="headerColumns"
21595
- [totalColumnLevels]="totalColumnLevels"
21596
- [sort]="sort"
21597
- [filter]="filter"
21598
- [filterable]="filterable"
21599
- [groupable]="showGroupPanel"
21600
- [reorderable]="reorderable"
21601
- [groups]="isLocked ? [] : group"
21602
- [sortable]="sortable"
21603
- [columnMenu]="columnMenuOptions"
21604
- [columnMenuTemplate]="columnMenuTemplate"
21605
- [lockedColumnsCount]="lockedLeafColumns.length"
21606
- [totalColumnsCount]="leafColumns.length"
21607
- [detailTemplate]="detailTemplate"
21608
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21609
- </thead>
21610
- </table>
21611
- <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21612
- <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21923
+ class="k-grid-header-table"
21924
+ [style.width.px]="nonLockedWidth"
21925
+ [virtualColumns]="virtualColumns"
21926
+ kendoGridTable
21927
+ [size]="size">
21928
+ <colgroup kendoGridColGroup
21929
+ [columns]="headerLeafColumns"
21930
+ [groups]="isLocked ? [] : group"
21931
+ [detailTemplate]="detailTemplate">
21932
+ </colgroup>
21933
+ <thead kendoGridHeader
21934
+ [resizable]="resizable"
21935
+ role="rowgroup"
21936
+ [scrollable]="true"
21937
+ [columns]="headerColumns"
21938
+ [totalColumnLevels]="totalColumnLevels"
21939
+ [sort]="sort"
21940
+ [filter]="filter"
21941
+ [filterable]="filterable"
21942
+ [groupable]="showGroupPanel"
21943
+ [reorderable]="reorderable"
21944
+ [groups]="isLocked ? [] : group"
21945
+ [sortable]="sortable"
21946
+ [columnMenu]="columnMenuOptions"
21947
+ [columnMenuTemplate]="columnMenuTemplate"
21948
+ [lockedColumnsCount]="lockedLeafColumns.length"
21949
+ [totalColumnsCount]="leafColumns.length"
21950
+ [detailTemplate]="detailTemplate"
21951
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21952
+ </thead>
21953
+ </table>
21954
+ <div *ngIf="virtualColumns" class="k-width-container" role="presentation">
21955
+ <div [style.width.px]="columnsContainer.unlockedWidth"></div>
21956
+ </div>
21613
21957
  </div>
21614
21958
  </div>
21615
- </div>
21616
- <kendo-grid-list
21617
- kendoDragTargetContainer
21618
- kendoDropTargetContainer
21619
- mode="manual"
21620
- [dragDisabled]="!rowReorderable"
21621
- [dropDisabled]="!rowReorderable"
21622
- [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21623
- [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21624
- [dragHandle]="getDefaultSelectors('handle')"
21625
- [hint]="{hintTemplate: defaultHint}"
21626
- (onPress)="handleReorderEvents($event, 'press')"
21627
- (onDragStart)="handleReorderEvents($event, 'dragStart')"
21628
- (onDrag)="handleReorderEvents($event, 'drag')"
21629
- (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21630
- (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21631
- (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21632
- (onDrop)="handleReorderEvents($event, 'drop')"
21633
- [dragData]="gridData"
21634
- [data]="$any(view)"
21635
- [rowHeight]="rowHeight"
21636
- [detailRowHeight]="detailRowHeight"
21637
- [total]="totalCount"
21638
- [take]="pageSize"
21639
- [groups]="group"
21640
- [groupable]="groupable"
21641
- [skip]="skip"
21642
- [trackBy]="trackBy"
21643
- [columns]="columnsContainer"
21644
- [selectable]="selectable"
21645
- [filterable]="filterable"
21646
- [detailTemplate]="detailTemplate"
21647
- [noRecordsTemplate]="noRecordsTemplate"
21648
- [size]="size"
21649
- (pageChange)="notifyPageChange('list', $event)"
21650
- [rowClass]="rowClass"
21651
- [rowSticky]="rowSticky"
21652
- [loading]="loading"
21653
- [isVirtual]="isVirtual"
21654
- [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21655
- [loadingTemplate]="loadingTemplate?.templateRef"
21656
- [virtualColumns]="virtualColumns"
21657
- (scrollBottom)="notifyScrollBottom()"
21658
- (contentScroll)="contentScroll.emit($event)"
21659
- kendoDraggable
21660
- kendoGridSelectionMarquee
21661
- [enableDrag]="marqueeSelection"
21662
- [sort]="sort"
21663
- >
21664
- </kendo-grid-list>
21665
- <div
21666
- *ngIf="showFooter"
21667
- class="k-grid-footer"
21668
- [style.padding]="headerPadding">
21669
- <div
21670
- *ngIf="lockedLeafColumns.length"
21671
- class="k-grid-footer-locked"
21672
- [style.width.px]="lockedWidth">
21673
- <table
21674
- role="presentation"
21675
- class="k-grid-footer-table"
21676
- [locked]="true"
21677
- [style.width.px]="lockedWidth"
21678
- kendoGridTable
21679
- [size]="size">
21680
- <colgroup kendoGridColGroup
21681
- [columns]="$any(lockedLeafColumns)"
21682
- [groups]="group"
21683
- [detailTemplate]="detailTemplate">
21684
- </colgroup>
21685
- <tfoot kendoGridFooter
21686
- [scrollable]="true"
21687
- [groups]="group"
21688
- [columns]="$any(lockedLeafColumns)"
21689
- [detailTemplate]="detailTemplate"
21690
- [logicalRowIndex]="ariaRowCount">
21691
- </tfoot>
21692
- </table>
21693
- </div>
21694
- <div #footer
21695
- class="k-grid-footer-wrap" data-scrollable
21696
- [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
21697
- [lockedWidth]="lockedWidth + scrollbarWidth + 3">
21698
- <table
21699
- role="presentation"
21700
- class="k-grid-footer-table"
21701
- [style.width.px]="nonLockedWidth"
21702
- kendoGridTable
21703
- [size]="size">
21704
- <colgroup kendoGridColGroup
21705
- [columns]="$any(nonLockedLeafColumns)"
21706
- [groups]="isLocked ? [] : group"
21707
- [detailTemplate]="detailTemplate">
21708
- </colgroup>
21709
- <tfoot kendoGridFooter
21710
- [logicalRowIndex]="ariaRowCount"
21711
- [scrollable]="true"
21712
- [groups]="isLocked ? [] : group"
21713
- [columns]="$any(nonLockedLeafColumns)"
21714
- [lockedColumnsCount]="lockedLeafColumns.length"
21715
- [detailTemplate]="detailTemplate">
21716
- </tfoot>
21717
- </table>
21718
- </div>
21719
- </div>
21720
- </ng-container>
21721
- <ng-container *ngIf="!isScrollable">
21722
- <table
21723
- [style.table-layout]="resizable ? 'fixed' : null"
21724
- kendoGridTable
21725
- [size]="size">
21726
- <colgroup kendoGridColGroup
21727
- [columns]="$any(leafColumns)"
21728
- [groups]="group"
21729
- [detailTemplate]="detailTemplate">
21730
- </colgroup>
21731
- <thead kendoGridHeader
21732
- *ngIf="!hideHeader"
21733
- [resizable]="resizable"
21734
- [scrollable]="false"
21735
- [columns]="$any(visibleColumns)"
21736
- [totalColumnLevels]="totalColumnLevels"
21737
- [groups]="group"
21738
- [groupable]="showGroupPanel"
21739
- [reorderable]="reorderable"
21740
- [sort]="sort"
21741
- [sortable]="sortable"
21742
- [filter]="filter"
21743
- [filterable]="filterable"
21744
- [columnMenu]="columnMenuOptions"
21745
- [columnMenuTemplate]="columnMenuTemplate"
21746
- [detailTemplate]="detailTemplate"
21747
- [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
21748
- </thead>
21749
- <tbody kendoGridTableBody
21750
- [isLoading]="loading"
21751
- [groups]="group"
21959
+ <kendo-grid-list
21960
+ kendoDragTargetContainer
21961
+ kendoDropTargetContainer
21962
+ mode="manual"
21963
+ [dragDisabled]="!rowReorderable"
21964
+ [dropDisabled]="!rowReorderable"
21965
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21966
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21967
+ [dragHandle]="getDefaultSelectors('handle')"
21968
+ [hint]="{hintTemplate: defaultHint}"
21969
+ (onPress)="handleReorderEvents($event, 'press')"
21970
+ (onDragStart)="handleReorderEvents($event, 'dragStart')"
21971
+ (onDrag)="handleReorderEvents($event, 'drag')"
21972
+ (onDragEnter)="handleReorderEvents($event, 'dragEnter')"
21973
+ (onDragLeave)="handleReorderEvents($event, 'dragLeave')"
21974
+ (onDragEnd)="handleReorderEvents($event, 'dragEnd')"
21975
+ (onDrop)="handleReorderEvents($event, 'drop')"
21976
+ [dragData]="gridData"
21752
21977
  [data]="$any(view)"
21978
+ [rowHeight]="rowHeight"
21979
+ [detailRowHeight]="detailRowHeight"
21980
+ [total]="totalCount"
21981
+ [take]="pageSize"
21982
+ [groups]="group"
21983
+ [groupable]="groupable"
21753
21984
  [skip]="skip"
21754
- [columns]="$any(leafColumns)"
21985
+ [trackBy]="trackBy"
21986
+ [columns]="columnsContainer"
21755
21987
  [selectable]="selectable"
21756
21988
  [filterable]="filterable"
21757
- [noRecordsTemplate]="noRecordsTemplate"
21758
21989
  [detailTemplate]="detailTemplate"
21759
- [showGroupFooters]="showGroupFooters"
21760
- [trackBy]="trackBy"
21990
+ [noRecordsTemplate]="noRecordsTemplate"
21991
+ [size]="size"
21992
+ (pageChange)="notifyPageChange('list', $event)"
21761
21993
  [rowClass]="rowClass"
21994
+ [rowSticky]="rowSticky"
21995
+ [loading]="loading"
21996
+ [isVirtual]="isVirtual"
21997
+ [cellLoadingTemplate]="cellLoadingTemplate?.templateRef"
21998
+ [loadingTemplate]="loadingTemplate?.templateRef"
21999
+ [virtualColumns]="virtualColumns"
22000
+ (scrollBottom)="notifyScrollBottom()"
22001
+ (contentScroll)="contentScroll.emit($event)"
21762
22002
  kendoDraggable
21763
22003
  kendoGridSelectionMarquee
21764
- [enableDrag]="marqueeSelection">
21765
- </tbody>
21766
- <tfoot kendoGridFooter
22004
+ [enableDrag]="marqueeSelection"
22005
+ [sort]="sort">
22006
+ </kendo-grid-list>
22007
+ <div
21767
22008
  *ngIf="showFooter"
21768
- [scrollable]="false"
21769
- [logicalRowIndex]="ariaRowCount"
21770
- [groups]="group"
21771
- [columns]="$any(leafColumns)"
21772
- [detailTemplate]="detailTemplate">
21773
- </tfoot>
21774
- </table>
21775
- </ng-container>
21776
- <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading>
21777
- </div>
22009
+ class="k-grid-footer"
22010
+ [style.padding]="headerPadding">
22011
+ <div
22012
+ *ngIf="lockedLeafColumns.length"
22013
+ class="k-grid-footer-locked"
22014
+ [style.width.px]="lockedWidth">
22015
+ <table
22016
+ role="presentation"
22017
+ class="k-grid-footer-table"
22018
+ [locked]="true"
22019
+ [style.width.px]="lockedWidth"
22020
+ kendoGridTable
22021
+ [size]="size">
22022
+ <colgroup kendoGridColGroup
22023
+ [columns]="$any(lockedLeafColumns)"
22024
+ [groups]="group"
22025
+ [detailTemplate]="detailTemplate">
22026
+ </colgroup>
22027
+ <tfoot kendoGridFooter
22028
+ [scrollable]="true"
22029
+ [groups]="group"
22030
+ [columns]="$any(lockedLeafColumns)"
22031
+ [detailTemplate]="detailTemplate"
22032
+ [logicalRowIndex]="ariaRowCount">
22033
+ </tfoot>
22034
+ </table>
22035
+ </div>
22036
+ <div #footer
22037
+ class="k-grid-footer-wrap" data-scrollable
22038
+ [kendoGridResizableContainer]="lockedLeafColumns.length > 0"
22039
+ [lockedWidth]="lockedWidth + scrollbarWidth + 3">
22040
+ <table
22041
+ role="presentation"
22042
+ class="k-grid-footer-table"
22043
+ [style.width.px]="nonLockedWidth"
22044
+ kendoGridTable
22045
+ [size]="size">
22046
+ <colgroup kendoGridColGroup
22047
+ [columns]="$any(nonLockedLeafColumns)"
22048
+ [groups]="isLocked ? [] : group"
22049
+ [detailTemplate]="detailTemplate">
22050
+ </colgroup>
22051
+ <tfoot kendoGridFooter
22052
+ [logicalRowIndex]="ariaRowCount"
22053
+ [scrollable]="true"
22054
+ [groups]="isLocked ? [] : group"
22055
+ [columns]="$any(nonLockedLeafColumns)"
22056
+ [lockedColumnsCount]="lockedLeafColumns.length"
22057
+ [detailTemplate]="detailTemplate">
22058
+ </tfoot>
22059
+ </table>
22060
+ </div>
22061
+ </div>
22062
+ </ng-container>
22063
+ <ng-container *ngIf="!isScrollable">
22064
+ <table
22065
+ [style.table-layout]="resizable ? 'fixed' : null"
22066
+ kendoGridTable
22067
+ [size]="size">
22068
+ <colgroup kendoGridColGroup
22069
+ [columns]="$any(leafColumns)"
22070
+ [groups]="group"
22071
+ [detailTemplate]="detailTemplate">
22072
+ </colgroup>
22073
+ <thead kendoGridHeader
22074
+ *ngIf="!hideHeader"
22075
+ [resizable]="resizable"
22076
+ [scrollable]="false"
22077
+ [columns]="$any(visibleColumns)"
22078
+ [totalColumnLevels]="totalColumnLevels"
22079
+ [groups]="group"
22080
+ [groupable]="showGroupPanel"
22081
+ [reorderable]="reorderable"
22082
+ [sort]="sort"
22083
+ [sortable]="sortable"
22084
+ [filter]="filter"
22085
+ [filterable]="filterable"
22086
+ [columnMenu]="columnMenuOptions"
22087
+ [columnMenuTemplate]="columnMenuTemplate"
22088
+ [detailTemplate]="detailTemplate"
22089
+ [tabIndex]="navigation.tableEnabled ? '-1' : '0'">
22090
+ </thead>
22091
+ <tbody kendoGridTableBody
22092
+ [isLoading]="loading"
22093
+ [groups]="group"
22094
+ [data]="$any(view)"
22095
+ [skip]="skip"
22096
+ [columns]="$any(leafColumns)"
22097
+ [selectable]="selectable"
22098
+ [filterable]="filterable"
22099
+ [noRecordsTemplate]="noRecordsTemplate"
22100
+ [detailTemplate]="detailTemplate"
22101
+ [showGroupFooters]="showGroupFooters"
22102
+ [trackBy]="trackBy"
22103
+ [rowClass]="rowClass"
22104
+ kendoDraggable
22105
+ kendoGridSelectionMarquee
22106
+ [enableDrag]="marqueeSelection">
22107
+ </tbody>
22108
+ <tfoot kendoGridFooter
22109
+ *ngIf="showFooter"
22110
+ [scrollable]="false"
22111
+ [logicalRowIndex]="ariaRowCount"
22112
+ [groups]="group"
22113
+ [columns]="$any(leafColumns)"
22114
+ [detailTemplate]="detailTemplate">
22115
+ </tfoot>
22116
+ </table>
22117
+ </ng-container>
22118
+ <div [loadingTemplate]="loadingTemplate" *ngIf="loading" kendoGridLoading></div>
21778
22119
  </div>
22120
+ <kendo-grid-status-bar
22121
+ *ngIf="showStatusBar"
22122
+ [selectableSettings]="selectable"
22123
+ [statusBarTemplate]="statusBarTemplate">
22124
+ </kendo-grid-status-bar>
21779
22125
  <kendo-pager
21780
22126
  *ngIf="showBottomPager"
21781
22127
  [tabindex]="navigation.pagerEnabled ? '0' : '-1'"
@@ -21958,6 +22304,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21958
22304
  }], loadingTemplateChildren: [{
21959
22305
  type: ContentChildren,
21960
22306
  args: [LoadingTemplateDirective]
22307
+ }], statusBarTemplateChildren: [{
22308
+ type: ContentChildren,
22309
+ args: [StatusBarTemplateDirective]
21961
22310
  }], noRecordsTemplateChildren: [{
21962
22311
  type: ContentChildren,
21963
22312
  args: [NoRecordsTemplateDirective]
@@ -25265,6 +25614,7 @@ const exportedModules$1 = [
25265
25614
  ToolbarTemplateDirective,
25266
25615
  ToolbarComponent,
25267
25616
  GridSpacerComponent,
25617
+ StatusBarTemplateDirective,
25268
25618
  DataBindingDirective,
25269
25619
  SelectionDirective,
25270
25620
  CustomMessagesComponent,
@@ -25302,7 +25652,9 @@ const declarations$2 = [
25302
25652
  GroupBindingDirective,
25303
25653
  GridMarqueeDirective,
25304
25654
  GridSpacerComponent,
25305
- GridToolbarFocusableDirective
25655
+ GridToolbarFocusableDirective,
25656
+ StatusBarComponent,
25657
+ StatusBarTemplateDirective
25306
25658
  ];
25307
25659
  /**
25308
25660
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -25344,7 +25696,9 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25344
25696
  GroupBindingDirective,
25345
25697
  GridMarqueeDirective,
25346
25698
  GridSpacerComponent,
25347
- GridToolbarFocusableDirective], imports: [CommonModule,
25699
+ GridToolbarFocusableDirective,
25700
+ StatusBarComponent,
25701
+ StatusBarTemplateDirective], imports: [CommonModule,
25348
25702
  GroupModule,
25349
25703
  SharedModule,
25350
25704
  BodyModule,
@@ -25359,6 +25713,7 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25359
25713
  ToolbarTemplateDirective,
25360
25714
  ToolbarComponent,
25361
25715
  GridSpacerComponent,
25716
+ StatusBarTemplateDirective,
25362
25717
  DataBindingDirective,
25363
25718
  SelectionDirective,
25364
25719
  CustomMessagesComponent,
@@ -26254,5 +26609,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26254
26609
  * Generated bundle index. Do not edit.
26255
26610
  */
26256
26611
 
26257
- 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 };
26612
+ 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 };
26258
26613