@progress/kendo-angular-pivotgrid 0.2.0-dev.202208250747 → 0.2.0-dev.202209021834

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 (58) hide show
  1. package/bundles/kendo-angular-pivotgrid.umd.js +1 -1
  2. package/configurator/chip-menu/chip-menu-container.component.d.ts +21 -0
  3. package/configurator/chip-menu/chip-menu-filter.component.d.ts +44 -0
  4. package/configurator/chip-menu/chip-menu-item-base.d.ts +22 -0
  5. package/configurator/chip-menu/chip-menu-item-content-template.directive.d.ts +18 -0
  6. package/configurator/chip-menu/chip-menu-item.component.d.ts +50 -0
  7. package/configurator/chip-menu/chip-menu-item.directive.d.ts +32 -0
  8. package/configurator/chip-menu/chip-menu-sort.component.d.ts +33 -0
  9. package/configurator/chip-menu/chip-menu.component.d.ts +35 -0
  10. package/configurator/chip-menu/chip-menu.module.d.ts +26 -0
  11. package/configurator/chip-menu/chip-menu.service.d.ts +22 -0
  12. package/configurator/chip-menu/filtering/filter-menu-container.component.d.ts +47 -0
  13. package/configurator/chip-menu/filtering/filter-menu-dropdownlist.directive.d.ts +19 -0
  14. package/configurator/chip-menu/filtering/menu-tabbing.service.d.ts +17 -0
  15. package/configurator/chip-menu/filtering/string-filter-menu.component.d.ts +53 -0
  16. package/configurator/chip-menu/single-popup.service.d.ts +50 -0
  17. package/configurator/configurator.component.d.ts +4 -1
  18. package/data-binding/base-binding-directive.d.ts +10 -1
  19. package/data-binding/pivotgrid-data.service.d.ts +2 -0
  20. package/esm2015/configurator/chip-menu/chip-menu-container.component.js +46 -0
  21. package/esm2015/configurator/chip-menu/chip-menu-filter.component.js +112 -0
  22. package/esm2015/configurator/chip-menu/chip-menu-item-base.js +36 -0
  23. package/esm2015/configurator/chip-menu/chip-menu-item-content-template.directive.js +27 -0
  24. package/esm2015/configurator/chip-menu/chip-menu-item.component.js +157 -0
  25. package/esm2015/configurator/chip-menu/chip-menu-item.directive.js +88 -0
  26. package/esm2015/configurator/chip-menu/chip-menu-sort.component.js +89 -0
  27. package/esm2015/configurator/chip-menu/chip-menu.component.js +130 -0
  28. package/esm2015/configurator/chip-menu/chip-menu.module.js +83 -0
  29. package/esm2015/configurator/chip-menu/chip-menu.service.js +28 -0
  30. package/esm2015/configurator/chip-menu/filtering/filter-menu-container.component.js +173 -0
  31. package/esm2015/configurator/chip-menu/filtering/filter-menu-dropdownlist.directive.js +38 -0
  32. package/esm2015/configurator/chip-menu/filtering/menu-tabbing.service.js +20 -0
  33. package/esm2015/configurator/chip-menu/filtering/string-filter-menu.component.js +133 -0
  34. package/esm2015/configurator/chip-menu/single-popup.service.js +121 -0
  35. package/esm2015/configurator/configurator.component.js +56 -33
  36. package/esm2015/configurator/configurator.service.js +2 -2
  37. package/esm2015/data-binding/base-binding-directive.js +17 -7
  38. package/esm2015/data-binding/local-binding.directive.js +3 -3
  39. package/esm2015/data-binding/olap-binding.directive.js +8 -5
  40. package/esm2015/localization/messages.js +3 -1
  41. package/esm2015/localization/pivot-localization.service.js +28 -0
  42. package/esm2015/models/configurator-settings.js +3 -1
  43. package/esm2015/package-metadata.js +1 -1
  44. package/esm2015/pivotgrid.component.js +79 -14
  45. package/esm2015/pivotgrid.module.js +9 -12
  46. package/esm2015/shared.module.js +40 -0
  47. package/esm2015/util.js +59 -28
  48. package/fesm2015/kendo-angular-pivotgrid.js +1507 -180
  49. package/localization/messages.d.ts +23 -1
  50. package/localization/pivot-localization.service.d.ts +19 -0
  51. package/models/configurator-settings.d.ts +4 -1
  52. package/package.json +3 -3
  53. package/pivotgrid.component.d.ts +20 -3
  54. package/pivotgrid.module.d.ts +6 -7
  55. package/schematics/ngAdd/index.js +1 -1
  56. package/schematics/ngAdd/index.js.map +1 -1
  57. package/shared.module.d.ts +17 -0
  58. package/util.d.ts +32 -8
@@ -8,17 +8,19 @@ import { DropCueService } from './drop-cue.service';
8
8
  import { from, of, Subscription } from 'rxjs';
9
9
  import { mergeMap } from 'rxjs/operators';
10
10
  import { clone } from '../util';
11
+ import { SinglePopupService } from './chip-menu/single-popup.service';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../data-binding/pivotgrid-data.service";
13
14
  import * as i2 from "@progress/kendo-angular-l10n";
14
15
  import * as i3 from "./configurator.service";
15
16
  import * as i4 from "@progress/kendo-angular-treeview";
16
17
  import * as i5 from "@progress/kendo-angular-buttons";
17
- import * as i6 from "@angular/common";
18
- import * as i7 from "@progress/kendo-angular-inputs";
19
- import * as i8 from "./drop-target.directive";
20
- import * as i9 from "./draggable.directive";
21
- import * as i10 from "@progress/kendo-angular-common";
18
+ import * as i6 from "./chip-menu/chip-menu.component";
19
+ import * as i7 from "@angular/common";
20
+ import * as i8 from "@progress/kendo-angular-inputs";
21
+ import * as i9 from "./drop-target.directive";
22
+ import * as i10 from "./draggable.directive";
23
+ import * as i11 from "@progress/kendo-angular-common";
22
24
  /**
23
25
  * @hidden
24
26
  * Represents the Kendo UI PivotGrid Configurator component for Angular.
@@ -31,6 +33,7 @@ export class PivotGridConfiguratorComponent {
31
33
  this.cdr = cdr;
32
34
  this.hostClass = true;
33
35
  this.horizontal = false;
36
+ this.sort = new Array();
34
37
  this.checked = [];
35
38
  this.subs = new Subscription();
36
39
  /**
@@ -194,9 +197,10 @@ export class PivotGridConfiguratorComponent {
194
197
  ;
195
198
  }
196
199
  PivotGridConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridConfiguratorComponent, deps: [{ token: i1.PivotGridDataService }, { token: i2.LocalizationService }, { token: i3.ConfiguratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
197
- PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: { horizontal: "horizontal" }, host: { properties: { "class.k-pivotgrid-configurator": "this.hostClass" } }, providers: [
200
+ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: { horizontal: "horizontal", sort: "sort", filter: "filter" }, host: { properties: { "class.k-pivotgrid-configurator": "this.hostClass" } }, providers: [
198
201
  ConfiguratorService,
199
- DropCueService
202
+ DropCueService,
203
+ SinglePopupService
200
204
  ], ngImport: i0, template: `
201
205
  <div
202
206
  class="k-pivotgrid-configurator-panel k-pivotgrid-configurator-push"
@@ -265,6 +269,10 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
265
269
  [removable]="true"
266
270
  >
267
271
  {{ getName(item.name) }}
272
+
273
+ <kendo-pivot-chip-menu
274
+ [chip]="item">
275
+ </kendo-pivot-chip-menu>
268
276
  </kendo-chip>
269
277
  </kendo-chiplist>
270
278
 
@@ -291,6 +299,10 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
291
299
  [removable]="true"
292
300
  >
293
301
  {{ getName(item.name) }}
302
+
303
+ <kendo-pivot-chip-menu
304
+ [chip]="item">
305
+ </kendo-pivot-chip-menu>
294
306
  </kendo-chip>
295
307
  </kendo-chiplist>
296
308
 
@@ -313,18 +325,17 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
313
325
  kendoDropTarget
314
326
  axes="measureAxes"
315
327
  >
316
- <kendo-chip *ngFor="let item of state.measureAxes"
317
- kendoChipDraggable
318
- kendoDraggable
319
- kendoDropTarget
320
- [item]="item"
321
- axes="measureAxes"
322
-
323
- rounded="full"
324
- [removable]="true"
325
- >
326
- {{ getName(item.name) }}
327
- </kendo-chip>
328
+ <kendo-chip *ngFor="let item of state.measureAxes"
329
+ kendoChipDraggable
330
+ kendoDraggable
331
+ kendoDropTarget
332
+ [item]="item"
333
+ axes="measureAxes"
334
+ rounded="full"
335
+ [removable]="true"
336
+ >
337
+ {{ getName(item.name) }}
338
+ </kendo-chip>
328
339
  </kendo-chiplist>
329
340
 
330
341
  <ng-template #noMeasureAxes>
@@ -339,14 +350,15 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
339
350
  <button kendoButton themeColor="primary" type="button" (click)="handleSubmit()">{{messageFor('configuratorApplyButtonText')}}</button>
340
351
  </div>
341
352
  </div>
342
- `, isInline: true, components: [{ type: i4.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { type: i5.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size"], outputs: ["selectedChange", "remove"] }, { type: i5.ChipComponent, selector: "kendo-chip", inputs: ["label", "icon", "iconClass", "avatarClass", "selected", "removable", "removeIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "contentClick"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { type: i4.NodeTemplateDirective, selector: "[kendoTreeViewNodeTemplate]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["item", "axes"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.DraggableChipDirective, selector: "[kendoChipDraggable]", inputs: ["item"] }, { type: i10.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i5.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
353
+ `, isInline: true, components: [{ type: i4.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { type: i5.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size"], outputs: ["selectedChange", "remove"] }, { type: i5.ChipComponent, selector: "kendo-chip", inputs: ["label", "icon", "iconClass", "avatarClass", "selected", "removable", "removeIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "contentClick"] }, { type: i6.ChipMenuComponent, selector: "kendo-pivot-chip-menu", inputs: ["chip", "tabIndex"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { type: i4.NodeTemplateDirective, selector: "[kendoTreeViewNodeTemplate]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["item", "axes"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.DraggableChipDirective, selector: "[kendoChipDraggable]", inputs: ["item"] }, { type: i11.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i5.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
343
354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridConfiguratorComponent, decorators: [{
344
355
  type: Component,
345
356
  args: [{
346
357
  selector: 'kendo-pivotgrid-configurator',
347
358
  providers: [
348
359
  ConfiguratorService,
349
- DropCueService
360
+ DropCueService,
361
+ SinglePopupService
350
362
  ],
351
363
  template: `
352
364
  <div
@@ -416,6 +428,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
416
428
  [removable]="true"
417
429
  >
418
430
  {{ getName(item.name) }}
431
+
432
+ <kendo-pivot-chip-menu
433
+ [chip]="item">
434
+ </kendo-pivot-chip-menu>
419
435
  </kendo-chip>
420
436
  </kendo-chiplist>
421
437
 
@@ -442,6 +458,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
442
458
  [removable]="true"
443
459
  >
444
460
  {{ getName(item.name) }}
461
+
462
+ <kendo-pivot-chip-menu
463
+ [chip]="item">
464
+ </kendo-pivot-chip-menu>
445
465
  </kendo-chip>
446
466
  </kendo-chiplist>
447
467
 
@@ -464,18 +484,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
464
484
  kendoDropTarget
465
485
  axes="measureAxes"
466
486
  >
467
- <kendo-chip *ngFor="let item of state.measureAxes"
468
- kendoChipDraggable
469
- kendoDraggable
470
- kendoDropTarget
471
- [item]="item"
472
- axes="measureAxes"
473
-
474
- rounded="full"
475
- [removable]="true"
476
- >
477
- {{ getName(item.name) }}
478
- </kendo-chip>
487
+ <kendo-chip *ngFor="let item of state.measureAxes"
488
+ kendoChipDraggable
489
+ kendoDraggable
490
+ kendoDropTarget
491
+ [item]="item"
492
+ axes="measureAxes"
493
+ rounded="full"
494
+ [removable]="true"
495
+ >
496
+ {{ getName(item.name) }}
497
+ </kendo-chip>
479
498
  </kendo-chiplist>
480
499
 
481
500
  <ng-template #noMeasureAxes>
@@ -497,4 +516,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
497
516
  args: ['class.k-pivotgrid-configurator']
498
517
  }], horizontal: [{
499
518
  type: Input
519
+ }], sort: [{
520
+ type: Input
521
+ }], filter: [{
522
+ type: Input
500
523
  }] } });
@@ -14,8 +14,8 @@ export class ConfiguratorService {
14
14
  }
15
15
  parseConfiguratorState(action) {
16
16
  const newState = configuratorReducer({
17
- filter: [],
18
- sort: [],
17
+ filter: this.state.filter,
18
+ sort: this.state.sort,
19
19
  rowAxes: this.state.rowAxes,
20
20
  columnAxes: this.state.columnAxes,
21
21
  measureAxes: this.state.measureAxes,
@@ -31,6 +31,10 @@ export class PivotBaseBindingDirective {
31
31
  * Represents the measure axes configuration of the PivotGrid.
32
32
  */
33
33
  this.measureAxes = [];
34
+ /**
35
+ * Represents the initial sorted state of the PivotGrid.
36
+ */
37
+ this.sort = [];
34
38
  /**
35
39
  * Fires each time a row or column header gets expanded or collapsed by the end user. The event is preventable.
36
40
  * If you prevent the event, the PivotGrid will not be rerendered with the new state, resulting from the end user interaction.
@@ -52,7 +56,7 @@ export class PivotBaseBindingDirective {
52
56
  * @hidden
53
57
  */
54
58
  get state() {
55
- return new PivotGridState(this.columnAxes, this.rowAxes, this.measureAxes);
59
+ return new PivotGridState(this.columnAxes, this.rowAxes, this.measureAxes, this.sort, this.filter);
56
60
  }
57
61
  ngOnInit() {
58
62
  this.loadData(this.state);
@@ -78,16 +82,16 @@ export class PivotBaseBindingDirective {
78
82
  this.dataService.configuredFields.next({
79
83
  columnAxes: state.columnAxes,
80
84
  rowAxes: state.rowAxes,
81
- measureAxes: state.measureAxes
85
+ measureAxes: state.measureAxes,
86
+ sort: state.sort,
87
+ filter: state.filter
82
88
  });
83
89
  this.loadData(state);
84
90
  });
85
91
  }));
86
92
  this.subs.add(this.dataService.valuesRows.subscribe((data) => {
87
93
  this.zone.run(() => {
88
- if (hasObservers(this.dataLoaded)) {
89
- this.dataLoaded.emit(data);
90
- }
94
+ this.dataService.aggregateData = data;
91
95
  });
92
96
  }));
93
97
  this.dataService.directive = this;
@@ -106,7 +110,9 @@ export class PivotBaseBindingDirective {
106
110
  this.dataService.configuredFields.next({
107
111
  columnAxes: this.columnAxes,
108
112
  rowAxes: this.rowAxes,
109
- measureAxes: this.measureAxes
113
+ measureAxes: this.measureAxes,
114
+ sort: this.sort,
115
+ filter: this.filter
110
116
  });
111
117
  }
112
118
  updateHeaders(axes, tree, path) {
@@ -133,7 +139,7 @@ export class PivotBaseBindingDirective {
133
139
  ;
134
140
  }
135
141
  PivotBaseBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotBaseBindingDirective, deps: [{ token: i1.PivotGridDataService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
136
- PivotBaseBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: PivotBaseBindingDirective, selector: "kendo-base-binding-directive", inputs: { columnAxes: "columnAxes", rowAxes: "rowAxes", measureAxes: "measureAxes" }, outputs: { expandChange: "expandChange", configurationChange: "configurationChange", dataLoaded: "dataLoaded" }, ngImport: i0 });
142
+ PivotBaseBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: PivotBaseBindingDirective, selector: "kendo-base-binding-directive", inputs: { columnAxes: "columnAxes", rowAxes: "rowAxes", measureAxes: "measureAxes", sort: "sort", filter: "filter" }, outputs: { expandChange: "expandChange", configurationChange: "configurationChange", dataLoaded: "dataLoaded" }, ngImport: i0 });
137
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotBaseBindingDirective, decorators: [{
138
144
  type: Directive,
139
145
  args: [{
@@ -145,6 +151,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
145
151
  type: Input
146
152
  }], measureAxes: [{
147
153
  type: Input
154
+ }], sort: [{
155
+ type: Input
156
+ }], filter: [{
157
+ type: Input
148
158
  }], expandChange: [{
149
159
  type: Output
150
160
  }], configurationChange: [{
@@ -37,13 +37,13 @@ export class PivotLocalBindingDirective extends PivotBaseBindingDirective {
37
37
  this.updateConfiguratorFields();
38
38
  }
39
39
  loadData(state) {
40
- const { columnAxes, rowAxes, measureAxes } = state;
40
+ const { columnAxes, rowAxes, measureAxes, sort, filter } = state;
41
41
  const rootColumnAxes = this.getRootAxes(columnAxes);
42
42
  const rootRowAxes = this.getRootAxes(rowAxes);
43
43
  const columnSettings = rootColumnAxes.split(stringSeparator).map(this.createAxisSettings);
44
44
  const rowSettings = rootRowAxes.split(stringSeparator).map(this.createAxisSettings);
45
45
  const measuresSettings = measureAxes.map(m => this.measures.find(meas => String(meas.name) === String(m.name))).filter(Boolean);
46
- const dataTree = createDataTree(this.data, rowSettings, columnSettings, measuresSettings, bindingFields);
46
+ const dataTree = createDataTree(this.data, rowSettings, columnSettings, measuresSettings, bindingFields, filter);
47
47
  this.dataState = createLocalDataState({
48
48
  dataTree,
49
49
  rowSettings,
@@ -51,7 +51,7 @@ export class PivotLocalBindingDirective extends PivotBaseBindingDirective {
51
51
  rowAxes: rowAxes,
52
52
  columnAxes: columnAxes,
53
53
  measures: measuresSettings,
54
- sort: [],
54
+ sort: sort,
55
55
  fields: bindingFields
56
56
  });
57
57
  this.updateDataServiceFields();
@@ -7,6 +7,7 @@ import { Directive, Input } from '@angular/core';
7
7
  import { addKPI, buildKPIMeasures, createDataState, fetchData, fetchDiscover } from '@progress/kendo-pivotgrid-common';
8
8
  import { anyChanged } from '@progress/kendo-angular-common';
9
9
  import { PivotBaseBindingDirective } from './base-binding-directive';
10
+ import { clone } from '../util';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "./pivotgrid-data.service";
12
13
  /**
@@ -24,18 +25,20 @@ export class PivotOLAPBindingDirective extends PivotBaseBindingDirective {
24
25
  }
25
26
  }
26
27
  loadData(state) {
27
- const { columnAxes, rowAxes, measureAxes } = state;
28
+ const { columnAxes, rowAxes, measureAxes, sort, filter } = state;
28
29
  this.dataService.loading.next(true);
29
30
  const options = {
30
31
  connection: {
31
32
  catalog: this.catalog,
32
33
  cube: this.cube
33
34
  },
34
- columnAxes: columnAxes,
35
- rowAxes: rowAxes,
36
- measureAxes: measureAxes
35
+ columnAxes,
36
+ rowAxes,
37
+ measureAxes,
38
+ sort,
39
+ filter
37
40
  };
38
- fetchData({ url: this.url }, JSON.parse(JSON.stringify(options)))
41
+ fetchData({ url: this.url }, clone(options))
39
42
  .then(createDataState)
40
43
  .then(newDataState => {
41
44
  this.dataState = newDataState;
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  export class PivotGridMessages extends ComponentMessages {
12
12
  }
13
13
  PivotGridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
14
- PivotGridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridMessages, inputs: { fieldMenuFilterItemLabel: "fieldMenuFilterItemLabel", fieldMenuSortAscendingItemLabel: "fieldMenuSortAscendingItemLabel", fieldMenuSortDescendingItemLabel: "fieldMenuSortDescendingItemLabel", filterInputLabel: "filterInputLabel", filterOperatorsDropDownLabel: "filterOperatorsDropDownLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", loading: "loading", emptyCellLabel: "emptyCellLabel", configuratorButtonText: "configuratorButtonText", configuratorHeaderText: "configuratorHeaderText", configuratorFieldsText: "configuratorFieldsText", configuratorColumnsText: "configuratorColumnsText", configuratorRowsText: "configuratorRowsText", configuratorValuesText: "configuratorValuesText", configuratorCancelButtonText: "configuratorCancelButtonText", configuratorApplyButtonText: "configuratorApplyButtonText", configuratorEmptyRowsText: "configuratorEmptyRowsText", configuratorEmptyColumnsText: "configuratorEmptyColumnsText", configuratorEmptyMeasuresText: "configuratorEmptyMeasuresText" }, usesInheritance: true, ngImport: i0 });
14
+ PivotGridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridMessages, inputs: { fieldMenuFilterItemLabel: "fieldMenuFilterItemLabel", fieldMenuSortAscendingItemLabel: "fieldMenuSortAscendingItemLabel", fieldMenuSortDescendingItemLabel: "fieldMenuSortDescendingItemLabel", filterInputLabel: "filterInputLabel", filterOperatorsDropDownLabel: "filterOperatorsDropDownLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", loading: "loading", emptyCellLabel: "emptyCellLabel", configuratorButtonText: "configuratorButtonText", configuratorHeaderText: "configuratorHeaderText", configuratorFieldsText: "configuratorFieldsText", configuratorColumnsText: "configuratorColumnsText", configuratorRowsText: "configuratorRowsText", configuratorValuesText: "configuratorValuesText", configuratorCancelButtonText: "configuratorCancelButtonText", configuratorApplyButtonText: "configuratorApplyButtonText", configuratorEmptyRowsText: "configuratorEmptyRowsText", configuratorEmptyColumnsText: "configuratorEmptyColumnsText", configuratorEmptyMeasuresText: "configuratorEmptyMeasuresText", chipMenuIconTitle: "chipMenuIconTitle" }, usesInheritance: true, ngImport: i0 });
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridMessages, decorators: [{
16
16
  type: Directive
17
17
  }], propDecorators: { fieldMenuFilterItemLabel: [{
@@ -74,4 +74,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
74
74
  type: Input
75
75
  }], configuratorEmptyMeasuresText: [{
76
76
  type: Input
77
+ }], chipMenuIconTitle: [{
78
+ type: Input
77
79
  }] } });
@@ -0,0 +1,28 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { Injectable } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@progress/kendo-angular-l10n";
8
+ /**
9
+ * @hidden
10
+ *
11
+ * Needed to keep the Pivot's LocalizationService reference and be able to use it inside the ChipList component.
12
+ */
13
+ export class PivotLocalizationService {
14
+ constructor(localization) {
15
+ this.localization = localization;
16
+ }
17
+ get(token) {
18
+ return this.localization.get(token);
19
+ }
20
+ get rtl() {
21
+ return this.localization.rtl;
22
+ }
23
+ }
24
+ PivotLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
25
+ PivotLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService, decorators: [{
27
+ type: Injectable
28
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
@@ -6,9 +6,11 @@
6
6
  * @hidden
7
7
  */
8
8
  export class PivotGridState {
9
- constructor(columnAxes, rowAxes, measureAxes) {
9
+ constructor(columnAxes, rowAxes, measureAxes, sort, filter) {
10
10
  this.columnAxes = columnAxes;
11
11
  this.rowAxes = rowAxes;
12
12
  this.measureAxes = measureAxes;
13
+ this.sort = sort;
14
+ this.filter = filter;
13
15
  }
14
16
  }
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-pivotgrid',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1661413588,
12
+ publishDate: 1662143617,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -5,13 +5,15 @@
5
5
  import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';
6
6
  import { validatePackage } from '@progress/kendo-licensing';
7
7
  import { packageMetadata } from './package-metadata';
8
- import { isDocumentAvailable } from '@progress/kendo-angular-common';
8
+ import { isChanged, isDocumentAvailable } from '@progress/kendo-angular-common';
9
9
  import { PivotGridDataService } from './data-binding/pivotgrid-data.service';
10
10
  import { fromEvent, Subscription } from 'rxjs';
11
- import { syncScroll, syncWheel } from './util';
11
+ import { cloneArray, syncScroll, syncWheel } from './util';
12
12
  // eslint-disable-next-line rxjs/ban-operators
13
13
  import { merge } from 'rxjs/operators';
14
14
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
15
+ import { PivotGridNavigation } from '@progress/kendo-pivotgrid-common';
16
+ import { PivotLocalizationService } from './localization/pivot-localization.service';
15
17
  import * as i0 from "@angular/core";
16
18
  import * as i1 from "./data-binding/pivotgrid-data.service";
17
19
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -34,10 +36,12 @@ const DEFAULT_CONFIGURATOR_SETTINGS = {
34
36
  * Represents the Kendo UI PivotGrid component for Angular.
35
37
  */
36
38
  export class PivotGridComponent {
37
- constructor(hostEl, zone, dataService, localization, _scrollbarWidthService) {
39
+ constructor(hostEl, zone, dataService, localization, renderer, _scrollbarWidthService) {
40
+ this.hostEl = hostEl;
38
41
  this.zone = zone;
39
42
  this.dataService = dataService;
40
43
  this.localization = localization;
44
+ this.renderer = renderer;
41
45
  this.hostClass = true;
42
46
  this.ariaRole = 'grid';
43
47
  /**
@@ -46,6 +50,12 @@ export class PivotGridComponent {
46
50
  * @default 200
47
51
  */
48
52
  this.columnHeadersWidth = 200;
53
+ /**
54
+ * If set to true, the user can use dedicated shortcuts to interact with the PivotGrid. By default, navigation is disabled.
55
+ *
56
+ * @default false
57
+ */
58
+ this.navigable = false;
49
59
  this.resizeObservers = [];
50
60
  this._loaderSettings = DEFAULT_LOADER_SETTINGS;
51
61
  this.subs = new Subscription();
@@ -121,6 +131,12 @@ export class PivotGridComponent {
121
131
  get configuratorSettings() {
122
132
  return this.configurator && Object.assign({}, DEFAULT_CONFIGURATOR_SETTINGS, this.configurator);
123
133
  }
134
+ /**
135
+ * Holds the displayed aggregated PivotGrid values.
136
+ */
137
+ get aggregateData() {
138
+ return cloneArray(this.dataService.aggregateData);
139
+ }
124
140
  ngAfterViewInit() {
125
141
  if (isDocumentAvailable()) {
126
142
  this.zone.runOutsideAngular(() => {
@@ -133,15 +149,29 @@ export class PivotGridComponent {
133
149
  this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
134
150
  this.subs.add(fromEvent(rowHeadersTable, 'wheel')
135
151
  .pipe(merge(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
152
+ if (this.navigable) {
153
+ this.initNavigation();
154
+ }
136
155
  });
137
156
  }
138
157
  }
139
158
  ngAfterContentInit() {
140
159
  this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
141
160
  }
161
+ ngOnChanges(changes) {
162
+ if (isChanged('navigable', changes)) {
163
+ if (this.navigable) {
164
+ this.initNavigation();
165
+ }
166
+ else {
167
+ this.stopNavigation();
168
+ }
169
+ }
170
+ }
142
171
  ngOnDestroy() {
143
172
  this.resizeObservers.forEach(o => o.disconnect());
144
173
  this.subs.unsubscribe();
174
+ this.stopNavigation();
145
175
  }
146
176
  /**
147
177
  * @hidden
@@ -149,16 +179,38 @@ export class PivotGridComponent {
149
179
  messageFor(localizationToken) {
150
180
  return this.localization.get(localizationToken);
151
181
  }
182
+ initNavigation() {
183
+ this.stopNavigation();
184
+ this.navigation = new PivotGridNavigation({ tabIndex: 0 });
185
+ this.navigation.start(this.hostEl.nativeElement);
186
+ const firstCell = this.navigation.first;
187
+ if (firstCell) {
188
+ firstCell.setAttribute('tabindex', '0');
189
+ }
190
+ this.subs.add(this.dataService.directive.expandChange.pipe(merge(this.dataService.directive.configurationChange)).subscribe(() => this.zone.runOutsideAngular(() => {
191
+ setTimeout(() => this.navigation.update());
192
+ })));
193
+ }
194
+ stopNavigation() {
195
+ if (this.navigation) {
196
+ const lastFocusedEl = this.navigation.elements.find(el => el.hasAttribute('tabindex'));
197
+ if (lastFocusedEl) {
198
+ this.renderer.removeAttribute(lastFocusedEl, 'tabindex');
199
+ }
200
+ this.navigation.stop();
201
+ }
202
+ }
152
203
  }
153
- PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PivotGridDataService }, { token: i2.LocalizationService }, { token: i3.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
154
- PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", configurator: "configurator", columnHeadersWidth: "columnHeadersWidth" }, host: { properties: { "class.k-d-flex": "this.hostClass", "class.k-pos-relative": "this.hostClass", "class.k-flex-row": "this.rightPositionClass", "class.k-flex-row-reverse": "this.leftPositionClass", "class.k-flex-column": "this.bottomPositionClass", "class.k-flex-column-reverse": "this.topPositionClass", "attr.dir": "this.dir", "attr.role": "this.ariaRole" } }, providers: [
204
+ PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PivotGridDataService }, { token: i2.LocalizationService }, { token: i0.Renderer2 }, { token: i3.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
205
+ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", configurator: "configurator", columnHeadersWidth: "columnHeadersWidth", navigable: "navigable" }, host: { properties: { "class.k-d-flex": "this.hostClass", "class.k-pos-relative": "this.hostClass", "class.k-flex-row": "this.rightPositionClass", "class.k-flex-row-reverse": "this.leftPositionClass", "class.k-flex-column": "this.bottomPositionClass", "class.k-flex-column-reverse": "this.topPositionClass", "attr.dir": "this.dir", "attr.role": "this.ariaRole" } }, providers: [
155
206
  PivotGridDataService,
156
207
  LocalizationService,
208
+ PivotLocalizationService,
157
209
  {
158
210
  provide: L10N_PREFIX,
159
211
  useValue: 'kendo.pivotgrid'
160
212
  }
161
- ], viewQueries: [{ propertyName: "colHeadersTable", first: true, predicate: ["colHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "rowHeadersTable", first: true, predicate: ["rowHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "valuesTable", first: true, predicate: ["valuesTable"], descendants: true, read: ElementRef }, { propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }], ngImport: i0, template: `
213
+ ], viewQueries: [{ propertyName: "colHeadersTable", first: true, predicate: ["colHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "rowHeadersTable", first: true, predicate: ["rowHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "valuesTable", first: true, predicate: ["valuesTable"], descendants: true, read: ElementRef }, { propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: `
162
214
  <ng-container kendoPivotGridLocalizedMessages
163
215
  i18n-loading="kendo.pivotgrid.loading|The loading text"
164
216
  loading="Loading"
@@ -248,10 +300,15 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
248
300
  configuratorEmptyColumnsText="Select some fields to begin setup"
249
301
 
250
302
  i18n-configuratorEmptyMeasuresText="kendo.pivotgrid.configuratorEmptyMeasuresText|The text content of the PivotGrid configurator empty measures container"
251
- configuratorEmptyMeasuresText="Select some fields to begin setup"></ng-container>
303
+ configuratorEmptyMeasuresText="Select some fields to begin setup"
304
+
305
+ i18n-chipMenuIconTitle="kendo.grid.chipMenuIconTitle|The title of the field menu icon"
306
+ chipMenuIconTitle="{{ '{fieldName} Field Menu' }}"></ng-container>
252
307
 
253
308
  <div #table class="k-pivotgrid">
254
- <span class="k-pivotgrid-empty-cell" [attr.aria-label]="messageFor('emptyCellLabel')"></span>
309
+ <span class="k-pivotgrid-empty-cell">
310
+ <span class="k-sr-only">{{messageFor('emptyCellLabel')}}</span>
311
+ </span>
255
312
  <kendo-pivotgrid-table
256
313
  #colHeadersTable
257
314
  [colWidth]="columnHeadersWidth"
@@ -286,10 +343,10 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
286
343
  <div *ngIf="configurator"
287
344
  class="k-pivotgrid-configurator-button"
288
345
  (click)="showConfigurator = !showConfigurator">
289
- <span>{{ messageFor('configuratorButtonText') }}<span class="k-icon k-i-gear k-color-inherit"></span>
346
+ <span>{{messageFor('configuratorButtonText')}}<span class="k-icon k-i-gear k-color-inherit"></span>
290
347
  </span>
291
348
  </div>
292
- `, isInline: true, styles: ["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "], components: [{ type: i4.PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth"] }, { type: i5.LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { type: i6.PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["horizontal"] }], directives: [{ type: i7.LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
349
+ `, isInline: true, styles: ["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "], components: [{ type: i4.PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth"] }, { type: i5.LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { type: i6.PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["horizontal", "sort", "filter"] }], directives: [{ type: i7.LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
293
350
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, decorators: [{
294
351
  type: Component,
295
352
  args: [{
@@ -297,6 +354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
297
354
  providers: [
298
355
  PivotGridDataService,
299
356
  LocalizationService,
357
+ PivotLocalizationService,
300
358
  {
301
359
  provide: L10N_PREFIX,
302
360
  useValue: 'kendo.pivotgrid'
@@ -392,10 +450,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
392
450
  configuratorEmptyColumnsText="Select some fields to begin setup"
393
451
 
394
452
  i18n-configuratorEmptyMeasuresText="kendo.pivotgrid.configuratorEmptyMeasuresText|The text content of the PivotGrid configurator empty measures container"
395
- configuratorEmptyMeasuresText="Select some fields to begin setup"></ng-container>
453
+ configuratorEmptyMeasuresText="Select some fields to begin setup"
454
+
455
+ i18n-chipMenuIconTitle="kendo.grid.chipMenuIconTitle|The title of the field menu icon"
456
+ chipMenuIconTitle="{{ '{fieldName} Field Menu' }}"></ng-container>
396
457
 
397
458
  <div #table class="k-pivotgrid">
398
- <span class="k-pivotgrid-empty-cell" [attr.aria-label]="messageFor('emptyCellLabel')"></span>
459
+ <span class="k-pivotgrid-empty-cell">
460
+ <span class="k-sr-only">{{messageFor('emptyCellLabel')}}</span>
461
+ </span>
399
462
  <kendo-pivotgrid-table
400
463
  #colHeadersTable
401
464
  [colWidth]="columnHeadersWidth"
@@ -430,7 +493,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
430
493
  <div *ngIf="configurator"
431
494
  class="k-pivotgrid-configurator-button"
432
495
  (click)="showConfigurator = !showConfigurator">
433
- <span>{{ messageFor('configuratorButtonText') }}<span class="k-icon k-i-gear k-color-inherit"></span>
496
+ <span>{{messageFor('configuratorButtonText')}}<span class="k-icon k-i-gear k-color-inherit"></span>
434
497
  </span>
435
498
  </div>
436
499
  `,
@@ -444,7 +507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
444
507
  }
445
508
  `]
446
509
  }]
447
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PivotGridDataService }, { type: i2.LocalizationService }, { type: i3.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
510
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PivotGridDataService }, { type: i2.LocalizationService }, { type: i0.Renderer2 }, { type: i3.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
448
511
  type: HostBinding,
449
512
  args: ['class.k-d-flex']
450
513
  }, {
@@ -486,4 +549,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
486
549
  type: Input
487
550
  }], columnHeadersWidth: [{
488
551
  type: Input
552
+ }], navigable: [{
553
+ type: Input
489
554
  }] } });