@progress/kendo-angular-treelist 12.0.2-develop.3 → 12.1.0-develop.2
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/provider.service.d.ts +6 -0
- package/esm2020/common/provider.service.mjs +9 -3
- package/esm2020/filtering/cell/filter-cell-operators.component.mjs +1 -1
- package/esm2020/filtering/cell/numeric-filter-cell.component.mjs +1 -1
- package/esm2020/filtering/cell/string-filter-cell.component.mjs +1 -1
- package/esm2020/filtering/filter-row.component.mjs +2 -2
- package/esm2020/index.mjs +1 -0
- package/esm2020/localization/messages.mjs +7 -1
- package/esm2020/navigation/focus-group.mjs +1 -0
- package/esm2020/navigation/focus-root.mjs +18 -8
- package/esm2020/navigation/focusable.directive.mjs +28 -11
- package/esm2020/navigation/navigation.service.mjs +1 -1
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/pager/pager-input.component.mjs +16 -6
- package/esm2020/pager/pager-next-buttons.component.mjs +34 -15
- package/esm2020/pager/pager-numeric-buttons.component.mjs +12 -8
- package/esm2020/pager/pager-page-sizes.component.mjs +11 -5
- package/esm2020/pager/pager-prev-buttons.component.mjs +31 -14
- package/esm2020/pager/pager.component.mjs +232 -21
- package/esm2020/rendering/cell.component.mjs +3 -1
- package/esm2020/rendering/common/dom-queries.mjs +21 -1
- package/esm2020/rendering/header/header.component.mjs +10 -3
- package/esm2020/rendering/list.component.mjs +2 -2
- package/esm2020/rendering/table-body.component.mjs +6 -2
- package/esm2020/rendering/toolbar/toolbar-focusable.directive.mjs +63 -0
- package/esm2020/rendering/toolbar/toolbar-navigation.service.mjs +53 -0
- package/esm2020/rendering/toolbar/toolbar.component.mjs +44 -5
- package/esm2020/treelist.component.mjs +64 -11
- package/esm2020/treelist.module.mjs +8 -3
- package/esm2020/utils.mjs +4 -0
- package/fesm2015/progress-kendo-angular-treelist.mjs +636 -115
- package/fesm2020/progress-kendo-angular-treelist.mjs +631 -115
- package/index.d.ts +1 -0
- package/localization/messages.d.ts +20 -1
- package/navigation/focus-group.d.ts +2 -1
- package/navigation/focus-root.d.ts +8 -2
- package/navigation/focusable.directive.d.ts +7 -1
- package/package.json +15 -15
- package/pager/pager-input.component.d.ts +3 -1
- package/pager/pager-next-buttons.component.d.ts +12 -2
- package/pager/pager-page-sizes.component.d.ts +3 -2
- package/pager/pager-prev-buttons.component.d.ts +7 -1
- package/pager/pager.component.d.ts +35 -4
- package/rendering/common/dom-queries.d.ts +8 -0
- package/rendering/toolbar/toolbar-focusable.directive.d.ts +28 -0
- package/rendering/toolbar/toolbar-navigation.service.d.ts +21 -0
- package/rendering/toolbar/toolbar.component.d.ts +14 -4
- package/schematics/ngAdd/index.js +3 -3
- package/treelist.component.d.ts +7 -0
- package/treelist.module.d.ts +76 -75
- package/utils.d.ts +4 -0
|
@@ -2,35 +2,53 @@
|
|
|
2
2
|
* Copyright © 2023 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, Input, EventEmitter, Output, HostBinding, ElementRef, Renderer2 } from '@angular/core';
|
|
5
|
+
import { Component, Input, EventEmitter, Output, HostBinding, ElementRef, Renderer2, ViewChild, NgZone } from '@angular/core';
|
|
6
6
|
import { normalize } from './pager-settings';
|
|
7
7
|
import { PagerTemplateDirective } from "./pager-template.directive";
|
|
8
|
-
import { anyChanged } from "../utils";
|
|
8
|
+
import { anyChanged, replaceMessagePlaceholder } from "../utils";
|
|
9
9
|
import { PagerContextService } from "./pager-context.service";
|
|
10
10
|
import { Subscription } from "rxjs";
|
|
11
11
|
import { RESPONSIVE_BREAKPOINT_LARGE, RESPONSIVE_BREAKPOINT_MEDIUM } from '../constants';
|
|
12
|
+
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
13
|
+
import { Keys } from '@progress/kendo-angular-common';
|
|
14
|
+
import { take } from 'rxjs/operators';
|
|
15
|
+
import { FOCUS_ROOT_ACTIVE, FocusRoot } from '../navigation/focus-root';
|
|
16
|
+
import { NavigationService } from '../navigation/navigation.service';
|
|
17
|
+
import { FocusGroup } from '../navigation/focus-group';
|
|
18
|
+
import { findFocusableChild, findLastFocusableChild } from '../rendering/common/dom-queries';
|
|
12
19
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "
|
|
14
|
-
import * as i2 from "
|
|
15
|
-
import * as i3 from "./pager-
|
|
16
|
-
import * as i4 from "
|
|
17
|
-
import * as i5 from "
|
|
18
|
-
import * as i6 from "./pager-
|
|
19
|
-
import * as i7 from "./pager-
|
|
20
|
-
import * as i8 from "
|
|
21
|
-
import * as i9 from "
|
|
20
|
+
import * as i1 from "../navigation/navigation.service";
|
|
21
|
+
import * as i2 from "@progress/kendo-angular-l10n";
|
|
22
|
+
import * as i3 from "./pager-context.service";
|
|
23
|
+
import * as i4 from "../navigation/focus-group";
|
|
24
|
+
import * as i5 from "../navigation/focus-root";
|
|
25
|
+
import * as i6 from "./pager-prev-buttons.component";
|
|
26
|
+
import * as i7 from "./pager-numeric-buttons.component";
|
|
27
|
+
import * as i8 from "./pager-input.component";
|
|
28
|
+
import * as i9 from "./pager-next-buttons.component";
|
|
29
|
+
import * as i10 from "./pager-info.component";
|
|
30
|
+
import * as i11 from "./pager-page-sizes.component";
|
|
31
|
+
import * as i12 from "@progress/kendo-angular-common";
|
|
32
|
+
import * as i13 from "@angular/common";
|
|
22
33
|
/**
|
|
23
34
|
* @hidden
|
|
24
35
|
*/
|
|
25
36
|
export class PagerComponent {
|
|
26
|
-
constructor(pagerContext, element,
|
|
37
|
+
constructor(navigationService, localizationService, pagerContext, focusGroup, focusRoot, renderer, element, zone) {
|
|
38
|
+
this.navigationService = navigationService;
|
|
39
|
+
this.localizationService = localizationService;
|
|
27
40
|
this.pagerContext = pagerContext;
|
|
28
|
-
this.
|
|
41
|
+
this.focusGroup = focusGroup;
|
|
42
|
+
this.focusRoot = focusRoot;
|
|
29
43
|
this.renderer = renderer;
|
|
44
|
+
this.element = element;
|
|
45
|
+
this.zone = zone;
|
|
30
46
|
this.allCount = 0;
|
|
31
47
|
this.total = 0;
|
|
32
48
|
this.skip = 1;
|
|
33
49
|
this.pageChange = new EventEmitter();
|
|
50
|
+
this.pagerRole = 'application';
|
|
51
|
+
this.pagerRoleDescription = 'pager';
|
|
34
52
|
this.pagerWrapClass = true;
|
|
35
53
|
this.gridPagerClass = true;
|
|
36
54
|
this.pagerClass = true;
|
|
@@ -60,6 +78,12 @@ export class PagerComponent {
|
|
|
60
78
|
set options(value) {
|
|
61
79
|
this.settings = normalize(value);
|
|
62
80
|
}
|
|
81
|
+
get hostTabindex() {
|
|
82
|
+
return this.navigationService.enabled ? '0' : '-1';
|
|
83
|
+
}
|
|
84
|
+
get hostAriaLabel() {
|
|
85
|
+
return this.pagerLabel;
|
|
86
|
+
}
|
|
63
87
|
get totalPages() {
|
|
64
88
|
return Math.ceil((this.total || 0) / this.pageSize);
|
|
65
89
|
}
|
|
@@ -77,7 +101,13 @@ export class PagerComponent {
|
|
|
77
101
|
return context;
|
|
78
102
|
}
|
|
79
103
|
ngOnInit() {
|
|
104
|
+
const element = this.element.nativeElement;
|
|
80
105
|
this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
|
|
106
|
+
this.subscriptions.add(this.renderer.listen(element, 'focusin', event => this.onFocusIn(event)));
|
|
107
|
+
this.subscriptions.add(this.renderer.listen(element, 'keydown', event => this.onKeyDown(event)));
|
|
108
|
+
if (this.navigationService.enabled) {
|
|
109
|
+
this.focusRoot.deactivate();
|
|
110
|
+
}
|
|
81
111
|
}
|
|
82
112
|
ngOnChanges(changes) {
|
|
83
113
|
if (anyChanged(["pageSize", "skip", "total", "allCount"], changes, false)) {
|
|
@@ -103,18 +133,135 @@ export class PagerComponent {
|
|
|
103
133
|
this.subscriptions.unsubscribe();
|
|
104
134
|
}
|
|
105
135
|
}
|
|
136
|
+
get pagerLabel() {
|
|
137
|
+
const localizationMsg = this.localizationService.get('pagerLabel') || '';
|
|
138
|
+
return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
|
|
139
|
+
}
|
|
140
|
+
get focusTrapTabIndex() {
|
|
141
|
+
return this.focusGroup.isActive ? '0' : '-1';
|
|
142
|
+
}
|
|
143
|
+
onKeyDown(event) {
|
|
144
|
+
const keyCode = event.keyCode;
|
|
145
|
+
const target = event.target;
|
|
146
|
+
if (this.navigationService.enabled) {
|
|
147
|
+
if (keyCode === Keys.Enter && target === this.element.nativeElement) {
|
|
148
|
+
this.onEnterEvent(event);
|
|
149
|
+
}
|
|
150
|
+
else if (keyCode === Keys.Escape) {
|
|
151
|
+
this.onEscapeEvent();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if ((keyCode === Keys.ArrowLeft || keyCode === Keys.PageUp) ||
|
|
155
|
+
(keyCode === Keys.ArrowRight || keyCode === Keys.PageDown)) {
|
|
156
|
+
event.preventDefault();
|
|
157
|
+
this.onArrowEvent(keyCode, target);
|
|
158
|
+
}
|
|
159
|
+
else if (keyCode === Keys.Home || keyCode === Keys.End) {
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
this.onHomeEndEvent(keyCode, target);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
106
164
|
changePage(event) {
|
|
107
165
|
this.pageChange.emit(event);
|
|
108
166
|
}
|
|
167
|
+
onInnerFocusIn(event, position) {
|
|
168
|
+
this.zone.onStable.pipe(take(1)).subscribe(() => {
|
|
169
|
+
if (position === 'start') {
|
|
170
|
+
if (event.relatedTarget === this.element.nativeElement) {
|
|
171
|
+
this.focusFirstElement();
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.focusLastElement();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.focusFirstElement();
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
onEnterEvent(event) {
|
|
183
|
+
const isTargetCompElement = event.target === this.element.nativeElement;
|
|
184
|
+
if (this.navigationService.enabled && isTargetCompElement) {
|
|
185
|
+
event.preventDefault();
|
|
186
|
+
this.focusRoot.activate();
|
|
187
|
+
this.focusFirstElement();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
onEscapeEvent() {
|
|
191
|
+
if (this.navigationService.enabled) {
|
|
192
|
+
this.focusRoot.deactivate();
|
|
193
|
+
this.element.nativeElement.focus();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
onArrowEvent(keyCode, target) {
|
|
197
|
+
const isArrowLeft = keyCode === Keys.ArrowLeft || keyCode === Keys.PageUp;
|
|
198
|
+
const condition = isArrowLeft ? this.currentPage > 1 : this.currentPage < this.totalPages;
|
|
199
|
+
if (this.shouldTriggerPageChange(target, condition)) {
|
|
200
|
+
const pageDir = isArrowLeft ? 'prevPage' : 'nextPage';
|
|
201
|
+
this.pagerContext[pageDir]();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
onHomeEndEvent(keyCode, target) {
|
|
205
|
+
const isHome = keyCode === Keys.Home;
|
|
206
|
+
const condition = isHome ? this.currentPage > 1 : this.currentPage < this.totalPages;
|
|
207
|
+
if (this.shouldTriggerPageChange(target, condition)) {
|
|
208
|
+
const pageNumber = isHome ? 0 : this.totalPages - 1;
|
|
209
|
+
this.pagerContext.changePage(pageNumber);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
onFocusIn(event) {
|
|
213
|
+
if (this.navigationService.enabled) {
|
|
214
|
+
const shouldFocusPager = event.target === this.element.nativeElement;
|
|
215
|
+
if (shouldFocusPager) {
|
|
216
|
+
this.focusRoot.deactivate();
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this.focusRoot.activate();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
focusFirstElement() {
|
|
224
|
+
const first = findFocusableChild(this.element.nativeElement, true);
|
|
225
|
+
if (first) {
|
|
226
|
+
first.focus();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
focusLastElement() {
|
|
230
|
+
const last = findLastFocusableChild(this.element.nativeElement, true);
|
|
231
|
+
if (last) {
|
|
232
|
+
last.focus();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
shouldTriggerPageChange(target, condition) {
|
|
236
|
+
return this.navigationService.enabled && target === this.element.nativeElement && condition;
|
|
237
|
+
}
|
|
109
238
|
clearResponsiveClasses() {
|
|
110
239
|
const element = this.element.nativeElement;
|
|
111
240
|
this.renderer.removeClass(element, 'k-pager-mobile-sm');
|
|
112
241
|
this.renderer.removeClass(element, 'k-pager-mobile-md');
|
|
113
242
|
}
|
|
114
243
|
}
|
|
115
|
-
PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerComponent, deps: [{ token: i1.PagerContextService }, { token: i0.ElementRef }, { token: i0.
|
|
116
|
-
PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerComponent, selector: "kendo-treelist-pager", inputs: { allCount: "allCount", total: "total", skip: "skip", pageSize: "pageSize", options: "options", template: "template" }, outputs: { pageChange: "pageChange" }, host: { properties: { "class.k-pager-wrap": "this.pagerWrapClass", "class.k-grid-pager": "this.gridPagerClass", "class.k-pager": "this.pagerClass", "class.k-pager-md": "this.pagerSizingClass"
|
|
117
|
-
|
|
244
|
+
PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerComponent, deps: [{ token: i1.NavigationService }, { token: i2.LocalizationService }, { token: i3.PagerContextService }, { token: i4.FocusGroup }, { token: i5.FocusRoot }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
245
|
+
PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagerComponent, selector: "kendo-treelist-pager", inputs: { allCount: "allCount", total: "total", skip: "skip", navigable: "navigable", pageSize: "pageSize", options: "options", template: "template" }, outputs: { pageChange: "pageChange" }, host: { properties: { "attr.role": "this.pagerRole", "attr.aria-roledescription": "this.pagerRoleDescription", "class.k-pager-wrap": "this.pagerWrapClass", "class.k-grid-pager": "this.gridPagerClass", "class.k-pager": "this.pagerClass", "class.k-pager-md": "this.pagerSizingClass", "attr.tabindex": "this.hostTabindex", "attr.aria-label": "this.hostAriaLabel" } }, providers: [{
|
|
246
|
+
provide: FOCUS_ROOT_ACTIVE,
|
|
247
|
+
useValue: true
|
|
248
|
+
}, {
|
|
249
|
+
provide: FocusRoot,
|
|
250
|
+
deps: [FOCUS_ROOT_ACTIVE],
|
|
251
|
+
useClass: FocusRoot
|
|
252
|
+
}, {
|
|
253
|
+
provide: FocusGroup,
|
|
254
|
+
deps: [FocusRoot],
|
|
255
|
+
useClass: FocusGroup
|
|
256
|
+
}], viewQueries: [{ propertyName: "prevButtons", first: true, predicate: ["prevButtons"], descendants: true }, { propertyName: "nextButtons", first: true, predicate: ["nextButtons"], descendants: true }, { propertyName: "numericButtons", first: true, predicate: ["numericButtons"], descendants: true }, { propertyName: "pagerInput", first: true, predicate: ["pagerInput"], descendants: true }, { propertyName: "pageSizes", first: true, predicate: ["pageSizes"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
257
|
+
<div
|
|
258
|
+
*ngIf="navigationService.enabled"
|
|
259
|
+
class="k-sr-only"
|
|
260
|
+
[tabindex]="focusTrapTabIndex"
|
|
261
|
+
[attr.aria-hidden]="true"
|
|
262
|
+
(focusin)="onInnerFocusIn($event, 'start')">
|
|
263
|
+
</div>
|
|
264
|
+
<ng-container
|
|
118
265
|
*ngIf="template?.templateRef"
|
|
119
266
|
[ngTemplateOutlet]="template.templateRef"
|
|
120
267
|
[ngTemplateOutletContext]="templateContext">
|
|
@@ -123,21 +270,48 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
123
270
|
<kendo-treelist-pager-prev-buttons *ngIf="settings.previousNext"></kendo-treelist-pager-prev-buttons>
|
|
124
271
|
<kendo-treelist-pager-numeric-buttons
|
|
125
272
|
*ngIf="settings.type === 'numeric'"
|
|
126
|
-
[buttonCount]="settings.buttonCount"
|
|
273
|
+
[buttonCount]="settings.buttonCount"
|
|
274
|
+
>
|
|
127
275
|
</kendo-treelist-pager-numeric-buttons>
|
|
128
276
|
<kendo-treelist-pager-input *ngIf="settings.type === 'input'"></kendo-treelist-pager-input>
|
|
129
277
|
<kendo-treelist-pager-next-buttons *ngIf="settings.previousNext"></kendo-treelist-pager-next-buttons>
|
|
130
278
|
<kendo-treelist-pager-info *ngIf='settings.info'></kendo-treelist-pager-info>
|
|
131
279
|
<kendo-treelist-pager-page-sizes *ngIf="settings.pageSizes" [pageSizes]="$any(settings.pageSizes)"></kendo-treelist-pager-page-sizes>
|
|
132
280
|
</ng-container>
|
|
281
|
+
<div
|
|
282
|
+
*ngIf="navigationService.enabled"
|
|
283
|
+
class="k-sr-only"
|
|
284
|
+
[tabindex]="focusTrapTabIndex"
|
|
285
|
+
[attr.aria-hidden]="true"
|
|
286
|
+
(focusin)="onInnerFocusIn($event, 'end')">
|
|
287
|
+
</div>
|
|
133
288
|
<kendo-resize-sensor *ngIf="settings.responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
|
|
134
|
-
`, isInline: true, components: [{ type:
|
|
289
|
+
`, isInline: true, components: [{ type: i6.PagerPrevButtonsComponent, selector: "kendo-treelist-pager-prev-buttons" }, { type: i7.PagerNumericButtonsComponent, selector: "kendo-treelist-pager-numeric-buttons", inputs: ["buttonCount"] }, { type: i8.PagerInputComponent, selector: "kendo-treelist-pager-input" }, { type: i9.PagerNextButtonsComponent, selector: "kendo-treelist-pager-next-buttons", inputs: ["navigable"] }, { type: i10.PagerInfoComponent, selector: "kendo-treelist-pager-info" }, { type: i11.PagerPageSizesComponent, selector: "kendo-treelist-pager-page-sizes", inputs: ["pageSizes"] }, { type: i12.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
135
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagerComponent, decorators: [{
|
|
136
291
|
type: Component,
|
|
137
292
|
args: [{
|
|
138
293
|
selector: 'kendo-treelist-pager',
|
|
294
|
+
providers: [{
|
|
295
|
+
provide: FOCUS_ROOT_ACTIVE,
|
|
296
|
+
useValue: true
|
|
297
|
+
}, {
|
|
298
|
+
provide: FocusRoot,
|
|
299
|
+
deps: [FOCUS_ROOT_ACTIVE],
|
|
300
|
+
useClass: FocusRoot
|
|
301
|
+
}, {
|
|
302
|
+
provide: FocusGroup,
|
|
303
|
+
deps: [FocusRoot],
|
|
304
|
+
useClass: FocusGroup
|
|
305
|
+
}],
|
|
139
306
|
template: `
|
|
140
|
-
<
|
|
307
|
+
<div
|
|
308
|
+
*ngIf="navigationService.enabled"
|
|
309
|
+
class="k-sr-only"
|
|
310
|
+
[tabindex]="focusTrapTabIndex"
|
|
311
|
+
[attr.aria-hidden]="true"
|
|
312
|
+
(focusin)="onInnerFocusIn($event, 'start')">
|
|
313
|
+
</div>
|
|
314
|
+
<ng-container
|
|
141
315
|
*ngIf="template?.templateRef"
|
|
142
316
|
[ngTemplateOutlet]="template.templateRef"
|
|
143
317
|
[ngTemplateOutletContext]="templateContext">
|
|
@@ -146,22 +320,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
146
320
|
<kendo-treelist-pager-prev-buttons *ngIf="settings.previousNext"></kendo-treelist-pager-prev-buttons>
|
|
147
321
|
<kendo-treelist-pager-numeric-buttons
|
|
148
322
|
*ngIf="settings.type === 'numeric'"
|
|
149
|
-
[buttonCount]="settings.buttonCount"
|
|
323
|
+
[buttonCount]="settings.buttonCount"
|
|
324
|
+
>
|
|
150
325
|
</kendo-treelist-pager-numeric-buttons>
|
|
151
326
|
<kendo-treelist-pager-input *ngIf="settings.type === 'input'"></kendo-treelist-pager-input>
|
|
152
327
|
<kendo-treelist-pager-next-buttons *ngIf="settings.previousNext"></kendo-treelist-pager-next-buttons>
|
|
153
328
|
<kendo-treelist-pager-info *ngIf='settings.info'></kendo-treelist-pager-info>
|
|
154
329
|
<kendo-treelist-pager-page-sizes *ngIf="settings.pageSizes" [pageSizes]="$any(settings.pageSizes)"></kendo-treelist-pager-page-sizes>
|
|
155
330
|
</ng-container>
|
|
331
|
+
<div
|
|
332
|
+
*ngIf="navigationService.enabled"
|
|
333
|
+
class="k-sr-only"
|
|
334
|
+
[tabindex]="focusTrapTabIndex"
|
|
335
|
+
[attr.aria-hidden]="true"
|
|
336
|
+
(focusin)="onInnerFocusIn($event, 'end')">
|
|
337
|
+
</div>
|
|
156
338
|
<kendo-resize-sensor *ngIf="settings.responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
|
|
157
339
|
`
|
|
158
340
|
}]
|
|
159
|
-
}], ctorParameters: function () { return [{ type: i1.PagerContextService }, { type: i0.ElementRef }, { type: i0.
|
|
341
|
+
}], ctorParameters: function () { return [{ type: i1.NavigationService }, { type: i2.LocalizationService }, { type: i3.PagerContextService }, { type: i4.FocusGroup }, { type: i5.FocusRoot }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { prevButtons: [{
|
|
342
|
+
type: ViewChild,
|
|
343
|
+
args: ['prevButtons']
|
|
344
|
+
}], nextButtons: [{
|
|
345
|
+
type: ViewChild,
|
|
346
|
+
args: ['nextButtons']
|
|
347
|
+
}], numericButtons: [{
|
|
348
|
+
type: ViewChild,
|
|
349
|
+
args: ['numericButtons']
|
|
350
|
+
}], pagerInput: [{
|
|
351
|
+
type: ViewChild,
|
|
352
|
+
args: ['pagerInput']
|
|
353
|
+
}], pageSizes: [{
|
|
354
|
+
type: ViewChild,
|
|
355
|
+
args: ['pageSizes']
|
|
356
|
+
}], allCount: [{
|
|
160
357
|
type: Input
|
|
161
358
|
}], total: [{
|
|
162
359
|
type: Input
|
|
163
360
|
}], skip: [{
|
|
164
361
|
type: Input
|
|
362
|
+
}], navigable: [{
|
|
363
|
+
type: Input
|
|
165
364
|
}], pageSize: [{
|
|
166
365
|
type: Input
|
|
167
366
|
}], options: [{
|
|
@@ -170,6 +369,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
170
369
|
type: Input
|
|
171
370
|
}], pageChange: [{
|
|
172
371
|
type: Output
|
|
372
|
+
}], pagerRole: [{
|
|
373
|
+
type: HostBinding,
|
|
374
|
+
args: ['attr.role']
|
|
375
|
+
}], pagerRoleDescription: [{
|
|
376
|
+
type: HostBinding,
|
|
377
|
+
args: ['attr.aria-roledescription']
|
|
173
378
|
}], pagerWrapClass: [{
|
|
174
379
|
type: HostBinding,
|
|
175
380
|
args: ['class.k-pager-wrap']
|
|
@@ -182,4 +387,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
182
387
|
}], pagerSizingClass: [{
|
|
183
388
|
type: HostBinding,
|
|
184
389
|
args: ['class.k-pager-md']
|
|
390
|
+
}], hostTabindex: [{
|
|
391
|
+
type: HostBinding,
|
|
392
|
+
args: ['attr.tabindex']
|
|
393
|
+
}], hostAriaLabel: [{
|
|
394
|
+
type: HostBinding,
|
|
395
|
+
args: ['attr.aria-label']
|
|
185
396
|
}] } });
|
|
@@ -121,6 +121,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
121
121
|
<ng-container *ngIf="column.expandable">
|
|
122
122
|
<span class="k-icon k-i-none" *ngFor="let item of level | levelItems : hasChildren && expandIcons"></span>
|
|
123
123
|
<kendo-icon-wrapper
|
|
124
|
+
aria-hidden="true"
|
|
124
125
|
*ngIf="hasChildren && expandIcons && !loading"
|
|
125
126
|
[name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
|
|
126
127
|
[svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
|
|
@@ -183,7 +184,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
183
184
|
</ng-container>
|
|
184
185
|
</ng-container>
|
|
185
186
|
</ng-container>
|
|
186
|
-
`, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "levelItems": i9.LevelItemsPipe, "valueOf": i10.FieldAccessorPipe } });
|
|
187
|
+
`, isInline: true, components: [{ type: i3.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i4.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "levelItems": i9.LevelItemsPipe, "valueOf": i10.FieldAccessorPipe } });
|
|
187
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
|
|
188
189
|
type: Component,
|
|
189
190
|
args: [{
|
|
@@ -194,6 +195,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
194
195
|
<ng-container *ngIf="column.expandable">
|
|
195
196
|
<span class="k-icon k-i-none" *ngFor="let item of level | levelItems : hasChildren && expandIcons"></span>
|
|
196
197
|
<kendo-icon-wrapper
|
|
198
|
+
aria-hidden="true"
|
|
197
199
|
*ngIf="hasChildren && expandIcons && !loading"
|
|
198
200
|
[name]="isExpanded ? 'caret-alt-down' : 'caret-alt-right'"
|
|
199
201
|
[svgIcon]="isExpanded ? caretAltDownIcon : caretAltRightIcon"></kendo-icon-wrapper>
|
|
@@ -87,8 +87,9 @@ export const isFocusableWithTabKey = (element, checkVisibility = true) => {
|
|
|
87
87
|
return false;
|
|
88
88
|
}
|
|
89
89
|
const tabIndex = element.getAttribute('tabIndex');
|
|
90
|
+
const ariaHidden = element.getAttribute('aria-hidden') === 'true';
|
|
90
91
|
const visible = !checkVisibility || isVisible(element);
|
|
91
|
-
return visible && tabIndex !== '-1';
|
|
92
|
+
return visible && !ariaHidden && tabIndex !== '-1';
|
|
92
93
|
};
|
|
93
94
|
/**
|
|
94
95
|
* @hidden
|
|
@@ -111,6 +112,19 @@ export const findElement = (node, predicate, matchSelf = true) => {
|
|
|
111
112
|
node = node.nextSibling;
|
|
112
113
|
}
|
|
113
114
|
};
|
|
115
|
+
/**
|
|
116
|
+
* @hidden
|
|
117
|
+
*/
|
|
118
|
+
export const findLastElement = (node, predicate, matchSelf = true) => {
|
|
119
|
+
let last = null;
|
|
120
|
+
findElement(node, (node) => {
|
|
121
|
+
if (predicate(node)) {
|
|
122
|
+
last = node;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}, matchSelf);
|
|
126
|
+
return last;
|
|
127
|
+
};
|
|
114
128
|
/**
|
|
115
129
|
* @hidden
|
|
116
130
|
*/
|
|
@@ -123,6 +137,12 @@ export const findFocusable = (element, checkVisibility = true) => {
|
|
|
123
137
|
export const findFocusableChild = (element, checkVisibility = true) => {
|
|
124
138
|
return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);
|
|
125
139
|
};
|
|
140
|
+
/**
|
|
141
|
+
* @hidden
|
|
142
|
+
*/
|
|
143
|
+
export const findLastFocusableChild = (element, checkVisibility = true) => {
|
|
144
|
+
return findLastElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);
|
|
145
|
+
};
|
|
126
146
|
/**
|
|
127
147
|
* @hidden
|
|
128
148
|
*/
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright © 2023 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
6
|
import { Component, ChangeDetectorRef, HostBinding, Input, QueryList, ViewChildren, TemplateRef } from '@angular/core';
|
|
6
7
|
import { Subscription, of, merge } from "rxjs";
|
|
7
8
|
import { filter, map, switchMap, tap, takeUntil } from 'rxjs/operators';
|
|
@@ -356,7 +357,7 @@ export class HeaderComponent {
|
|
|
356
357
|
}
|
|
357
358
|
HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, deps: [{ token: i1.SinglePopupService }, { token: i2.DragHintService }, { token: i3.DropCueService }, { token: i4.ColumnReorderService }, { token: i5.SortService }, { token: i6.SelectionService }, { token: i7.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
358
359
|
HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: HeaderComponent, selector: "[kendoTreeListHeader]", inputs: { totalColumnLevels: "totalColumnLevels", columns: "columns", scrollable: "scrollable", filterable: "filterable", sort: "sort", filter: "filter", sortable: "sortable", lockedColumnsCount: "lockedColumnsCount", resizable: "resizable", reorderable: "reorderable", columnMenu: "columnMenu", columnMenuTemplate: "columnMenuTemplate", totalColumnsCount: "totalColumnsCount" }, host: { properties: { "class.k-grid-header": "this.headerClass", "class.k-table-thead": "this.hostClass" } }, viewQueries: [{ propertyName: "dropTargets", predicate: DropTargetDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
359
|
-
<tr *ngFor="let i of columnLevels; let levelIndex = index"
|
|
360
|
+
<tr *ngFor="let i of columnLevels; let levelIndex = index" role="row"
|
|
360
361
|
kendoTreeListLogicalRow
|
|
361
362
|
[logicalRowIndex]="levelIndex"
|
|
362
363
|
[logicalSlaveRow]="lockedColumnsCount > 0"
|
|
@@ -386,6 +387,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
386
387
|
}"
|
|
387
388
|
class="k-header k-table-th"
|
|
388
389
|
[class.k-filterable]="(showFilterMenu && isFilterable(getColumnComponent(column))) || showColumnMenu(column)"
|
|
390
|
+
[attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined"
|
|
389
391
|
[class.k-first]="isFirstOnRow(getColumnComponent(column), columnIndex)"
|
|
390
392
|
[ngClass]="column.headerClass"
|
|
391
393
|
[ngStyle]="column.headerStyle"
|
|
@@ -494,7 +496,9 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
494
496
|
}"
|
|
495
497
|
class="k-header k-table-th"
|
|
496
498
|
[class.k-first]="isFirstOnRow(getColumnComponent(column), columnIndex)"
|
|
499
|
+
[attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined"
|
|
497
500
|
[class.k-filterable]="showColumnMenu(column)"
|
|
501
|
+
[attr.aria-expanded]="showColumnMenu(column)"
|
|
498
502
|
[ngClass]="column.headerClass"
|
|
499
503
|
[ngStyle]="column.headerStyle"
|
|
500
504
|
[attr.rowspan]="column.rowspan(totalColumnLevels)"
|
|
@@ -536,13 +540,13 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
536
540
|
[logicalSlaveCellsCount]="unlockedColumnsCount"
|
|
537
541
|
>
|
|
538
542
|
</tr>
|
|
539
|
-
`, isInline: true, components: [{ type: i8.FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { type: i9.ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { type: i10.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i11.FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }], directives: [{ type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { type: i15.DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i16.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i17.DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i18.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i19.FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i20.ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }] });
|
|
543
|
+
`, isInline: true, components: [{ type: i8.FilterMenuComponent, selector: "kendo-treelist-filter-menu", inputs: ["column", "filter"] }, { type: i9.ColumnMenuComponent, selector: "kendo-treelist-column-menu", inputs: ["standalone", "column", "settings", "sort", "filter", "sortable", "columnMenuTemplate"] }, { type: i10.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i11.FilterRowComponent, selector: "[kendoTreeListFilterRow]", inputs: ["columns", "filter", "logicalRowIndex", "lockedColumnsCount"] }], directives: [{ type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.LogicalRowDirective, selector: "[kendoTreeListLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "isNew"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.LogicalCellDirective, selector: "[kendoTreeListLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "column", "colIndex", "colSpan", "rowSpan", "dataRowIndex", "dataItem", "expandable"] }, { type: i15.DropTargetDirective, selector: "[kendoDropTarget]", inputs: ["context"], outputs: ["enter", "leave", "drop"] }, { type: i16.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i17.DraggableColumnDirective, selector: "[kendoDraggableColumn]", inputs: ["context", "enableDrag"], outputs: ["drag"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i18.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i19.FocusableDirective, selector: "[kendoTreeListFocusable],\n [kendoTreeListAddCommand],\n [kendoTreeListEditCommand],\n [kendoTreeListRemoveCommand],\n [kendoTreeListSaveCommand],\n [kendoTreeListCancelCommand]\n ", inputs: ["kendoTreeListFocusable", "enabled", "kendoTreeListAddCommand", "kendoTreeListEditCommand", "kendoTreeListRemoveCommand", "kendoTreeListSaveCommand", "kendoTreeListCancelCommand"] }, { type: i20.ColumnHandleDirective, selector: "[kendoTreeListColumnHandle]", inputs: ["columns", "column"] }] });
|
|
540
544
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
541
545
|
type: Component,
|
|
542
546
|
args: [{
|
|
543
547
|
selector: '[kendoTreeListHeader]',
|
|
544
548
|
template: `
|
|
545
|
-
<tr *ngFor="let i of columnLevels; let levelIndex = index"
|
|
549
|
+
<tr *ngFor="let i of columnLevels; let levelIndex = index" role="row"
|
|
546
550
|
kendoTreeListLogicalRow
|
|
547
551
|
[logicalRowIndex]="levelIndex"
|
|
548
552
|
[logicalSlaveRow]="lockedColumnsCount > 0"
|
|
@@ -572,6 +576,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
572
576
|
}"
|
|
573
577
|
class="k-header k-table-th"
|
|
574
578
|
[class.k-filterable]="(showFilterMenu && isFilterable(getColumnComponent(column))) || showColumnMenu(column)"
|
|
579
|
+
[attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined"
|
|
575
580
|
[class.k-first]="isFirstOnRow(getColumnComponent(column), columnIndex)"
|
|
576
581
|
[ngClass]="column.headerClass"
|
|
577
582
|
[ngStyle]="column.headerStyle"
|
|
@@ -680,7 +685,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
680
685
|
}"
|
|
681
686
|
class="k-header k-table-th"
|
|
682
687
|
[class.k-first]="isFirstOnRow(getColumnComponent(column), columnIndex)"
|
|
688
|
+
[attr.aria-haspopup]="(showFilterMenu || showColumnMenu(column)) ? 'dialog' : undefined"
|
|
683
689
|
[class.k-filterable]="showColumnMenu(column)"
|
|
690
|
+
[attr.aria-expanded]="showColumnMenu(column)"
|
|
684
691
|
[ngClass]="column.headerClass"
|
|
685
692
|
[ngStyle]="column.headerStyle"
|
|
686
693
|
[attr.rowspan]="column.rowspan(totalColumnLevels)"
|
|
@@ -561,7 +561,7 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
561
561
|
[columns]="$any(nonLockedColumnsToRender)">
|
|
562
562
|
</colgroup>
|
|
563
563
|
<tbody kendoTreeListTableBody
|
|
564
|
-
role="
|
|
564
|
+
role="rowgroup"
|
|
565
565
|
[view]="view"
|
|
566
566
|
[columns]="$any(nonLockedColumnsToRender)"
|
|
567
567
|
[allColumns]="$any(nonLockedLeafColumns)"
|
|
@@ -646,7 +646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
646
646
|
[columns]="$any(nonLockedColumnsToRender)">
|
|
647
647
|
</colgroup>
|
|
648
648
|
<tbody kendoTreeListTableBody
|
|
649
|
-
role="
|
|
649
|
+
role="rowgroup"
|
|
650
650
|
[view]="view"
|
|
651
651
|
[columns]="$any(nonLockedColumnsToRender)"
|
|
652
652
|
[allColumns]="$any(nonLockedLeafColumns)"
|
|
@@ -349,6 +349,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
349
349
|
class="k-table-row{{isOdd(item) ? ' k-alt k-table-alt-row' : ''}}"
|
|
350
350
|
[class.k-grid-edit-row]="isEditingRow(item)"
|
|
351
351
|
[class.k-grid-add-row]="item.isNew"
|
|
352
|
+
[attr.aria-selected]="item.selected"
|
|
352
353
|
[class.k-selected]="item.selected"
|
|
353
354
|
[attr.data-treelist-view-index]="rowIndex">
|
|
354
355
|
|
|
@@ -384,7 +385,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
384
385
|
*ngFor="let column of columns; let columnIndex = index; trackBy: trackByColumns;">
|
|
385
386
|
</td>
|
|
386
387
|
</tr>
|
|
387
|
-
<tr *ngIf="item.type === 'footer' && hasFooter"
|
|
388
|
+
<tr *ngIf="item.type === 'footer' && hasFooter" role="row"
|
|
388
389
|
class="k-footer"
|
|
389
390
|
[attr.data-treelist-view-index]="rowIndex"
|
|
390
391
|
kendoTreeListLogicalRow
|
|
@@ -398,6 +399,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
398
399
|
[logicalColIndex]="logicalColIndex(column)"
|
|
399
400
|
[column]="column"
|
|
400
401
|
[colIndex]="columnIndex"
|
|
402
|
+
role="gridcell"
|
|
401
403
|
class="k-table-td"
|
|
402
404
|
[ngClass]="column.footerClass"
|
|
403
405
|
[ngStyle]="column.footerStyle"
|
|
@@ -449,6 +451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
449
451
|
class="k-table-row{{isOdd(item) ? ' k-alt k-table-alt-row' : ''}}"
|
|
450
452
|
[class.k-grid-edit-row]="isEditingRow(item)"
|
|
451
453
|
[class.k-grid-add-row]="item.isNew"
|
|
454
|
+
[attr.aria-selected]="item.selected"
|
|
452
455
|
[class.k-selected]="item.selected"
|
|
453
456
|
[attr.data-treelist-view-index]="rowIndex">
|
|
454
457
|
|
|
@@ -484,7 +487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
484
487
|
*ngFor="let column of columns; let columnIndex = index; trackBy: trackByColumns;">
|
|
485
488
|
</td>
|
|
486
489
|
</tr>
|
|
487
|
-
<tr *ngIf="item.type === 'footer' && hasFooter"
|
|
490
|
+
<tr *ngIf="item.type === 'footer' && hasFooter" role="row"
|
|
488
491
|
class="k-footer"
|
|
489
492
|
[attr.data-treelist-view-index]="rowIndex"
|
|
490
493
|
kendoTreeListLogicalRow
|
|
@@ -498,6 +501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
498
501
|
[logicalColIndex]="logicalColIndex(column)"
|
|
499
502
|
[column]="column"
|
|
500
503
|
[colIndex]="columnIndex"
|
|
504
|
+
role="gridcell"
|
|
501
505
|
class="k-table-td"
|
|
502
506
|
[ngClass]="column.footerClass"
|
|
503
507
|
[ngStyle]="column.footerStyle"
|