@progress/kendo-angular-pivotgrid 0.2.0-dev.202208190706 → 0.2.0-dev.202209020832
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kendo-angular-pivotgrid.umd.js +1 -1
- package/configurator/chip-menu/chip-menu-container.component.d.ts +21 -0
- package/configurator/chip-menu/chip-menu-filter.component.d.ts +44 -0
- package/configurator/chip-menu/chip-menu-item-base.d.ts +22 -0
- package/configurator/chip-menu/chip-menu-item-content-template.directive.d.ts +18 -0
- package/configurator/chip-menu/chip-menu-item.component.d.ts +50 -0
- package/configurator/chip-menu/chip-menu-item.directive.d.ts +32 -0
- package/configurator/chip-menu/chip-menu-sort.component.d.ts +33 -0
- package/configurator/chip-menu/chip-menu.component.d.ts +35 -0
- package/configurator/chip-menu/chip-menu.module.d.ts +26 -0
- package/configurator/chip-menu/chip-menu.service.d.ts +22 -0
- package/configurator/chip-menu/filtering/filter-menu-container.component.d.ts +47 -0
- package/configurator/chip-menu/filtering/filter-menu-dropdownlist.directive.d.ts +19 -0
- package/configurator/chip-menu/filtering/menu-tabbing.service.d.ts +17 -0
- package/configurator/chip-menu/filtering/string-filter-menu.component.d.ts +53 -0
- package/configurator/chip-menu/single-popup.service.d.ts +50 -0
- package/configurator/configurator.component.d.ts +4 -1
- package/data-binding/base-binding-directive.d.ts +16 -1
- package/esm2015/configurator/chip-menu/chip-menu-container.component.js +46 -0
- package/esm2015/configurator/chip-menu/chip-menu-filter.component.js +112 -0
- package/esm2015/configurator/chip-menu/chip-menu-item-base.js +36 -0
- package/esm2015/configurator/chip-menu/chip-menu-item-content-template.directive.js +27 -0
- package/esm2015/configurator/chip-menu/chip-menu-item.component.js +157 -0
- package/esm2015/configurator/chip-menu/chip-menu-item.directive.js +88 -0
- package/esm2015/configurator/chip-menu/chip-menu-sort.component.js +89 -0
- package/esm2015/configurator/chip-menu/chip-menu.component.js +130 -0
- package/esm2015/configurator/chip-menu/chip-menu.module.js +83 -0
- package/esm2015/configurator/chip-menu/chip-menu.service.js +28 -0
- package/esm2015/configurator/chip-menu/filtering/filter-menu-container.component.js +173 -0
- package/esm2015/configurator/chip-menu/filtering/filter-menu-dropdownlist.directive.js +38 -0
- package/esm2015/configurator/chip-menu/filtering/menu-tabbing.service.js +20 -0
- package/esm2015/configurator/chip-menu/filtering/string-filter-menu.component.js +133 -0
- package/esm2015/configurator/chip-menu/single-popup.service.js +121 -0
- package/esm2015/configurator/configurator.component.js +56 -33
- package/esm2015/configurator/configurator.service.js +2 -2
- package/esm2015/data-binding/base-binding-directive.js +30 -4
- package/esm2015/data-binding/local-binding.directive.js +3 -3
- package/esm2015/data-binding/olap-binding.directive.js +6 -4
- package/esm2015/localization/messages.js +3 -1
- package/esm2015/localization/pivot-localization.service.js +28 -0
- package/esm2015/models/configurator-settings.js +3 -1
- package/esm2015/models/data-row-item.js +6 -0
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/pivotgrid.component.js +72 -13
- package/esm2015/pivotgrid.module.js +9 -12
- package/esm2015/shared.module.js +40 -0
- package/esm2015/util.js +13 -0
- package/fesm2015/kendo-angular-pivotgrid.js +1400 -81
- package/localization/messages.d.ts +23 -1
- package/localization/pivot-localization.service.d.ts +19 -0
- package/main.d.ts +1 -0
- package/models/configurator-settings.d.ts +4 -1
- package/models/data-row-item.d.ts +18 -0
- package/package.json +3 -3
- package/pivotgrid.component.d.ts +15 -3
- package/pivotgrid.module.d.ts +6 -7
- package/shared.module.d.ts +17 -0
- package/util.d.ts +12 -0
|
@@ -3,25 +3,31 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, Directive, Optional,
|
|
6
|
+
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, Directive, ContentChildren, isDevMode, Optional, ContentChild, forwardRef, ViewChild, ElementRef, NgModule } from '@angular/core';
|
|
7
7
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
8
8
|
import * as i3 from '@progress/kendo-angular-common';
|
|
9
|
-
import { isDocumentAvailable, PreventableEvent, hasObservers, anyChanged, EventsModule, DraggableModule } from '@progress/kendo-angular-common';
|
|
10
|
-
import { toTree, toRows, toColumns, toData, configuratorReducer, PIVOT_CONFIGURATOR_ACTION, HEADERS_ACTION, headersReducer, createFlatSchemaDimensions, createDataTree, createLocalDataState, rootFields, fetchData, createDataState, fetchDiscover, addKPI, buildKPIMeasures } from '@progress/kendo-pivotgrid-common';
|
|
9
|
+
import { isDocumentAvailable, PreventableEvent, Keys, isChanged, hasObservers, anyChanged, EventsModule, DraggableModule } from '@progress/kendo-angular-common';
|
|
10
|
+
import { toTree, toRows, toColumns, toData, configuratorReducer, PIVOT_CONFIGURATOR_ACTION, PivotGridNavigation, HEADERS_ACTION, headersReducer, createFlatSchemaDimensions, createDataTree, createLocalDataState, rootFields, fetchData, createDataState, fetchDiscover, addKPI, buildKPIMeasures } from '@progress/kendo-pivotgrid-common';
|
|
11
11
|
export { averageAggregate, maxAggregate, minAggregate, sumAggregate } from '@progress/kendo-pivotgrid-common';
|
|
12
|
-
import { BehaviorSubject, Subscription, from, of, fromEvent } from 'rxjs';
|
|
13
|
-
import { mergeMap, merge } from 'rxjs/operators';
|
|
14
|
-
import * as
|
|
12
|
+
import { BehaviorSubject, Subscription, Subject, from, of, fromEvent } from 'rxjs';
|
|
13
|
+
import { take, mergeMap, merge } from 'rxjs/operators';
|
|
14
|
+
import * as i1 from '@progress/kendo-angular-l10n';
|
|
15
15
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
16
|
-
import * as
|
|
16
|
+
import * as i7 from '@angular/common';
|
|
17
17
|
import { CommonModule } from '@angular/common';
|
|
18
18
|
import * as i5$1 from '@progress/kendo-angular-indicators';
|
|
19
19
|
import { IndicatorsModule } from '@progress/kendo-angular-indicators';
|
|
20
|
+
import * as i1$1 from '@progress/kendo-angular-popup';
|
|
20
21
|
import * as i4 from '@progress/kendo-angular-treeview';
|
|
21
22
|
import { TreeViewModule } from '@progress/kendo-angular-treeview';
|
|
22
23
|
import * as i5 from '@progress/kendo-angular-buttons';
|
|
23
24
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
24
|
-
import
|
|
25
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
26
|
+
import * as i3$1 from '@angular/forms';
|
|
27
|
+
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
28
|
+
import * as i1$2 from '@progress/kendo-angular-dropdowns';
|
|
29
|
+
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
|
30
|
+
import * as i6 from '@progress/kendo-angular-inputs';
|
|
25
31
|
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
26
32
|
import { __awaiter } from 'tslib';
|
|
27
33
|
|
|
@@ -32,15 +38,24 @@ const packageMetadata = {
|
|
|
32
38
|
name: '@progress/kendo-angular-pivotgrid',
|
|
33
39
|
productName: 'Kendo UI for Angular',
|
|
34
40
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
35
|
-
publishDate:
|
|
41
|
+
publishDate: 1662107494,
|
|
36
42
|
version: '',
|
|
37
43
|
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'
|
|
38
44
|
};
|
|
39
45
|
|
|
46
|
+
const EMPTY_REGEX = /^\s*$/;
|
|
40
47
|
/**
|
|
41
48
|
* @hidden
|
|
42
49
|
*/
|
|
43
50
|
const isPresent = (value) => value !== null && value !== undefined;
|
|
51
|
+
/**
|
|
52
|
+
* @hidden
|
|
53
|
+
*/
|
|
54
|
+
const isBlank = (value) => value === null || value === undefined;
|
|
55
|
+
/**
|
|
56
|
+
* @hidden
|
|
57
|
+
*/
|
|
58
|
+
const isNullOrEmptyString = (value) => isBlank(value) || EMPTY_REGEX.test(value);
|
|
44
59
|
/**
|
|
45
60
|
* @hidden
|
|
46
61
|
* Returns whether two arrays contain the same values.
|
|
@@ -185,6 +200,10 @@ const position = (target, before) => {
|
|
|
185
200
|
* @hidden
|
|
186
201
|
*/
|
|
187
202
|
const filterAndMap = (arr, predicate, mapper) => arr.reduce((acc, curr) => predicate(curr) ? [...acc, mapper(curr)] : acc, []);
|
|
203
|
+
/**
|
|
204
|
+
* @hidden
|
|
205
|
+
*/
|
|
206
|
+
const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
|
|
188
207
|
|
|
189
208
|
/**
|
|
190
209
|
* @hidden
|
|
@@ -242,6 +261,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
242
261
|
type: Output
|
|
243
262
|
}] } });
|
|
244
263
|
|
|
264
|
+
/**
|
|
265
|
+
* @hidden
|
|
266
|
+
*
|
|
267
|
+
* Needed to keep the Pivot's LocalizationService reference and be able to use it inside the ChipList component.
|
|
268
|
+
*/
|
|
269
|
+
class PivotLocalizationService {
|
|
270
|
+
constructor(localization) {
|
|
271
|
+
this.localization = localization;
|
|
272
|
+
}
|
|
273
|
+
get(token) {
|
|
274
|
+
return this.localization.get(token);
|
|
275
|
+
}
|
|
276
|
+
get rtl() {
|
|
277
|
+
return this.localization.rtl;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
PivotLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
281
|
+
PivotLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService });
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotLocalizationService, decorators: [{
|
|
283
|
+
type: Injectable
|
|
284
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
|
|
285
|
+
|
|
245
286
|
/**
|
|
246
287
|
* @hidden
|
|
247
288
|
*/
|
|
@@ -295,7 +336,7 @@ PivotGridCellDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
295
336
|
[ngClass]="{
|
|
296
337
|
'k-i-arrow-chevron-up': expanded,
|
|
297
338
|
'k-i-arrow-chevron-down': !expanded
|
|
298
|
-
}"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}`, isInline: true, directives: [{ type:
|
|
339
|
+
}"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}`, isInline: true, directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
299
340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridCellDirective, decorators: [{
|
|
300
341
|
type: Component,
|
|
301
342
|
args: [{
|
|
@@ -384,7 +425,7 @@ PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
384
425
|
</tr>
|
|
385
426
|
</tbody>
|
|
386
427
|
</table>
|
|
387
|
-
`, isInline: true, components: [{ type: PivotGridCellDirective, selector: "[kendoPivotGridCell]", inputs: ["kendoPivotGridCell", "tableType", "rowIndex", "colIndex"] }], directives: [{ type:
|
|
428
|
+
`, isInline: true, components: [{ type: PivotGridCellDirective, selector: "[kendoPivotGridCell]", inputs: ["kendoPivotGridCell", "tableType", "rowIndex", "colIndex"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
388
429
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridTableComponent, decorators: [{
|
|
389
430
|
type: Component,
|
|
390
431
|
args: [{
|
|
@@ -441,8 +482,8 @@ class ConfiguratorService {
|
|
|
441
482
|
}
|
|
442
483
|
parseConfiguratorState(action) {
|
|
443
484
|
const newState = configuratorReducer({
|
|
444
|
-
filter:
|
|
445
|
-
sort:
|
|
485
|
+
filter: this.state.filter,
|
|
486
|
+
sort: this.state.sort,
|
|
446
487
|
rowAxes: this.state.rowAxes,
|
|
447
488
|
columnAxes: this.state.columnAxes,
|
|
448
489
|
measureAxes: this.state.measureAxes,
|
|
@@ -523,6 +564,1079 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
523
564
|
type: Injectable
|
|
524
565
|
}] });
|
|
525
566
|
|
|
567
|
+
const contains = (node, predicate) => {
|
|
568
|
+
while (node) {
|
|
569
|
+
if (predicate(node)) {
|
|
570
|
+
return true;
|
|
571
|
+
}
|
|
572
|
+
node = node.parentNode;
|
|
573
|
+
}
|
|
574
|
+
return false;
|
|
575
|
+
};
|
|
576
|
+
/**
|
|
577
|
+
* @hidden
|
|
578
|
+
* Arguments for the `close` event of the chip-menu popup.
|
|
579
|
+
*/
|
|
580
|
+
class PopupCloseEvent extends PreventableEvent {
|
|
581
|
+
constructor(e) {
|
|
582
|
+
super();
|
|
583
|
+
this.originalEvent = e;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
const DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';
|
|
587
|
+
/**
|
|
588
|
+
* @hidden
|
|
589
|
+
* The service that is used for the popups of the chip menus.
|
|
590
|
+
*/
|
|
591
|
+
class SinglePopupService {
|
|
592
|
+
constructor(popupService, renderer, ngZone, localization) {
|
|
593
|
+
this.popupService = popupService;
|
|
594
|
+
this.renderer = renderer;
|
|
595
|
+
this.ngZone = ngZone;
|
|
596
|
+
this.localization = localization;
|
|
597
|
+
/**
|
|
598
|
+
* Fires when the chip menus are about to close because the user clicked outside their popups.
|
|
599
|
+
* Used to prevent the popup from closing.
|
|
600
|
+
*/
|
|
601
|
+
this.onClose = new Subject();
|
|
602
|
+
this.pointerEventsSub = new Subscription();
|
|
603
|
+
this.scrollSubscription = new Subscription();
|
|
604
|
+
}
|
|
605
|
+
open(anchor, template, popupRef, popupClass = DEFAULT_POPUP_CLASS) {
|
|
606
|
+
var _a;
|
|
607
|
+
const toggle = isPresent(popupRef) && this.popupRef === popupRef;
|
|
608
|
+
this.destroy();
|
|
609
|
+
if (!toggle) {
|
|
610
|
+
const direction = this.localization.rtl ? 'right' : 'left';
|
|
611
|
+
this.popupRef = this.popupService.open({
|
|
612
|
+
anchorAlign: { vertical: 'bottom', horizontal: direction },
|
|
613
|
+
popupAlign: { vertical: 'top', horizontal: direction },
|
|
614
|
+
anchor: anchor,
|
|
615
|
+
popupClass: popupClass,
|
|
616
|
+
content: template,
|
|
617
|
+
positionMode: "absolute"
|
|
618
|
+
});
|
|
619
|
+
this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.localization.rtl ? 'rtl' : 'ltr');
|
|
620
|
+
this.attachClose(anchor);
|
|
621
|
+
}
|
|
622
|
+
const popupEl = (_a = this.popupRef) === null || _a === void 0 ? void 0 : _a.popupElement;
|
|
623
|
+
if (popupEl) {
|
|
624
|
+
this.attachMouseListeners(popupEl);
|
|
625
|
+
}
|
|
626
|
+
return this.popupRef;
|
|
627
|
+
}
|
|
628
|
+
destroy() {
|
|
629
|
+
if (this.popupRef) {
|
|
630
|
+
this.detachClose();
|
|
631
|
+
this.pointerEventsSub.unsubscribe();
|
|
632
|
+
this.pointerEventsSub = null;
|
|
633
|
+
this.popupRef.close();
|
|
634
|
+
this.popupRef = null;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
ngOnDestroy() {
|
|
638
|
+
this.destroy();
|
|
639
|
+
this.scrollSubscription.unsubscribe();
|
|
640
|
+
}
|
|
641
|
+
detachClose() {
|
|
642
|
+
if (this.removeClick) {
|
|
643
|
+
this.removeClick();
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
attachClose(skipElement) {
|
|
647
|
+
this.detachClose();
|
|
648
|
+
this.ngZone.runOutsideAngular(() => this.removeClick = this.renderer.listen('document', 'click', (e) => {
|
|
649
|
+
if (!contains(e.target, x => this.popupRef.popupElement === x || x === skipElement)) {
|
|
650
|
+
const args = new PopupCloseEvent(e);
|
|
651
|
+
this.onClose.next(args);
|
|
652
|
+
if (!args.isDefaultPrevented() && this.canClosePopup) {
|
|
653
|
+
this.destroy();
|
|
654
|
+
}
|
|
655
|
+
this.canClosePopup = true;
|
|
656
|
+
}
|
|
657
|
+
}));
|
|
658
|
+
}
|
|
659
|
+
attachMouseListeners(el) {
|
|
660
|
+
this.pointerEventsSub = new Subscription();
|
|
661
|
+
this.ngZone.runOutsideAngular(() => {
|
|
662
|
+
this.pointerEventsSub.add(this.renderer.listen(el, 'pointerdown', (e) => {
|
|
663
|
+
e.stopImmediatePropagation();
|
|
664
|
+
this.canClosePopup = false;
|
|
665
|
+
}));
|
|
666
|
+
this.pointerEventsSub.add(this.renderer.listen(el, 'pointerup', () => {
|
|
667
|
+
this.canClosePopup = true;
|
|
668
|
+
}));
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
SinglePopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SinglePopupService, deps: [{ token: i1$1.PopupService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: PivotLocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
673
|
+
SinglePopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SinglePopupService });
|
|
674
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SinglePopupService, decorators: [{
|
|
675
|
+
type: Injectable
|
|
676
|
+
}], ctorParameters: function () { return [{ type: i1$1.PopupService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PivotLocalizationService }]; } });
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* @hidden
|
|
680
|
+
*/
|
|
681
|
+
class MenuTabbingService {
|
|
682
|
+
constructor() {
|
|
683
|
+
this.isColumnMenu = false;
|
|
684
|
+
this.isPopupOpen = false;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
MenuTabbingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MenuTabbingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
688
|
+
MenuTabbingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MenuTabbingService });
|
|
689
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MenuTabbingService, decorators: [{
|
|
690
|
+
type: Injectable
|
|
691
|
+
}] });
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* @hidden
|
|
695
|
+
* Represents the service that is passed to the ChipMenuFilterComponent and ChipMenuSortComponent.
|
|
696
|
+
*/
|
|
697
|
+
class ChipMenuService {
|
|
698
|
+
constructor(menuTabbingService) {
|
|
699
|
+
this.closeMenu = new EventEmitter();
|
|
700
|
+
this.menuTabbingService = menuTabbingService;
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* Closes the chip menu.
|
|
704
|
+
*/
|
|
705
|
+
close() {
|
|
706
|
+
this.closeMenu.emit();
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
ChipMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuService, deps: [{ token: MenuTabbingService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
710
|
+
ChipMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuService });
|
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuService, decorators: [{
|
|
712
|
+
type: Injectable
|
|
713
|
+
}], ctorParameters: function () { return [{ type: MenuTabbingService }]; } });
|
|
714
|
+
|
|
715
|
+
/**
|
|
716
|
+
* @hidden
|
|
717
|
+
*/
|
|
718
|
+
class ChipMenuItemDirective {
|
|
719
|
+
constructor(hostElement, renderer, ngZone) {
|
|
720
|
+
this.hostElement = hostElement;
|
|
721
|
+
this.renderer = renderer;
|
|
722
|
+
this.ngZone = ngZone;
|
|
723
|
+
this._isFirst = false;
|
|
724
|
+
this._isLast = false;
|
|
725
|
+
this.subs = new Subscription();
|
|
726
|
+
this.onTab = (e) => {
|
|
727
|
+
if (e.keyCode !== Keys.Tab) {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
730
|
+
if (this.isFirst && e.shiftKey && e.target === this.chipMenuItems[0]) {
|
|
731
|
+
e.preventDefault();
|
|
732
|
+
this.menuItemComponent.service.menuTabbingService.lastFocusable.focus();
|
|
733
|
+
}
|
|
734
|
+
if (this.isLast && !e.shiftKey) {
|
|
735
|
+
const lastColumnMenuItem = this.getLastColumnMenuItem();
|
|
736
|
+
const isExpanded = this.menuItemComponent.expanded;
|
|
737
|
+
if (lastColumnMenuItem === e.target && !isExpanded) {
|
|
738
|
+
e.preventDefault();
|
|
739
|
+
this.menuItemComponent.service.menuTabbingService.firstFocusable.focus();
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
set isFirst(value) {
|
|
745
|
+
if (value) {
|
|
746
|
+
const focusableElement = this.chipMenuItems[0];
|
|
747
|
+
this.menuItemComponent.service.menuTabbingService.firstFocusable = focusableElement;
|
|
748
|
+
this.ngZone.runOutsideAngular(() => {
|
|
749
|
+
const firstItemKeydownSub = this.renderer.listen(focusableElement, 'keydown', this.onTab);
|
|
750
|
+
this.subs.add(firstItemKeydownSub);
|
|
751
|
+
});
|
|
752
|
+
}
|
|
753
|
+
this._isFirst = value;
|
|
754
|
+
}
|
|
755
|
+
get isFirst() {
|
|
756
|
+
return this._isFirst;
|
|
757
|
+
}
|
|
758
|
+
set isLast(value) {
|
|
759
|
+
if (!this.chipMenuItems) {
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
if (value) {
|
|
763
|
+
const lastFocusableElement = this.getLastColumnMenuItem();
|
|
764
|
+
this.menuItemComponent.service.menuTabbingService.lastFocusable = lastFocusableElement;
|
|
765
|
+
this.ngZone.runOutsideAngular(() => {
|
|
766
|
+
const lastItemKeydownSub = this.renderer.listen(lastFocusableElement, 'keydown', this.onTab);
|
|
767
|
+
this.subs.add(lastItemKeydownSub);
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
this._isLast = value;
|
|
771
|
+
}
|
|
772
|
+
get isLast() {
|
|
773
|
+
return this._isLast;
|
|
774
|
+
}
|
|
775
|
+
ngAfterViewInit() {
|
|
776
|
+
this.chipMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');
|
|
777
|
+
this.chipMenuItems.forEach(el => this.renderer.setAttribute(el, 'tabindex', '0'));
|
|
778
|
+
}
|
|
779
|
+
ngOnDestroy() {
|
|
780
|
+
this.subs.unsubscribe();
|
|
781
|
+
}
|
|
782
|
+
getLastColumnMenuItem() {
|
|
783
|
+
return (this.chipMenuItems.length === 1 ? this.chipMenuItems[0] : this.chipMenuItems[1]);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
ChipMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
787
|
+
ChipMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuItemDirective, selector: "[kendoPivotChipMenuItem]", inputs: { menuItemComponent: ["kendoPivotChipMenuItem", "menuItemComponent"] }, ngImport: i0 });
|
|
788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemDirective, decorators: [{
|
|
789
|
+
type: Directive,
|
|
790
|
+
args: [{ selector: '[kendoPivotChipMenuItem]' }]
|
|
791
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { menuItemComponent: [{
|
|
792
|
+
type: Input,
|
|
793
|
+
args: ['kendoPivotChipMenuItem']
|
|
794
|
+
}] } });
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* @hidden
|
|
798
|
+
*/
|
|
799
|
+
class ChipMenuContainerComponent {
|
|
800
|
+
constructor(service, ngZone) {
|
|
801
|
+
this.service = service;
|
|
802
|
+
this.ngZone = ngZone;
|
|
803
|
+
this.hostClass = true;
|
|
804
|
+
}
|
|
805
|
+
ngAfterViewInit() {
|
|
806
|
+
if (!this.chipMenuItems.length) {
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
this.chipMenuItems.first.isFirst = true;
|
|
810
|
+
this.chipMenuItems.last.isLast = true;
|
|
811
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
ChipMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuContainerComponent, deps: [{ token: ChipMenuService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
815
|
+
ChipMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuContainerComponent, selector: "kendo-pivot-chipmenu-container", host: { properties: { "class.k-grid-columnmenu-popup": "this.hostClass" } }, queries: [{ propertyName: "chipMenuItems", predicate: ChipMenuItemDirective, descendants: true }], ngImport: i0, template: `
|
|
816
|
+
<ng-content></ng-content>
|
|
817
|
+
`, isInline: true });
|
|
818
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuContainerComponent, decorators: [{
|
|
819
|
+
type: Component,
|
|
820
|
+
args: [{
|
|
821
|
+
selector: 'kendo-pivot-chipmenu-container',
|
|
822
|
+
template: `
|
|
823
|
+
<ng-content></ng-content>
|
|
824
|
+
`
|
|
825
|
+
}]
|
|
826
|
+
}], ctorParameters: function () { return [{ type: ChipMenuService }, { type: i0.NgZone }]; }, propDecorators: { chipMenuItems: [{
|
|
827
|
+
type: ContentChildren,
|
|
828
|
+
args: [ChipMenuItemDirective, { descendants: true }]
|
|
829
|
+
}], hostClass: [{
|
|
830
|
+
type: HostBinding,
|
|
831
|
+
args: ['class.k-grid-columnmenu-popup']
|
|
832
|
+
}] } });
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* @hidden
|
|
836
|
+
*/
|
|
837
|
+
class ChipMenuItemBase {
|
|
838
|
+
constructor() {
|
|
839
|
+
this.hostClass = true;
|
|
840
|
+
}
|
|
841
|
+
ngOnInit() {
|
|
842
|
+
if (isDevMode() && !this.service) {
|
|
843
|
+
throw new Error('The service input of the host chip menu components (e.g. ChipMenuSortComponent) is mandatory.');
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
close() {
|
|
847
|
+
this.service.close();
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
ChipMenuItemBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
851
|
+
ChipMenuItemBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuItemBase, selector: "kendo-pivot-chip-menu-item-base", inputs: { service: "service" }, host: { properties: { "class.k-columnmenu-item-wrapper": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
|
|
852
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemBase, decorators: [{
|
|
853
|
+
type: Component,
|
|
854
|
+
args: [{
|
|
855
|
+
selector: 'kendo-pivot-chip-menu-item-base',
|
|
856
|
+
template: ``
|
|
857
|
+
}]
|
|
858
|
+
}], propDecorators: { service: [{
|
|
859
|
+
type: Input
|
|
860
|
+
}], hostClass: [{
|
|
861
|
+
type: HostBinding,
|
|
862
|
+
args: ['class.k-columnmenu-item-wrapper']
|
|
863
|
+
}] } });
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* @hidden
|
|
867
|
+
*
|
|
868
|
+
* Represents the content template of the ChipMenuItemComponent.
|
|
869
|
+
* Provides an option for specifying the content of a chip menu item..
|
|
870
|
+
*/
|
|
871
|
+
class ChipMenuItemContentTemplateDirective {
|
|
872
|
+
constructor(templateRef) {
|
|
873
|
+
this.templateRef = templateRef;
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
ChipMenuItemContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
877
|
+
ChipMenuItemContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuItemContentTemplateDirective, selector: "[kendoPivotChipMenuItemContentTemplate]", ngImport: i0 });
|
|
878
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemContentTemplateDirective, decorators: [{
|
|
879
|
+
type: Directive,
|
|
880
|
+
args: [{
|
|
881
|
+
selector: '[kendoPivotChipMenuItemContentTemplate]'
|
|
882
|
+
}]
|
|
883
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
884
|
+
type: Optional
|
|
885
|
+
}] }]; } });
|
|
886
|
+
|
|
887
|
+
/**
|
|
888
|
+
* @hidden
|
|
889
|
+
*
|
|
890
|
+
*/
|
|
891
|
+
class ChipMenuItemComponent {
|
|
892
|
+
constructor() {
|
|
893
|
+
/**
|
|
894
|
+
* Fires when the item is clicked.
|
|
895
|
+
*/
|
|
896
|
+
this.itemClick = new EventEmitter();
|
|
897
|
+
/**
|
|
898
|
+
* Fires when the content is expanded.
|
|
899
|
+
*/
|
|
900
|
+
this.expand = new EventEmitter();
|
|
901
|
+
/**
|
|
902
|
+
* Fires when the content is collapsed.
|
|
903
|
+
*/
|
|
904
|
+
this.collapse = new EventEmitter();
|
|
905
|
+
this.contentState = 'collapsed';
|
|
906
|
+
}
|
|
907
|
+
get iconClass() {
|
|
908
|
+
return `k-i-${this.icon}`;
|
|
909
|
+
}
|
|
910
|
+
ngOnChanges(changes) {
|
|
911
|
+
if (changes.expanded) {
|
|
912
|
+
this.updateContentState();
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
onClick(e) {
|
|
916
|
+
this.itemClick.emit(e);
|
|
917
|
+
if (this.contentTemplate) {
|
|
918
|
+
this.expanded = !this.expanded;
|
|
919
|
+
this.updateContentState();
|
|
920
|
+
if (this.expanded) {
|
|
921
|
+
this.expand.emit();
|
|
922
|
+
}
|
|
923
|
+
else {
|
|
924
|
+
this.collapse.emit();
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
updateContentState() {
|
|
929
|
+
this.contentState = this.expanded ? 'expanded' : 'collapsed';
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
ChipMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
933
|
+
ChipMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuItemComponent, selector: "kendo-pivot-chipmenu-item", inputs: { icon: "icon", text: "text", selected: "selected", expanded: "expanded" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ChipMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
934
|
+
<div
|
|
935
|
+
class="k-columnmenu-item"
|
|
936
|
+
(click)="onClick($event)"
|
|
937
|
+
(keydown.enter)="onClick($event)"
|
|
938
|
+
[class.k-selected]="selected"
|
|
939
|
+
role="button"
|
|
940
|
+
[attr.aria-expanded]="expanded">
|
|
941
|
+
<span *ngIf="icon" class="k-icon" [ngClass]="iconClass">
|
|
942
|
+
</span>
|
|
943
|
+
{{ text }}
|
|
944
|
+
</div>
|
|
945
|
+
<div *ngIf="contentTemplate" [@state]="contentState" style="overflow:hidden;" class="k-columnmenu-item-content">
|
|
946
|
+
<ng-container [ngTemplateOutlet]="contentTemplate.templateRef">
|
|
947
|
+
</ng-container>
|
|
948
|
+
<div>
|
|
949
|
+
`, isInline: true, directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
|
|
950
|
+
trigger('state', [
|
|
951
|
+
state('collapsed', style({ display: 'none' })),
|
|
952
|
+
state('expanded', style({ display: 'block' })),
|
|
953
|
+
transition('collapsed => expanded', [
|
|
954
|
+
style({
|
|
955
|
+
height: '0px',
|
|
956
|
+
display: 'block'
|
|
957
|
+
}),
|
|
958
|
+
animate('100ms ease-in', style({
|
|
959
|
+
height: '*'
|
|
960
|
+
}))
|
|
961
|
+
]),
|
|
962
|
+
transition('expanded => collapsed', [
|
|
963
|
+
style({
|
|
964
|
+
height: '*'
|
|
965
|
+
}),
|
|
966
|
+
animate('100ms ease-in', style({
|
|
967
|
+
height: '0px'
|
|
968
|
+
}))
|
|
969
|
+
])
|
|
970
|
+
])
|
|
971
|
+
] });
|
|
972
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuItemComponent, decorators: [{
|
|
973
|
+
type: Component,
|
|
974
|
+
args: [{
|
|
975
|
+
animations: [
|
|
976
|
+
trigger('state', [
|
|
977
|
+
state('collapsed', style({ display: 'none' })),
|
|
978
|
+
state('expanded', style({ display: 'block' })),
|
|
979
|
+
transition('collapsed => expanded', [
|
|
980
|
+
style({
|
|
981
|
+
height: '0px',
|
|
982
|
+
display: 'block'
|
|
983
|
+
}),
|
|
984
|
+
animate('100ms ease-in', style({
|
|
985
|
+
height: '*'
|
|
986
|
+
}))
|
|
987
|
+
]),
|
|
988
|
+
transition('expanded => collapsed', [
|
|
989
|
+
style({
|
|
990
|
+
height: '*'
|
|
991
|
+
}),
|
|
992
|
+
animate('100ms ease-in', style({
|
|
993
|
+
height: '0px'
|
|
994
|
+
}))
|
|
995
|
+
])
|
|
996
|
+
])
|
|
997
|
+
],
|
|
998
|
+
selector: 'kendo-pivot-chipmenu-item',
|
|
999
|
+
template: `
|
|
1000
|
+
<div
|
|
1001
|
+
class="k-columnmenu-item"
|
|
1002
|
+
(click)="onClick($event)"
|
|
1003
|
+
(keydown.enter)="onClick($event)"
|
|
1004
|
+
[class.k-selected]="selected"
|
|
1005
|
+
role="button"
|
|
1006
|
+
[attr.aria-expanded]="expanded">
|
|
1007
|
+
<span *ngIf="icon" class="k-icon" [ngClass]="iconClass">
|
|
1008
|
+
</span>
|
|
1009
|
+
{{ text }}
|
|
1010
|
+
</div>
|
|
1011
|
+
<div *ngIf="contentTemplate" [@state]="contentState" style="overflow:hidden;" class="k-columnmenu-item-content">
|
|
1012
|
+
<ng-container [ngTemplateOutlet]="contentTemplate.templateRef">
|
|
1013
|
+
</ng-container>
|
|
1014
|
+
<div>
|
|
1015
|
+
`
|
|
1016
|
+
}]
|
|
1017
|
+
}], propDecorators: { itemClick: [{
|
|
1018
|
+
type: Output
|
|
1019
|
+
}], expand: [{
|
|
1020
|
+
type: Output
|
|
1021
|
+
}], collapse: [{
|
|
1022
|
+
type: Output
|
|
1023
|
+
}], icon: [{
|
|
1024
|
+
type: Input
|
|
1025
|
+
}], text: [{
|
|
1026
|
+
type: Input
|
|
1027
|
+
}], selected: [{
|
|
1028
|
+
type: Input
|
|
1029
|
+
}], expanded: [{
|
|
1030
|
+
type: Input
|
|
1031
|
+
}], contentTemplate: [{
|
|
1032
|
+
type: ContentChild,
|
|
1033
|
+
args: [ChipMenuItemContentTemplateDirective, { static: false }]
|
|
1034
|
+
}] } });
|
|
1035
|
+
|
|
1036
|
+
/**
|
|
1037
|
+
* @hidden
|
|
1038
|
+
*
|
|
1039
|
+
* Represents a chip-menu item for sorting PivotGrid fields.
|
|
1040
|
+
* Allows the user to sort the PivotGrid.
|
|
1041
|
+
*/
|
|
1042
|
+
class ChipMenuSortComponent extends ChipMenuItemBase {
|
|
1043
|
+
constructor(localization, renderer, configuratorService) {
|
|
1044
|
+
super();
|
|
1045
|
+
this.localization = localization;
|
|
1046
|
+
this.renderer = renderer;
|
|
1047
|
+
this.configuratorService = configuratorService;
|
|
1048
|
+
}
|
|
1049
|
+
get sortedAsc() {
|
|
1050
|
+
const descriptor = this.descriptor;
|
|
1051
|
+
return descriptor && (!descriptor.dir || descriptor.dir === 'asc');
|
|
1052
|
+
}
|
|
1053
|
+
get sortedDesc() {
|
|
1054
|
+
const descriptor = this.descriptor;
|
|
1055
|
+
return descriptor && descriptor.dir === 'desc';
|
|
1056
|
+
}
|
|
1057
|
+
/**
|
|
1058
|
+
* Returns the localized message for a given token
|
|
1059
|
+
*/
|
|
1060
|
+
messageFor(localizationToken) {
|
|
1061
|
+
return this.localization.get(localizationToken);
|
|
1062
|
+
}
|
|
1063
|
+
toggleSort(dir) {
|
|
1064
|
+
const field = this.chip.name.toString();
|
|
1065
|
+
const descriptor = this.descriptor;
|
|
1066
|
+
const sort = this.configuratorService.state.sort.filter(s => s.field !== field);
|
|
1067
|
+
if (!descriptor || descriptor.dir !== dir) {
|
|
1068
|
+
sort.push({ field, dir });
|
|
1069
|
+
}
|
|
1070
|
+
this.configuratorService.parseConfiguratorState({ type: PIVOT_CONFIGURATOR_ACTION.setSort, payload: sort });
|
|
1071
|
+
this.close();
|
|
1072
|
+
}
|
|
1073
|
+
get descriptor() {
|
|
1074
|
+
return [].concat(this.configuratorService.state.sort || []).find(s => s.field === this.chip.name.toString());
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
ChipMenuSortComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuSortComponent, deps: [{ token: PivotLocalizationService }, { token: i0.Renderer2 }, { token: ConfiguratorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1078
|
+
ChipMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuSortComponent, selector: "kendo-pivot-chipmenu-sort", inputs: { chip: "chip" }, usesInheritance: true, ngImport: i0, template: `
|
|
1079
|
+
<kendo-pivot-chipmenu-item
|
|
1080
|
+
[text]="messageFor('fieldMenuSortAscendingItemLabel')"
|
|
1081
|
+
icon="sort-asc-small"
|
|
1082
|
+
(itemClick)="toggleSort('asc')"
|
|
1083
|
+
[selected]="sortedAsc">
|
|
1084
|
+
</kendo-pivot-chipmenu-item>
|
|
1085
|
+
<kendo-pivot-chipmenu-item
|
|
1086
|
+
[text]="messageFor('fieldMenuSortDescendingItemLabel')"
|
|
1087
|
+
icon="sort-desc-small"
|
|
1088
|
+
(itemClick)="toggleSort('desc')"
|
|
1089
|
+
[selected]="sortedDesc">
|
|
1090
|
+
</kendo-pivot-chipmenu-item>
|
|
1091
|
+
`, isInline: true, components: [{ type: ChipMenuItemComponent, selector: "kendo-pivot-chipmenu-item", inputs: ["icon", "text", "selected", "expanded"], outputs: ["itemClick", "expand", "collapse"] }] });
|
|
1092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuSortComponent, decorators: [{
|
|
1093
|
+
type: Component,
|
|
1094
|
+
args: [{
|
|
1095
|
+
selector: 'kendo-pivot-chipmenu-sort',
|
|
1096
|
+
template: `
|
|
1097
|
+
<kendo-pivot-chipmenu-item
|
|
1098
|
+
[text]="messageFor('fieldMenuSortAscendingItemLabel')"
|
|
1099
|
+
icon="sort-asc-small"
|
|
1100
|
+
(itemClick)="toggleSort('asc')"
|
|
1101
|
+
[selected]="sortedAsc">
|
|
1102
|
+
</kendo-pivot-chipmenu-item>
|
|
1103
|
+
<kendo-pivot-chipmenu-item
|
|
1104
|
+
[text]="messageFor('fieldMenuSortDescendingItemLabel')"
|
|
1105
|
+
icon="sort-desc-small"
|
|
1106
|
+
(itemClick)="toggleSort('desc')"
|
|
1107
|
+
[selected]="sortedDesc">
|
|
1108
|
+
</kendo-pivot-chipmenu-item>
|
|
1109
|
+
`
|
|
1110
|
+
}]
|
|
1111
|
+
}], ctorParameters: function () { return [{ type: PivotLocalizationService }, { type: i0.Renderer2 }, { type: ConfiguratorService }]; }, propDecorators: { chip: [{
|
|
1112
|
+
type: Input
|
|
1113
|
+
}] } });
|
|
1114
|
+
|
|
1115
|
+
/**
|
|
1116
|
+
* @hidden
|
|
1117
|
+
*/
|
|
1118
|
+
class FilterMenuDropDownListDirective {
|
|
1119
|
+
constructor(host) {
|
|
1120
|
+
this.host = host;
|
|
1121
|
+
this.keydownHandler = (e) => {
|
|
1122
|
+
if (e.keyCode === Keys.Escape && this.host.isOpen) {
|
|
1123
|
+
e.stopPropagation();
|
|
1124
|
+
this.host.toggle(false);
|
|
1125
|
+
}
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
ngAfterViewInit() {
|
|
1129
|
+
const wrapperElement = this.host.wrapper.nativeElement;
|
|
1130
|
+
wrapperElement.setAttribute('aria-label', this.filterMenuDropDownLabel);
|
|
1131
|
+
wrapperElement.addEventListener('keydown', this.keydownHandler, true);
|
|
1132
|
+
}
|
|
1133
|
+
ngOnDestroy() {
|
|
1134
|
+
this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
FilterMenuDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterMenuDropDownListDirective, deps: [{ token: i1$2.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1138
|
+
FilterMenuDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: { filterMenuDropDownLabel: "filterMenuDropDownLabel" }, ngImport: i0 });
|
|
1139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterMenuDropDownListDirective, decorators: [{
|
|
1140
|
+
type: Directive,
|
|
1141
|
+
args: [{ selector: '[kendoFilterMenuDropDown]' }]
|
|
1142
|
+
}], ctorParameters: function () { return [{ type: i1$2.DropDownListComponent }]; }, propDecorators: { filterMenuDropDownLabel: [{
|
|
1143
|
+
type: Input
|
|
1144
|
+
}] } });
|
|
1145
|
+
|
|
1146
|
+
/**
|
|
1147
|
+
* @hidden
|
|
1148
|
+
*/
|
|
1149
|
+
const localizeOperators = operators => localization => Object.keys(operators).map(key => ({
|
|
1150
|
+
text: localization.get(key),
|
|
1151
|
+
value: operators[key]
|
|
1152
|
+
}));
|
|
1153
|
+
const stringOperators = localizeOperators({
|
|
1154
|
+
"filterEqOperator": "eq",
|
|
1155
|
+
"filterNotEqOperator": "neq",
|
|
1156
|
+
"filterContainsOperator": "contains",
|
|
1157
|
+
"filterNotContainsOperator": "doesnotcontain",
|
|
1158
|
+
"filterStartsWithOperator": "startswith",
|
|
1159
|
+
"filterEndsWithOperator": "endswith",
|
|
1160
|
+
"filterIsNullOperator": "isnull",
|
|
1161
|
+
"filterIsNotNullOperator": "isnotnull",
|
|
1162
|
+
"filterIsEmptyOperator": "isempty",
|
|
1163
|
+
"filterIsNotEmptyOperator": "isnotempty"
|
|
1164
|
+
});
|
|
1165
|
+
/**
|
|
1166
|
+
* @hidden
|
|
1167
|
+
*
|
|
1168
|
+
* Represents a string-filter menu component.
|
|
1169
|
+
*/
|
|
1170
|
+
class StringFilterMenuComponent {
|
|
1171
|
+
constructor(localization, configuratorService, fb) {
|
|
1172
|
+
this.localization = localization;
|
|
1173
|
+
this.configuratorService = configuratorService;
|
|
1174
|
+
this.fb = fb;
|
|
1175
|
+
this.subscription = new Subscription();
|
|
1176
|
+
this.onTouched = () => { };
|
|
1177
|
+
}
|
|
1178
|
+
get currentFilter() {
|
|
1179
|
+
var _a;
|
|
1180
|
+
const filterValue = (_a = this.configuratorService.state.filter) === null || _a === void 0 ? void 0 : _a.filter(x => x.field === this.chip.name.toString());
|
|
1181
|
+
return filterValue && filterValue[0];
|
|
1182
|
+
}
|
|
1183
|
+
registerOnChange(fn) {
|
|
1184
|
+
this.filterFormGroup.valueChanges.subscribe(fn);
|
|
1185
|
+
}
|
|
1186
|
+
registerOnTouched(fn) {
|
|
1187
|
+
this.onTouched = fn;
|
|
1188
|
+
}
|
|
1189
|
+
writeValue(val) {
|
|
1190
|
+
if (val) {
|
|
1191
|
+
this.filterFormGroup.setValue(val, { emitEvent: false });
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
get filterMenuDropDownLabel() {
|
|
1195
|
+
const localizationMsg = this.localization.get('filterOperatorsDropDownLabel') || '';
|
|
1196
|
+
const chipName = this.chip.name.toString();
|
|
1197
|
+
return replaceMessagePlaceholder(localizationMsg, 'fields', chipName);
|
|
1198
|
+
}
|
|
1199
|
+
ngOnInit() {
|
|
1200
|
+
this.filterFormGroup = this.fb.group({
|
|
1201
|
+
operator: [this.currentFilter ? this.currentFilter.operator : ''],
|
|
1202
|
+
value: [this.currentFilter ? this.currentFilter.value : '']
|
|
1203
|
+
});
|
|
1204
|
+
this.operators = stringOperators(this.localization);
|
|
1205
|
+
}
|
|
1206
|
+
ngOnDestroy() {
|
|
1207
|
+
this.subscription.unsubscribe();
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
StringFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: StringFilterMenuComponent, deps: [{ token: PivotLocalizationService }, { token: ConfiguratorService }, { token: i3$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
1211
|
+
StringFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: StringFilterMenuComponent, selector: "kendo-pivot-string-filter-menu", inputs: { chip: "chip", menuTabbingService: "menuTabbingService" }, providers: [{
|
|
1212
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1213
|
+
useExisting: forwardRef(() => StringFilterMenuComponent),
|
|
1214
|
+
multi: true
|
|
1215
|
+
}], ngImport: i0, template: `
|
|
1216
|
+
<ng-container [formGroup]="filterFormGroup">
|
|
1217
|
+
<kendo-dropdownlist
|
|
1218
|
+
kendoFilterMenuDropDown
|
|
1219
|
+
[filterMenuDropDownLabel]="filterMenuDropDownLabel"
|
|
1220
|
+
[data]="operators"
|
|
1221
|
+
formControlName="operator"
|
|
1222
|
+
[valuePrimitive]="true"
|
|
1223
|
+
textField="text"
|
|
1224
|
+
valueField="value">
|
|
1225
|
+
</kendo-dropdownlist>
|
|
1226
|
+
<input
|
|
1227
|
+
kendoTextBox
|
|
1228
|
+
formControlName="value"
|
|
1229
|
+
/>
|
|
1230
|
+
</ng-container>
|
|
1231
|
+
`, isInline: true, components: [{ type: i1$2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
|
|
1232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: StringFilterMenuComponent, decorators: [{
|
|
1233
|
+
type: Component,
|
|
1234
|
+
args: [{
|
|
1235
|
+
selector: 'kendo-pivot-string-filter-menu',
|
|
1236
|
+
providers: [{
|
|
1237
|
+
provide: NG_VALUE_ACCESSOR,
|
|
1238
|
+
useExisting: forwardRef(() => StringFilterMenuComponent),
|
|
1239
|
+
multi: true
|
|
1240
|
+
}],
|
|
1241
|
+
template: `
|
|
1242
|
+
<ng-container [formGroup]="filterFormGroup">
|
|
1243
|
+
<kendo-dropdownlist
|
|
1244
|
+
kendoFilterMenuDropDown
|
|
1245
|
+
[filterMenuDropDownLabel]="filterMenuDropDownLabel"
|
|
1246
|
+
[data]="operators"
|
|
1247
|
+
formControlName="operator"
|
|
1248
|
+
[valuePrimitive]="true"
|
|
1249
|
+
textField="text"
|
|
1250
|
+
valueField="value">
|
|
1251
|
+
</kendo-dropdownlist>
|
|
1252
|
+
<input
|
|
1253
|
+
kendoTextBox
|
|
1254
|
+
formControlName="value"
|
|
1255
|
+
/>
|
|
1256
|
+
</ng-container>
|
|
1257
|
+
`
|
|
1258
|
+
}]
|
|
1259
|
+
}], ctorParameters: function () { return [{ type: PivotLocalizationService }, { type: ConfiguratorService }, { type: i3$1.FormBuilder }]; }, propDecorators: { chip: [{
|
|
1260
|
+
type: Input
|
|
1261
|
+
}], menuTabbingService: [{
|
|
1262
|
+
type: Input
|
|
1263
|
+
}] } });
|
|
1264
|
+
|
|
1265
|
+
const isNoValueOperator = operator => (operator === "isnull"
|
|
1266
|
+
|| operator === "isnotnull"
|
|
1267
|
+
|| operator === "isempty"
|
|
1268
|
+
|| operator === "isnotempty");
|
|
1269
|
+
const validFilter = ({ value, operator }) => !isNullOrEmptyString(value) || isNoValueOperator(operator);
|
|
1270
|
+
/**
|
|
1271
|
+
* @hidden
|
|
1272
|
+
*/
|
|
1273
|
+
class FilterMenuContainerComponent {
|
|
1274
|
+
constructor(localization, cd, menuTabbingService, configuratorService) {
|
|
1275
|
+
this.localization = localization;
|
|
1276
|
+
this.cd = cd;
|
|
1277
|
+
this.configuratorService = configuratorService;
|
|
1278
|
+
this.close = new EventEmitter();
|
|
1279
|
+
this.actionsClass = 'k-action-buttons k-button-group';
|
|
1280
|
+
this.menuTabbingService = menuTabbingService;
|
|
1281
|
+
}
|
|
1282
|
+
ngOnInit() {
|
|
1283
|
+
}
|
|
1284
|
+
ngAfterViewChecked() {
|
|
1285
|
+
if (!this.menuTabbingService.isColumnMenu || (this.isLast && this.isExpanded)) {
|
|
1286
|
+
this.menuTabbingService.lastFocusable = this.disabled ?
|
|
1287
|
+
this.resetButton.nativeElement : this.filterButton.nativeElement;
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
ngOnDestroy() {
|
|
1291
|
+
this.menuTabbingService.lastFocusable = null;
|
|
1292
|
+
}
|
|
1293
|
+
get disabled() {
|
|
1294
|
+
return !(this.filterDescriptorValue && validFilter(this.filterDescriptorValue));
|
|
1295
|
+
}
|
|
1296
|
+
submit() {
|
|
1297
|
+
const filterDescriptor = Object.assign({ field: this.chip.name.toString() }, this.filterDescriptorValue);
|
|
1298
|
+
const payload = !this.configuratorService.state.filter ?
|
|
1299
|
+
[filterDescriptor] :
|
|
1300
|
+
[
|
|
1301
|
+
...this.configuratorService.state.filter.filter(descriptor => descriptor.field !== filterDescriptor.field),
|
|
1302
|
+
filterDescriptor
|
|
1303
|
+
];
|
|
1304
|
+
this.configuratorService.parseConfiguratorState({ type: PIVOT_CONFIGURATOR_ACTION.setFilter, payload: payload });
|
|
1305
|
+
this.close.emit();
|
|
1306
|
+
return false;
|
|
1307
|
+
}
|
|
1308
|
+
reset() {
|
|
1309
|
+
const filters = this.configuratorService.state.filter.filter(descriptor => descriptor.field !== this.chip.name.toString());
|
|
1310
|
+
this.configuratorService.parseConfiguratorState({ type: PIVOT_CONFIGURATOR_ACTION.setFilter, payload: filters });
|
|
1311
|
+
this.close.emit();
|
|
1312
|
+
}
|
|
1313
|
+
onTab(e, buttonType) {
|
|
1314
|
+
if (this.menuTabbingService.firstFocusable && (!this.menuTabbingService.isColumnMenu || this.isLast)) {
|
|
1315
|
+
e.preventDefault();
|
|
1316
|
+
if (buttonType === 'reset') {
|
|
1317
|
+
// eslint-disable-next-line no-unused-expressions
|
|
1318
|
+
this.disabled ? this.menuTabbingService.firstFocusable.focus() : this.filterButton.nativeElement.focus();
|
|
1319
|
+
}
|
|
1320
|
+
else {
|
|
1321
|
+
this.menuTabbingService.firstFocusable.focus();
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Returns the localized message for a given token
|
|
1327
|
+
*/
|
|
1328
|
+
messageFor(localizationToken) {
|
|
1329
|
+
return this.localization.get(localizationToken);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
FilterMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: PivotLocalizationService }, { token: i0.ChangeDetectorRef }, { token: MenuTabbingService }, { token: ConfiguratorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1333
|
+
FilterMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterMenuContainerComponent, selector: "kendo-pivot-filter-menu-container", inputs: { chip: "chip", isLast: "isLast", isExpanded: "isExpanded", menuTabbingService: "menuTabbingService", actionsClass: "actionsClass" }, outputs: { close: "close" }, providers: [
|
|
1334
|
+
MenuTabbingService
|
|
1335
|
+
], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "filterButton", first: true, predicate: ["filterButton"], descendants: true }], ngImport: i0, template: `
|
|
1336
|
+
<form (submit)="submit()" (reset)="reset()"
|
|
1337
|
+
class="k-filter-menu k-group k-reset k-state-border-up">
|
|
1338
|
+
<div class="k-filter-menu-container">
|
|
1339
|
+
<kendo-pivot-string-filter-menu
|
|
1340
|
+
[(ngModel)]="filterDescriptorValue"
|
|
1341
|
+
name="'filterDescriptorValue'"
|
|
1342
|
+
[chip]="chip"
|
|
1343
|
+
[menuTabbingService]="menuTabbingService">
|
|
1344
|
+
</kendo-pivot-string-filter-menu>
|
|
1345
|
+
<div [ngClass]="actionsClass">
|
|
1346
|
+
<button
|
|
1347
|
+
#resetButton
|
|
1348
|
+
type="reset"
|
|
1349
|
+
kendoButton
|
|
1350
|
+
(keydown.tab)="onTab($event, 'reset')">{{messageFor('filterClearButton')}}</button>
|
|
1351
|
+
<button #filterButton
|
|
1352
|
+
type="submit"
|
|
1353
|
+
[disabled]="disabled"
|
|
1354
|
+
kendoButton
|
|
1355
|
+
themeColor="primary"
|
|
1356
|
+
(keydown.tab)="onTab($event, 'filter')">{{messageFor('filterFilterButton')}}</button>
|
|
1357
|
+
</div>
|
|
1358
|
+
</div>
|
|
1359
|
+
</form>
|
|
1360
|
+
`, isInline: true, styles: ["\n kendo-pivot-string-filter-menu {\n display: flex;\n flex-flow: column nowrap;\n align-items: stretch;\n gap: 8px;\n }\n "], components: [{ type: StringFilterMenuComponent, selector: "kendo-pivot-string-filter-menu", inputs: ["chip", "menuTabbingService"] }], directives: [{ type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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"] }] });
|
|
1361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{
|
|
1362
|
+
type: Component,
|
|
1363
|
+
args: [{
|
|
1364
|
+
providers: [
|
|
1365
|
+
MenuTabbingService
|
|
1366
|
+
],
|
|
1367
|
+
selector: 'kendo-pivot-filter-menu-container',
|
|
1368
|
+
template: `
|
|
1369
|
+
<form (submit)="submit()" (reset)="reset()"
|
|
1370
|
+
class="k-filter-menu k-group k-reset k-state-border-up">
|
|
1371
|
+
<div class="k-filter-menu-container">
|
|
1372
|
+
<kendo-pivot-string-filter-menu
|
|
1373
|
+
[(ngModel)]="filterDescriptorValue"
|
|
1374
|
+
name="'filterDescriptorValue'"
|
|
1375
|
+
[chip]="chip"
|
|
1376
|
+
[menuTabbingService]="menuTabbingService">
|
|
1377
|
+
</kendo-pivot-string-filter-menu>
|
|
1378
|
+
<div [ngClass]="actionsClass">
|
|
1379
|
+
<button
|
|
1380
|
+
#resetButton
|
|
1381
|
+
type="reset"
|
|
1382
|
+
kendoButton
|
|
1383
|
+
(keydown.tab)="onTab($event, 'reset')">{{messageFor('filterClearButton')}}</button>
|
|
1384
|
+
<button #filterButton
|
|
1385
|
+
type="submit"
|
|
1386
|
+
[disabled]="disabled"
|
|
1387
|
+
kendoButton
|
|
1388
|
+
themeColor="primary"
|
|
1389
|
+
(keydown.tab)="onTab($event, 'filter')">{{messageFor('filterFilterButton')}}</button>
|
|
1390
|
+
</div>
|
|
1391
|
+
</div>
|
|
1392
|
+
</form>
|
|
1393
|
+
`,
|
|
1394
|
+
styles: [`
|
|
1395
|
+
kendo-pivot-string-filter-menu {
|
|
1396
|
+
display: flex;
|
|
1397
|
+
flex-flow: column nowrap;
|
|
1398
|
+
align-items: stretch;
|
|
1399
|
+
gap: 8px;
|
|
1400
|
+
}
|
|
1401
|
+
`]
|
|
1402
|
+
}]
|
|
1403
|
+
}], ctorParameters: function () { return [{ type: PivotLocalizationService }, { type: i0.ChangeDetectorRef }, { type: MenuTabbingService }, { type: ConfiguratorService }]; }, propDecorators: { close: [{
|
|
1404
|
+
type: Output
|
|
1405
|
+
}], chip: [{
|
|
1406
|
+
type: Input
|
|
1407
|
+
}], isLast: [{
|
|
1408
|
+
type: Input
|
|
1409
|
+
}], isExpanded: [{
|
|
1410
|
+
type: Input
|
|
1411
|
+
}], menuTabbingService: [{
|
|
1412
|
+
type: Input
|
|
1413
|
+
}], actionsClass: [{
|
|
1414
|
+
type: Input
|
|
1415
|
+
}], resetButton: [{
|
|
1416
|
+
type: ViewChild,
|
|
1417
|
+
args: ['resetButton']
|
|
1418
|
+
}], filterButton: [{
|
|
1419
|
+
type: ViewChild,
|
|
1420
|
+
args: ['filterButton']
|
|
1421
|
+
}] } });
|
|
1422
|
+
|
|
1423
|
+
/**
|
|
1424
|
+
* @hidden
|
|
1425
|
+
* Represents the component for setting field filters in the PivotGrid.
|
|
1426
|
+
*/
|
|
1427
|
+
class ChipMenuFilterComponent extends ChipMenuItemBase {
|
|
1428
|
+
constructor(localization, hostElement) {
|
|
1429
|
+
super();
|
|
1430
|
+
this.localization = localization;
|
|
1431
|
+
this.hostElement = hostElement;
|
|
1432
|
+
/**
|
|
1433
|
+
* Fires when the content is expanded.
|
|
1434
|
+
*/
|
|
1435
|
+
this.expand = new EventEmitter();
|
|
1436
|
+
/**
|
|
1437
|
+
* Fires when the content is collapsed.
|
|
1438
|
+
*/
|
|
1439
|
+
this.collapse = new EventEmitter();
|
|
1440
|
+
/**
|
|
1441
|
+
* Specifies if the content is expanded.
|
|
1442
|
+
*/
|
|
1443
|
+
this.expanded = false;
|
|
1444
|
+
this.isLast = false;
|
|
1445
|
+
this.actionsClass = 'k-columnmenu-actions';
|
|
1446
|
+
}
|
|
1447
|
+
onCollapse() {
|
|
1448
|
+
this.expanded = false;
|
|
1449
|
+
if (this.isLast) {
|
|
1450
|
+
this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');
|
|
1451
|
+
}
|
|
1452
|
+
this.collapse.emit();
|
|
1453
|
+
}
|
|
1454
|
+
onExpand() {
|
|
1455
|
+
this.expanded = true;
|
|
1456
|
+
this.expand.emit();
|
|
1457
|
+
}
|
|
1458
|
+
/**
|
|
1459
|
+
* Returns the localized message for a given token
|
|
1460
|
+
*/
|
|
1461
|
+
messageFor(localizationToken) {
|
|
1462
|
+
return this.localization.get(localizationToken);
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
ChipMenuFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuFilterComponent, deps: [{ token: PivotLocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1466
|
+
ChipMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuFilterComponent, selector: "kendo-pivot-chipmenu-filter", inputs: { chip: "chip", expanded: "expanded", isLast: "isLast" }, outputs: { expand: "expand", collapse: "collapse" }, usesInheritance: true, ngImport: i0, template: `
|
|
1467
|
+
<kendo-pivot-chipmenu-item
|
|
1468
|
+
classs="k-widget k-expander"
|
|
1469
|
+
[text]="messageFor('fieldMenuFilterItemLabel')"
|
|
1470
|
+
icon="filter"
|
|
1471
|
+
[expanded]="expanded"
|
|
1472
|
+
(collapse)="onCollapse()"
|
|
1473
|
+
(expand)="onExpand()">
|
|
1474
|
+
<ng-template kendoPivotChipMenuItemContentTemplate>
|
|
1475
|
+
<kendo-pivot-filter-menu-container
|
|
1476
|
+
[chip]="chip"
|
|
1477
|
+
[menuTabbingService]="service.menuTabbingService"
|
|
1478
|
+
[actionsClass]="actionsClass"
|
|
1479
|
+
[isLast]="isLast"
|
|
1480
|
+
[isExpanded]="expanded"
|
|
1481
|
+
(keydown.shift.tab)="$event.stopImmediatePropagation()"
|
|
1482
|
+
(close)="close()">
|
|
1483
|
+
</kendo-pivot-filter-menu-container>
|
|
1484
|
+
</ng-template>
|
|
1485
|
+
</kendo-pivot-chipmenu-item>
|
|
1486
|
+
`, isInline: true, components: [{ type: ChipMenuItemComponent, selector: "kendo-pivot-chipmenu-item", inputs: ["icon", "text", "selected", "expanded"], outputs: ["itemClick", "expand", "collapse"] }, { type: FilterMenuContainerComponent, selector: "kendo-pivot-filter-menu-container", inputs: ["chip", "isLast", "isExpanded", "menuTabbingService", "actionsClass"], outputs: ["close"] }], directives: [{ type: ChipMenuItemContentTemplateDirective, selector: "[kendoPivotChipMenuItemContentTemplate]" }] });
|
|
1487
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuFilterComponent, decorators: [{
|
|
1488
|
+
type: Component,
|
|
1489
|
+
args: [{
|
|
1490
|
+
selector: 'kendo-pivot-chipmenu-filter',
|
|
1491
|
+
template: `
|
|
1492
|
+
<kendo-pivot-chipmenu-item
|
|
1493
|
+
classs="k-widget k-expander"
|
|
1494
|
+
[text]="messageFor('fieldMenuFilterItemLabel')"
|
|
1495
|
+
icon="filter"
|
|
1496
|
+
[expanded]="expanded"
|
|
1497
|
+
(collapse)="onCollapse()"
|
|
1498
|
+
(expand)="onExpand()">
|
|
1499
|
+
<ng-template kendoPivotChipMenuItemContentTemplate>
|
|
1500
|
+
<kendo-pivot-filter-menu-container
|
|
1501
|
+
[chip]="chip"
|
|
1502
|
+
[menuTabbingService]="service.menuTabbingService"
|
|
1503
|
+
[actionsClass]="actionsClass"
|
|
1504
|
+
[isLast]="isLast"
|
|
1505
|
+
[isExpanded]="expanded"
|
|
1506
|
+
(keydown.shift.tab)="$event.stopImmediatePropagation()"
|
|
1507
|
+
(close)="close()">
|
|
1508
|
+
</kendo-pivot-filter-menu-container>
|
|
1509
|
+
</ng-template>
|
|
1510
|
+
</kendo-pivot-chipmenu-item>
|
|
1511
|
+
`
|
|
1512
|
+
}]
|
|
1513
|
+
}], ctorParameters: function () { return [{ type: PivotLocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{
|
|
1514
|
+
type: Output
|
|
1515
|
+
}], collapse: [{
|
|
1516
|
+
type: Output
|
|
1517
|
+
}], chip: [{
|
|
1518
|
+
type: Input
|
|
1519
|
+
}], expanded: [{
|
|
1520
|
+
type: Input
|
|
1521
|
+
}], isLast: [{
|
|
1522
|
+
type: Input
|
|
1523
|
+
}] } });
|
|
1524
|
+
|
|
1525
|
+
const POPUP_CLASS = 'k-column-menu';
|
|
1526
|
+
/**
|
|
1527
|
+
* @hidden
|
|
1528
|
+
*
|
|
1529
|
+
* Represents the field chip menu component.
|
|
1530
|
+
*/
|
|
1531
|
+
class ChipMenuComponent {
|
|
1532
|
+
constructor(popupService, localization, service) {
|
|
1533
|
+
this.popupService = popupService;
|
|
1534
|
+
this.localization = localization;
|
|
1535
|
+
this.service = service;
|
|
1536
|
+
this.tabIndex = '-1';
|
|
1537
|
+
this.closeSubscription = service.closeMenu.subscribe(this.close.bind(this));
|
|
1538
|
+
}
|
|
1539
|
+
ngOnDestroy() {
|
|
1540
|
+
this.close();
|
|
1541
|
+
this.closeSubscription.unsubscribe();
|
|
1542
|
+
}
|
|
1543
|
+
toggle(e, anchor, template) {
|
|
1544
|
+
if (e) {
|
|
1545
|
+
e.preventDefault();
|
|
1546
|
+
e.stopImmediatePropagation();
|
|
1547
|
+
}
|
|
1548
|
+
this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASS);
|
|
1549
|
+
if (!this.popupRef) {
|
|
1550
|
+
this.anchor.nativeElement.focus();
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1553
|
+
close() {
|
|
1554
|
+
this.popupService.destroy();
|
|
1555
|
+
this.popupRef = null;
|
|
1556
|
+
this.anchor.nativeElement.focus();
|
|
1557
|
+
}
|
|
1558
|
+
get chipMenuTitle() {
|
|
1559
|
+
const localizationMsg = this.localization.get('chipMenuIconTitle') || '';
|
|
1560
|
+
const chipName = this.chip.name.toString();
|
|
1561
|
+
return replaceMessagePlaceholder(localizationMsg, 'fieldName', chipName);
|
|
1562
|
+
}
|
|
1563
|
+
}
|
|
1564
|
+
ChipMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuComponent, deps: [{ token: SinglePopupService }, { token: PivotLocalizationService }, { token: ChipMenuService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1565
|
+
ChipMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipMenuComponent, selector: "kendo-pivot-chip-menu", inputs: { chip: "chip", tabIndex: "tabIndex" }, providers: [
|
|
1566
|
+
ChipMenuService,
|
|
1567
|
+
MenuTabbingService
|
|
1568
|
+
], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }], ngImport: i0, template: `
|
|
1569
|
+
<span #anchor
|
|
1570
|
+
class="k-icon k-i-more-vertical"
|
|
1571
|
+
(click)="toggle($event, anchor, template)"
|
|
1572
|
+
[tabindex]="tabIndex"
|
|
1573
|
+
[attr.title]="chipMenuTitle">
|
|
1574
|
+
</span>
|
|
1575
|
+
<ng-template #template>
|
|
1576
|
+
<kendo-pivot-chipmenu-container
|
|
1577
|
+
(keydown.escape)="close()"
|
|
1578
|
+
(keydown.enter)="$event.stopImmediatePropagation()">
|
|
1579
|
+
<kendo-pivot-chipmenu-sort
|
|
1580
|
+
#sortItem
|
|
1581
|
+
[chip]="chip"
|
|
1582
|
+
[kendoPivotChipMenuItem]="sortItem"
|
|
1583
|
+
[service]="service">
|
|
1584
|
+
</kendo-pivot-chipmenu-sort>
|
|
1585
|
+
|
|
1586
|
+
<kendo-pivot-chipmenu-filter
|
|
1587
|
+
#filterItem
|
|
1588
|
+
[chip]="chip"
|
|
1589
|
+
[kendoPivotChipMenuItem]="filterItem"
|
|
1590
|
+
[service]="service">
|
|
1591
|
+
</kendo-pivot-chipmenu-filter>
|
|
1592
|
+
</kendo-pivot-chipmenu-container>
|
|
1593
|
+
</ng-template>
|
|
1594
|
+
`, isInline: true, components: [{ type: ChipMenuContainerComponent, selector: "kendo-pivot-chipmenu-container" }, { type: ChipMenuSortComponent, selector: "kendo-pivot-chipmenu-sort", inputs: ["chip"] }, { type: ChipMenuFilterComponent, selector: "kendo-pivot-chipmenu-filter", inputs: ["chip", "expanded", "isLast"], outputs: ["expand", "collapse"] }], directives: [{ type: ChipMenuItemDirective, selector: "[kendoPivotChipMenuItem]", inputs: ["kendoPivotChipMenuItem"] }] });
|
|
1595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuComponent, decorators: [{
|
|
1596
|
+
type: Component,
|
|
1597
|
+
args: [{
|
|
1598
|
+
providers: [
|
|
1599
|
+
ChipMenuService,
|
|
1600
|
+
MenuTabbingService
|
|
1601
|
+
],
|
|
1602
|
+
selector: 'kendo-pivot-chip-menu',
|
|
1603
|
+
template: `
|
|
1604
|
+
<span #anchor
|
|
1605
|
+
class="k-icon k-i-more-vertical"
|
|
1606
|
+
(click)="toggle($event, anchor, template)"
|
|
1607
|
+
[tabindex]="tabIndex"
|
|
1608
|
+
[attr.title]="chipMenuTitle">
|
|
1609
|
+
</span>
|
|
1610
|
+
<ng-template #template>
|
|
1611
|
+
<kendo-pivot-chipmenu-container
|
|
1612
|
+
(keydown.escape)="close()"
|
|
1613
|
+
(keydown.enter)="$event.stopImmediatePropagation()">
|
|
1614
|
+
<kendo-pivot-chipmenu-sort
|
|
1615
|
+
#sortItem
|
|
1616
|
+
[chip]="chip"
|
|
1617
|
+
[kendoPivotChipMenuItem]="sortItem"
|
|
1618
|
+
[service]="service">
|
|
1619
|
+
</kendo-pivot-chipmenu-sort>
|
|
1620
|
+
|
|
1621
|
+
<kendo-pivot-chipmenu-filter
|
|
1622
|
+
#filterItem
|
|
1623
|
+
[chip]="chip"
|
|
1624
|
+
[kendoPivotChipMenuItem]="filterItem"
|
|
1625
|
+
[service]="service">
|
|
1626
|
+
</kendo-pivot-chipmenu-filter>
|
|
1627
|
+
</kendo-pivot-chipmenu-container>
|
|
1628
|
+
</ng-template>
|
|
1629
|
+
`
|
|
1630
|
+
}]
|
|
1631
|
+
}], ctorParameters: function () { return [{ type: SinglePopupService }, { type: PivotLocalizationService }, { type: ChipMenuService }]; }, propDecorators: { chip: [{
|
|
1632
|
+
type: Input
|
|
1633
|
+
}], tabIndex: [{
|
|
1634
|
+
type: Input
|
|
1635
|
+
}], anchor: [{
|
|
1636
|
+
type: ViewChild,
|
|
1637
|
+
args: ['anchor', { static: true }]
|
|
1638
|
+
}] } });
|
|
1639
|
+
|
|
526
1640
|
/**
|
|
527
1641
|
* @hidden
|
|
528
1642
|
*/
|
|
@@ -690,6 +1804,7 @@ class PivotGridConfiguratorComponent {
|
|
|
690
1804
|
this.cdr = cdr;
|
|
691
1805
|
this.hostClass = true;
|
|
692
1806
|
this.horizontal = false;
|
|
1807
|
+
this.sort = new Array();
|
|
693
1808
|
this.checked = [];
|
|
694
1809
|
this.subs = new Subscription();
|
|
695
1810
|
/**
|
|
@@ -852,10 +1967,11 @@ class PivotGridConfiguratorComponent {
|
|
|
852
1967
|
}
|
|
853
1968
|
;
|
|
854
1969
|
}
|
|
855
|
-
PivotGridConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridConfiguratorComponent, deps: [{ token: PivotGridDataService }, { token:
|
|
856
|
-
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: [
|
|
1970
|
+
PivotGridConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridConfiguratorComponent, deps: [{ token: PivotGridDataService }, { token: i1.LocalizationService }, { token: ConfiguratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1971
|
+
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: [
|
|
857
1972
|
ConfiguratorService,
|
|
858
|
-
DropCueService
|
|
1973
|
+
DropCueService,
|
|
1974
|
+
SinglePopupService
|
|
859
1975
|
], ngImport: i0, template: `
|
|
860
1976
|
<div
|
|
861
1977
|
class="k-pivotgrid-configurator-panel k-pivotgrid-configurator-push"
|
|
@@ -924,6 +2040,10 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
924
2040
|
[removable]="true"
|
|
925
2041
|
>
|
|
926
2042
|
{{ getName(item.name) }}
|
|
2043
|
+
|
|
2044
|
+
<kendo-pivot-chip-menu
|
|
2045
|
+
[chip]="item">
|
|
2046
|
+
</kendo-pivot-chip-menu>
|
|
927
2047
|
</kendo-chip>
|
|
928
2048
|
</kendo-chiplist>
|
|
929
2049
|
|
|
@@ -950,6 +2070,10 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
950
2070
|
[removable]="true"
|
|
951
2071
|
>
|
|
952
2072
|
{{ getName(item.name) }}
|
|
2073
|
+
|
|
2074
|
+
<kendo-pivot-chip-menu
|
|
2075
|
+
[chip]="item">
|
|
2076
|
+
</kendo-pivot-chip-menu>
|
|
953
2077
|
</kendo-chip>
|
|
954
2078
|
</kendo-chiplist>
|
|
955
2079
|
|
|
@@ -972,18 +2096,17 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
972
2096
|
kendoDropTarget
|
|
973
2097
|
axes="measureAxes"
|
|
974
2098
|
>
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
</kendo-chip>
|
|
2099
|
+
<kendo-chip *ngFor="let item of state.measureAxes"
|
|
2100
|
+
kendoChipDraggable
|
|
2101
|
+
kendoDraggable
|
|
2102
|
+
kendoDropTarget
|
|
2103
|
+
[item]="item"
|
|
2104
|
+
axes="measureAxes"
|
|
2105
|
+
rounded="full"
|
|
2106
|
+
[removable]="true"
|
|
2107
|
+
>
|
|
2108
|
+
{{ getName(item.name) }}
|
|
2109
|
+
</kendo-chip>
|
|
987
2110
|
</kendo-chiplist>
|
|
988
2111
|
|
|
989
2112
|
<ng-template #noMeasureAxes>
|
|
@@ -998,14 +2121,15 @@ PivotGridConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
998
2121
|
<button kendoButton themeColor="primary" type="button" (click)="handleSubmit()">{{messageFor('configuratorApplyButtonText')}}</button>
|
|
999
2122
|
</div>
|
|
1000
2123
|
</div>
|
|
1001
|
-
`, 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:
|
|
2124
|
+
`, 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: 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: i6.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["item", "axes"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DraggableChipDirective, selector: "[kendoChipDraggable]", inputs: ["item"] }, { type: i3.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"] }] });
|
|
1002
2125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridConfiguratorComponent, decorators: [{
|
|
1003
2126
|
type: Component,
|
|
1004
2127
|
args: [{
|
|
1005
2128
|
selector: 'kendo-pivotgrid-configurator',
|
|
1006
2129
|
providers: [
|
|
1007
2130
|
ConfiguratorService,
|
|
1008
|
-
DropCueService
|
|
2131
|
+
DropCueService,
|
|
2132
|
+
SinglePopupService
|
|
1009
2133
|
],
|
|
1010
2134
|
template: `
|
|
1011
2135
|
<div
|
|
@@ -1075,6 +2199,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1075
2199
|
[removable]="true"
|
|
1076
2200
|
>
|
|
1077
2201
|
{{ getName(item.name) }}
|
|
2202
|
+
|
|
2203
|
+
<kendo-pivot-chip-menu
|
|
2204
|
+
[chip]="item">
|
|
2205
|
+
</kendo-pivot-chip-menu>
|
|
1078
2206
|
</kendo-chip>
|
|
1079
2207
|
</kendo-chiplist>
|
|
1080
2208
|
|
|
@@ -1101,6 +2229,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1101
2229
|
[removable]="true"
|
|
1102
2230
|
>
|
|
1103
2231
|
{{ getName(item.name) }}
|
|
2232
|
+
|
|
2233
|
+
<kendo-pivot-chip-menu
|
|
2234
|
+
[chip]="item">
|
|
2235
|
+
</kendo-pivot-chip-menu>
|
|
1104
2236
|
</kendo-chip>
|
|
1105
2237
|
</kendo-chiplist>
|
|
1106
2238
|
|
|
@@ -1123,18 +2255,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1123
2255
|
kendoDropTarget
|
|
1124
2256
|
axes="measureAxes"
|
|
1125
2257
|
>
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
</kendo-chip>
|
|
2258
|
+
<kendo-chip *ngFor="let item of state.measureAxes"
|
|
2259
|
+
kendoChipDraggable
|
|
2260
|
+
kendoDraggable
|
|
2261
|
+
kendoDropTarget
|
|
2262
|
+
[item]="item"
|
|
2263
|
+
axes="measureAxes"
|
|
2264
|
+
rounded="full"
|
|
2265
|
+
[removable]="true"
|
|
2266
|
+
>
|
|
2267
|
+
{{ getName(item.name) }}
|
|
2268
|
+
</kendo-chip>
|
|
1138
2269
|
</kendo-chiplist>
|
|
1139
2270
|
|
|
1140
2271
|
<ng-template #noMeasureAxes>
|
|
@@ -1151,11 +2282,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1151
2282
|
</div>
|
|
1152
2283
|
`
|
|
1153
2284
|
}]
|
|
1154
|
-
}], ctorParameters: function () { return [{ type: PivotGridDataService }, { type:
|
|
2285
|
+
}], ctorParameters: function () { return [{ type: PivotGridDataService }, { type: i1.LocalizationService }, { type: ConfiguratorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
|
|
1155
2286
|
type: HostBinding,
|
|
1156
2287
|
args: ['class.k-pivotgrid-configurator']
|
|
1157
2288
|
}], horizontal: [{
|
|
1158
2289
|
type: Input
|
|
2290
|
+
}], sort: [{
|
|
2291
|
+
type: Input
|
|
2292
|
+
}], filter: [{
|
|
2293
|
+
type: Input
|
|
1159
2294
|
}] } });
|
|
1160
2295
|
|
|
1161
2296
|
/**
|
|
@@ -1164,7 +2299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1164
2299
|
class PivotGridMessages extends ComponentMessages {
|
|
1165
2300
|
}
|
|
1166
2301
|
PivotGridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1167
|
-
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 });
|
|
2302
|
+
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 });
|
|
1168
2303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridMessages, decorators: [{
|
|
1169
2304
|
type: Directive
|
|
1170
2305
|
}], propDecorators: { fieldMenuFilterItemLabel: [{
|
|
@@ -1227,6 +2362,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1227
2362
|
type: Input
|
|
1228
2363
|
}], configuratorEmptyMeasuresText: [{
|
|
1229
2364
|
type: Input
|
|
2365
|
+
}], chipMenuIconTitle: [{
|
|
2366
|
+
type: Input
|
|
1230
2367
|
}] } });
|
|
1231
2368
|
|
|
1232
2369
|
/**
|
|
@@ -1238,7 +2375,7 @@ class LocalizedMessagesDirective extends PivotGridMessages {
|
|
|
1238
2375
|
this.service = service;
|
|
1239
2376
|
}
|
|
1240
2377
|
}
|
|
1241
|
-
LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token:
|
|
2378
|
+
LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1242
2379
|
LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]", providers: [
|
|
1243
2380
|
{
|
|
1244
2381
|
provide: PivotGridMessages,
|
|
@@ -1256,7 +2393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1256
2393
|
],
|
|
1257
2394
|
selector: '[kendoPivotGridLocalizedMessages]'
|
|
1258
2395
|
}]
|
|
1259
|
-
}], ctorParameters: function () { return [{ type:
|
|
2396
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
|
|
1260
2397
|
|
|
1261
2398
|
const DEFAULT_LOADER_SETTINGS = {
|
|
1262
2399
|
type: 'converging-spinner',
|
|
@@ -1271,10 +2408,12 @@ const DEFAULT_CONFIGURATOR_SETTINGS = {
|
|
|
1271
2408
|
* Represents the Kendo UI PivotGrid component for Angular.
|
|
1272
2409
|
*/
|
|
1273
2410
|
class PivotGridComponent {
|
|
1274
|
-
constructor(hostEl, zone, dataService, localization, _scrollbarWidthService) {
|
|
2411
|
+
constructor(hostEl, zone, dataService, localization, renderer, _scrollbarWidthService) {
|
|
2412
|
+
this.hostEl = hostEl;
|
|
1275
2413
|
this.zone = zone;
|
|
1276
2414
|
this.dataService = dataService;
|
|
1277
2415
|
this.localization = localization;
|
|
2416
|
+
this.renderer = renderer;
|
|
1278
2417
|
this.hostClass = true;
|
|
1279
2418
|
this.ariaRole = 'grid';
|
|
1280
2419
|
/**
|
|
@@ -1283,6 +2422,12 @@ class PivotGridComponent {
|
|
|
1283
2422
|
* @default 200
|
|
1284
2423
|
*/
|
|
1285
2424
|
this.columnHeadersWidth = 200;
|
|
2425
|
+
/**
|
|
2426
|
+
* If set to true, the user can use dedicated shortcuts to interact with the PivotGrid. By default, navigation is disabled.
|
|
2427
|
+
*
|
|
2428
|
+
* @default false
|
|
2429
|
+
*/
|
|
2430
|
+
this.navigable = false;
|
|
1286
2431
|
this.resizeObservers = [];
|
|
1287
2432
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
|
1288
2433
|
this.subs = new Subscription();
|
|
@@ -1370,15 +2515,29 @@ class PivotGridComponent {
|
|
|
1370
2515
|
this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
|
|
1371
2516
|
this.subs.add(fromEvent(rowHeadersTable, 'wheel')
|
|
1372
2517
|
.pipe(merge(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
|
|
2518
|
+
if (this.navigable) {
|
|
2519
|
+
this.initNavigation();
|
|
2520
|
+
}
|
|
1373
2521
|
});
|
|
1374
2522
|
}
|
|
1375
2523
|
}
|
|
1376
2524
|
ngAfterContentInit() {
|
|
1377
2525
|
this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
|
|
1378
2526
|
}
|
|
2527
|
+
ngOnChanges(changes) {
|
|
2528
|
+
if (isChanged('navigable', changes)) {
|
|
2529
|
+
if (this.navigable) {
|
|
2530
|
+
this.initNavigation();
|
|
2531
|
+
}
|
|
2532
|
+
else {
|
|
2533
|
+
this.stopNavigation();
|
|
2534
|
+
}
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
1379
2537
|
ngOnDestroy() {
|
|
1380
2538
|
this.resizeObservers.forEach(o => o.disconnect());
|
|
1381
2539
|
this.subs.unsubscribe();
|
|
2540
|
+
this.stopNavigation();
|
|
1382
2541
|
}
|
|
1383
2542
|
/**
|
|
1384
2543
|
* @hidden
|
|
@@ -1386,16 +2545,38 @@ class PivotGridComponent {
|
|
|
1386
2545
|
messageFor(localizationToken) {
|
|
1387
2546
|
return this.localization.get(localizationToken);
|
|
1388
2547
|
}
|
|
2548
|
+
initNavigation() {
|
|
2549
|
+
this.stopNavigation();
|
|
2550
|
+
this.navigation = new PivotGridNavigation({ tabIndex: 0 });
|
|
2551
|
+
this.navigation.start(this.hostEl.nativeElement);
|
|
2552
|
+
const firstCell = this.navigation.first;
|
|
2553
|
+
if (firstCell) {
|
|
2554
|
+
firstCell.setAttribute('tabindex', '0');
|
|
2555
|
+
}
|
|
2556
|
+
this.subs.add(this.dataService.directive.expandChange.pipe(merge(this.dataService.directive.configurationChange)).subscribe(() => this.zone.runOutsideAngular(() => {
|
|
2557
|
+
setTimeout(() => this.navigation.update());
|
|
2558
|
+
})));
|
|
2559
|
+
}
|
|
2560
|
+
stopNavigation() {
|
|
2561
|
+
if (this.navigation) {
|
|
2562
|
+
const lastFocusedEl = this.navigation.elements.find(el => el.hasAttribute('tabindex'));
|
|
2563
|
+
if (lastFocusedEl) {
|
|
2564
|
+
this.renderer.removeAttribute(lastFocusedEl, 'tabindex');
|
|
2565
|
+
}
|
|
2566
|
+
this.navigation.stop();
|
|
2567
|
+
}
|
|
2568
|
+
}
|
|
1389
2569
|
}
|
|
1390
|
-
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token:
|
|
1391
|
-
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: [
|
|
2570
|
+
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i3.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2571
|
+
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: [
|
|
1392
2572
|
PivotGridDataService,
|
|
1393
2573
|
LocalizationService,
|
|
2574
|
+
PivotLocalizationService,
|
|
1394
2575
|
{
|
|
1395
2576
|
provide: L10N_PREFIX,
|
|
1396
2577
|
useValue: 'kendo.pivotgrid'
|
|
1397
2578
|
}
|
|
1398
|
-
], 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: `
|
|
2579
|
+
], 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: `
|
|
1399
2580
|
<ng-container kendoPivotGridLocalizedMessages
|
|
1400
2581
|
i18n-loading="kendo.pivotgrid.loading|The loading text"
|
|
1401
2582
|
loading="Loading"
|
|
@@ -1485,10 +2666,15 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
1485
2666
|
configuratorEmptyColumnsText="Select some fields to begin setup"
|
|
1486
2667
|
|
|
1487
2668
|
i18n-configuratorEmptyMeasuresText="kendo.pivotgrid.configuratorEmptyMeasuresText|The text content of the PivotGrid configurator empty measures container"
|
|
1488
|
-
configuratorEmptyMeasuresText="Select some fields to begin setup"
|
|
2669
|
+
configuratorEmptyMeasuresText="Select some fields to begin setup"
|
|
2670
|
+
|
|
2671
|
+
i18n-chipMenuIconTitle="kendo.grid.chipMenuIconTitle|The title of the field menu icon"
|
|
2672
|
+
chipMenuIconTitle="{{ '{fieldName} Field Menu' }}"></ng-container>
|
|
1489
2673
|
|
|
1490
2674
|
<div #table class="k-pivotgrid">
|
|
1491
|
-
<span class="k-pivotgrid-empty-cell"
|
|
2675
|
+
<span class="k-pivotgrid-empty-cell">
|
|
2676
|
+
<span class="k-sr-only">{{messageFor('emptyCellLabel')}}</span>
|
|
2677
|
+
</span>
|
|
1492
2678
|
<kendo-pivotgrid-table
|
|
1493
2679
|
#colHeadersTable
|
|
1494
2680
|
[colWidth]="columnHeadersWidth"
|
|
@@ -1523,10 +2709,10 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
1523
2709
|
<div *ngIf="configurator"
|
|
1524
2710
|
class="k-pivotgrid-configurator-button"
|
|
1525
2711
|
(click)="showConfigurator = !showConfigurator">
|
|
1526
|
-
<span>{{
|
|
2712
|
+
<span>{{messageFor('configuratorButtonText')}}<span class="k-icon k-i-gear k-color-inherit"></span>
|
|
1527
2713
|
</span>
|
|
1528
2714
|
</div>
|
|
1529
|
-
`, 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: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth"] }, { type: i5$1.LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["horizontal"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { type:
|
|
2715
|
+
`, 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: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth"] }, { type: i5$1.LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["horizontal", "sort", "filter"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1530
2716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, decorators: [{
|
|
1531
2717
|
type: Component,
|
|
1532
2718
|
args: [{
|
|
@@ -1534,6 +2720,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1534
2720
|
providers: [
|
|
1535
2721
|
PivotGridDataService,
|
|
1536
2722
|
LocalizationService,
|
|
2723
|
+
PivotLocalizationService,
|
|
1537
2724
|
{
|
|
1538
2725
|
provide: L10N_PREFIX,
|
|
1539
2726
|
useValue: 'kendo.pivotgrid'
|
|
@@ -1629,10 +2816,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1629
2816
|
configuratorEmptyColumnsText="Select some fields to begin setup"
|
|
1630
2817
|
|
|
1631
2818
|
i18n-configuratorEmptyMeasuresText="kendo.pivotgrid.configuratorEmptyMeasuresText|The text content of the PivotGrid configurator empty measures container"
|
|
1632
|
-
configuratorEmptyMeasuresText="Select some fields to begin setup"
|
|
2819
|
+
configuratorEmptyMeasuresText="Select some fields to begin setup"
|
|
2820
|
+
|
|
2821
|
+
i18n-chipMenuIconTitle="kendo.grid.chipMenuIconTitle|The title of the field menu icon"
|
|
2822
|
+
chipMenuIconTitle="{{ '{fieldName} Field Menu' }}"></ng-container>
|
|
1633
2823
|
|
|
1634
2824
|
<div #table class="k-pivotgrid">
|
|
1635
|
-
<span class="k-pivotgrid-empty-cell"
|
|
2825
|
+
<span class="k-pivotgrid-empty-cell">
|
|
2826
|
+
<span class="k-sr-only">{{messageFor('emptyCellLabel')}}</span>
|
|
2827
|
+
</span>
|
|
1636
2828
|
<kendo-pivotgrid-table
|
|
1637
2829
|
#colHeadersTable
|
|
1638
2830
|
[colWidth]="columnHeadersWidth"
|
|
@@ -1667,7 +2859,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1667
2859
|
<div *ngIf="configurator"
|
|
1668
2860
|
class="k-pivotgrid-configurator-button"
|
|
1669
2861
|
(click)="showConfigurator = !showConfigurator">
|
|
1670
|
-
<span>{{
|
|
2862
|
+
<span>{{messageFor('configuratorButtonText')}}<span class="k-icon k-i-gear k-color-inherit"></span>
|
|
1671
2863
|
</span>
|
|
1672
2864
|
</div>
|
|
1673
2865
|
`,
|
|
@@ -1681,7 +2873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1681
2873
|
}
|
|
1682
2874
|
`]
|
|
1683
2875
|
}]
|
|
1684
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type:
|
|
2876
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i3.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
1685
2877
|
type: HostBinding,
|
|
1686
2878
|
args: ['class.k-d-flex']
|
|
1687
2879
|
}, {
|
|
@@ -1723,16 +2915,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1723
2915
|
type: Input
|
|
1724
2916
|
}], columnHeadersWidth: [{
|
|
1725
2917
|
type: Input
|
|
2918
|
+
}], navigable: [{
|
|
2919
|
+
type: Input
|
|
1726
2920
|
}] } });
|
|
1727
2921
|
|
|
1728
2922
|
/**
|
|
1729
2923
|
* @hidden
|
|
1730
2924
|
*/
|
|
1731
2925
|
class PivotGridState {
|
|
1732
|
-
constructor(columnAxes, rowAxes, measureAxes) {
|
|
2926
|
+
constructor(columnAxes, rowAxes, measureAxes, sort, filter) {
|
|
1733
2927
|
this.columnAxes = columnAxes;
|
|
1734
2928
|
this.rowAxes = rowAxes;
|
|
1735
2929
|
this.measureAxes = measureAxes;
|
|
2930
|
+
this.sort = sort;
|
|
2931
|
+
this.filter = filter;
|
|
1736
2932
|
}
|
|
1737
2933
|
}
|
|
1738
2934
|
|
|
@@ -1784,6 +2980,10 @@ class PivotBaseBindingDirective {
|
|
|
1784
2980
|
* Represents the measure axes configuration of the PivotGrid.
|
|
1785
2981
|
*/
|
|
1786
2982
|
this.measureAxes = [];
|
|
2983
|
+
/**
|
|
2984
|
+
* Represents the initial sorted state of the PivotGrid.
|
|
2985
|
+
*/
|
|
2986
|
+
this.sort = [];
|
|
1787
2987
|
/**
|
|
1788
2988
|
* Fires each time a row or column header gets expanded or collapsed by the end user. The event is preventable.
|
|
1789
2989
|
* If you prevent the event, the PivotGrid will not be rerendered with the new state, resulting from the end user interaction.
|
|
@@ -1794,13 +2994,18 @@ class PivotBaseBindingDirective {
|
|
|
1794
2994
|
* If you prevent the event, the PivotGrid will not be rerendered with the new state, resulting from the configuration changes, applied through the configurator interface.
|
|
1795
2995
|
*/
|
|
1796
2996
|
this.configurationChange = new EventEmitter();
|
|
2997
|
+
/**
|
|
2998
|
+
* Fires each time when new data is loaded and transformed to show aggregated values.
|
|
2999
|
+
* The event fires upon initialization and on user interaction that changes the state of the PivotGrid.
|
|
3000
|
+
*/
|
|
3001
|
+
this.dataLoaded = new EventEmitter();
|
|
1797
3002
|
this.subs = new Subscription();
|
|
1798
3003
|
}
|
|
1799
3004
|
/**
|
|
1800
3005
|
* @hidden
|
|
1801
3006
|
*/
|
|
1802
3007
|
get state() {
|
|
1803
|
-
return new PivotGridState(this.columnAxes, this.rowAxes, this.measureAxes);
|
|
3008
|
+
return new PivotGridState(this.columnAxes, this.rowAxes, this.measureAxes, this.sort, this.filter);
|
|
1804
3009
|
}
|
|
1805
3010
|
ngOnInit() {
|
|
1806
3011
|
this.loadData(this.state);
|
|
@@ -1826,11 +3031,20 @@ class PivotBaseBindingDirective {
|
|
|
1826
3031
|
this.dataService.configuredFields.next({
|
|
1827
3032
|
columnAxes: state.columnAxes,
|
|
1828
3033
|
rowAxes: state.rowAxes,
|
|
1829
|
-
measureAxes: state.measureAxes
|
|
3034
|
+
measureAxes: state.measureAxes,
|
|
3035
|
+
sort: state.sort,
|
|
3036
|
+
filter: state.filter
|
|
1830
3037
|
});
|
|
1831
3038
|
this.loadData(state);
|
|
1832
3039
|
});
|
|
1833
3040
|
}));
|
|
3041
|
+
this.subs.add(this.dataService.valuesRows.subscribe((data) => {
|
|
3042
|
+
this.zone.run(() => {
|
|
3043
|
+
if (hasObservers(this.dataLoaded)) {
|
|
3044
|
+
this.dataLoaded.emit(data);
|
|
3045
|
+
}
|
|
3046
|
+
});
|
|
3047
|
+
}));
|
|
1834
3048
|
this.dataService.directive = this;
|
|
1835
3049
|
}
|
|
1836
3050
|
ngOnDestroy() {
|
|
@@ -1847,7 +3061,9 @@ class PivotBaseBindingDirective {
|
|
|
1847
3061
|
this.dataService.configuredFields.next({
|
|
1848
3062
|
columnAxes: this.columnAxes,
|
|
1849
3063
|
rowAxes: this.rowAxes,
|
|
1850
|
-
measureAxes: this.measureAxes
|
|
3064
|
+
measureAxes: this.measureAxes,
|
|
3065
|
+
sort: this.sort,
|
|
3066
|
+
filter: this.filter
|
|
1851
3067
|
});
|
|
1852
3068
|
}
|
|
1853
3069
|
updateHeaders(axes, tree, path) {
|
|
@@ -1874,7 +3090,7 @@ class PivotBaseBindingDirective {
|
|
|
1874
3090
|
;
|
|
1875
3091
|
}
|
|
1876
3092
|
PivotBaseBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotBaseBindingDirective, deps: [{ token: PivotGridDataService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1877
|
-
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" }, ngImport: i0 });
|
|
3093
|
+
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 });
|
|
1878
3094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotBaseBindingDirective, decorators: [{
|
|
1879
3095
|
type: Directive,
|
|
1880
3096
|
args: [{
|
|
@@ -1886,10 +3102,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1886
3102
|
type: Input
|
|
1887
3103
|
}], measureAxes: [{
|
|
1888
3104
|
type: Input
|
|
3105
|
+
}], sort: [{
|
|
3106
|
+
type: Input
|
|
3107
|
+
}], filter: [{
|
|
3108
|
+
type: Input
|
|
1889
3109
|
}], expandChange: [{
|
|
1890
3110
|
type: Output
|
|
1891
3111
|
}], configurationChange: [{
|
|
1892
3112
|
type: Output
|
|
3113
|
+
}], dataLoaded: [{
|
|
3114
|
+
type: Output
|
|
1893
3115
|
}] } });
|
|
1894
3116
|
|
|
1895
3117
|
const dataField = 'aggregate';
|
|
@@ -1921,13 +3143,13 @@ class PivotLocalBindingDirective extends PivotBaseBindingDirective {
|
|
|
1921
3143
|
this.updateConfiguratorFields();
|
|
1922
3144
|
}
|
|
1923
3145
|
loadData(state) {
|
|
1924
|
-
const { columnAxes, rowAxes, measureAxes } = state;
|
|
3146
|
+
const { columnAxes, rowAxes, measureAxes, sort, filter } = state;
|
|
1925
3147
|
const rootColumnAxes = this.getRootAxes(columnAxes);
|
|
1926
3148
|
const rootRowAxes = this.getRootAxes(rowAxes);
|
|
1927
3149
|
const columnSettings = rootColumnAxes.split(stringSeparator).map(this.createAxisSettings);
|
|
1928
3150
|
const rowSettings = rootRowAxes.split(stringSeparator).map(this.createAxisSettings);
|
|
1929
3151
|
const measuresSettings = measureAxes.map(m => this.measures.find(meas => String(meas.name) === String(m.name))).filter(Boolean);
|
|
1930
|
-
const dataTree = createDataTree(this.data, rowSettings, columnSettings, measuresSettings, bindingFields);
|
|
3152
|
+
const dataTree = createDataTree(this.data, rowSettings, columnSettings, measuresSettings, bindingFields, filter);
|
|
1931
3153
|
this.dataState = createLocalDataState({
|
|
1932
3154
|
dataTree,
|
|
1933
3155
|
rowSettings,
|
|
@@ -1935,7 +3157,7 @@ class PivotLocalBindingDirective extends PivotBaseBindingDirective {
|
|
|
1935
3157
|
rowAxes: rowAxes,
|
|
1936
3158
|
columnAxes: columnAxes,
|
|
1937
3159
|
measures: measuresSettings,
|
|
1938
|
-
sort:
|
|
3160
|
+
sort: sort,
|
|
1939
3161
|
fields: bindingFields
|
|
1940
3162
|
});
|
|
1941
3163
|
this.updateDataServiceFields();
|
|
@@ -1976,16 +3198,18 @@ class PivotOLAPBindingDirective extends PivotBaseBindingDirective {
|
|
|
1976
3198
|
}
|
|
1977
3199
|
}
|
|
1978
3200
|
loadData(state) {
|
|
1979
|
-
const { columnAxes, rowAxes, measureAxes } = state;
|
|
3201
|
+
const { columnAxes, rowAxes, measureAxes, sort, filter } = state;
|
|
1980
3202
|
this.dataService.loading.next(true);
|
|
1981
3203
|
const options = {
|
|
1982
3204
|
connection: {
|
|
1983
3205
|
catalog: this.catalog,
|
|
1984
3206
|
cube: this.cube
|
|
1985
3207
|
},
|
|
1986
|
-
columnAxes
|
|
1987
|
-
rowAxes
|
|
1988
|
-
measureAxes
|
|
3208
|
+
columnAxes,
|
|
3209
|
+
rowAxes,
|
|
3210
|
+
measureAxes,
|
|
3211
|
+
sort,
|
|
3212
|
+
filter
|
|
1989
3213
|
};
|
|
1990
3214
|
fetchData({ url: this.url }, JSON.parse(JSON.stringify(options)))
|
|
1991
3215
|
.then(createDataState)
|
|
@@ -2146,7 +3370,7 @@ class CustomMessagesComponent extends PivotGridMessages {
|
|
|
2146
3370
|
return true;
|
|
2147
3371
|
}
|
|
2148
3372
|
}
|
|
2149
|
-
CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomMessagesComponent, deps: [{ token:
|
|
3373
|
+
CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2150
3374
|
CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomMessagesComponent, selector: "kendo-pivotgrid-messages", providers: [
|
|
2151
3375
|
{
|
|
2152
3376
|
provide: PivotGridMessages,
|
|
@@ -2165,16 +3389,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
2165
3389
|
selector: 'kendo-pivotgrid-messages',
|
|
2166
3390
|
template: ``
|
|
2167
3391
|
}]
|
|
2168
|
-
}], ctorParameters: function () { return [{ type:
|
|
3392
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
|
|
2169
3393
|
|
|
2170
|
-
const
|
|
3394
|
+
const MODULES = [
|
|
2171
3395
|
CommonModule,
|
|
3396
|
+
DropDownsModule,
|
|
3397
|
+
InputsModule,
|
|
3398
|
+
ButtonsModule
|
|
3399
|
+
];
|
|
3400
|
+
/**
|
|
3401
|
+
* @hidden
|
|
3402
|
+
*/
|
|
3403
|
+
class SharedModule {
|
|
3404
|
+
}
|
|
3405
|
+
SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3406
|
+
SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, imports: [CommonModule,
|
|
3407
|
+
DropDownsModule,
|
|
3408
|
+
InputsModule,
|
|
3409
|
+
ButtonsModule], exports: [CommonModule,
|
|
3410
|
+
DropDownsModule,
|
|
3411
|
+
InputsModule,
|
|
3412
|
+
ButtonsModule] });
|
|
3413
|
+
SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, imports: [[MODULES], CommonModule,
|
|
3414
|
+
DropDownsModule,
|
|
3415
|
+
InputsModule,
|
|
3416
|
+
ButtonsModule] });
|
|
3417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedModule, decorators: [{
|
|
3418
|
+
type: NgModule,
|
|
3419
|
+
args: [{
|
|
3420
|
+
imports: [MODULES],
|
|
3421
|
+
exports: [MODULES]
|
|
3422
|
+
}]
|
|
3423
|
+
}] });
|
|
3424
|
+
|
|
3425
|
+
const COMPONENTS = [
|
|
3426
|
+
ChipMenuItemComponent,
|
|
3427
|
+
ChipMenuSortComponent,
|
|
3428
|
+
ChipMenuComponent,
|
|
3429
|
+
ChipMenuFilterComponent,
|
|
3430
|
+
ChipMenuItemContentTemplateDirective,
|
|
3431
|
+
FilterMenuContainerComponent,
|
|
3432
|
+
StringFilterMenuComponent,
|
|
3433
|
+
FilterMenuDropDownListDirective,
|
|
3434
|
+
ChipMenuContainerComponent,
|
|
3435
|
+
ChipMenuItemDirective
|
|
3436
|
+
];
|
|
3437
|
+
/**
|
|
3438
|
+
* @hidden
|
|
3439
|
+
*/
|
|
3440
|
+
class ChipMenuModule {
|
|
3441
|
+
static exports() {
|
|
3442
|
+
return [
|
|
3443
|
+
ChipMenuItemComponent,
|
|
3444
|
+
ChipMenuSortComponent,
|
|
3445
|
+
ChipMenuContainerComponent,
|
|
3446
|
+
ChipMenuItemDirective,
|
|
3447
|
+
ChipMenuComponent
|
|
3448
|
+
];
|
|
3449
|
+
}
|
|
3450
|
+
}
|
|
3451
|
+
ChipMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3452
|
+
ChipMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuModule, declarations: [ChipMenuItemComponent,
|
|
3453
|
+
ChipMenuSortComponent,
|
|
3454
|
+
ChipMenuComponent,
|
|
3455
|
+
ChipMenuFilterComponent,
|
|
3456
|
+
ChipMenuItemContentTemplateDirective,
|
|
3457
|
+
FilterMenuContainerComponent,
|
|
3458
|
+
StringFilterMenuComponent,
|
|
3459
|
+
FilterMenuDropDownListDirective,
|
|
3460
|
+
ChipMenuContainerComponent,
|
|
3461
|
+
ChipMenuItemDirective], imports: [SharedModule,
|
|
3462
|
+
ReactiveFormsModule,
|
|
3463
|
+
FormsModule], exports: [ChipMenuItemComponent,
|
|
3464
|
+
ChipMenuSortComponent,
|
|
3465
|
+
ChipMenuComponent,
|
|
3466
|
+
ChipMenuFilterComponent,
|
|
3467
|
+
ChipMenuItemContentTemplateDirective,
|
|
3468
|
+
FilterMenuContainerComponent,
|
|
3469
|
+
StringFilterMenuComponent,
|
|
3470
|
+
FilterMenuDropDownListDirective,
|
|
3471
|
+
ChipMenuContainerComponent,
|
|
3472
|
+
ChipMenuItemDirective] });
|
|
3473
|
+
ChipMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuModule, imports: [[
|
|
3474
|
+
SharedModule,
|
|
3475
|
+
ReactiveFormsModule,
|
|
3476
|
+
FormsModule
|
|
3477
|
+
]] });
|
|
3478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChipMenuModule, decorators: [{
|
|
3479
|
+
type: NgModule,
|
|
3480
|
+
args: [{
|
|
3481
|
+
declarations: [COMPONENTS],
|
|
3482
|
+
imports: [
|
|
3483
|
+
SharedModule,
|
|
3484
|
+
ReactiveFormsModule,
|
|
3485
|
+
FormsModule
|
|
3486
|
+
],
|
|
3487
|
+
exports: [COMPONENTS]
|
|
3488
|
+
}]
|
|
3489
|
+
}] });
|
|
3490
|
+
|
|
3491
|
+
const IMPORTED_MODULES = [
|
|
2172
3492
|
EventsModule,
|
|
2173
3493
|
IndicatorsModule,
|
|
2174
|
-
ButtonsModule,
|
|
2175
3494
|
TreeViewModule,
|
|
2176
|
-
|
|
2177
|
-
|
|
3495
|
+
DraggableModule,
|
|
3496
|
+
ChipMenuModule,
|
|
3497
|
+
SharedModule
|
|
2178
3498
|
];
|
|
2179
3499
|
const DECLARATIONS = [
|
|
2180
3500
|
PivotGridComponent,
|
|
@@ -2211,13 +3531,12 @@ PivotGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
2211
3531
|
DraggableChipDirective,
|
|
2212
3532
|
DropTargetDirective,
|
|
2213
3533
|
LocalizedMessagesDirective,
|
|
2214
|
-
CustomMessagesComponent], imports: [
|
|
2215
|
-
EventsModule,
|
|
3534
|
+
CustomMessagesComponent], imports: [EventsModule,
|
|
2216
3535
|
IndicatorsModule,
|
|
2217
|
-
ButtonsModule,
|
|
2218
3536
|
TreeViewModule,
|
|
2219
|
-
|
|
2220
|
-
|
|
3537
|
+
DraggableModule,
|
|
3538
|
+
ChipMenuModule,
|
|
3539
|
+
SharedModule], exports: [PivotGridComponent,
|
|
2221
3540
|
PivotGridTableComponent,
|
|
2222
3541
|
PivotGridCellDirective,
|
|
2223
3542
|
PivotLocalBindingDirective,
|