@progress/kendo-angular-grid 19.0.0-develop.8 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adaptiveness/adaptive-mode.d.ts +12 -0
- package/adaptiveness/adaptive-renderer.component.d.ts +89 -0
- package/codemods/template-transformer/index.js +94 -0
- package/codemods/utils.js +553 -0
- package/codemods/v19/grid-kendogridgroupbinding.js +51 -0
- package/column-menu/column-chooser.component.d.ts +4 -0
- package/column-menu/column-list.component.d.ts +10 -3
- package/column-menu/column-menu-item.component.d.ts +48 -3
- package/column-menu/column-menu-item.directive.d.ts +5 -2
- package/column-menu/column-menu.component.d.ts +4 -2
- package/columns/column-base.d.ts +5 -0
- package/columns/span-column.component.d.ts +2 -2
- package/common/adaptiveness.service.d.ts +50 -0
- package/common/single-popup.service.d.ts +3 -1
- package/common/toolbar-tool-base.directive.d.ts +26 -0
- package/directives.d.ts +13 -5
- package/editing/add-command-tool.directive.d.ts +7 -6
- package/editing/cancel-command-tool.directive.d.ts +38 -0
- package/editing/edit-command-tool.directive.d.ts +38 -0
- package/editing/edit.service.d.ts +1 -1
- package/editing/remove-command-tool.directive.d.ts +39 -0
- package/editing/save-command-tool.directive.d.ts +38 -0
- package/editing/toolbar-editing-tool-base.directive.d.ts +29 -0
- package/editing-directives/editing-directive-base.d.ts +4 -1
- package/editing-directives/external-editing.directive.d.ts +3 -1
- package/esm2022/adaptiveness/adaptive-mode.mjs +5 -0
- package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1197 -0
- package/esm2022/column-menu/column-chooser.component.mjs +13 -11
- package/esm2022/column-menu/column-list.component.mjs +51 -8
- package/esm2022/column-menu/column-menu-autosize-all.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-autosize.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-chooser.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-container.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-filter.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-item.component.mjs +123 -12
- package/esm2022/column-menu/column-menu-item.directive.mjs +14 -5
- package/esm2022/column-menu/column-menu-lock.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-position.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-sort.component.mjs +1 -1
- package/esm2022/column-menu/column-menu-stick.component.mjs +1 -1
- package/esm2022/column-menu/column-menu.component.mjs +68 -44
- package/esm2022/column-resizing/column-handle.directive.mjs +2 -2
- package/esm2022/columns/column-base.mjs +9 -0
- package/esm2022/columns/columns-container.mjs +1 -1
- package/esm2022/columns/span-column.component.mjs +9 -9
- package/esm2022/common/adaptiveness.service.mjs +72 -0
- package/esm2022/common/single-popup.service.mjs +9 -3
- package/esm2022/common/toolbar-tool-base.directive.mjs +81 -0
- package/esm2022/directives.mjs +21 -4
- package/esm2022/editing/add-command-tool.directive.mjs +12 -15
- package/esm2022/editing/cancel-command-tool.directive.mjs +64 -0
- package/esm2022/editing/edit-command-tool.directive.mjs +59 -0
- package/esm2022/editing/remove-command-tool.directive.mjs +60 -0
- package/esm2022/editing/remove-command.directive.mjs +1 -0
- package/esm2022/editing/save-command-tool.directive.mjs +64 -0
- package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +94 -0
- package/esm2022/editing-directives/editing-directive-base.mjs +5 -2
- package/esm2022/editing-directives/external-editing.directive.mjs +28 -14
- package/esm2022/excel/excel-command-tool.directive.mjs +12 -17
- package/esm2022/filtering/filter-input.directive.mjs +14 -2
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +4 -2
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +4 -0
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +6 -0
- package/esm2022/filtering/menu/filter-menu-container.component.mjs +24 -10
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +26 -4
- package/esm2022/filtering/menu/filter-menu.component.mjs +44 -29
- package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +2 -0
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +6 -0
- package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +2 -0
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +10 -1
- package/esm2022/grid.component.mjs +376 -82
- package/esm2022/grid.module.mjs +115 -101
- package/esm2022/index.mjs +11 -1
- package/esm2022/localization/messages.mjs +128 -2
- package/esm2022/navigation/toolbar-tool-name.mjs +17 -0
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pdf/pdf-command-tool.directive.mjs +12 -15
- package/esm2022/rendering/cell.component.mjs +3 -3
- package/esm2022/rendering/header/header.component.mjs +1 -1
- package/esm2022/rendering/list.component.mjs +1 -1
- package/esm2022/rendering/table-body.component.mjs +1 -1
- package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +210 -0
- package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +69 -34
- package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +29 -8
- package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +78 -8
- package/esm2022/rendering/toolbar/tools/group-command-tool.directive.mjs +206 -0
- package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +425 -0
- package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +54 -20
- package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +24 -8
- package/esm2022/selection/selection.service.mjs +11 -0
- package/esm2022/state-management/grid-state.models.mjs +26 -0
- package/esm2022/state-management/redo-command-tool.mjs +66 -0
- package/esm2022/state-management/undo-command-tool.mjs +66 -0
- package/esm2022/state-management/undo-redo.directive.mjs +178 -0
- package/esm2022/state-management/undo-redo.service.mjs +22 -0
- package/esm2022/state-management/undo-redo.stack.mjs +232 -0
- package/esm2022/utils.mjs +13 -13
- package/excel/excel-command-tool.directive.d.ts +5 -5
- package/fesm2022/progress-kendo-angular-grid.mjs +7384 -3773
- package/filtering/filter-input.directive.d.ts +1 -0
- package/filtering/menu/date-filter-menu-input.component.d.ts +1 -1
- package/filtering/menu/filter-menu-container.component.d.ts +15 -4
- package/filtering/menu/filter-menu-input-wrapper.component.d.ts +8 -3
- package/filtering/menu/filter-menu.component.d.ts +6 -3
- package/filtering/menu/numeric-filter-menu-input.component.d.ts +1 -1
- package/filtering/menu/string-filter-menu-input.component.d.ts +1 -1
- package/filtering/menu/string-filter-menu.component.d.ts +1 -0
- package/grid.component.d.ts +86 -33
- package/grid.module.d.ts +108 -100
- package/index.d.ts +10 -1
- package/localization/messages.d.ts +86 -2
- package/navigation/toolbar-tool-name.d.ts +17 -0
- package/package.json +36 -20
- package/pdf/pdf-command-tool.directive.d.ts +6 -5
- package/rendering/cell.component.d.ts +1 -1
- package/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.d.ts +18 -6
- package/rendering/toolbar/tools/filter-command-tool.directive.d.ts +10 -1
- package/rendering/toolbar/tools/filter-tool-wrapper.component.d.ts +6 -5
- package/rendering/toolbar/tools/filter-toolbar-tool.component.d.ts +11 -2
- package/rendering/toolbar/tools/group-command-tool.directive.d.ts +51 -0
- package/rendering/toolbar/tools/group-toolbar-tool.component.d.ts +61 -0
- package/rendering/toolbar/tools/sort-command-tool.directive.d.ts +10 -1
- package/rendering/toolbar/tools/sort-toolbar-tool.component.d.ts +5 -1
- package/schematics/ngAdd/index.js +4 -4
- package/selection/selection.service.d.ts +1 -0
- package/state-management/grid-state.models.d.ts +58 -0
- package/state-management/redo-command-tool.d.ts +38 -0
- package/state-management/undo-command-tool.d.ts +38 -0
- package/state-management/undo-redo.directive.d.ts +51 -0
- package/state-management/undo-redo.service.d.ts +19 -0
- package/state-management/undo-redo.stack.d.ts +104 -0
- package/utils.d.ts +11 -5
- package/esm2022/column-menu/column-chooser-tool.directive.mjs +0 -172
|
@@ -70,6 +70,10 @@ export class ColumnChooserComponent {
|
|
|
70
70
|
ngOnDestroy() {
|
|
71
71
|
this.close();
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* @hidden
|
|
75
|
+
*/
|
|
76
|
+
messageFor = token => this.ctx.localization.get(token);
|
|
73
77
|
/**
|
|
74
78
|
* @hidden
|
|
75
79
|
*/
|
|
@@ -154,28 +158,27 @@ export class ColumnChooserComponent {
|
|
|
154
158
|
type="button"
|
|
155
159
|
(click)="toggle(anchor, template)"
|
|
156
160
|
fillMode="flat"
|
|
157
|
-
[attr.title]="
|
|
161
|
+
[attr.title]="messageFor('columns')"
|
|
158
162
|
icon="columns"
|
|
159
163
|
[svgIcon]="columnsIcon"
|
|
160
164
|
[attr.aria-haspopup]="'dialog'"
|
|
161
165
|
[attr.aria-expanded]="!!(popupRef)"
|
|
162
166
|
[attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
|
|
163
167
|
<ng-template #template>
|
|
164
|
-
<span class='k-column-chooser-title'>{{ ctx.localization.get('columns') }}</span>
|
|
165
168
|
<kendo-grid-columnlist
|
|
166
169
|
#columnList
|
|
167
170
|
[columns]="columns"
|
|
168
|
-
[ariaLabel]="
|
|
171
|
+
[ariaLabel]="messageFor('columns')"
|
|
169
172
|
[isLast]="true"
|
|
170
|
-
[applyText]="
|
|
171
|
-
[resetText]="
|
|
173
|
+
[applyText]="messageFor('columnsApply')"
|
|
174
|
+
[resetText]="messageFor('columnsReset')"
|
|
172
175
|
[autoSync]="autoSync"
|
|
173
176
|
[allowHideAll]="allowHideAll"
|
|
174
177
|
(apply)="onApply($event)"
|
|
175
178
|
(columnChange)="onChange($event)">
|
|
176
179
|
</kendo-grid-columnlist>
|
|
177
180
|
</ng-template>
|
|
178
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
|
|
181
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
|
|
179
182
|
}
|
|
180
183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnChooserComponent, decorators: [{
|
|
181
184
|
type: Component,
|
|
@@ -187,21 +190,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
187
190
|
type="button"
|
|
188
191
|
(click)="toggle(anchor, template)"
|
|
189
192
|
fillMode="flat"
|
|
190
|
-
[attr.title]="
|
|
193
|
+
[attr.title]="messageFor('columns')"
|
|
191
194
|
icon="columns"
|
|
192
195
|
[svgIcon]="columnsIcon"
|
|
193
196
|
[attr.aria-haspopup]="'dialog'"
|
|
194
197
|
[attr.aria-expanded]="!!(popupRef)"
|
|
195
198
|
[attr.aria-controls]="!!(popupRef) ? popupId : undefined"></button>
|
|
196
199
|
<ng-template #template>
|
|
197
|
-
<span class='k-column-chooser-title'>{{ ctx.localization.get('columns') }}</span>
|
|
198
200
|
<kendo-grid-columnlist
|
|
199
201
|
#columnList
|
|
200
202
|
[columns]="columns"
|
|
201
|
-
[ariaLabel]="
|
|
203
|
+
[ariaLabel]="messageFor('columns')"
|
|
202
204
|
[isLast]="true"
|
|
203
|
-
[applyText]="
|
|
204
|
-
[resetText]="
|
|
205
|
+
[applyText]="messageFor('columnsApply')"
|
|
206
|
+
[resetText]="messageFor('columnsReset')"
|
|
205
207
|
[autoSync]="autoSync"
|
|
206
208
|
[allowHideAll]="allowHideAll"
|
|
207
209
|
(apply)="onApply($event)"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, ViewChild, ViewChildren, QueryList } from '@angular/core';
|
|
5
|
+
import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, ViewChild, ViewChildren, QueryList, Optional } from '@angular/core';
|
|
6
6
|
import { ColumnMenuService } from './column-menu.service';
|
|
7
7
|
import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
|
|
8
8
|
import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-checked.directive';
|
|
@@ -13,8 +13,12 @@ import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
|
|
|
13
13
|
import { take } from 'rxjs/operators';
|
|
14
14
|
import { arrowRotateCcwIcon, checkIcon } from '@progress/kendo-svg-icons';
|
|
15
15
|
import { ButtonDirective } from '@progress/kendo-angular-buttons';
|
|
16
|
+
import { ContextService } from '../common/provider.service';
|
|
17
|
+
import { AdaptiveGridService } from '../common/adaptiveness.service';
|
|
16
18
|
import * as i0 from "@angular/core";
|
|
17
19
|
import * as i1 from "./column-list-kb-nav.service";
|
|
20
|
+
import * as i2 from "../common/adaptiveness.service";
|
|
21
|
+
import * as i3 from "../common/provider.service";
|
|
18
22
|
/**
|
|
19
23
|
* @hidden
|
|
20
24
|
*/
|
|
@@ -23,9 +27,17 @@ export class ColumnListComponent {
|
|
|
23
27
|
ngZone;
|
|
24
28
|
renderer;
|
|
25
29
|
listNavigationService;
|
|
30
|
+
adaptiveGridService;
|
|
31
|
+
ctx;
|
|
26
32
|
checkIcon = checkIcon;
|
|
27
33
|
arrowRotateCcwIcon = arrowRotateCcwIcon;
|
|
28
34
|
className = true;
|
|
35
|
+
get listSizeMd() {
|
|
36
|
+
return !(this.ctx?.grid?.isActionSheetExpanded);
|
|
37
|
+
}
|
|
38
|
+
get listSizeLg() {
|
|
39
|
+
return this.ctx?.grid?.isActionSheetExpanded;
|
|
40
|
+
}
|
|
29
41
|
reset = new EventEmitter();
|
|
30
42
|
apply = new EventEmitter();
|
|
31
43
|
columnChange = new EventEmitter();
|
|
@@ -37,6 +49,7 @@ export class ColumnListComponent {
|
|
|
37
49
|
get columns() {
|
|
38
50
|
return this._columns;
|
|
39
51
|
}
|
|
52
|
+
showActions = true;
|
|
40
53
|
autoSync = true;
|
|
41
54
|
ariaLabel;
|
|
42
55
|
allowHideAll = false;
|
|
@@ -58,11 +71,13 @@ export class ColumnListComponent {
|
|
|
58
71
|
_columns;
|
|
59
72
|
allColumns;
|
|
60
73
|
domSubscriptions = new Subscription();
|
|
61
|
-
constructor(element, ngZone, renderer, listNavigationService) {
|
|
74
|
+
constructor(element, ngZone, renderer, listNavigationService, adaptiveGridService, ctx) {
|
|
62
75
|
this.element = element;
|
|
63
76
|
this.ngZone = ngZone;
|
|
64
77
|
this.renderer = renderer;
|
|
65
78
|
this.listNavigationService = listNavigationService;
|
|
79
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
80
|
+
this.ctx = ctx;
|
|
66
81
|
}
|
|
67
82
|
ngOnInit() {
|
|
68
83
|
if (!this.element) {
|
|
@@ -70,6 +85,7 @@ export class ColumnListComponent {
|
|
|
70
85
|
}
|
|
71
86
|
this.ngZone.runOutsideAngular(() => {
|
|
72
87
|
this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', (e) => {
|
|
88
|
+
e.stopImmediatePropagation();
|
|
73
89
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
74
90
|
this.handleCheckBoxClick(e);
|
|
75
91
|
});
|
|
@@ -80,9 +96,16 @@ export class ColumnListComponent {
|
|
|
80
96
|
ngAfterViewInit() {
|
|
81
97
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
82
98
|
this.listNavigationService.items = this.options.toArray();
|
|
83
|
-
this.
|
|
99
|
+
if (!this.ctx) {
|
|
100
|
+
this.listNavigationService.toggle(0, true);
|
|
101
|
+
}
|
|
84
102
|
this.updateDisabled();
|
|
85
103
|
});
|
|
104
|
+
if (this.ctx?.grid?.isActionSheetExpanded) {
|
|
105
|
+
this.domSubscriptions.add(this.adaptiveGridService.animationEnd.subscribe(() => {
|
|
106
|
+
this.listNavigationService.toggle(0, true);
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
86
109
|
}
|
|
87
110
|
ngOnChanges(changes) {
|
|
88
111
|
if (!this.service) {
|
|
@@ -250,8 +273,8 @@ export class ColumnListComponent {
|
|
|
250
273
|
}
|
|
251
274
|
}
|
|
252
275
|
};
|
|
253
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }], target: i0.ɵɵFactoryTarget.Component });
|
|
254
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
276
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }, { token: i2.AdaptiveGridService, optional: true }, { token: i3.ContextService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnListComponent, isStandalone: true, selector: "kendo-grid-columnlist", inputs: { columns: "columns", showActions: "showActions", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className", "class.k-column-list-md": "this.listSizeMd", "class.k-column-list-lg": "this.listSizeLg" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
255
278
|
<div
|
|
256
279
|
class="k-column-list"
|
|
257
280
|
role="listbox"
|
|
@@ -271,11 +294,13 @@ export class ColumnListComponent {
|
|
|
271
294
|
<span class="k-checkbox-label">{{ column.displayTitle }}</span>
|
|
272
295
|
</label>
|
|
273
296
|
</div>
|
|
274
|
-
<div [ngClass]="actionsClass" *ngIf="!autoSync">
|
|
297
|
+
<div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
|
|
275
298
|
<button
|
|
276
299
|
#applyButton
|
|
277
300
|
kendoButton
|
|
278
301
|
type="button"
|
|
302
|
+
icon="check"
|
|
303
|
+
[svgIcon]="checkIcon"
|
|
279
304
|
themeColor="primary"
|
|
280
305
|
(click)="applyChanges()"
|
|
281
306
|
(keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
|
|
@@ -284,6 +309,8 @@ export class ColumnListComponent {
|
|
|
284
309
|
#resetButton
|
|
285
310
|
kendoButton
|
|
286
311
|
type="button"
|
|
312
|
+
icon="reset"
|
|
313
|
+
[svgIcon]="arrowRotateCcwIcon"
|
|
287
314
|
(keydown.tab)="onTab($event)"
|
|
288
315
|
(click)="cancelChanges()"
|
|
289
316
|
(keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
|
|
@@ -316,11 +343,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
316
343
|
<span class="k-checkbox-label">{{ column.displayTitle }}</span>
|
|
317
344
|
</label>
|
|
318
345
|
</div>
|
|
319
|
-
<div [ngClass]="actionsClass" *ngIf="!autoSync">
|
|
346
|
+
<div [ngClass]="actionsClass" *ngIf="!autoSync && showActions">
|
|
320
347
|
<button
|
|
321
348
|
#applyButton
|
|
322
349
|
kendoButton
|
|
323
350
|
type="button"
|
|
351
|
+
icon="check"
|
|
352
|
+
[svgIcon]="checkIcon"
|
|
324
353
|
themeColor="primary"
|
|
325
354
|
(click)="applyChanges()"
|
|
326
355
|
(keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
|
|
@@ -329,6 +358,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
329
358
|
#resetButton
|
|
330
359
|
kendoButton
|
|
331
360
|
type="button"
|
|
361
|
+
icon="reset"
|
|
362
|
+
[svgIcon]="arrowRotateCcwIcon"
|
|
332
363
|
(keydown.tab)="onTab($event)"
|
|
333
364
|
(click)="cancelChanges()"
|
|
334
365
|
(keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
|
|
@@ -338,9 +369,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
338
369
|
standalone: true,
|
|
339
370
|
imports: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass, CheckBoxComponent, ButtonDirective]
|
|
340
371
|
}]
|
|
341
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }
|
|
372
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }, { type: i2.AdaptiveGridService, decorators: [{
|
|
373
|
+
type: Optional
|
|
374
|
+
}] }, { type: i3.ContextService, decorators: [{
|
|
375
|
+
type: Optional
|
|
376
|
+
}] }]; }, propDecorators: { className: [{
|
|
342
377
|
type: HostBinding,
|
|
343
378
|
args: ["class.k-column-list-wrapper"]
|
|
379
|
+
}], listSizeMd: [{
|
|
380
|
+
type: HostBinding,
|
|
381
|
+
args: ['class.k-column-list-md']
|
|
382
|
+
}], listSizeLg: [{
|
|
383
|
+
type: HostBinding,
|
|
384
|
+
args: ['class.k-column-list-lg']
|
|
344
385
|
}], reset: [{
|
|
345
386
|
type: Output
|
|
346
387
|
}], apply: [{
|
|
@@ -349,6 +390,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
349
390
|
type: Output
|
|
350
391
|
}], columns: [{
|
|
351
392
|
type: Input
|
|
393
|
+
}], showActions: [{
|
|
394
|
+
type: Input
|
|
352
395
|
}], autoSync: [{
|
|
353
396
|
type: Input
|
|
354
397
|
}], ariaLabel: [{
|
|
@@ -58,7 +58,7 @@ export class ColumnMenuAutoSizeAllColumnsComponent extends ColumnMenuItemBase {
|
|
|
58
58
|
[svgIcon]="displayInlineFlexIcon"
|
|
59
59
|
(itemClick)="autoSizeAllColumns()"
|
|
60
60
|
></kendo-grid-columnmenu-item>
|
|
61
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
|
|
61
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
|
|
62
62
|
}
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
@@ -64,7 +64,7 @@ export class ColumnMenuAutoSizeColumnComponent extends ColumnMenuItemBase {
|
|
|
64
64
|
[svgIcon]="maxWidthIcon"
|
|
65
65
|
(itemClick)="autoSizeColumn()"
|
|
66
66
|
></kendo-grid-columnmenu-item>
|
|
67
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
|
|
67
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }] });
|
|
68
68
|
}
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
@@ -118,7 +118,7 @@ export class ColumnMenuChooserComponent extends ColumnMenuItemBase {
|
|
|
118
118
|
</kendo-grid-columnlist>
|
|
119
119
|
</ng-template>
|
|
120
120
|
</kendo-grid-columnmenu-item>
|
|
121
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
|
|
121
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
|
|
122
122
|
}
|
|
123
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{
|
|
124
124
|
type: Component,
|
|
@@ -33,7 +33,7 @@ export class ColumnMenuContainerComponent {
|
|
|
33
33
|
else {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
-
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable
|
|
36
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable?.focus());
|
|
37
37
|
}
|
|
38
38
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: i1.ColumnMenuService }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
39
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuContainerComponent, isStandalone: true, selector: "kendo-grid-columnmenu-container", queries: [{ propertyName: "columnMenuItems", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `
|
|
@@ -97,7 +97,7 @@ export class ColumnMenuFilterComponent extends ColumnMenuItemBase {
|
|
|
97
97
|
</kendo-grid-filter-menu-container>
|
|
98
98
|
</ng-template>
|
|
99
99
|
</kendo-grid-columnmenu-item>
|
|
100
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }] });
|
|
100
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-grid-columnmenu-item", inputs: ["icon", "svgIcon", "indicatorIcon", "text", "selected", "disabled", "expanded", "focused", "service", "column"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: ColumnMenuItemContentTemplateDirective, selector: "[kendoGridColumnMenuItemContentTemplate]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }] });
|
|
101
101
|
}
|
|
102
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
@@ -2,16 +2,24 @@
|
|
|
2
2
|
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, Input, Output, EventEmitter, ContentChild, NgZone } from '@angular/core';
|
|
5
|
+
import { Component, Input, Output, EventEmitter, ContentChild, NgZone, ElementRef } from '@angular/core';
|
|
6
6
|
import { trigger, transition, style, animate, state } from '@angular/animations';
|
|
7
7
|
import { ColumnMenuItemContentTemplateDirective } from './column-menu-item-content-template.directive';
|
|
8
|
-
import { chevronDownIcon, chevronUpIcon } from '@progress/kendo-svg-icons';
|
|
8
|
+
import { chevronDownIcon, chevronRightIcon, chevronUpIcon, filterIcon, sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';
|
|
9
9
|
import { guid } from '@progress/kendo-angular-common';
|
|
10
10
|
import { ColumnMenuService } from './column-menu.service';
|
|
11
11
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
12
12
|
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
13
13
|
import { take } from 'rxjs/operators';
|
|
14
|
+
import { ContextService } from '../common/provider.service';
|
|
15
|
+
import { filtersByField } from '../filtering/base-filter-cell.component';
|
|
16
|
+
import { AdaptiveGridService } from '../common/adaptiveness.service';
|
|
17
|
+
import { ColumnComponent } from '../columns/column.component';
|
|
18
|
+
import { normalize } from '../columns/sort-settings';
|
|
19
|
+
import { isPresent } from '../utils';
|
|
14
20
|
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "../common/provider.service";
|
|
22
|
+
import * as i2 from "../common/adaptiveness.service";
|
|
15
23
|
/**
|
|
16
24
|
* Represents an item that can be placed inside a
|
|
17
25
|
* [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.
|
|
@@ -27,6 +35,17 @@ import * as i0 from "@angular/core";
|
|
|
27
35
|
*/
|
|
28
36
|
export class ColumnMenuItemComponent {
|
|
29
37
|
ngZone;
|
|
38
|
+
ctx;
|
|
39
|
+
adaptiveGridService;
|
|
40
|
+
element;
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
sortAscSmallIcon = sortAscSmallIcon;
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
sortDescSmallIcon = sortDescSmallIcon;
|
|
30
49
|
/**
|
|
31
50
|
* Fires when the item is clicked.
|
|
32
51
|
*/
|
|
@@ -48,6 +67,10 @@ export class ColumnMenuItemComponent {
|
|
|
48
67
|
* Defines the [SVG icon](slug:svgicon_list) to be rendered within the item.
|
|
49
68
|
*/
|
|
50
69
|
svgIcon;
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
*/
|
|
73
|
+
indicatorIcon;
|
|
51
74
|
/**
|
|
52
75
|
* Specifies the item text.
|
|
53
76
|
*/
|
|
@@ -64,24 +87,49 @@ export class ColumnMenuItemComponent {
|
|
|
64
87
|
* Specifies if the item is expanded.
|
|
65
88
|
*/
|
|
66
89
|
expanded;
|
|
90
|
+
/**
|
|
91
|
+
* @hidden
|
|
92
|
+
*/
|
|
93
|
+
focused;
|
|
67
94
|
/**
|
|
68
95
|
* Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) class.
|
|
69
96
|
* Required to include the item in the column menu keyboard navigation sequence.
|
|
70
97
|
*/
|
|
71
98
|
service;
|
|
99
|
+
/**
|
|
100
|
+
* @hidden
|
|
101
|
+
*/
|
|
102
|
+
column;
|
|
72
103
|
contentTemplate;
|
|
73
104
|
contentState = 'collapsed';
|
|
74
105
|
contentId;
|
|
75
106
|
chevronUpIcon = chevronUpIcon;
|
|
76
107
|
chevronDownIcon = chevronDownIcon;
|
|
108
|
+
chevronRightIcon = chevronRightIcon;
|
|
109
|
+
filterIcon = filterIcon;
|
|
110
|
+
/**
|
|
111
|
+
* @hidden
|
|
112
|
+
*/
|
|
113
|
+
get hasFilters() {
|
|
114
|
+
return filtersByField(this.ctx.grid.filter, this.column.field).length > 0;
|
|
115
|
+
}
|
|
77
116
|
get expandedIcon() {
|
|
117
|
+
if (this.ctx.grid.isActionSheetExpanded) {
|
|
118
|
+
return 'arrow-chevron-right';
|
|
119
|
+
}
|
|
78
120
|
return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
|
|
79
121
|
}
|
|
80
122
|
get expandedSvgIcon() {
|
|
123
|
+
if (this.ctx.grid.isActionSheetExpanded) {
|
|
124
|
+
return this.chevronRightIcon;
|
|
125
|
+
}
|
|
81
126
|
return this.expanded ? this.chevronUpIcon : this.chevronDownIcon;
|
|
82
127
|
}
|
|
83
|
-
constructor(ngZone) {
|
|
128
|
+
constructor(ngZone, ctx, adaptiveGridService, element) {
|
|
84
129
|
this.ngZone = ngZone;
|
|
130
|
+
this.ctx = ctx;
|
|
131
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
132
|
+
this.element = element;
|
|
85
133
|
}
|
|
86
134
|
ngAfterViewInit() {
|
|
87
135
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
@@ -93,14 +141,41 @@ export class ColumnMenuItemComponent {
|
|
|
93
141
|
this.updateContentState();
|
|
94
142
|
}
|
|
95
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* @hidden
|
|
146
|
+
*/
|
|
147
|
+
sortDescriptor(field) {
|
|
148
|
+
return this.ctx.grid.sort.find(item => item.field === field) || { field };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @hidden
|
|
152
|
+
*/
|
|
153
|
+
showSortNumbering(column) {
|
|
154
|
+
const { showIndexes } = normalize(this.ctx.grid.sortable);
|
|
155
|
+
return showIndexes
|
|
156
|
+
&& this.ctx.grid.sort
|
|
157
|
+
&& this.ctx.grid.sort.filter(({ dir }) => isPresent(dir)).length > 1
|
|
158
|
+
&& this.sortOrder(column.field) > 0;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* @hidden
|
|
162
|
+
*/
|
|
163
|
+
sortOrder(field) {
|
|
164
|
+
return this.ctx.grid.sort
|
|
165
|
+
.filter(({ dir }) => isPresent(dir))
|
|
166
|
+
.findIndex(x => x.field === field)
|
|
167
|
+
+ 1;
|
|
168
|
+
}
|
|
96
169
|
/**
|
|
97
170
|
* @hidden
|
|
98
171
|
*/
|
|
99
172
|
onClick(e) {
|
|
100
173
|
this.itemClick.emit(e);
|
|
101
174
|
if (this.contentTemplate) {
|
|
102
|
-
|
|
103
|
-
|
|
175
|
+
if (!this.ctx.grid.isActionSheetExpanded) {
|
|
176
|
+
this.expanded = !this.expanded;
|
|
177
|
+
this.updateContentState();
|
|
178
|
+
}
|
|
104
179
|
if (this.expanded) {
|
|
105
180
|
this.expand.emit();
|
|
106
181
|
}
|
|
@@ -112,8 +187,8 @@ export class ColumnMenuItemComponent {
|
|
|
112
187
|
updateContentState() {
|
|
113
188
|
this.contentState = this.expanded ? 'expanded' : 'collapsed';
|
|
114
189
|
}
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemComponent, isStandalone: true, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded", service: "service" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
190
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemComponent, deps: [{ token: i0.NgZone }, { token: i1.ContextService }, { token: i2.AdaptiveGridService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemComponent, isStandalone: true, selector: "kendo-grid-columnmenu-item", inputs: { icon: "icon", svgIcon: "svgIcon", indicatorIcon: "indicatorIcon", text: "text", selected: "selected", disabled: "disabled", expanded: "expanded", focused: "focused", service: "service", column: "column" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
117
192
|
<div *ngIf="contentTemplate; else content" class="k-expander">
|
|
118
193
|
<ng-container [ngTemplateOutlet]="content"></ng-container>
|
|
119
194
|
</div>
|
|
@@ -125,6 +200,7 @@ export class ColumnMenuItemComponent {
|
|
|
125
200
|
(keydown.enter)="onClick($event)"
|
|
126
201
|
[class.k-selected]="selected"
|
|
127
202
|
[class.k-disabled]="disabled"
|
|
203
|
+
[class.k-focus]="focused"
|
|
128
204
|
role="button"
|
|
129
205
|
[attr.aria-expanded]="expanded"
|
|
130
206
|
[attr.aria-controls]="expanded ? contentId : undefined">
|
|
@@ -133,8 +209,22 @@ export class ColumnMenuItemComponent {
|
|
|
133
209
|
[name]="icon"
|
|
134
210
|
[svgIcon]="svgIcon"></kendo-icon-wrapper>
|
|
135
211
|
{{ text }}
|
|
136
|
-
<span *ngIf="
|
|
137
|
-
|
|
212
|
+
<span *ngIf="(ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'sortToolbarTool' && sortDescriptor(column.field).dir)"
|
|
213
|
+
class="k-columnmenu-indicators">
|
|
214
|
+
<kendo-icon-wrapper
|
|
215
|
+
[name]="sortDescriptor(column.field).dir === 'asc' ? 'sort-asc-small' : 'sort-desc-small'"
|
|
216
|
+
[svgIcon]="sortDescriptor(column.field).dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon">
|
|
217
|
+
</kendo-icon-wrapper>
|
|
218
|
+
<span *ngIf="showSortNumbering(column)" class="k-sort-index">{{sortOrder(column.field)}}</span>
|
|
219
|
+
</span>
|
|
220
|
+
<kendo-icon-wrapper
|
|
221
|
+
*ngIf="(ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'filterToolbarTool' && hasFilters) || indicatorIcon"
|
|
222
|
+
class="k-columnmenu-indicators"
|
|
223
|
+
name="filter"
|
|
224
|
+
[svgIcon]="filterIcon">
|
|
225
|
+
</kendo-icon-wrapper>
|
|
226
|
+
<span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-spacer"></span>
|
|
227
|
+
<span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-expander-indicator">
|
|
138
228
|
<kendo-icon-wrapper
|
|
139
229
|
[name]="expandedIcon"
|
|
140
230
|
[svgIcon]="expandedSvgIcon">
|
|
@@ -209,6 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
209
299
|
(keydown.enter)="onClick($event)"
|
|
210
300
|
[class.k-selected]="selected"
|
|
211
301
|
[class.k-disabled]="disabled"
|
|
302
|
+
[class.k-focus]="focused"
|
|
212
303
|
role="button"
|
|
213
304
|
[attr.aria-expanded]="expanded"
|
|
214
305
|
[attr.aria-controls]="expanded ? contentId : undefined">
|
|
@@ -217,8 +308,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
217
308
|
[name]="icon"
|
|
218
309
|
[svgIcon]="svgIcon"></kendo-icon-wrapper>
|
|
219
310
|
{{ text }}
|
|
220
|
-
<span *ngIf="
|
|
221
|
-
|
|
311
|
+
<span *ngIf="(ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'sortToolbarTool' && sortDescriptor(column.field).dir)"
|
|
312
|
+
class="k-columnmenu-indicators">
|
|
313
|
+
<kendo-icon-wrapper
|
|
314
|
+
[name]="sortDescriptor(column.field).dir === 'asc' ? 'sort-asc-small' : 'sort-desc-small'"
|
|
315
|
+
[svgIcon]="sortDescriptor(column.field).dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon">
|
|
316
|
+
</kendo-icon-wrapper>
|
|
317
|
+
<span *ngIf="showSortNumbering(column)" class="k-sort-index">{{sortOrder(column.field)}}</span>
|
|
318
|
+
</span>
|
|
319
|
+
<kendo-icon-wrapper
|
|
320
|
+
*ngIf="(ctx.grid.isActionSheetExpanded && adaptiveGridService.viewType === 'filterToolbarTool' && hasFilters) || indicatorIcon"
|
|
321
|
+
class="k-columnmenu-indicators"
|
|
322
|
+
name="filter"
|
|
323
|
+
[svgIcon]="filterIcon">
|
|
324
|
+
</kendo-icon-wrapper>
|
|
325
|
+
<span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-spacer"></span>
|
|
326
|
+
<span *ngIf="contentTemplate && adaptiveGridService.viewType !== 'sortToolbarTool'" class="k-expander-indicator">
|
|
222
327
|
<kendo-icon-wrapper
|
|
223
328
|
[name]="expandedIcon"
|
|
224
329
|
[svgIcon]="expandedSvgIcon">
|
|
@@ -234,7 +339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
234
339
|
standalone: true,
|
|
235
340
|
imports: [IconWrapperComponent, NgIf, NgTemplateOutlet]
|
|
236
341
|
}]
|
|
237
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { itemClick: [{
|
|
342
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.ContextService }, { type: i2.AdaptiveGridService }, { type: i0.ElementRef }]; }, propDecorators: { itemClick: [{
|
|
238
343
|
type: Output
|
|
239
344
|
}], expand: [{
|
|
240
345
|
type: Output
|
|
@@ -244,6 +349,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
244
349
|
type: Input
|
|
245
350
|
}], svgIcon: [{
|
|
246
351
|
type: Input
|
|
352
|
+
}], indicatorIcon: [{
|
|
353
|
+
type: Input
|
|
247
354
|
}], text: [{
|
|
248
355
|
type: Input
|
|
249
356
|
}], selected: [{
|
|
@@ -252,8 +359,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
252
359
|
type: Input
|
|
253
360
|
}], expanded: [{
|
|
254
361
|
type: Input
|
|
362
|
+
}], focused: [{
|
|
363
|
+
type: Input
|
|
255
364
|
}], service: [{
|
|
256
365
|
type: Input
|
|
366
|
+
}], column: [{
|
|
367
|
+
type: Input
|
|
257
368
|
}], contentTemplate: [{
|
|
258
369
|
type: ContentChild,
|
|
259
370
|
args: [ColumnMenuItemContentTemplateDirective]
|
|
@@ -2,17 +2,21 @@
|
|
|
2
2
|
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
|
|
5
|
+
import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
|
|
6
6
|
import { Subscription } from 'rxjs';
|
|
7
7
|
import { Keys } from '@progress/kendo-angular-common';
|
|
8
8
|
import { ColumnMenuPositionComponent } from './column-menu-position.component';
|
|
9
9
|
import { ColumnMenuChooserComponent } from './column-menu-chooser.component';
|
|
10
10
|
import { ColumnMenuFilterComponent } from './column-menu-filter.component';
|
|
11
|
+
import { ContextService } from '../common/provider.service';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "../common/provider.service";
|
|
12
14
|
export class ColumnMenuItemDirective {
|
|
13
15
|
hostElement;
|
|
14
16
|
renderer;
|
|
15
17
|
ngZone;
|
|
18
|
+
cdr;
|
|
19
|
+
ctx;
|
|
16
20
|
/**
|
|
17
21
|
* The reference to the Grid column menu item. Required to include the item in the built-in keyboard navigation.
|
|
18
22
|
*/
|
|
@@ -55,6 +59,9 @@ export class ColumnMenuItemDirective {
|
|
|
55
59
|
});
|
|
56
60
|
if (this.isExpandableItem()) {
|
|
57
61
|
this.menuItemComponent.isLast = true;
|
|
62
|
+
if (this.ctx.grid.isActionSheetExpanded) {
|
|
63
|
+
this.cdr.detectChanges();
|
|
64
|
+
}
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
67
|
this._isLast = value;
|
|
@@ -69,10 +76,12 @@ export class ColumnMenuItemDirective {
|
|
|
69
76
|
_isLast = false;
|
|
70
77
|
columnMenuItems;
|
|
71
78
|
subs = new Subscription();
|
|
72
|
-
constructor(hostElement, renderer, ngZone) {
|
|
79
|
+
constructor(hostElement, renderer, ngZone, cdr, ctx) {
|
|
73
80
|
this.hostElement = hostElement;
|
|
74
81
|
this.renderer = renderer;
|
|
75
82
|
this.ngZone = ngZone;
|
|
83
|
+
this.cdr = cdr;
|
|
84
|
+
this.ctx = ctx;
|
|
76
85
|
}
|
|
77
86
|
ngAfterViewInit() {
|
|
78
87
|
this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');
|
|
@@ -80,7 +89,7 @@ export class ColumnMenuItemDirective {
|
|
|
80
89
|
if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {
|
|
81
90
|
this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;
|
|
82
91
|
}
|
|
83
|
-
this.menuItemComponent.service?.columnMenuContainer
|
|
92
|
+
this.menuItemComponent.service?.columnMenuContainer?.templateMenuItems.push(this);
|
|
84
93
|
}
|
|
85
94
|
ngOnDestroy() {
|
|
86
95
|
if (this.subs) {
|
|
@@ -112,7 +121,7 @@ export class ColumnMenuItemDirective {
|
|
|
112
121
|
this.menuItemComponent instanceof ColumnMenuChooserComponent ||
|
|
113
122
|
this.menuItemComponent instanceof ColumnMenuPositionComponent;
|
|
114
123
|
}
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
116
125
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuItemDirective, isStandalone: true, selector: "[kendoGridColumnMenuItem]", inputs: { menuItemComponent: ["kendoGridColumnMenuItem", "menuItemComponent"] }, ngImport: i0 });
|
|
117
126
|
}
|
|
118
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuItemDirective, decorators: [{
|
|
@@ -121,7 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
121
130
|
selector: '[kendoGridColumnMenuItem]',
|
|
122
131
|
standalone: true
|
|
123
132
|
}]
|
|
124
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { menuItemComponent: [{
|
|
133
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ContextService }]; }, propDecorators: { menuItemComponent: [{
|
|
125
134
|
type: Input,
|
|
126
135
|
args: ['kendoGridColumnMenuItem']
|
|
127
136
|
}] } });
|