@progress/kendo-angular-treelist 19.3.0-develop.4 → 19.3.0-develop.41
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/common/id.service.d.ts +1 -1
- package/esm2022/column-menu/column-chooser.component.mjs +1 -1
- package/esm2022/column-menu/column-list.component.mjs +6 -5
- package/esm2022/column-menu/column-menu-item.directive.mjs +1 -1
- package/esm2022/column-menu/column-menu.component.mjs +3 -3
- package/esm2022/common/id.service.mjs +1 -1
- package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/filter-cell-operators.component.mjs +3 -4
- package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/string-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +1 -2
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu.component.mjs +3 -3
- package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +1 -1
- package/esm2022/navigation/navigation.service.mjs +15 -9
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/rendering/header/header.component.mjs +7 -6
- package/esm2022/rendering/list.component.mjs +5 -3
- package/esm2022/rendering/table-body.component.mjs +1 -1
- package/esm2022/rendering/toolbar/toolbar.component.mjs +2 -2
- package/esm2022/selection/selection.service.mjs +1 -1
- package/esm2022/utils.mjs +0 -4
- package/fesm2022/progress-kendo-angular-treelist.mjs +45 -39
- package/package.json +19 -19
- package/rendering/list.component.d.ts +1 -1
- package/schematics/ngAdd/index.js +3 -3
- package/utils.d.ts +0 -4
package/common/id.service.d.ts
CHANGED
@@ -10,7 +10,7 @@ export declare class IdService {
|
|
10
10
|
private prefix;
|
11
11
|
constructor();
|
12
12
|
cellId(rowIndex: number, colIndex: number): string;
|
13
|
-
|
13
|
+
treelistId(): string;
|
14
14
|
selectionCheckboxId(itemIndex: any): string;
|
15
15
|
selectAllCheckboxId(): string;
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<IdService, never>;
|
@@ -85,7 +85,7 @@ export class ColumnChooserComponent {
|
|
85
85
|
const popupAriaElement = popupElement.querySelector('.k-popup');
|
86
86
|
this.ngZone.runOutsideAngular(() => {
|
87
87
|
this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
|
88
|
-
if (e.
|
88
|
+
if (e.code === Keys.Escape) {
|
89
89
|
this.close(true);
|
90
90
|
}
|
91
91
|
});
|
@@ -10,7 +10,7 @@ import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-che
|
|
10
10
|
import { ColumnMenuService } from './column-menu.service';
|
11
11
|
import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
|
12
12
|
import { Subscription } from 'rxjs';
|
13
|
-
import { Keys } from '@progress/kendo-angular-common';
|
13
|
+
import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "./column-list-kb-nav.service";
|
16
16
|
/**
|
@@ -128,7 +128,8 @@ export class ColumnListComponent {
|
|
128
128
|
}
|
129
129
|
}
|
130
130
|
onKeydown = (e) => {
|
131
|
-
|
131
|
+
const code = normalizeNumpadKeys(e);
|
132
|
+
if (code !== Keys.Tab) {
|
132
133
|
e.preventDefault();
|
133
134
|
}
|
134
135
|
if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
|
@@ -142,13 +143,13 @@ export class ColumnListComponent {
|
|
142
143
|
}
|
143
144
|
});
|
144
145
|
}
|
145
|
-
if (
|
146
|
+
if (code === Keys.ArrowDown) {
|
146
147
|
this.listNavigationService.next();
|
147
148
|
}
|
148
|
-
else if (
|
149
|
+
else if (code === Keys.ArrowUp) {
|
149
150
|
this.listNavigationService.prev();
|
150
151
|
}
|
151
|
-
else if (
|
152
|
+
else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
|
152
153
|
this.listNavigationService.toggleCheckedState();
|
153
154
|
}
|
154
155
|
};
|
@@ -23,8 +23,8 @@ import { IdService } from '../common/id.service';
|
|
23
23
|
import { ContextService } from '../common/provider.service';
|
24
24
|
import { ColumnMenuErrorMessages } from '../common/error-messages';
|
25
25
|
import { Subscription } from 'rxjs';
|
26
|
-
import { replaceMessagePlaceholder } from '../utils';
|
27
26
|
import { MenuTabbingService } from '../filtering/menu/menu-tabbing.service';
|
27
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
28
28
|
import * as i0 from "@angular/core";
|
29
29
|
import * as i1 from "../navigation/navigation.service";
|
30
30
|
import * as i2 from "../common/single-popup.service";
|
@@ -33,7 +33,7 @@ import * as i4 from "./column-menu.service";
|
|
33
33
|
import * as i5 from "../common/id.service";
|
34
34
|
const POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';
|
35
35
|
let id = 0;
|
36
|
-
const getId = (
|
36
|
+
const getId = (treelistId) => `${treelistId}-column-menu-${id++}`;
|
37
37
|
/**
|
38
38
|
* Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
|
39
39
|
* Use this component to display and manage column menu options for a TreeList column.
|
@@ -219,7 +219,7 @@ export class ColumnMenuComponent {
|
|
219
219
|
}));
|
220
220
|
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
|
221
221
|
if (popupAriaElement) {
|
222
|
-
const popupId = getId(this.idService?.
|
222
|
+
const popupId = getId(this.idService?.treelistId());
|
223
223
|
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
224
224
|
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
225
225
|
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
|
@@ -9,9 +9,9 @@ import { AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
|
|
9
9
|
import { ColumnComponent } from '../../columns/column.component';
|
10
10
|
import { FilterService } from '../filter.service';
|
11
11
|
import { BaseFilterCellComponent, localizeOperators } from '../base-filter-cell.component';
|
12
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
13
12
|
import { FilterInputDirective } from '../filter-input.directive';
|
14
13
|
import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
|
14
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "../filter.service";
|
17
17
|
import * as i2 from "../../columns/column.component";
|
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
8
8
|
import { FilterService } from '../filter.service';
|
9
9
|
import { BooleanFilterComponent } from '../boolean-filter.component';
|
10
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
11
10
|
import { FilterInputDirective } from '../filter-input.directive';
|
12
11
|
import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
|
13
12
|
import { FocusableDirective } from '../../navigation/focusable.directive';
|
13
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "../filter.service";
|
16
16
|
import * as i2 from "@progress/kendo-angular-l10n";
|
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { DatePickerComponent, DatePickerCustomMessagesComponent } from '@progress/kendo-angular-dateinputs';
|
8
8
|
import { FilterService } from '../filter.service';
|
9
9
|
import { DateFilterComponent } from '../date-filter.component';
|
10
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
11
10
|
import { FilterInputDirective } from '../filter-input.directive';
|
12
11
|
import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
|
13
12
|
import { FocusableDirective } from '../../navigation/focusable.directive';
|
13
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "../filter.service";
|
16
16
|
import * as i2 from "@progress/kendo-angular-l10n";
|
@@ -4,12 +4,11 @@
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
5
5
|
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
|
6
6
|
import { NgIf } from '@angular/common';
|
7
|
-
import { Keys } from '@progress/kendo-angular-common';
|
7
|
+
import { Keys, replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
8
8
|
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
9
9
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
10
10
|
import { filterClearIcon, filterIcon } from '@progress/kendo-svg-icons';
|
11
11
|
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
12
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
13
12
|
import { ColumnComponent } from '../../columns/column.component';
|
14
13
|
import { FocusableDirective } from '../../navigation/focusable.directive';
|
15
14
|
import * as i0 from "@angular/core";
|
@@ -105,7 +104,7 @@ export class FilterCellOperatorsComponent {
|
|
105
104
|
* @hidden
|
106
105
|
*/
|
107
106
|
clearKeydown(args) {
|
108
|
-
if (args.
|
107
|
+
if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
|
109
108
|
this.clear.emit();
|
110
109
|
}
|
111
110
|
}
|
@@ -116,7 +115,7 @@ export class FilterCellOperatorsComponent {
|
|
116
115
|
if (args.defaultPrevented) {
|
117
116
|
return;
|
118
117
|
}
|
119
|
-
if (args.
|
118
|
+
if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
|
120
119
|
this.dropdown.toggle(true);
|
121
120
|
args.preventDefault();
|
122
121
|
}
|
@@ -7,10 +7,10 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent } from '@progress/kendo-angular-inputs';
|
8
8
|
import { FilterService } from '../filter.service';
|
9
9
|
import { NumericFilterComponent } from '../numeric-filter.component';
|
10
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
11
10
|
import { FilterInputDirective } from '../filter-input.directive';
|
12
11
|
import { FocusableDirective } from '../../navigation/focusable.directive';
|
13
12
|
import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
|
13
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "../filter.service";
|
16
16
|
import * as i2 from "@progress/kendo-angular-l10n";
|
@@ -7,11 +7,11 @@ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
7
7
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
8
8
|
import { FilterService } from '../filter.service';
|
9
9
|
import { StringFilterComponent } from '../string-filter.component';
|
10
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
11
10
|
import { FilterInputDirective } from '../filter-input.directive';
|
12
11
|
import { FocusableDirective } from '../../navigation/focusable.directive';
|
13
12
|
import { FilterCellWrapperComponent } from './filter-cell-wrapper.component';
|
14
13
|
import { TextBoxComponent } from '@progress/kendo-angular-inputs';
|
14
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "../filter.service";
|
17
17
|
import * as i2 from "@progress/kendo-angular-l10n";
|
@@ -4,12 +4,11 @@
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
5
5
|
import { Component, Input, HostBinding, ViewChild, ElementRef, ViewChildren, QueryList } from '@angular/core';
|
6
6
|
import { NgFor } from '@angular/common';
|
7
|
-
import { guid } from '@progress/kendo-angular-common';
|
7
|
+
import { guid, replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
8
8
|
import { RadioButtonComponent } from '@progress/kendo-angular-inputs';
|
9
9
|
import { FilterService } from '../filter.service';
|
10
10
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
11
11
|
import { BooleanFilterComponent } from '../boolean-filter.component';
|
12
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
13
12
|
import { BooleanFilterRadioButtonDirective } from './filter-radio-button.directive';
|
14
13
|
import { MenuTabbingService } from './menu-tabbing.service';
|
15
14
|
import * as i0 from "@angular/core";
|
@@ -11,8 +11,8 @@ import { SinglePopupService } from '../../common/single-popup.service';
|
|
11
11
|
import { FilterInputDirective } from '../filter-input.directive';
|
12
12
|
import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
|
13
13
|
import { MenuTabbingService } from './menu-tabbing.service';
|
14
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
15
14
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
15
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
16
16
|
import * as i0 from "@angular/core";
|
17
17
|
import * as i1 from "../../common/single-popup.service";
|
18
18
|
import * as i2 from "@progress/kendo-angular-l10n";
|
@@ -12,7 +12,7 @@ import { setFilter, logicOperators } from '../base-filter-cell.component';
|
|
12
12
|
import { DateFilterMenuInputComponent } from './date-filter-menu-input.component';
|
13
13
|
import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
|
14
14
|
import { MenuTabbingService } from './menu-tabbing.service';
|
15
|
-
import { replaceMessagePlaceholder } from '
|
15
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
16
16
|
import * as i0 from "@angular/core";
|
17
17
|
import * as i1 from "@progress/kendo-angular-l10n";
|
18
18
|
/**
|
@@ -25,7 +25,7 @@ export class FilterMenuDropDownListDirective {
|
|
25
25
|
this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
|
26
26
|
}
|
27
27
|
keydownHandler = (e) => {
|
28
|
-
if (e.
|
28
|
+
if (e.code === Keys.Escape && this.host.isOpen) {
|
29
29
|
e.stopPropagation();
|
30
30
|
this.host.toggle(false);
|
31
31
|
}
|
@@ -8,8 +8,8 @@ import { FilterService } from '../filter.service';
|
|
8
8
|
import { FilterInputWrapperComponent } from "../filter-input-wrapper.component";
|
9
9
|
import { MenuTabbingService } from './menu-tabbing.service';
|
10
10
|
import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
|
11
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
12
11
|
import { ContextService } from '../../common/provider.service';
|
12
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
13
13
|
import * as i0 from "@angular/core";
|
14
14
|
import * as i1 from "../../common/provider.service";
|
15
15
|
/**
|
@@ -13,7 +13,7 @@ import { FilterMenuContainerComponent } from './filter-menu-container.component'
|
|
13
13
|
import { ContextService } from '../../common/provider.service';
|
14
14
|
import { NavigationService } from '../../navigation/navigation.service';
|
15
15
|
import { IdService } from '../../common/id.service';
|
16
|
-
import { replaceMessagePlaceholder } from '
|
16
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
17
17
|
import * as i0 from "@angular/core";
|
18
18
|
import * as i1 from "../filter.service";
|
19
19
|
import * as i2 from "../../common/single-popup.service";
|
@@ -21,7 +21,7 @@ import * as i3 from "../../common/provider.service";
|
|
21
21
|
import * as i4 from "../../navigation/navigation.service";
|
22
22
|
import * as i5 from "../../common/id.service";
|
23
23
|
let id = 0;
|
24
|
-
const getId = (
|
24
|
+
const getId = (treelistId) => `${treelistId}-filter-menu-${id++}`;
|
25
25
|
/**
|
26
26
|
* @hidden
|
27
27
|
*/
|
@@ -95,7 +95,7 @@ export class FilterMenuComponent {
|
|
95
95
|
}));
|
96
96
|
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-filter-popup');
|
97
97
|
if (popupAriaElement) {
|
98
|
-
const popupId = getId(this.idService?.
|
98
|
+
const popupId = getId(this.idService?.treelistId());
|
99
99
|
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
100
100
|
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
101
101
|
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.filterLabel);
|
@@ -10,7 +10,7 @@ import { FilterInputDirective } from '../filter-input.directive';
|
|
10
10
|
import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
|
11
11
|
import { MenuTabbingService } from './menu-tabbing.service';
|
12
12
|
import { ContextService } from '../../common/provider.service';
|
13
|
-
import { replaceMessagePlaceholder } from '
|
13
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "../../common/provider.service";
|
16
16
|
/**
|
@@ -11,8 +11,8 @@ import { NumericFilterComponent } from '../numeric-filter.component';
|
|
11
11
|
import { setFilter, logicOperators } from '../base-filter-cell.component';
|
12
12
|
import { NumericFilterMenuInputComponent } from './numeric-filter-menu-input.component';
|
13
13
|
import { MenuTabbingService } from './menu-tabbing.service';
|
14
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
15
14
|
import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
|
15
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
16
16
|
import * as i0 from "@angular/core";
|
17
17
|
import * as i1 from "@progress/kendo-angular-l10n";
|
18
18
|
/**
|
@@ -8,10 +8,10 @@ import { TextBoxComponent } from '@progress/kendo-angular-inputs';
|
|
8
8
|
import { ColumnComponent } from "../../columns/column.component";
|
9
9
|
import { FilterService } from '../filter.service';
|
10
10
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
11
|
-
import { replaceMessagePlaceholder } from '../../utils';
|
12
11
|
import { FilterInputDirective } from '../filter-input.directive';
|
13
12
|
import { FilterMenuInputWrapperComponent } from './filter-menu-input-wrapper.component';
|
14
13
|
import { MenuTabbingService } from './menu-tabbing.service';
|
14
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "@progress/kendo-angular-l10n";
|
17
17
|
import * as i2 from "@angular/forms";
|
@@ -11,7 +11,7 @@ import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
11
11
|
import { setFilter, logicOperators } from '../base-filter-cell.component';
|
12
12
|
import { StringFilterMenuInputComponent } from './string-filter-menu-input.component';
|
13
13
|
import { MenuTabbingService } from './menu-tabbing.service';
|
14
|
-
import { replaceMessagePlaceholder } from '
|
14
|
+
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "@progress/kendo-angular-l10n";
|
17
17
|
/**
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
5
5
|
import { ChangeDetectorRef, EventEmitter, Injectable, NgZone, Optional } from '@angular/core';
|
6
|
-
import { isDocumentAvailable, Keys } from '@progress/kendo-angular-common';
|
6
|
+
import { isDocumentAvailable, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
|
7
7
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
8
8
|
import { from, interval, Subscription } from 'rxjs';
|
9
9
|
import { filter, map, switchMap, switchMapTo, take, takeUntil } from 'rxjs/operators';
|
@@ -181,7 +181,7 @@ export class NavigationService {
|
|
181
181
|
.subscribe(() => this.cursor.reset(0, 0)));
|
182
182
|
this.subs.add(this.domEvents.keydown
|
183
183
|
.subscribe(args => this.onKeydown(args)));
|
184
|
-
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.
|
184
|
+
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
|
185
185
|
// Timeout if focusOut doesn't fire very soon
|
186
186
|
interval(0).pipe(take(1))))))
|
187
187
|
.subscribe(() => this.onTabout()));
|
@@ -398,8 +398,10 @@ export class NavigationService {
|
|
398
398
|
if (!this.onCellKeydown(args)) {
|
399
399
|
return;
|
400
400
|
}
|
401
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
402
|
+
const code = normalizeNumpadKeys(args);
|
401
403
|
const row = this.cursor.row;
|
402
|
-
switch (
|
404
|
+
switch (code) {
|
403
405
|
case Keys.Space:
|
404
406
|
this.updateSelection(args);
|
405
407
|
preventDefault = this.selectionService.enabled;
|
@@ -541,13 +543,15 @@ export class NavigationService {
|
|
541
543
|
if (!this.onCellKeydown(args)) {
|
542
544
|
return;
|
543
545
|
}
|
544
|
-
|
545
|
-
|
546
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
547
|
+
const code = normalizeNumpadKeys(args);
|
548
|
+
const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
|
549
|
+
if (code === Keys.Escape || code === Keys.F2 || confirm) {
|
546
550
|
this.leaveCell();
|
547
551
|
this.cursor.reset();
|
548
552
|
args.stopPropagation();
|
549
553
|
}
|
550
|
-
else if (isNavigationKey(
|
554
|
+
else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
|
551
555
|
this.onCursorKeydown(args);
|
552
556
|
if (args.defaultPrevented) {
|
553
557
|
this.leaveCell();
|
@@ -555,10 +559,12 @@ export class NavigationService {
|
|
555
559
|
}
|
556
560
|
}
|
557
561
|
onCellKeydown(args) {
|
562
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
563
|
+
const code = normalizeNumpadKeys(args);
|
558
564
|
if (this.editService.isEditingCell()) {
|
559
|
-
const confirm =
|
560
|
-
const cancel =
|
561
|
-
const navigate = isNavigationKey(
|
565
|
+
const confirm = code === Keys.Enter || code === Keys.NumpadEnter;
|
566
|
+
const cancel = code === Keys.Escape;
|
567
|
+
const navigate = isNavigationKey(code);
|
562
568
|
if (confirm) {
|
563
569
|
return !this.editService.closeCell(args);
|
564
570
|
}
|
@@ -10,7 +10,7 @@ export const packageMetadata = {
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
11
11
|
productCode: 'KENDOUIANGULAR',
|
12
12
|
productCodes: ['KENDOUIANGULAR'],
|
13
|
-
publishDate:
|
14
|
-
version: '19.3.0-develop.
|
13
|
+
publishDate: 1754998761,
|
14
|
+
version: '19.3.0-develop.41',
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
16
16
|
};
|
@@ -8,7 +8,7 @@ import { NgFor, NgIf, NgClass, NgStyle } from '@angular/common';
|
|
8
8
|
import { Subscription, of, merge } from "rxjs";
|
9
9
|
import { filter, map, switchMap, tap, takeUntil } from 'rxjs/operators';
|
10
10
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
11
|
-
import { Keys, DraggableDirective, TemplateContextDirective } from '@progress/kendo-angular-common';
|
11
|
+
import { Keys, DraggableDirective, TemplateContextDirective, normalizeNumpadKeys } from '@progress/kendo-angular-common';
|
12
12
|
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
13
13
|
import { sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';
|
14
14
|
import { isColumnComponent } from '../../columns/column.component';
|
@@ -224,14 +224,15 @@ export class HeaderComponent {
|
|
224
224
|
: event[`${multiSortKey}Key`];
|
225
225
|
}
|
226
226
|
onHeaderKeydown(column, args) {
|
227
|
-
|
227
|
+
const code = normalizeNumpadKeys(args);
|
228
|
+
if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
|
228
229
|
args.preventDefault();
|
229
230
|
args.stopImmediatePropagation();
|
230
231
|
const filterMenu = this.filterMenus.find(fm => fm.column === column);
|
231
232
|
filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
|
232
233
|
return;
|
233
234
|
}
|
234
|
-
if (
|
235
|
+
if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
|
235
236
|
args.preventDefault();
|
236
237
|
args.stopImmediatePropagation();
|
237
238
|
const columnMenu = this.columnMenus.find(cm => cm.column === column);
|
@@ -239,12 +240,12 @@ export class HeaderComponent {
|
|
239
240
|
return;
|
240
241
|
}
|
241
242
|
const isCtrlOrMeta = args.ctrlKey || args.metaKey;
|
242
|
-
const isLeftOrRightArrow =
|
243
|
+
const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
|
243
244
|
const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
|
244
245
|
if (isReorderingKeyShortcut && this.isReorderable(column)) {
|
245
246
|
args.preventDefault();
|
246
247
|
const columnsCount = this.columnInfoService.leafNamedColumns.length;
|
247
|
-
const reorderDirection =
|
248
|
+
const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
|
248
249
|
const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
|
249
250
|
const reorderDirectionOffset = reorderDirection * rtlMultiplier;
|
250
251
|
const newIndex = column.leafIndex + reorderDirectionOffset;
|
@@ -261,7 +262,7 @@ export class HeaderComponent {
|
|
261
262
|
if (!this.sortable || args.defaultPrevented || column.sortable === false) {
|
262
263
|
return;
|
263
264
|
}
|
264
|
-
if (
|
265
|
+
if (code === Keys.Enter && isPresent(column.field)) {
|
265
266
|
const modifier = this.matchModifier(args);
|
266
267
|
this.sortService.sort(this.toggleSort(column, modifier));
|
267
268
|
}
|
@@ -19,7 +19,7 @@ import { SuspendService } from '../scrolling/suspend.service';
|
|
19
19
|
import { expandColumns, sumColumnWidths } from "../columns/column-common";
|
20
20
|
import { ScrollSyncService } from "../scrolling/scroll-sync.service";
|
21
21
|
import { ResizeService } from "../layout/resize.service";
|
22
|
-
import { EventsOutsideAngularDirective, ResizeSensorComponent } from "@progress/kendo-angular-common";
|
22
|
+
import { EventsOutsideAngularDirective, normalizeNumpadKeys, ResizeSensorComponent } from "@progress/kendo-angular-common";
|
23
23
|
import { BrowserSupportService } from "../layout/browser-support.service";
|
24
24
|
import { EditService } from '../editing/edit.service';
|
25
25
|
import { NavigationService } from '../navigation/navigation.service';
|
@@ -291,8 +291,10 @@ export class ListComponent {
|
|
291
291
|
}
|
292
292
|
}
|
293
293
|
lockedKeydown(args) {
|
294
|
-
|
295
|
-
|
294
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
295
|
+
const code = normalizeNumpadKeys(args);
|
296
|
+
if (code === Keys.PageDown || code === Keys.PageUp) {
|
297
|
+
const dir = code === Keys.PageDown ? 1 : -1;
|
296
298
|
const element = this.container.nativeElement;
|
297
299
|
element.scrollTop += element.offsetHeight * dir * 0.8;
|
298
300
|
args.preventDefault();
|
@@ -297,7 +297,7 @@ export class TableBodyComponent {
|
|
297
297
|
this.domEvents.cellClick.emit(args);
|
298
298
|
}
|
299
299
|
cellKeydownHandler(args) {
|
300
|
-
if (args.
|
300
|
+
if (args.code === Keys.Enter || args.code === Keys.NumpadEnter) {
|
301
301
|
this.clickHandler(args);
|
302
302
|
}
|
303
303
|
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
import { Component, Input, HostBinding, Renderer2, ElementRef } from '@angular/core';
|
7
7
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
8
8
|
import { Subscription } from 'rxjs';
|
9
|
-
import { Keys, isDocumentAvailable } from '@progress/kendo-angular-common';
|
9
|
+
import { Keys, isDocumentAvailable, normalizeNumpadKeys } from '@progress/kendo-angular-common';
|
10
10
|
import { ContextService } from './../../common/provider.service';
|
11
11
|
import * as i0 from "@angular/core";
|
12
12
|
import * as i1 from "./../../common/provider.service";
|
@@ -44,7 +44,7 @@ export class ToolbarComponent {
|
|
44
44
|
}
|
45
45
|
onKeyDown(event) {
|
46
46
|
if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
|
47
|
-
const keyCode = event
|
47
|
+
const keyCode = normalizeNumpadKeys(event);
|
48
48
|
if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {
|
49
49
|
event.preventDefault();
|
50
50
|
const dir = keyCode === Keys.ArrowLeft ? -1 : 1;
|
@@ -111,7 +111,7 @@ export class SelectionService {
|
|
111
111
|
}
|
112
112
|
const { dataItem, column, columnIndex, originalEvent } = args;
|
113
113
|
const ctrlKey = originalEvent.ctrlKey || originalEvent.metaKey;
|
114
|
-
if ((originalEvent.
|
114
|
+
if (((originalEvent.code === Keys.Enter || originalEvent.code === Keys.NumpadEnter) && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
|
115
115
|
return;
|
116
116
|
}
|
117
117
|
const selected = this.isSelected(dataItem, column, columnIndex);
|
package/esm2022/utils.mjs
CHANGED
@@ -111,7 +111,3 @@ export const cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequ
|
|
111
111
|
/** @hidden */
|
112
112
|
export const isColumnEditable = (column, formGroup) => column.isEditable !== false &&
|
113
113
|
(column.editTemplate || (formGroup && column.field && formGroup.get(column.field)));
|
114
|
-
/**
|
115
|
-
* @hidden
|
116
|
-
*/
|
117
|
-
export const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import * as i0 from '@angular/core';
|
6
6
|
import { Directive, Optional, EventEmitter, Injectable, QueryList, Input, ContentChildren, ContentChild, InjectionToken, forwardRef, Component, SkipSelf, Host, isDevMode, SecurityContext, Inject, Output, HostBinding, Pipe, ViewChild, ViewChildren, Self, HostListener, NgZone, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
7
7
|
import * as i1$4 from '@progress/kendo-angular-common';
|
8
|
-
import { isDocumentAvailable, isPresent as isPresent$1, hasClasses as hasClasses$1, Keys, anyChanged, isChanged as isChanged$1, ResizeSensorComponent, EventsOutsideAngularDirective, KendoInput, guid, DraggableDirective, TemplateContextDirective, hasObservers, ResizeBatchService } from '@progress/kendo-angular-common';
|
8
|
+
import { isDocumentAvailable, isPresent as isPresent$1, hasClasses as hasClasses$1, Keys, normalizeNumpadKeys, anyChanged, isChanged as isChanged$1, ResizeSensorComponent, EventsOutsideAngularDirective, KendoInput, replaceMessagePlaceholder, guid, DraggableDirective, TemplateContextDirective, hasObservers, ResizeBatchService } from '@progress/kendo-angular-common';
|
9
9
|
import * as i2 from '@progress/kendo-angular-icons';
|
10
10
|
import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
|
11
11
|
import { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';
|
@@ -49,8 +49,8 @@ const packageMetadata = {
|
|
49
49
|
productName: 'Kendo UI for Angular',
|
50
50
|
productCode: 'KENDOUIANGULAR',
|
51
51
|
productCodes: ['KENDOUIANGULAR'],
|
52
|
-
publishDate:
|
53
|
-
version: '19.3.0-develop.
|
52
|
+
publishDate: 1754998761,
|
53
|
+
version: '19.3.0-develop.41',
|
54
54
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
55
55
|
};
|
56
56
|
|
@@ -694,10 +694,6 @@ const cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequestAnim
|
|
694
694
|
/** @hidden */
|
695
695
|
const isColumnEditable = (column, formGroup) => column.isEditable !== false &&
|
696
696
|
(column.editTemplate || (formGroup && column.field && formGroup.get(column.field)));
|
697
|
-
/**
|
698
|
-
* @hidden
|
699
|
-
*/
|
700
|
-
const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
|
701
697
|
|
702
698
|
/**
|
703
699
|
* Represents the filter-cell template for the TreeList.
|
@@ -4362,7 +4358,7 @@ class SelectionService {
|
|
4362
4358
|
}
|
4363
4359
|
const { dataItem, column, columnIndex, originalEvent } = args;
|
4364
4360
|
const ctrlKey = originalEvent.ctrlKey || originalEvent.metaKey;
|
4365
|
-
if ((originalEvent.
|
4361
|
+
if (((originalEvent.code === Keys.Enter || originalEvent.code === Keys.NumpadEnter) && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
|
4366
4362
|
return;
|
4367
4363
|
}
|
4368
4364
|
const selected = this.isSelected(dataItem, column, columnIndex);
|
@@ -4663,7 +4659,7 @@ class NavigationService {
|
|
4663
4659
|
.subscribe(() => this.cursor.reset(0, 0)));
|
4664
4660
|
this.subs.add(this.domEvents.keydown
|
4665
4661
|
.subscribe(args => this.onKeydown(args)));
|
4666
|
-
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.
|
4662
|
+
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
|
4667
4663
|
// Timeout if focusOut doesn't fire very soon
|
4668
4664
|
interval(0).pipe(take(1))))))
|
4669
4665
|
.subscribe(() => this.onTabout()));
|
@@ -4880,8 +4876,10 @@ class NavigationService {
|
|
4880
4876
|
if (!this.onCellKeydown(args)) {
|
4881
4877
|
return;
|
4882
4878
|
}
|
4879
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
4880
|
+
const code = normalizeNumpadKeys(args);
|
4883
4881
|
const row = this.cursor.row;
|
4884
|
-
switch (
|
4882
|
+
switch (code) {
|
4885
4883
|
case Keys.Space:
|
4886
4884
|
this.updateSelection(args);
|
4887
4885
|
preventDefault = this.selectionService.enabled;
|
@@ -5023,13 +5021,15 @@ class NavigationService {
|
|
5023
5021
|
if (!this.onCellKeydown(args)) {
|
5024
5022
|
return;
|
5025
5023
|
}
|
5026
|
-
|
5027
|
-
|
5024
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
5025
|
+
const code = normalizeNumpadKeys(args);
|
5026
|
+
const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
|
5027
|
+
if (code === Keys.Escape || code === Keys.F2 || confirm) {
|
5028
5028
|
this.leaveCell();
|
5029
5029
|
this.cursor.reset();
|
5030
5030
|
args.stopPropagation();
|
5031
5031
|
}
|
5032
|
-
else if (isNavigationKey(
|
5032
|
+
else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
|
5033
5033
|
this.onCursorKeydown(args);
|
5034
5034
|
if (args.defaultPrevented) {
|
5035
5035
|
this.leaveCell();
|
@@ -5037,10 +5037,12 @@ class NavigationService {
|
|
5037
5037
|
}
|
5038
5038
|
}
|
5039
5039
|
onCellKeydown(args) {
|
5040
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
5041
|
+
const code = normalizeNumpadKeys(args);
|
5040
5042
|
if (this.editService.isEditingCell()) {
|
5041
|
-
const confirm =
|
5042
|
-
const cancel =
|
5043
|
-
const navigate = isNavigationKey(
|
5043
|
+
const confirm = code === Keys.Enter || code === Keys.NumpadEnter;
|
5044
|
+
const cancel = code === Keys.Escape;
|
5045
|
+
const navigate = isNavigationKey(code);
|
5044
5046
|
if (confirm) {
|
5045
5047
|
return !this.editService.closeCell(args);
|
5046
5048
|
}
|
@@ -5160,7 +5162,7 @@ class IdService {
|
|
5160
5162
|
cellId(rowIndex, colIndex) {
|
5161
5163
|
return `${this.prefix}-r${rowIndex}c${colIndex}`;
|
5162
5164
|
}
|
5163
|
-
|
5165
|
+
treelistId() {
|
5164
5166
|
return this.prefix;
|
5165
5167
|
}
|
5166
5168
|
selectionCheckboxId(itemIndex) {
|
@@ -6779,7 +6781,7 @@ class TableBodyComponent {
|
|
6779
6781
|
this.domEvents.cellClick.emit(args);
|
6780
6782
|
}
|
6781
6783
|
cellKeydownHandler(args) {
|
6782
|
-
if (args.
|
6784
|
+
if (args.code === Keys.Enter || args.code === Keys.NumpadEnter) {
|
6783
6785
|
this.clickHandler(args);
|
6784
6786
|
}
|
6785
6787
|
}
|
@@ -8004,8 +8006,10 @@ class ListComponent {
|
|
8004
8006
|
}
|
8005
8007
|
}
|
8006
8008
|
lockedKeydown(args) {
|
8007
|
-
|
8008
|
-
|
8009
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
8010
|
+
const code = normalizeNumpadKeys(args);
|
8011
|
+
if (code === Keys.PageDown || code === Keys.PageUp) {
|
8012
|
+
const dir = code === Keys.PageDown ? 1 : -1;
|
8009
8013
|
const element = this.container.nativeElement;
|
8010
8014
|
element.scrollTop += element.offsetHeight * dir * 0.8;
|
8011
8015
|
args.preventDefault();
|
@@ -9513,7 +9517,7 @@ class FilterCellOperatorsComponent {
|
|
9513
9517
|
* @hidden
|
9514
9518
|
*/
|
9515
9519
|
clearKeydown(args) {
|
9516
|
-
if (args.
|
9520
|
+
if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space) {
|
9517
9521
|
this.clear.emit();
|
9518
9522
|
}
|
9519
9523
|
}
|
@@ -9524,7 +9528,7 @@ class FilterCellOperatorsComponent {
|
|
9524
9528
|
if (args.defaultPrevented) {
|
9525
9529
|
return;
|
9526
9530
|
}
|
9527
|
-
if (args.
|
9531
|
+
if ((args.code === Keys.Enter || args.code === Keys.NumpadEnter) && !this.dropdown.isOpen) {
|
9528
9532
|
this.dropdown.toggle(true);
|
9529
9533
|
args.preventDefault();
|
9530
9534
|
}
|
@@ -11029,7 +11033,7 @@ class FilterMenuDropDownListDirective {
|
|
11029
11033
|
this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);
|
11030
11034
|
}
|
11031
11035
|
keydownHandler = (e) => {
|
11032
|
-
if (e.
|
11036
|
+
if (e.code === Keys.Escape && this.host.isOpen) {
|
11033
11037
|
e.stopPropagation();
|
11034
11038
|
this.host.toggle(false);
|
11035
11039
|
}
|
@@ -13204,7 +13208,8 @@ class ColumnListComponent {
|
|
13204
13208
|
}
|
13205
13209
|
}
|
13206
13210
|
onKeydown = (e) => {
|
13207
|
-
|
13211
|
+
const code = normalizeNumpadKeys(e);
|
13212
|
+
if (code !== Keys.Tab) {
|
13208
13213
|
e.preventDefault();
|
13209
13214
|
}
|
13210
13215
|
if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
|
@@ -13218,13 +13223,13 @@ class ColumnListComponent {
|
|
13218
13223
|
}
|
13219
13224
|
});
|
13220
13225
|
}
|
13221
|
-
if (
|
13226
|
+
if (code === Keys.ArrowDown) {
|
13222
13227
|
this.listNavigationService.next();
|
13223
13228
|
}
|
13224
|
-
else if (
|
13229
|
+
else if (code === Keys.ArrowUp) {
|
13225
13230
|
this.listNavigationService.prev();
|
13226
13231
|
}
|
13227
|
-
else if (
|
13232
|
+
else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
|
13228
13233
|
this.listNavigationService.toggleCheckedState();
|
13229
13234
|
}
|
13230
13235
|
};
|
@@ -13900,7 +13905,7 @@ class ColumnMenuItemDirective {
|
|
13900
13905
|
}
|
13901
13906
|
}
|
13902
13907
|
onTab = (e) => {
|
13903
|
-
if (e.
|
13908
|
+
if (e.code !== Keys.Tab) {
|
13904
13909
|
return;
|
13905
13910
|
}
|
13906
13911
|
if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {
|
@@ -14124,7 +14129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
14124
14129
|
|
14125
14130
|
const POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';
|
14126
14131
|
let id$1 = 0;
|
14127
|
-
const getId$1 = (
|
14132
|
+
const getId$1 = (treelistId) => `${treelistId}-column-menu-${id$1++}`;
|
14128
14133
|
/**
|
14129
14134
|
* Represents the [column menu]({% slug columnmenu_treelist %}) component of the TreeList.
|
14130
14135
|
* Use this component to display and manage column menu options for a TreeList column.
|
@@ -14310,7 +14315,7 @@ class ColumnMenuComponent {
|
|
14310
14315
|
}));
|
14311
14316
|
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');
|
14312
14317
|
if (popupAriaElement) {
|
14313
|
-
const popupId = getId$1(this.idService?.
|
14318
|
+
const popupId = getId$1(this.idService?.treelistId());
|
14314
14319
|
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
14315
14320
|
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
14316
14321
|
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);
|
@@ -14538,7 +14543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
14538
14543
|
}] } });
|
14539
14544
|
|
14540
14545
|
let id = 0;
|
14541
|
-
const getId = (
|
14546
|
+
const getId = (treelistId) => `${treelistId}-filter-menu-${id++}`;
|
14542
14547
|
/**
|
14543
14548
|
* @hidden
|
14544
14549
|
*/
|
@@ -14612,7 +14617,7 @@ class FilterMenuComponent {
|
|
14612
14617
|
}));
|
14613
14618
|
const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-filter-popup');
|
14614
14619
|
if (popupAriaElement) {
|
14615
|
-
const popupId = getId(this.idService?.
|
14620
|
+
const popupId = getId(this.idService?.treelistId());
|
14616
14621
|
this.renderer.setAttribute(popupAriaElement, 'id', popupId);
|
14617
14622
|
this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');
|
14618
14623
|
this.renderer.setAttribute(popupAriaElement, 'aria-label', this.filterLabel);
|
@@ -14965,14 +14970,15 @@ class HeaderComponent {
|
|
14965
14970
|
: event[`${multiSortKey}Key`];
|
14966
14971
|
}
|
14967
14972
|
onHeaderKeydown(column, args) {
|
14968
|
-
|
14973
|
+
const code = normalizeNumpadKeys(args);
|
14974
|
+
if (code === Keys.ArrowDown && args.altKey && this.showFilterMenu) {
|
14969
14975
|
args.preventDefault();
|
14970
14976
|
args.stopImmediatePropagation();
|
14971
14977
|
const filterMenu = this.filterMenus.find(fm => fm.column === column);
|
14972
14978
|
filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);
|
14973
14979
|
return;
|
14974
14980
|
}
|
14975
|
-
if (
|
14981
|
+
if (code === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {
|
14976
14982
|
args.preventDefault();
|
14977
14983
|
args.stopImmediatePropagation();
|
14978
14984
|
const columnMenu = this.columnMenus.find(cm => cm.column === column);
|
@@ -14980,12 +14986,12 @@ class HeaderComponent {
|
|
14980
14986
|
return;
|
14981
14987
|
}
|
14982
14988
|
const isCtrlOrMeta = args.ctrlKey || args.metaKey;
|
14983
|
-
const isLeftOrRightArrow =
|
14989
|
+
const isLeftOrRightArrow = code === Keys.ArrowLeft || code === Keys.ArrowRight;
|
14984
14990
|
const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;
|
14985
14991
|
if (isReorderingKeyShortcut && this.isReorderable(column)) {
|
14986
14992
|
args.preventDefault();
|
14987
14993
|
const columnsCount = this.columnInfoService.leafNamedColumns.length;
|
14988
|
-
const reorderDirection =
|
14994
|
+
const reorderDirection = code === Keys.ArrowLeft ? -1 : 1;
|
14989
14995
|
const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;
|
14990
14996
|
const reorderDirectionOffset = reorderDirection * rtlMultiplier;
|
14991
14997
|
const newIndex = column.leafIndex + reorderDirectionOffset;
|
@@ -15002,7 +15008,7 @@ class HeaderComponent {
|
|
15002
15008
|
if (!this.sortable || args.defaultPrevented || column.sortable === false) {
|
15003
15009
|
return;
|
15004
15010
|
}
|
15005
|
-
if (
|
15011
|
+
if (code === Keys.Enter && isPresent(column.field)) {
|
15006
15012
|
const modifier = this.matchModifier(args);
|
15007
15013
|
this.sortService.sort(this.toggleSort(column, modifier));
|
15008
15014
|
}
|
@@ -15712,7 +15718,7 @@ class ToolbarComponent {
|
|
15712
15718
|
}
|
15713
15719
|
onKeyDown(event) {
|
15714
15720
|
if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {
|
15715
|
-
const keyCode = event
|
15721
|
+
const keyCode = normalizeNumpadKeys(event);
|
15716
15722
|
if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {
|
15717
15723
|
event.preventDefault();
|
15718
15724
|
const dir = keyCode === Keys.ArrowLeft ? -1 : 1;
|
@@ -22759,7 +22765,7 @@ class ColumnChooserComponent {
|
|
22759
22765
|
const popupAriaElement = popupElement.querySelector('.k-popup');
|
22760
22766
|
this.ngZone.runOutsideAngular(() => {
|
22761
22767
|
this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', (e) => {
|
22762
|
-
if (e.
|
22768
|
+
if (e.code === Keys.Escape) {
|
22763
22769
|
this.close(true);
|
22764
22770
|
}
|
22765
22771
|
});
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@progress/kendo-angular-treelist",
|
3
|
-
"version": "19.3.0-develop.
|
3
|
+
"version": "19.3.0-develop.41",
|
4
4
|
"description": "Kendo UI TreeList for Angular - Display hierarchical data in an Angular tree grid view that supports sorting, filtering, paging, and much more.",
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
6
6
|
"author": "Progress",
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"package": {
|
25
25
|
"productName": "Kendo UI for Angular",
|
26
26
|
"productCode": "KENDOUIANGULAR",
|
27
|
-
"publishDate":
|
27
|
+
"publishDate": 1754998761,
|
28
28
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
29
29
|
}
|
30
30
|
},
|
@@ -36,27 +36,27 @@
|
|
36
36
|
"@angular/platform-browser": "16 - 20",
|
37
37
|
"@progress/kendo-data-query": "^1.0.0",
|
38
38
|
"@progress/kendo-drawing": "^1.21.0",
|
39
|
-
"@progress/kendo-licensing": "^1.
|
40
|
-
"@progress/kendo-angular-buttons": "19.3.0-develop.
|
41
|
-
"@progress/kendo-angular-common": "19.3.0-develop.
|
42
|
-
"@progress/kendo-angular-dateinputs": "19.3.0-develop.
|
43
|
-
"@progress/kendo-angular-dropdowns": "19.3.0-develop.
|
44
|
-
"@progress/kendo-angular-excel-export": "19.3.0-develop.
|
45
|
-
"@progress/kendo-angular-icons": "19.3.0-develop.
|
46
|
-
"@progress/kendo-angular-inputs": "19.3.0-develop.
|
47
|
-
"@progress/kendo-angular-intl": "19.3.0-develop.
|
48
|
-
"@progress/kendo-angular-l10n": "19.3.0-develop.
|
49
|
-
"@progress/kendo-angular-label": "19.3.0-develop.
|
50
|
-
"@progress/kendo-angular-pager": "19.3.0-develop.
|
51
|
-
"@progress/kendo-angular-pdf-export": "19.3.0-develop.
|
52
|
-
"@progress/kendo-angular-popup": "19.3.0-develop.
|
53
|
-
"@progress/kendo-angular-toolbar": "19.3.0-develop.
|
54
|
-
"@progress/kendo-angular-utils": "19.3.0-develop.
|
39
|
+
"@progress/kendo-licensing": "^1.7.0",
|
40
|
+
"@progress/kendo-angular-buttons": "19.3.0-develop.41",
|
41
|
+
"@progress/kendo-angular-common": "19.3.0-develop.41",
|
42
|
+
"@progress/kendo-angular-dateinputs": "19.3.0-develop.41",
|
43
|
+
"@progress/kendo-angular-dropdowns": "19.3.0-develop.41",
|
44
|
+
"@progress/kendo-angular-excel-export": "19.3.0-develop.41",
|
45
|
+
"@progress/kendo-angular-icons": "19.3.0-develop.41",
|
46
|
+
"@progress/kendo-angular-inputs": "19.3.0-develop.41",
|
47
|
+
"@progress/kendo-angular-intl": "19.3.0-develop.41",
|
48
|
+
"@progress/kendo-angular-l10n": "19.3.0-develop.41",
|
49
|
+
"@progress/kendo-angular-label": "19.3.0-develop.41",
|
50
|
+
"@progress/kendo-angular-pager": "19.3.0-develop.41",
|
51
|
+
"@progress/kendo-angular-pdf-export": "19.3.0-develop.41",
|
52
|
+
"@progress/kendo-angular-popup": "19.3.0-develop.41",
|
53
|
+
"@progress/kendo-angular-toolbar": "19.3.0-develop.41",
|
54
|
+
"@progress/kendo-angular-utils": "19.3.0-develop.41",
|
55
55
|
"rxjs": "^6.5.3 || ^7.0.0"
|
56
56
|
},
|
57
57
|
"dependencies": {
|
58
58
|
"tslib": "^2.3.1",
|
59
|
-
"@progress/kendo-angular-schematics": "19.3.0-develop.
|
59
|
+
"@progress/kendo-angular-schematics": "19.3.0-develop.41",
|
60
60
|
"@progress/kendo-common": "^1.0.1",
|
61
61
|
"@progress/kendo-file-saver": "^1.0.0"
|
62
62
|
},
|
@@ -113,7 +113,7 @@ export declare class ListComponent implements OnInit, OnDestroy, AfterViewInit,
|
|
113
113
|
init(): void;
|
114
114
|
lockedScroll(): void;
|
115
115
|
lockedMousewheel(args: any): void;
|
116
|
-
lockedKeydown(args:
|
116
|
+
lockedKeydown(args: KeyboardEvent): void;
|
117
117
|
updateViewportColumns(range?: any): void;
|
118
118
|
private attachContainerScroll;
|
119
119
|
private createScroller;
|
@@ -4,13 +4,13 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
4
4
|
function default_1(options) {
|
5
5
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'TreeListModule', package: 'treelist', peerDependencies: {
|
6
6
|
// peer dep of the dropdowns
|
7
|
-
'@progress/kendo-angular-treeview': '19.3.0-develop.
|
7
|
+
'@progress/kendo-angular-treeview': '19.3.0-develop.41',
|
8
8
|
// peer dependency of kendo-angular-inputs
|
9
|
-
'@progress/kendo-angular-dialog': '19.3.0-develop.
|
9
|
+
'@progress/kendo-angular-dialog': '19.3.0-develop.41',
|
10
10
|
// peer dependency of kendo-angular-icons
|
11
11
|
'@progress/kendo-svg-icons': '^4.0.0',
|
12
12
|
// peer dependency of kendo-angular-dateinputs
|
13
|
-
'@progress/kendo-angular-navigation': '19.3.0-develop.
|
13
|
+
'@progress/kendo-angular-navigation': '19.3.0-develop.41',
|
14
14
|
} });
|
15
15
|
return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
|
16
16
|
}
|
package/utils.d.ts
CHANGED
@@ -78,7 +78,3 @@ export declare const requestAnimationFrame: any;
|
|
78
78
|
export declare const cancelAnimationFrame: any;
|
79
79
|
/** @hidden */
|
80
80
|
export declare const isColumnEditable: (column: any, formGroup: any) => boolean;
|
81
|
-
/**
|
82
|
-
* @hidden
|
83
|
-
*/
|
84
|
-
export declare const replaceMessagePlaceholder: (message: string, name: string, value: string) => string;
|