@progress/kendo-angular-grid 19.0.0-develop.17 → 19.0.0-develop.19
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 +84 -0
- package/column-menu/column-chooser.component.d.ts +4 -0
- package/column-menu/column-list.component.d.ts +9 -3
- package/column-menu/column-menu-item.component.d.ts +38 -2
- package/column-menu/column-menu-item.directive.d.ts +5 -2
- package/column-menu/column-menu.component.d.ts +4 -2
- package/common/adaptiveness.service.d.ts +50 -0
- package/common/single-popup.service.d.ts +3 -1
- package/directives.d.ts +1 -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 +1106 -0
- package/esm2022/column-menu/column-chooser.component.mjs +13 -11
- package/esm2022/column-menu/column-list.component.mjs +42 -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 +106 -11
- 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/common/adaptiveness.service.mjs +72 -0
- package/esm2022/common/single-popup.service.mjs +9 -3
- package/esm2022/directives.mjs +1 -1
- package/esm2022/editing-directives/external-editing.directive.mjs +28 -14
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +2 -2
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +2 -0
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +4 -0
- package/esm2022/filtering/menu/filter-menu-container.component.mjs +21 -10
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +24 -4
- package/esm2022/filtering/menu/filter-menu.component.mjs +44 -29
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +4 -0
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +4 -0
- package/esm2022/grid.component.mjs +143 -28
- package/esm2022/grid.module.mjs +1 -1
- package/esm2022/index.mjs +1 -1
- package/esm2022/localization/messages.mjs +62 -2
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.mjs +50 -9
- package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +39 -26
- package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +19 -7
- package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +26 -4
- package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +21 -8
- package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +16 -3
- package/esm2022/utils.mjs +0 -13
- package/fesm2022/progress-kendo-angular-grid.mjs +2947 -1344
- package/filtering/menu/date-filter-menu-input.component.d.ts +1 -1
- package/filtering/menu/filter-menu-container.component.d.ts +14 -4
- package/filtering/menu/filter-menu-input-wrapper.component.d.ts +8 -3
- package/filtering/menu/filter-menu.component.d.ts +6 -3
- package/grid.component.d.ts +30 -3
- package/grid.module.d.ts +1 -1
- package/index.d.ts +1 -1
- package/localization/messages.d.ts +42 -2
- package/package.json +21 -20
- package/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.d.ts +13 -3
- package/rendering/toolbar/tools/filter-command-tool.directive.d.ts +3 -1
- package/rendering/toolbar/tools/filter-tool-wrapper.component.d.ts +5 -5
- package/rendering/toolbar/tools/filter-toolbar-tool.component.d.ts +4 -1
- package/rendering/toolbar/tools/sort-command-tool.directive.d.ts +3 -1
- package/rendering/toolbar/tools/sort-toolbar-tool.component.d.ts +4 -0
- package/schematics/ngAdd/index.js +4 -4
- package/utils.d.ts +0 -4
|
@@ -30,6 +30,7 @@ import { ColumnMenuSortComponent } from './column-menu-sort.component';
|
|
|
30
30
|
import { ColumnMenuContainerComponent } from './column-menu-container.component';
|
|
31
31
|
import { NgClass, NgTemplateOutlet, NgIf } from '@angular/common';
|
|
32
32
|
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
33
|
+
import { AdaptiveGridService } from '../common/adaptiveness.service';
|
|
33
34
|
import * as i0 from "@angular/core";
|
|
34
35
|
import * as i1 from "./../navigation/navigation.service";
|
|
35
36
|
import * as i2 from "../common/single-popup.service";
|
|
@@ -37,6 +38,7 @@ import * as i3 from "./column-menu.service";
|
|
|
37
38
|
import * as i4 from "../common/provider.service";
|
|
38
39
|
import * as i5 from "../common/column-info.service";
|
|
39
40
|
import * as i6 from "../common/id.service";
|
|
41
|
+
import * as i7 from "../common/adaptiveness.service";
|
|
40
42
|
const POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';
|
|
41
43
|
let id = 0;
|
|
42
44
|
const getId = (gridId) => `${gridId}-column-menu-${id++}`;
|
|
@@ -61,6 +63,7 @@ export class ColumnMenuComponent {
|
|
|
61
63
|
cdr;
|
|
62
64
|
columnInfoService;
|
|
63
65
|
idService;
|
|
66
|
+
adaptiveGridService;
|
|
64
67
|
/**
|
|
65
68
|
* @hidden
|
|
66
69
|
*/
|
|
@@ -143,7 +146,7 @@ export class ColumnMenuComponent {
|
|
|
143
146
|
popupRef;
|
|
144
147
|
closeSubscription;
|
|
145
148
|
popupSubs;
|
|
146
|
-
constructor(navigationService, popupService, service, ctx, renderer, cdr, columnInfoService, idService) {
|
|
149
|
+
constructor(navigationService, popupService, service, ctx, renderer, cdr, columnInfoService, idService, adaptiveGridService) {
|
|
147
150
|
this.navigationService = navigationService;
|
|
148
151
|
this.popupService = popupService;
|
|
149
152
|
this.service = service;
|
|
@@ -152,6 +155,7 @@ export class ColumnMenuComponent {
|
|
|
152
155
|
this.cdr = cdr;
|
|
153
156
|
this.columnInfoService = columnInfoService;
|
|
154
157
|
this.idService = idService;
|
|
158
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
155
159
|
this.closeSubscription = service.closeMenu.subscribe(this.close.bind(this, true));
|
|
156
160
|
}
|
|
157
161
|
/**
|
|
@@ -264,53 +268,69 @@ export class ColumnMenuComponent {
|
|
|
264
268
|
e.preventDefault();
|
|
265
269
|
e instanceof KeyboardEvent && e.stopImmediatePropagation();
|
|
266
270
|
}
|
|
267
|
-
this.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
if (this.popupRef) {
|
|
275
|
-
this.popupSubs?.unsubscribe();
|
|
276
|
-
this.popupSubs = this.popupRef.popup.instance.anchorViewportLeave.subscribe(() => {
|
|
277
|
-
this.popupSubs?.unsubscribe();
|
|
278
|
-
this.popupSubs = null;
|
|
279
|
-
this.close(true);
|
|
280
|
-
this.updateAria(ariaRoot);
|
|
281
|
-
});
|
|
282
|
-
this.popupSubs.add(() => this.popupRef.popup.instance.close.subscribe(() => {
|
|
283
|
-
this.popupSubs?.unsubscribe();
|
|
284
|
-
this.popupSubs = this.popupRef = null;
|
|
285
|
-
this.updateAria(ariaRoot);
|
|
286
|
-
}));
|
|
287
|
-
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
|
|
288
|
-
if (popupAriaElement) {
|
|
289
|
-
const popupId = getId(this.idService?.gridId());
|
|
290
|
-
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
|
291
|
-
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
|
292
|
-
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
|
|
293
|
-
ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-controls', popupId);
|
|
294
|
-
ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'true');
|
|
295
|
-
}
|
|
296
|
-
if (this.settings.view === 'tabbed') {
|
|
297
|
-
this.renderer.addClass(popupAriaElement, 'k-column-menu-tabbed');
|
|
298
|
-
this.renderer.addClass(popupAriaElement, 'k-column-menu');
|
|
299
|
-
this.cdr.detectChanges();
|
|
300
|
-
this.tabStrip?.selectTab(0);
|
|
271
|
+
if (this.ctx.grid.adaptiveMode === 'auto' && this.adaptiveGridService.windowSize !== 'large') {
|
|
272
|
+
if (!this.ctx.grid.isActionSheetExpanded) {
|
|
273
|
+
this.adaptiveGridService.viewType = 'columnMenu';
|
|
274
|
+
this.adaptiveGridService.columns = this.columns;
|
|
275
|
+
this.adaptiveGridService.columnMenuService = this.service;
|
|
276
|
+
this.adaptiveGridService.column = this.column;
|
|
277
|
+
this.ctx.grid.adaptiveRenderer.actionSheet.toggle(true);
|
|
301
278
|
}
|
|
302
279
|
}
|
|
303
280
|
else {
|
|
304
|
-
this.
|
|
281
|
+
this.expandedFilter = this.getExpandedState(this.settings.filter);
|
|
282
|
+
this.expandedColumns = this.getExpandedState(this.settings.columnChooser);
|
|
283
|
+
this.expandedPosition = this.getExpandedState(this.settings.setColumnPosition);
|
|
284
|
+
this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASSES);
|
|
285
|
+
// Needed as changes to 'popupRef' and 'popupId' are not reflected
|
|
286
|
+
// automatically when the Popup is closed by clicking outside the anchor
|
|
287
|
+
const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;
|
|
288
|
+
if (this.popupRef) {
|
|
289
|
+
this.popupSubs?.unsubscribe();
|
|
290
|
+
this.popupSubs = this.popupRef.popup.instance.anchorViewportLeave.subscribe(() => {
|
|
291
|
+
this.popupSubs?.unsubscribe();
|
|
292
|
+
this.popupSubs = null;
|
|
293
|
+
this.close(true);
|
|
294
|
+
this.updateAria(ariaRoot);
|
|
295
|
+
});
|
|
296
|
+
this.popupSubs.add(() => this.popupRef.popup.instance.close.subscribe(() => {
|
|
297
|
+
this.popupSubs?.unsubscribe();
|
|
298
|
+
this.popupSubs = this.popupRef = null;
|
|
299
|
+
this.updateAria(ariaRoot);
|
|
300
|
+
}));
|
|
301
|
+
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
|
|
302
|
+
if (popupAriaElement) {
|
|
303
|
+
const popupId = getId(this.idService?.gridId());
|
|
304
|
+
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
|
305
|
+
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
|
306
|
+
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
|
|
307
|
+
ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-controls', popupId);
|
|
308
|
+
ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'true');
|
|
309
|
+
}
|
|
310
|
+
if (this.settings.view === 'tabbed') {
|
|
311
|
+
this.renderer.addClass(popupAriaElement, 'k-column-menu-tabbed');
|
|
312
|
+
this.renderer.addClass(popupAriaElement, 'k-column-menu');
|
|
313
|
+
this.cdr.detectChanges();
|
|
314
|
+
this.tabStrip?.selectTab(0);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
this.focusRoot();
|
|
319
|
+
}
|
|
305
320
|
}
|
|
306
321
|
}
|
|
307
322
|
/**
|
|
308
323
|
* @hidden
|
|
309
324
|
*/
|
|
310
325
|
close(triggerFocus = false) {
|
|
311
|
-
this.
|
|
312
|
-
|
|
313
|
-
|
|
326
|
+
if (this.ctx.grid.adaptiveMode === 'auto' && this.adaptiveGridService.windowSize !== 'large') {
|
|
327
|
+
this.ctx.grid.adaptiveRenderer.actionSheet.toggle(false);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
this.popupService.destroy();
|
|
331
|
+
this.popupRef = null;
|
|
332
|
+
this.cdr.markForCheck();
|
|
333
|
+
}
|
|
314
334
|
if (!triggerFocus) {
|
|
315
335
|
return;
|
|
316
336
|
}
|
|
@@ -334,7 +354,7 @@ export class ColumnMenuComponent {
|
|
|
334
354
|
focusRoot() {
|
|
335
355
|
this.isNavigable ? this.navigationService.focusCell(0, this.column.leafIndex) : this.anchor.nativeElement.focus();
|
|
336
356
|
}
|
|
337
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: i1.NavigationService }, { token: i2.SinglePopupService }, { token: i3.ColumnMenuService }, { token: i4.ContextService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.ColumnInfoService }, { token: i6.IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
357
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: i1.NavigationService }, { token: i2.SinglePopupService }, { token: i3.ColumnMenuService }, { token: i4.ContextService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.ColumnInfoService }, { token: i6.IdService, optional: true }, { token: i7.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
|
|
338
358
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnMenuComponent, isStandalone: true, selector: "kendo-grid-column-menu", inputs: { standalone: "standalone", column: "column", settings: "settings", sort: "sort", filter: "filter", sortable: "sortable", columnMenuTemplate: "columnMenuTemplate", tabIndex: "tabIndex" }, host: { properties: { "class.k-grid-column-menu-standalone": "this.standalone" } }, providers: [
|
|
339
359
|
ColumnMenuService,
|
|
340
360
|
MenuTabbingService
|
|
@@ -380,7 +400,8 @@ export class ColumnMenuComponent {
|
|
|
380
400
|
[showStick]="hasStick"
|
|
381
401
|
[kendoGridColumnMenuItem]="positionItem"
|
|
382
402
|
[service]="service"
|
|
383
|
-
[expanded]="expandedPosition"
|
|
403
|
+
[expanded]="expandedPosition"
|
|
404
|
+
>
|
|
384
405
|
</kendo-grid-columnmenu-position>
|
|
385
406
|
<span [style.borderColor]="'rgba(0, 0, 0, 0.08)'" *ngIf="hasColumnChooser || hasAutoSizeColumn || hasAutoSizeAllColumns" class="k-separator"></span>
|
|
386
407
|
<kendo-grid-columnmenu-chooser
|
|
@@ -505,7 +526,8 @@ export class ColumnMenuComponent {
|
|
|
505
526
|
</kendo-tabstrip-tab>
|
|
506
527
|
</kendo-tabstrip>
|
|
507
528
|
</ng-template>
|
|
508
|
-
|
|
529
|
+
|
|
530
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ColumnMenuContainerComponent, selector: "kendo-grid-columnmenu-container" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnMenuSortComponent, selector: "kendo-grid-columnmenu-sort" }, { kind: "directive", type: ColumnMenuItemDirective, selector: "[kendoGridColumnMenuItem]", inputs: ["kendoGridColumnMenuItem"] }, { kind: "component", type: ColumnMenuLockComponent, selector: "kendo-grid-columnmenu-lock" }, { kind: "component", type: ColumnMenuStickComponent, selector: "kendo-grid-columnmenu-stick" }, { kind: "component", type: ColumnMenuPositionComponent, selector: "kendo-grid-columnmenu-position", inputs: ["expanded", "showLock", "showStick", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuChooserComponent, selector: "kendo-grid-columnmenu-chooser", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: ColumnMenuAutoSizeColumnComponent, selector: "kendo-grid-columnmenu-autosize-column", inputs: ["column"] }, { kind: "component", type: ColumnMenuAutoSizeAllColumnsComponent, selector: "kendo-grid-columnmenu-autosize-all-columns" }, { kind: "component", type: ColumnMenuFilterComponent, selector: "kendo-grid-columnmenu-filter", inputs: ["expanded", "isLast"], outputs: ["expand", "collapse"] }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabTitleDirective, selector: "[kendoTabTitle]" }, { kind: "directive", type: TabContentDirective, selector: "[kendoTabContent]" }, { kind: "component", type: FilterMenuContainerComponent, selector: "kendo-grid-filter-menu-container", inputs: ["column", "isLast", "isExpanded", "menuTabbingService", "filter", "actionsClass"], outputs: ["close"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "showActions", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
|
|
509
531
|
}
|
|
510
532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnMenuComponent, decorators: [{
|
|
511
533
|
type: Component,
|
|
@@ -557,7 +579,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
557
579
|
[showStick]="hasStick"
|
|
558
580
|
[kendoGridColumnMenuItem]="positionItem"
|
|
559
581
|
[service]="service"
|
|
560
|
-
[expanded]="expandedPosition"
|
|
582
|
+
[expanded]="expandedPosition"
|
|
583
|
+
>
|
|
561
584
|
</kendo-grid-columnmenu-position>
|
|
562
585
|
<span [style.borderColor]="'rgba(0, 0, 0, 0.08)'" *ngIf="hasColumnChooser || hasAutoSizeColumn || hasAutoSizeAllColumns" class="k-separator"></span>
|
|
563
586
|
<kendo-grid-columnmenu-chooser
|
|
@@ -682,6 +705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
682
705
|
</kendo-tabstrip-tab>
|
|
683
706
|
</kendo-tabstrip>
|
|
684
707
|
</ng-template>
|
|
708
|
+
|
|
685
709
|
`,
|
|
686
710
|
standalone: true,
|
|
687
711
|
imports: [
|
|
@@ -694,7 +718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
694
718
|
}]
|
|
695
719
|
}], ctorParameters: function () { return [{ type: i1.NavigationService }, { type: i2.SinglePopupService }, { type: i3.ColumnMenuService }, { type: i4.ContextService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.ColumnInfoService }, { type: i6.IdService, decorators: [{
|
|
696
720
|
type: Optional
|
|
697
|
-
}] }]; }, propDecorators: { standalone: [{
|
|
721
|
+
}] }, { type: i7.AdaptiveGridService }]; }, propDecorators: { standalone: [{
|
|
698
722
|
type: HostBinding,
|
|
699
723
|
args: ['class.k-grid-column-menu-standalone']
|
|
700
724
|
}, {
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { Injectable } from "@angular/core";
|
|
6
|
+
import { Subject } from "rxjs";
|
|
7
|
+
import { AdaptiveService } from "@progress/kendo-angular-utils";
|
|
8
|
+
import { ContextService } from "./provider.service";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./provider.service";
|
|
11
|
+
import * as i2 from "@progress/kendo-angular-utils";
|
|
12
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*
|
|
15
|
+
* The AdaptiveGridService is used to provide common information for the ActionSheet used in adaptive mode.
|
|
16
|
+
*/
|
|
17
|
+
export class AdaptiveGridService {
|
|
18
|
+
ctx;
|
|
19
|
+
adaptiveService;
|
|
20
|
+
/**
|
|
21
|
+
* Observable that emits when the ActionSheet's views change animation ends.
|
|
22
|
+
*/
|
|
23
|
+
get animationEnd() {
|
|
24
|
+
return this.animationEndSubject.asObservable();
|
|
25
|
+
}
|
|
26
|
+
columnMenuService;
|
|
27
|
+
columns = [];
|
|
28
|
+
secondaryView;
|
|
29
|
+
viewType;
|
|
30
|
+
popupRef;
|
|
31
|
+
column;
|
|
32
|
+
filterMenuContainer;
|
|
33
|
+
filterMenuContainerComponentRef;
|
|
34
|
+
animationEndSubject = new Subject();
|
|
35
|
+
constructor(ctx, adaptiveService) {
|
|
36
|
+
this.ctx = ctx;
|
|
37
|
+
this.adaptiveService = adaptiveService;
|
|
38
|
+
}
|
|
39
|
+
submitFilter() {
|
|
40
|
+
this.filterMenuContainer.submit();
|
|
41
|
+
this.ctx.grid.adaptiveRenderer.actionSheet.toggle(false);
|
|
42
|
+
this.reset();
|
|
43
|
+
}
|
|
44
|
+
resetFilter() {
|
|
45
|
+
this.filterMenuContainer.reset();
|
|
46
|
+
this.ctx.grid.adaptiveRenderer.actionSheet.toggle(false);
|
|
47
|
+
this.reset();
|
|
48
|
+
}
|
|
49
|
+
reset() {
|
|
50
|
+
this.ctx.grid.adaptiveRenderer.actionSheet.currentView = 1;
|
|
51
|
+
this.filterMenuContainerComponentRef?.destroy();
|
|
52
|
+
this.column = null;
|
|
53
|
+
this.popupRef = null;
|
|
54
|
+
this.filterMenuContainer = null;
|
|
55
|
+
this.viewType = null;
|
|
56
|
+
this.secondaryView = null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Emits an event to notify that the animation has ended.
|
|
60
|
+
*/
|
|
61
|
+
notifyAnimationEnd() {
|
|
62
|
+
this.animationEndSubject.next();
|
|
63
|
+
}
|
|
64
|
+
get windowSize() {
|
|
65
|
+
return this.adaptiveService.size;
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdaptiveGridService, deps: [{ token: i1.ContextService }, { token: i2.AdaptiveService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
68
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdaptiveGridService });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdaptiveGridService, decorators: [{
|
|
71
|
+
type: Injectable
|
|
72
|
+
}], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.AdaptiveService }]; } });
|
|
@@ -11,10 +11,12 @@ import { ScrollSyncService } from '../scrolling/scroll-sync.service';
|
|
|
11
11
|
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
12
12
|
import { ContextService } from './provider.service';
|
|
13
13
|
import { skip } from 'rxjs/operators';
|
|
14
|
+
import { AdaptiveGridService } from './adaptiveness.service';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@progress/kendo-angular-popup";
|
|
16
17
|
import * as i2 from "../scrolling/scroll-sync.service";
|
|
17
18
|
import * as i3 from "./provider.service";
|
|
19
|
+
import * as i4 from "./adaptiveness.service";
|
|
18
20
|
const contains = (node, predicate) => {
|
|
19
21
|
while (node) {
|
|
20
22
|
if (predicate(node)) {
|
|
@@ -47,6 +49,7 @@ export class SinglePopupService {
|
|
|
47
49
|
renderer;
|
|
48
50
|
ngZone;
|
|
49
51
|
ctx;
|
|
52
|
+
adaptiveGridService;
|
|
50
53
|
/**
|
|
51
54
|
* Fires when the filter or column menus are about to close because the user clicked outside their popups.
|
|
52
55
|
* Used to prevent the popup from closing.
|
|
@@ -60,11 +63,12 @@ export class SinglePopupService {
|
|
|
60
63
|
/**
|
|
61
64
|
* @hidden
|
|
62
65
|
*/
|
|
63
|
-
constructor(popupService, renderer, ngZone, scrollSyncService, ctx) {
|
|
66
|
+
constructor(popupService, renderer, ngZone, scrollSyncService, ctx, adaptiveGridService) {
|
|
64
67
|
this.popupService = popupService;
|
|
65
68
|
this.renderer = renderer;
|
|
66
69
|
this.ngZone = ngZone;
|
|
67
70
|
this.ctx = ctx;
|
|
71
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
68
72
|
this.scrollSubscription = scrollSyncService.changes.pipe(skip(1)).subscribe(() => this.destroy());
|
|
69
73
|
}
|
|
70
74
|
/**
|
|
@@ -83,6 +87,7 @@ export class SinglePopupService {
|
|
|
83
87
|
content: template,
|
|
84
88
|
positionMode: "absolute"
|
|
85
89
|
});
|
|
90
|
+
this.adaptiveGridService.popupRef = this.popupRef;
|
|
86
91
|
this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');
|
|
87
92
|
this.attachClose(anchor);
|
|
88
93
|
}
|
|
@@ -102,6 +107,7 @@ export class SinglePopupService {
|
|
|
102
107
|
this.pointerEventsSub = null;
|
|
103
108
|
this.popupRef.close();
|
|
104
109
|
this.popupRef = null;
|
|
110
|
+
this.adaptiveGridService.popupRef = null;
|
|
105
111
|
}
|
|
106
112
|
}
|
|
107
113
|
ngOnDestroy() {
|
|
@@ -141,9 +147,9 @@ export class SinglePopupService {
|
|
|
141
147
|
}));
|
|
142
148
|
});
|
|
143
149
|
}
|
|
144
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SinglePopupService, deps: [{ token: i1.PopupService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i2.ScrollSyncService }, { token: i3.ContextService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
150
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SinglePopupService, deps: [{ token: i1.PopupService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i2.ScrollSyncService }, { token: i3.ContextService }, { token: i4.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
151
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SinglePopupService });
|
|
146
152
|
}
|
|
147
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SinglePopupService, decorators: [{
|
|
148
154
|
type: Injectable
|
|
149
|
-
}], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i2.ScrollSyncService }, { type: i3.ContextService }]; } });
|
|
155
|
+
}], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i2.ScrollSyncService }, { type: i3.ContextService }, { type: i4.AdaptiveGridService }]; } });
|
package/esm2022/directives.mjs
CHANGED
|
@@ -73,7 +73,7 @@ import { FilterRowComponent } from "./filtering/filter-row.component";
|
|
|
73
73
|
// COLUMN MENU
|
|
74
74
|
import { ColumnMenuChooserItemCheckedDirective } from "./column-menu/column-chooser-item-checked.directive";
|
|
75
75
|
import { ColumnChooserComponent } from "./column-menu/column-chooser.component";
|
|
76
|
-
import { ColumnChooserToolbarDirective } from "./
|
|
76
|
+
import { ColumnChooserToolbarDirective } from "./rendering/toolbar/tools/column-chooser-tool.directive";
|
|
77
77
|
import { ColumnListComponent } from "./column-menu/column-list.component";
|
|
78
78
|
import { ColumnMenuAutoSizeAllColumnsComponent } from "./column-menu/column-menu-autosize-all.component";
|
|
79
79
|
import { ColumnMenuAutoSizeColumnComponent } from "./column-menu/column-menu-autosize.component";
|
|
@@ -9,9 +9,11 @@ import { markAllAsTouched } from './utils';
|
|
|
9
9
|
import { EditingDirectiveBase } from './editing-directive-base';
|
|
10
10
|
import { DialogFormComponent } from '../editing/form';
|
|
11
11
|
import { isPresent } from '@progress/kendo-angular-common';
|
|
12
|
+
import { AdaptiveGridService } from '../common/adaptiveness.service';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "../grid.component";
|
|
14
15
|
import * as i2 from "../editing/local-data-changes.service";
|
|
16
|
+
import * as i3 from "../common/adaptiveness.service";
|
|
15
17
|
/**
|
|
16
18
|
* A directive which encapsulates the editing operations of the Grid when using the
|
|
17
19
|
* External Form ([see example](slug:editing_directives_grid#external-editing)).
|
|
@@ -19,6 +21,7 @@ import * as i2 from "../editing/local-data-changes.service";
|
|
|
19
21
|
export class ExternalEditingDirective extends EditingDirectiveBase {
|
|
20
22
|
grid;
|
|
21
23
|
localDataChangesService;
|
|
24
|
+
adaptiveGridService;
|
|
22
25
|
/**
|
|
23
26
|
* The function that creates the `FormGroup` for the edited model.
|
|
24
27
|
*/
|
|
@@ -31,10 +34,11 @@ export class ExternalEditingDirective extends EditingDirectiveBase {
|
|
|
31
34
|
* Allows you to customize the Dialog that contains the edit form.
|
|
32
35
|
*/
|
|
33
36
|
dialogSettings;
|
|
34
|
-
constructor(grid, localDataChangesService) {
|
|
37
|
+
constructor(grid, localDataChangesService, adaptiveGridService) {
|
|
35
38
|
super(grid, localDataChangesService);
|
|
36
39
|
this.grid = grid;
|
|
37
40
|
this.localDataChangesService = localDataChangesService;
|
|
41
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
38
42
|
}
|
|
39
43
|
ngOnInit() {
|
|
40
44
|
super.ngOnInit();
|
|
@@ -46,19 +50,29 @@ export class ExternalEditingDirective extends EditingDirectiveBase {
|
|
|
46
50
|
* Opens a Dialog that contains the edit form.
|
|
47
51
|
*/
|
|
48
52
|
openEditFormDialog(editEventArgs, formGroup, formSettings) {
|
|
49
|
-
const settings = { appendTo: this.grid.dialogContainer, content: DialogFormComponent, title: this.localization.get('externalEditingTitle'), ...this.dialogSettings };
|
|
50
|
-
const dialog = this.dialogService.open(settings);
|
|
51
53
|
const formControls = this.normalizeFormSettings(formGroup, editEventArgs);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (resultType === this.localization.get('externalEditingSaveText')) {
|
|
58
|
-
this.saveHandler({ ...editEventArgs, formGroup });
|
|
54
|
+
if (this.grid.adaptiveMode === 'auto' && this.adaptiveGridService.windowSize !== 'large') {
|
|
55
|
+
if (!this.grid.isActionSheetExpanded) {
|
|
56
|
+
this.adaptiveGridService.viewType = 'externalEditing';
|
|
57
|
+
this.grid.adaptiveRenderer.externalEditingSettings = { formControls, formGroup, formSettings, event: editEventArgs, externalEditingDirective: this };
|
|
58
|
+
this.grid.adaptiveRenderer.actionSheet.toggle(true);
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const settings = { appendTo: this.grid.dialogContainer, content: DialogFormComponent, title: this.localization.get('externalEditingTitle'), ...this.dialogSettings };
|
|
63
|
+
const dialog = this.dialogService.open(settings);
|
|
64
|
+
this.adaptiveGridService.popupRef = dialog;
|
|
65
|
+
dialog.content.setInput('controls', formControls);
|
|
66
|
+
formSettings && dialog.content.setInput('formSettings', formSettings);
|
|
67
|
+
dialog.content.setInput('formGroup', formGroup);
|
|
68
|
+
dialog.result.subscribe((r) => {
|
|
69
|
+
const resultType = r['text'];
|
|
70
|
+
if (resultType === this.localization.get('externalEditingSaveText')) {
|
|
71
|
+
this.saveHandler({ ...editEventArgs, formGroup });
|
|
72
|
+
}
|
|
73
|
+
dialog.close();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
62
76
|
}
|
|
63
77
|
createModel(args) {
|
|
64
78
|
return this.createFormGroup(args);
|
|
@@ -111,7 +125,7 @@ export class ExternalEditingDirective extends EditingDirectiveBase {
|
|
|
111
125
|
});
|
|
112
126
|
return settings.filter(item => isPresent(item));
|
|
113
127
|
}
|
|
114
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalEditingDirective, deps: [{ token: i1.GridComponent }, { token: i2.LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalEditingDirective, deps: [{ token: i1.GridComponent }, { token: i2.LocalDataChangesService }, { token: i3.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
115
129
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ExternalEditingDirective, isStandalone: true, selector: "[kendoGridExternalEditing]", inputs: { createFormGroup: ["kendoGridExternalEditing", "createFormGroup"], formSettings: "formSettings", dialogSettings: "dialogSettings" }, usesInheritance: true, ngImport: i0 });
|
|
116
130
|
}
|
|
117
131
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalEditingDirective, decorators: [{
|
|
@@ -120,7 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
120
134
|
selector: '[kendoGridExternalEditing]',
|
|
121
135
|
standalone: true
|
|
122
136
|
}]
|
|
123
|
-
}], ctorParameters: function () { return [{ type: i1.GridComponent }, { type: i2.LocalDataChangesService }]; }, propDecorators: { createFormGroup: [{
|
|
137
|
+
}], ctorParameters: function () { return [{ type: i1.GridComponent }, { type: i2.LocalDataChangesService }, { type: i3.AdaptiveGridService }]; }, propDecorators: { createFormGroup: [{
|
|
124
138
|
type: Input,
|
|
125
139
|
args: ['kendoGridExternalEditing']
|
|
126
140
|
}], formSettings: [{
|
|
@@ -119,7 +119,7 @@ export class BooleanFilterMenuComponent extends BooleanFilterComponent {
|
|
|
119
119
|
(change)="onChange(item.value, input)"
|
|
120
120
|
(keydown.shift.tab)="onShiftTab($event)"
|
|
121
121
|
></kendo-radiobutton>
|
|
122
|
-
<label class="k-radio-label" [attr.for]="
|
|
122
|
+
<label class="k-radio-label" [attr.for]="input.focusableId">{{item.text}}</label>
|
|
123
123
|
</li>
|
|
124
124
|
</ul>
|
|
125
125
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: RadioButtonComponent, selector: "kendo-radiobutton", inputs: ["checked"], outputs: ["checkedChange"], exportAs: ["kendoRadioButton"] }, { kind: "directive", type: BooleanFilterRadioButtonDirective, selector: "[kendoFilterMenuRadioButton]", inputs: ["columnLabel"] }] });
|
|
@@ -141,7 +141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
141
141
|
(change)="onChange(item.value, input)"
|
|
142
142
|
(keydown.shift.tab)="onShiftTab($event)"
|
|
143
143
|
></kendo-radiobutton>
|
|
144
|
-
<label class="k-radio-label" [attr.for]="
|
|
144
|
+
<label class="k-radio-label" [attr.for]="input.focusableId">{{item.text}}</label>
|
|
145
145
|
</li>
|
|
146
146
|
</ul>
|
|
147
147
|
`,
|
|
@@ -76,6 +76,7 @@ export class DateFilterMenuInputComponent {
|
|
|
76
76
|
<kendo-datepicker
|
|
77
77
|
#picker
|
|
78
78
|
kendoFilterInput
|
|
79
|
+
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
79
80
|
[columnLabel]="columnLabel"
|
|
80
81
|
[filterDelay]="0"
|
|
81
82
|
(open)="open(picker)"
|
|
@@ -114,6 +115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
114
115
|
<kendo-datepicker
|
|
115
116
|
#picker
|
|
116
117
|
kendoFilterInput
|
|
118
|
+
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
117
119
|
[columnLabel]="columnLabel"
|
|
118
120
|
[filterDelay]="0"
|
|
119
121
|
(open)="open(picker)"
|
|
@@ -101,6 +101,8 @@ export class DateFilterMenuComponent extends DateFilterComponent {
|
|
|
101
101
|
<kendo-dropdownlist
|
|
102
102
|
*ngIf="extra"
|
|
103
103
|
kendoFilterMenuDropDown
|
|
104
|
+
[adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
|
|
105
|
+
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
104
106
|
[filterMenuDropDownLabel]="filterMenuDropDownLabel"
|
|
105
107
|
class="k-filter-and"
|
|
106
108
|
[data]="logicOperators"
|
|
@@ -156,6 +158,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
156
158
|
<kendo-dropdownlist
|
|
157
159
|
*ngIf="extra"
|
|
158
160
|
kendoFilterMenuDropDown
|
|
161
|
+
[adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
|
|
162
|
+
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
159
163
|
[filterMenuDropDownLabel]="filterMenuDropDownLabel"
|
|
160
164
|
class="k-filter-and"
|
|
161
165
|
[data]="logicOperators"
|
|
@@ -13,16 +13,21 @@ import { ContextService } from '../../common/provider.service';
|
|
|
13
13
|
import { FilterMenuHostDirective } from './filter-menu-host.directive';
|
|
14
14
|
import { NgSwitch, NgSwitchCase, NgIf, NgTemplateOutlet, NgClass } from '@angular/common';
|
|
15
15
|
import { FormsModule } from '@angular/forms';
|
|
16
|
+
import { AdaptiveGridService } from '../../common/adaptiveness.service';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
import * as i1 from "../filter.service";
|
|
18
19
|
import * as i2 from "../../common/provider.service";
|
|
19
20
|
import * as i3 from "./menu-tabbing.service";
|
|
20
|
-
import * as i4 from "
|
|
21
|
+
import * as i4 from "../../common/adaptiveness.service";
|
|
22
|
+
import * as i5 from "@angular/forms";
|
|
21
23
|
const isNoValueOperator = operator => (operator === "isnull"
|
|
22
24
|
|| operator === "isnotnull"
|
|
23
25
|
|| operator === "isempty"
|
|
24
26
|
|| operator === "isnotempty");
|
|
25
|
-
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
*/
|
|
30
|
+
export const validFilters = ({ value, operator }) => !isNullOrEmptyString(value) || isNoValueOperator(operator);
|
|
26
31
|
const trimFilters = filter => {
|
|
27
32
|
filter.filters = filter.filters.filter(validFilters);
|
|
28
33
|
return filter;
|
|
@@ -41,7 +46,10 @@ const findParent = (filters, field, parent) => {
|
|
|
41
46
|
return acc;
|
|
42
47
|
}, undefined);
|
|
43
48
|
};
|
|
44
|
-
|
|
49
|
+
/**
|
|
50
|
+
* @hidden
|
|
51
|
+
*/
|
|
52
|
+
export const parentLogicOfDefault = (filter, field, def = "and") => {
|
|
45
53
|
const parent = findParent(((filter || {}).filters || []), field);
|
|
46
54
|
return isPresent(parent) ? parent.logic : def;
|
|
47
55
|
};
|
|
@@ -53,6 +61,7 @@ export class FilterMenuContainerComponent {
|
|
|
53
61
|
childService;
|
|
54
62
|
ctx;
|
|
55
63
|
cd;
|
|
64
|
+
adaptiveGridService;
|
|
56
65
|
close = new EventEmitter();
|
|
57
66
|
/**
|
|
58
67
|
* The column with which the filter is associated.
|
|
@@ -100,12 +109,14 @@ export class FilterMenuContainerComponent {
|
|
|
100
109
|
subscription;
|
|
101
110
|
_templateContext = {};
|
|
102
111
|
_filter;
|
|
103
|
-
constructor(parentService, childService, ctx, cd, menuTabbingService) {
|
|
112
|
+
constructor(parentService, childService, ctx, cd, menuTabbingService, adaptiveGridService) {
|
|
104
113
|
this.parentService = parentService;
|
|
105
114
|
this.childService = childService;
|
|
106
115
|
this.ctx = ctx;
|
|
107
116
|
this.cd = cd;
|
|
117
|
+
this.adaptiveGridService = adaptiveGridService;
|
|
108
118
|
this.menuTabbingService = menuTabbingService;
|
|
119
|
+
this.adaptiveGridService.filterMenuContainer = this;
|
|
109
120
|
}
|
|
110
121
|
ngOnInit() {
|
|
111
122
|
this.subscription = this.childService.changes.subscribe(filter => this._childFilter = filter);
|
|
@@ -113,7 +124,7 @@ export class FilterMenuContainerComponent {
|
|
|
113
124
|
}
|
|
114
125
|
ngAfterViewChecked() {
|
|
115
126
|
if (!this.menuTabbingService.isColumnMenu || (this.isLast && this.isExpanded)) {
|
|
116
|
-
this.menuTabbingService.lastFocusable = this.resetButton
|
|
127
|
+
this.menuTabbingService.lastFocusable = this.resetButton?.nativeElement;
|
|
117
128
|
}
|
|
118
129
|
}
|
|
119
130
|
ngOnDestroy() {
|
|
@@ -175,7 +186,7 @@ export class FilterMenuContainerComponent {
|
|
|
175
186
|
get filterText() {
|
|
176
187
|
return this.ctx.localization.get("filterFilterButton");
|
|
177
188
|
}
|
|
178
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: i1.FilterService, skipSelf: true }, { token: i1.FilterService }, { token: i2.ContextService }, { token: i0.ChangeDetectorRef }, { token: i3.MenuTabbingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: i1.FilterService, skipSelf: true }, { token: i1.FilterService }, { token: i2.ContextService }, { token: i0.ChangeDetectorRef }, { token: i3.MenuTabbingService }, { token: i4.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
|
|
179
190
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterMenuContainerComponent, isStandalone: true, selector: "kendo-grid-filter-menu-container", inputs: { column: "column", isLast: "isLast", isExpanded: "isExpanded", menuTabbingService: "menuTabbingService", filter: "filter", actionsClass: "actionsClass" }, outputs: { close: "close" }, providers: [
|
|
180
191
|
FilterService,
|
|
181
192
|
MenuTabbingService
|
|
@@ -202,7 +213,7 @@ export class FilterMenuContainerComponent {
|
|
|
202
213
|
</ng-template>
|
|
203
214
|
</ng-container>
|
|
204
215
|
</ng-container>
|
|
205
|
-
<div [ngClass]="actionsClass">
|
|
216
|
+
<div *ngIf="!ctx.grid?.isActionSheetExpanded" [ngClass]="actionsClass">
|
|
206
217
|
<button #filterButton
|
|
207
218
|
type="submit"
|
|
208
219
|
class="k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle"
|
|
@@ -216,7 +227,7 @@ export class FilterMenuContainerComponent {
|
|
|
216
227
|
</div>
|
|
217
228
|
</div>
|
|
218
229
|
</form>
|
|
219
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
230
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService", "menuTabbingService"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
220
231
|
}
|
|
221
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{
|
|
222
233
|
type: Component,
|
|
@@ -249,7 +260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
249
260
|
</ng-template>
|
|
250
261
|
</ng-container>
|
|
251
262
|
</ng-container>
|
|
252
|
-
<div [ngClass]="actionsClass">
|
|
263
|
+
<div *ngIf="!ctx.grid?.isActionSheetExpanded" [ngClass]="actionsClass">
|
|
253
264
|
<button #filterButton
|
|
254
265
|
type="submit"
|
|
255
266
|
class="k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle"
|
|
@@ -269,7 +280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
269
280
|
}]
|
|
270
281
|
}], ctorParameters: function () { return [{ type: i1.FilterService, decorators: [{
|
|
271
282
|
type: SkipSelf
|
|
272
|
-
}] }, { type: i1.FilterService }, { type: i2.ContextService }, { type: i0.ChangeDetectorRef }, { type: i3.MenuTabbingService }]; }, propDecorators: { close: [{
|
|
283
|
+
}] }, { type: i1.FilterService }, { type: i2.ContextService }, { type: i0.ChangeDetectorRef }, { type: i3.MenuTabbingService }, { type: i4.AdaptiveGridService }]; }, propDecorators: { close: [{
|
|
273
284
|
type: Output
|
|
274
285
|
}], column: [{
|
|
275
286
|
type: Input
|