@progress/kendo-angular-grid 7.0.2-dev.202205230854 → 7.1.0-dev.202205311232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kendo-angular-grid.umd.js +1 -1
- package/esm2015/column-menu/column-menu.component.js +2 -2
- package/esm2015/filtering/menu/filter-menu.component.js +2 -2
- package/esm2015/grid.component.js +47 -23
- package/esm2015/main.js +1 -0
- package/esm2015/navigation/logical-cell.directive.js +3 -3
- package/esm2015/navigation/navigable-settings.js +5 -0
- package/esm2015/navigation/navigation.service.js +14 -1
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/pager/pager.component.js +11 -11
- package/esm2015/rendering/list.component.js +1 -1
- package/fesm2015/kendo-angular-grid.js +81 -44
- package/grid.component.d.ts +8 -3
- package/main.d.ts +1 -0
- package/navigation/navigable-settings.d.ts +12 -0
- package/navigation/navigation.service.d.ts +7 -1
- package/package.json +1 -1
|
@@ -1515,6 +1515,8 @@ class NavigationService {
|
|
|
1515
1515
|
this.mode = 0 /* Standby */;
|
|
1516
1516
|
this.model = new NavigationModel();
|
|
1517
1517
|
this.cursor = new NavigationCursor(this.model);
|
|
1518
|
+
this.pagerIsNavigable = false;
|
|
1519
|
+
this.tableIsNavigable = false;
|
|
1518
1520
|
this.changes = this.cursor.changes;
|
|
1519
1521
|
}
|
|
1520
1522
|
set metadata(value) {
|
|
@@ -1527,6 +1529,12 @@ class NavigationService {
|
|
|
1527
1529
|
get enabled() {
|
|
1528
1530
|
return this.alive;
|
|
1529
1531
|
}
|
|
1532
|
+
get pagerEnabled() {
|
|
1533
|
+
return this.alive && this.pagerIsNavigable;
|
|
1534
|
+
}
|
|
1535
|
+
get tableEnabled() {
|
|
1536
|
+
return this.alive && this.tableIsNavigable;
|
|
1537
|
+
}
|
|
1530
1538
|
get activeCell() {
|
|
1531
1539
|
if (this.mode !== 0 /* Standby */) {
|
|
1532
1540
|
return this.cursor.cell;
|
|
@@ -1542,7 +1550,8 @@ class NavigationService {
|
|
|
1542
1550
|
get activeDataRow() {
|
|
1543
1551
|
return Math.max(0, this.activeRowIndex - this.meta.headerRows);
|
|
1544
1552
|
}
|
|
1545
|
-
init(meta) {
|
|
1553
|
+
init(meta, navigableOptions) {
|
|
1554
|
+
this.setActiveSections(navigableOptions);
|
|
1546
1555
|
this.alive = true;
|
|
1547
1556
|
this.focusRoot.active = true;
|
|
1548
1557
|
this.metadata = meta;
|
|
@@ -1718,6 +1727,10 @@ class NavigationService {
|
|
|
1718
1727
|
autoFocusCell(start, end) {
|
|
1719
1728
|
return !this.meta.virtualColumns || end < this.meta.columns.lockedLeafColumns.length || this.columnViewport.intersects(start, end);
|
|
1720
1729
|
}
|
|
1730
|
+
setActiveSections(navigableOptions) {
|
|
1731
|
+
this.pagerIsNavigable = navigableOptions.includes('pager');
|
|
1732
|
+
this.tableIsNavigable = navigableOptions.includes('table');
|
|
1733
|
+
}
|
|
1721
1734
|
focusAdjacentCell(fwd, wrap) {
|
|
1722
1735
|
this.focusCell();
|
|
1723
1736
|
let success = fwd ? this.moveCursorFwd() : this.moveCursorBwd();
|
|
@@ -2822,7 +2835,7 @@ const packageMetadata = {
|
|
|
2822
2835
|
name: '@progress/kendo-angular-grid',
|
|
2823
2836
|
productName: 'Kendo UI for Angular',
|
|
2824
2837
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
2825
|
-
publishDate:
|
|
2838
|
+
publishDate: 1654000234,
|
|
2826
2839
|
version: '',
|
|
2827
2840
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
2828
2841
|
};
|
|
@@ -7729,7 +7742,7 @@ class PagerComponent {
|
|
|
7729
7742
|
return this._isFocused;
|
|
7730
7743
|
}
|
|
7731
7744
|
get pagerAriaLabel() {
|
|
7732
|
-
return this.navigationService.
|
|
7745
|
+
return this.navigationService.pagerEnabled ? this.pagerLabel : undefined;
|
|
7733
7746
|
}
|
|
7734
7747
|
/**
|
|
7735
7748
|
* @hidden
|
|
@@ -7742,7 +7755,7 @@ class PagerComponent {
|
|
|
7742
7755
|
return this.focusGroup.isActive ? '0' : '-1';
|
|
7743
7756
|
}
|
|
7744
7757
|
onFocusIn(event) {
|
|
7745
|
-
if (this.navigationService.
|
|
7758
|
+
if (this.navigationService.pagerEnabled) {
|
|
7746
7759
|
const shouldFocusPager = event.target === this.element.nativeElement;
|
|
7747
7760
|
if (shouldFocusPager) {
|
|
7748
7761
|
this._isFocused = true;
|
|
@@ -7754,18 +7767,18 @@ class PagerComponent {
|
|
|
7754
7767
|
}
|
|
7755
7768
|
}
|
|
7756
7769
|
onFocusOut() {
|
|
7757
|
-
if (this.navigationService.
|
|
7770
|
+
if (this.navigationService.pagerEnabled) {
|
|
7758
7771
|
this._isFocused = false;
|
|
7759
7772
|
}
|
|
7760
7773
|
}
|
|
7761
7774
|
onEscape() {
|
|
7762
|
-
if (this.navigationService.
|
|
7775
|
+
if (this.navigationService.pagerEnabled) {
|
|
7763
7776
|
this.focusRoot.deactivate();
|
|
7764
7777
|
this.element.nativeElement.focus();
|
|
7765
7778
|
}
|
|
7766
7779
|
}
|
|
7767
7780
|
onEnter(event) {
|
|
7768
|
-
if (this.navigationService.
|
|
7781
|
+
if (this.navigationService.pagerEnabled && event.target === this.element.nativeElement) {
|
|
7769
7782
|
this.focusRoot.activate();
|
|
7770
7783
|
this.focusFirstElement();
|
|
7771
7784
|
}
|
|
@@ -7807,7 +7820,7 @@ class PagerComponent {
|
|
|
7807
7820
|
}
|
|
7808
7821
|
ngOnInit() {
|
|
7809
7822
|
this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
|
|
7810
|
-
if (this.navigationService.
|
|
7823
|
+
if (this.navigationService.pagerEnabled) {
|
|
7811
7824
|
this.focusRoot.deactivate();
|
|
7812
7825
|
}
|
|
7813
7826
|
}
|
|
@@ -7860,7 +7873,7 @@ class PagerComponent {
|
|
|
7860
7873
|
this.renderer.removeClass(element, 'k-pager-md');
|
|
7861
7874
|
}
|
|
7862
7875
|
shouldTriggerPageChange(target, condition) {
|
|
7863
|
-
return this.navigationService.
|
|
7876
|
+
return this.navigationService.pagerEnabled &&
|
|
7864
7877
|
target === this.element.nativeElement &&
|
|
7865
7878
|
condition;
|
|
7866
7879
|
}
|
|
@@ -7896,7 +7909,7 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
7896
7909
|
useClass: FocusGroup
|
|
7897
7910
|
}], usesOnChanges: true, ngImport: i0, template: `
|
|
7898
7911
|
<div
|
|
7899
|
-
*ngIf="navigationService.
|
|
7912
|
+
*ngIf="navigationService.pagerEnabled"
|
|
7900
7913
|
class="k-sr-only"
|
|
7901
7914
|
[tabindex]="focusTrapTabIndex"
|
|
7902
7915
|
[attr.aria-hidden]="true"
|
|
@@ -7923,7 +7936,7 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
7923
7936
|
></kendo-pager-page-sizes>
|
|
7924
7937
|
</ng-container>
|
|
7925
7938
|
<div
|
|
7926
|
-
*ngIf="navigationService.
|
|
7939
|
+
*ngIf="navigationService.pagerEnabled"
|
|
7927
7940
|
class="k-sr-only"
|
|
7928
7941
|
[tabindex]="focusTrapTabIndex"
|
|
7929
7942
|
[attr.aria-hidden]="true"
|
|
@@ -7949,7 +7962,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
7949
7962
|
}],
|
|
7950
7963
|
template: `
|
|
7951
7964
|
<div
|
|
7952
|
-
*ngIf="navigationService.
|
|
7965
|
+
*ngIf="navigationService.pagerEnabled"
|
|
7953
7966
|
class="k-sr-only"
|
|
7954
7967
|
[tabindex]="focusTrapTabIndex"
|
|
7955
7968
|
[attr.aria-hidden]="true"
|
|
@@ -7976,7 +7989,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
7976
7989
|
></kendo-pager-page-sizes>
|
|
7977
7990
|
</ng-container>
|
|
7978
7991
|
<div
|
|
7979
|
-
*ngIf="navigationService.
|
|
7992
|
+
*ngIf="navigationService.pagerEnabled"
|
|
7980
7993
|
class="k-sr-only"
|
|
7981
7994
|
[tabindex]="focusTrapTabIndex"
|
|
7982
7995
|
[attr.aria-hidden]="true"
|
|
@@ -10973,7 +10986,7 @@ class FilterMenuComponent {
|
|
|
10973
10986
|
toggle(anchor, template) {
|
|
10974
10987
|
this.popupRef = this.popupService.open(anchor, template, this.popupRef);
|
|
10975
10988
|
if (!this.popupRef) {
|
|
10976
|
-
if (this.navigationService.
|
|
10989
|
+
if (this.navigationService.tableEnabled) {
|
|
10977
10990
|
this.navigationService.focusCell(0, this.column.leafIndex);
|
|
10978
10991
|
}
|
|
10979
10992
|
else {
|
|
@@ -10984,7 +10997,7 @@ class FilterMenuComponent {
|
|
|
10984
10997
|
}
|
|
10985
10998
|
close() {
|
|
10986
10999
|
this.popupService.destroy();
|
|
10987
|
-
if (this.navigationService.
|
|
11000
|
+
if (this.navigationService.tableEnabled) {
|
|
10988
11001
|
this.navigationService.focusCell(0, this.column.leafIndex);
|
|
10989
11002
|
}
|
|
10990
11003
|
else {
|
|
@@ -12558,7 +12571,7 @@ class ColumnMenuComponent {
|
|
|
12558
12571
|
this.expandedPosition = this.getExpandedState(this.settings.setColumnPosition);
|
|
12559
12572
|
this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASS);
|
|
12560
12573
|
if (!this.popupRef) {
|
|
12561
|
-
if (this.navigationService.
|
|
12574
|
+
if (this.navigationService.tableEnabled) {
|
|
12562
12575
|
this.navigationService.focusCell(0, this.column.leafIndex);
|
|
12563
12576
|
}
|
|
12564
12577
|
else {
|
|
@@ -12572,7 +12585,7 @@ class ColumnMenuComponent {
|
|
|
12572
12585
|
close() {
|
|
12573
12586
|
this.popupService.destroy();
|
|
12574
12587
|
this.popupRef = null;
|
|
12575
|
-
if (this.navigationService.
|
|
12588
|
+
if (this.navigationService.tableEnabled) {
|
|
12576
12589
|
this.navigationService.focusCell(0, this.column.leafIndex);
|
|
12577
12590
|
}
|
|
12578
12591
|
else {
|
|
@@ -13488,13 +13501,13 @@ class LogicalCellDirective {
|
|
|
13488
13501
|
return this.logicalColIndex + 1;
|
|
13489
13502
|
}
|
|
13490
13503
|
ngOnInit() {
|
|
13491
|
-
if (!this.navigationService.
|
|
13504
|
+
if (!this.navigationService.tableEnabled) {
|
|
13492
13505
|
return;
|
|
13493
13506
|
}
|
|
13494
13507
|
this.navigationChange = this.navigationService.changes.subscribe((e) => this.onNavigationChange(e));
|
|
13495
13508
|
}
|
|
13496
13509
|
ngDoCheck() {
|
|
13497
|
-
if (!this.navigationService.
|
|
13510
|
+
if (!this.navigationService.tableEnabled || this.logicalColIndex === -1) {
|
|
13498
13511
|
return;
|
|
13499
13512
|
}
|
|
13500
13513
|
if (this.cellContext) {
|
|
@@ -13503,7 +13516,7 @@ class LogicalCellDirective {
|
|
|
13503
13516
|
this.registerNoChanges();
|
|
13504
13517
|
}
|
|
13505
13518
|
ngOnChanges(changes) {
|
|
13506
|
-
if (!this.navigationService.
|
|
13519
|
+
if (!this.navigationService.tableEnabled) {
|
|
13507
13520
|
return;
|
|
13508
13521
|
}
|
|
13509
13522
|
const keys = Object.keys(changes);
|
|
@@ -17298,7 +17311,7 @@ class ListComponent {
|
|
|
17298
17311
|
}
|
|
17299
17312
|
}
|
|
17300
17313
|
resetNavigationViewport() {
|
|
17301
|
-
if (!this.container || !this.navigationService.
|
|
17314
|
+
if (!this.container || !this.navigationService.tableEnabled ||
|
|
17302
17315
|
!this.navigationService.needsViewport() || this.data.length === 0) {
|
|
17303
17316
|
return;
|
|
17304
17317
|
}
|
|
@@ -18260,11 +18273,6 @@ class GridComponent {
|
|
|
18260
18273
|
* By default, grouping is disabled ([see example]({% slug groupingbasics_grid %})).
|
|
18261
18274
|
*/
|
|
18262
18275
|
this.groupable = false;
|
|
18263
|
-
/**
|
|
18264
|
-
* If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
|
|
18265
|
-
* By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
|
|
18266
|
-
*/
|
|
18267
|
-
this.navigable = false;
|
|
18268
18276
|
/**
|
|
18269
18277
|
* Indicates whether the Grid columns will be resized during initialization so that
|
|
18270
18278
|
* they fit their headers and row content. Defaults to `false`.
|
|
@@ -18440,6 +18448,7 @@ class GridComponent {
|
|
|
18440
18448
|
this.cachedWindowWidth = 0;
|
|
18441
18449
|
this._rowSelected = null;
|
|
18442
18450
|
this._cellSelected = null;
|
|
18451
|
+
this._navigable = [];
|
|
18443
18452
|
this.rtl = false;
|
|
18444
18453
|
this._rowClass = () => null;
|
|
18445
18454
|
validatePackage(packageMetadata);
|
|
@@ -18571,6 +18580,21 @@ class GridComponent {
|
|
|
18571
18580
|
get marqueeSelection() {
|
|
18572
18581
|
return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
|
|
18573
18582
|
}
|
|
18583
|
+
/**
|
|
18584
|
+
* If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
|
|
18585
|
+
* By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
|
|
18586
|
+
* To enable navigation through separate Grid sections only, provide a [`GridNavigableSection`]({% slug api_grid_gridnavigablesection %}) array.
|
|
18587
|
+
*/
|
|
18588
|
+
set navigable(value) {
|
|
18589
|
+
if (typeof value === 'boolean') {
|
|
18590
|
+
this._navigable = value ? ['table', 'pager'] : [];
|
|
18591
|
+
return;
|
|
18592
|
+
}
|
|
18593
|
+
this._navigable = value;
|
|
18594
|
+
}
|
|
18595
|
+
get navigable() {
|
|
18596
|
+
return this._navigable;
|
|
18597
|
+
}
|
|
18574
18598
|
/**
|
|
18575
18599
|
* @hidden
|
|
18576
18600
|
*
|
|
@@ -18794,6 +18818,9 @@ class GridComponent {
|
|
|
18794
18818
|
get ariaColCount() {
|
|
18795
18819
|
return this.columnsContainer.leafColumnsToRender.length;
|
|
18796
18820
|
}
|
|
18821
|
+
get navigation() {
|
|
18822
|
+
return this.navigationService;
|
|
18823
|
+
}
|
|
18797
18824
|
get isVirtual() {
|
|
18798
18825
|
return this.scrollable === 'virtual';
|
|
18799
18826
|
}
|
|
@@ -18989,6 +19016,16 @@ class GridComponent {
|
|
|
18989
19016
|
if (isChanged$1('groupable', changes, true)) {
|
|
18990
19017
|
this.groupable = changes.groupable.currentValue;
|
|
18991
19018
|
}
|
|
19019
|
+
if (isChanged$1('navigable', changes, true)) {
|
|
19020
|
+
if (this.navigationService.enabled) {
|
|
19021
|
+
this.navigationService.setActiveSections(this.navigable);
|
|
19022
|
+
}
|
|
19023
|
+
else {
|
|
19024
|
+
if (this.navigable.length) {
|
|
19025
|
+
this.navigationService.init(this.navigationMetadata(), this.navigable);
|
|
19026
|
+
}
|
|
19027
|
+
}
|
|
19028
|
+
}
|
|
18992
19029
|
}
|
|
18993
19030
|
ngAfterViewInit() {
|
|
18994
19031
|
this.attachScrollSync();
|
|
@@ -19008,8 +19045,8 @@ class GridComponent {
|
|
|
19008
19045
|
this.columnsChangeSubscription = this.columns.changes.subscribe(() => this.verifySettings());
|
|
19009
19046
|
}
|
|
19010
19047
|
ngOnInit() {
|
|
19011
|
-
if (this.navigable) {
|
|
19012
|
-
this.navigationService.init(this.navigationMetadata());
|
|
19048
|
+
if (this.navigable.length) {
|
|
19049
|
+
this.navigationService.init(this.navigationMetadata(), this.navigable);
|
|
19013
19050
|
}
|
|
19014
19051
|
}
|
|
19015
19052
|
ngOnDestroy() {
|
|
@@ -19970,8 +20007,8 @@ class GridComponent {
|
|
|
19970
20007
|
this.columnResize.emit(args);
|
|
19971
20008
|
}
|
|
19972
20009
|
assertNavigable() {
|
|
19973
|
-
if (isDevMode() && !this.
|
|
19974
|
-
throw new Error('The Grid should be configured as
|
|
20010
|
+
if (isDevMode() && !this.navigationService.enabled) {
|
|
20011
|
+
throw new Error('The Grid should be configured as navigable to control focus');
|
|
19975
20012
|
}
|
|
19976
20013
|
}
|
|
19977
20014
|
navigationMetadata() {
|
|
@@ -20337,8 +20374,8 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
20337
20374
|
<kendo-grid-toolbar class="k-toolbar k-grid-toolbar" *ngIf="showTopToolbar" position="top"></kendo-grid-toolbar>
|
|
20338
20375
|
<kendo-pager
|
|
20339
20376
|
*ngIf="showTopPager"
|
|
20340
|
-
[tabindex]="
|
|
20341
|
-
[attr.role]="
|
|
20377
|
+
[tabindex]="navigation.pagerEnabled ? '0' : '-1'"
|
|
20378
|
+
[attr.role]="navigation.pagerEnabled ? 'application' : undefined"
|
|
20342
20379
|
class="k-grid-pager-top"
|
|
20343
20380
|
[template]="pagerTemplate"
|
|
20344
20381
|
[pageSize]="pageSize"
|
|
@@ -20392,7 +20429,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
20392
20429
|
[columnMenuTemplate]="columnMenuTemplate"
|
|
20393
20430
|
[totalColumnsCount]="leafColumns.length"
|
|
20394
20431
|
[detailTemplate]="detailTemplate"
|
|
20395
|
-
[tabIndex]="
|
|
20432
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
20396
20433
|
</thead>
|
|
20397
20434
|
</table>
|
|
20398
20435
|
</div><div #header class="k-grid-header-wrap" role="presentation" data-scrollable
|
|
@@ -20423,7 +20460,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
20423
20460
|
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
20424
20461
|
[totalColumnsCount]="leafColumns.length"
|
|
20425
20462
|
[detailTemplate]="detailTemplate"
|
|
20426
|
-
[tabIndex]="
|
|
20463
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
20427
20464
|
</thead>
|
|
20428
20465
|
</table>
|
|
20429
20466
|
<div *ngIf="virtualColumns" class="k-width-container" role="presentation">
|
|
@@ -20528,7 +20565,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
20528
20565
|
[columnMenu]="columnMenuOptions"
|
|
20529
20566
|
[columnMenuTemplate]="columnMenuTemplate"
|
|
20530
20567
|
[detailTemplate]="detailTemplate"
|
|
20531
|
-
[tabIndex]="
|
|
20568
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
20532
20569
|
</thead>
|
|
20533
20570
|
<tbody kendoGridTableBody
|
|
20534
20571
|
[isLoading]="loading"
|
|
@@ -20562,8 +20599,8 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
|
|
|
20562
20599
|
</div>
|
|
20563
20600
|
<kendo-pager
|
|
20564
20601
|
*ngIf="showBottomPager"
|
|
20565
|
-
[tabindex]="
|
|
20566
|
-
[attr.role]="
|
|
20602
|
+
[tabindex]="navigation.pagerEnabled ? '0' : '-1'"
|
|
20603
|
+
[attr.role]="navigation.pagerEnabled ? 'application' : undefined"
|
|
20567
20604
|
[template]="pagerTemplate"
|
|
20568
20605
|
[pageSize]="pageSize"
|
|
20569
20606
|
[total]="view.total"
|
|
@@ -20834,8 +20871,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
20834
20871
|
<kendo-grid-toolbar class="k-toolbar k-grid-toolbar" *ngIf="showTopToolbar" position="top"></kendo-grid-toolbar>
|
|
20835
20872
|
<kendo-pager
|
|
20836
20873
|
*ngIf="showTopPager"
|
|
20837
|
-
[tabindex]="
|
|
20838
|
-
[attr.role]="
|
|
20874
|
+
[tabindex]="navigation.pagerEnabled ? '0' : '-1'"
|
|
20875
|
+
[attr.role]="navigation.pagerEnabled ? 'application' : undefined"
|
|
20839
20876
|
class="k-grid-pager-top"
|
|
20840
20877
|
[template]="pagerTemplate"
|
|
20841
20878
|
[pageSize]="pageSize"
|
|
@@ -20889,7 +20926,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
20889
20926
|
[columnMenuTemplate]="columnMenuTemplate"
|
|
20890
20927
|
[totalColumnsCount]="leafColumns.length"
|
|
20891
20928
|
[detailTemplate]="detailTemplate"
|
|
20892
|
-
[tabIndex]="
|
|
20929
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
20893
20930
|
</thead>
|
|
20894
20931
|
</table>
|
|
20895
20932
|
</div><div #header class="k-grid-header-wrap" role="presentation" data-scrollable
|
|
@@ -20920,7 +20957,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
20920
20957
|
[lockedColumnsCount]="lockedLeafColumns.length"
|
|
20921
20958
|
[totalColumnsCount]="leafColumns.length"
|
|
20922
20959
|
[detailTemplate]="detailTemplate"
|
|
20923
|
-
[tabIndex]="
|
|
20960
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
20924
20961
|
</thead>
|
|
20925
20962
|
</table>
|
|
20926
20963
|
<div *ngIf="virtualColumns" class="k-width-container" role="presentation">
|
|
@@ -21025,7 +21062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
21025
21062
|
[columnMenu]="columnMenuOptions"
|
|
21026
21063
|
[columnMenuTemplate]="columnMenuTemplate"
|
|
21027
21064
|
[detailTemplate]="detailTemplate"
|
|
21028
|
-
[tabIndex]="
|
|
21065
|
+
[tabIndex]="navigation.tableEnabled ? '-1' : '0'">
|
|
21029
21066
|
</thead>
|
|
21030
21067
|
<tbody kendoGridTableBody
|
|
21031
21068
|
[isLoading]="loading"
|
|
@@ -21059,8 +21096,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
21059
21096
|
</div>
|
|
21060
21097
|
<kendo-pager
|
|
21061
21098
|
*ngIf="showBottomPager"
|
|
21062
|
-
[tabindex]="
|
|
21063
|
-
[attr.role]="
|
|
21099
|
+
[tabindex]="navigation.pagerEnabled ? '0' : '-1'"
|
|
21100
|
+
[attr.role]="navigation.pagerEnabled ? 'application' : undefined"
|
|
21064
21101
|
[template]="pagerTemplate"
|
|
21065
21102
|
[pageSize]="pageSize"
|
|
21066
21103
|
[total]="view.total"
|
package/grid.component.d.ts
CHANGED
|
@@ -73,6 +73,7 @@ import { GroupRowArgs } from './grouping/group-rows-args.interface';
|
|
|
73
73
|
import { CellLoadingTemplateDirective } from './rendering/cell-loading.template.directive';
|
|
74
74
|
import { ContextService } from './common/provider.service';
|
|
75
75
|
import { LoadingTemplateDirective } from './rendering/loading-template.directive';
|
|
76
|
+
import { GridNavigableSettings } from './navigation/navigable-settings';
|
|
76
77
|
import * as i0 from "@angular/core";
|
|
77
78
|
/**
|
|
78
79
|
* Represents the Kendo UI Grid component for Angular.
|
|
@@ -306,14 +307,16 @@ export declare class GridComponent implements AfterContentInit, AfterViewInit, O
|
|
|
306
307
|
/**
|
|
307
308
|
* If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
|
|
308
309
|
* By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
|
|
310
|
+
* To enable navigation through separate Grid sections only, provide a [`GridNavigableSection`]({% slug api_grid_gridnavigablesection %}) array.
|
|
309
311
|
*/
|
|
310
|
-
navigable:
|
|
312
|
+
set navigable(value: GridNavigableSettings);
|
|
313
|
+
get navigable(): GridNavigableSettings;
|
|
311
314
|
/**
|
|
312
315
|
* @hidden
|
|
313
316
|
*
|
|
314
317
|
* An alias for `navigable` for users who migrate from Kendo UI for jQuery.
|
|
315
318
|
*/
|
|
316
|
-
set navigatable(value:
|
|
319
|
+
set navigatable(value: GridNavigableSettings);
|
|
317
320
|
/**
|
|
318
321
|
* Indicates whether the Grid columns will be resized during initialization so that
|
|
319
322
|
* they fit their headers and row content. Defaults to `false`.
|
|
@@ -325,7 +328,7 @@ export declare class GridComponent implements AfterContentInit, AfterViewInit, O
|
|
|
325
328
|
/**
|
|
326
329
|
* @hidden
|
|
327
330
|
*/
|
|
328
|
-
get navigatable():
|
|
331
|
+
get navigatable(): GridNavigableSettings;
|
|
329
332
|
/**
|
|
330
333
|
* Defines a function that is executed for every data row in the component.
|
|
331
334
|
*
|
|
@@ -598,6 +601,7 @@ export declare class GridComponent implements AfterContentInit, AfterViewInit, O
|
|
|
598
601
|
get showGroupFooters(): boolean;
|
|
599
602
|
get ariaRowCount(): number;
|
|
600
603
|
get ariaColCount(): number;
|
|
604
|
+
get navigation(): NavigationService;
|
|
601
605
|
private shouldGenerateColumns;
|
|
602
606
|
private direction;
|
|
603
607
|
private _sort;
|
|
@@ -615,6 +619,7 @@ export declare class GridComponent implements AfterContentInit, AfterViewInit, O
|
|
|
615
619
|
private _customToolbarTemplate;
|
|
616
620
|
private leafViewportColumns;
|
|
617
621
|
private viewportColumns;
|
|
622
|
+
private _navigable;
|
|
618
623
|
get isVirtual(): boolean;
|
|
619
624
|
get isScrollable(): boolean;
|
|
620
625
|
get visibleColumns(): QueryList<ColumnBase>;
|
package/main.d.ts
CHANGED
|
@@ -145,6 +145,7 @@ export { ColumnReorderConfig } from './dragdrop/column-reorder-config';
|
|
|
145
145
|
export { FocusableDirective } from './navigation/focusable.directive';
|
|
146
146
|
export { NavigationCell } from './navigation/navigation-cell.interface';
|
|
147
147
|
export { NavigationRow } from './navigation/navigation-row.interface';
|
|
148
|
+
export { GridNavigableSettings, GridNavigableSection } from './navigation/navigable-settings';
|
|
148
149
|
export { ColumnMenuSettings } from './column-menu/column-menu-settings.interface';
|
|
149
150
|
export { ColumnVisibilityChangeEvent } from './column-menu/column-visibility-change-event';
|
|
150
151
|
export { ExpandableColumnMenuItem } from './column-menu/column-menu-expandable-item.interface';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* Represents the possible navigable sections of the Grid.
|
|
7
|
+
*/
|
|
8
|
+
export declare type GridNavigableSection = 'pager' | 'table';
|
|
9
|
+
/**
|
|
10
|
+
* Represents the type of the Grid [`navigable`]({% slug api_grid_gridcomponent %}#toc-navigable) option.
|
|
11
|
+
*/
|
|
12
|
+
export declare type GridNavigableSettings = boolean | GridNavigableSection[];
|
|
@@ -19,6 +19,7 @@ import { GroupsService } from '../grouping/groups.service';
|
|
|
19
19
|
import { PagerContextService } from '../pager/pager-context.service';
|
|
20
20
|
import { DetailsService } from '../rendering/details/details.service';
|
|
21
21
|
import { ScrollRequestService } from '../scrolling/scroll-request.service';
|
|
22
|
+
import { GridNavigableSection } from './navigable-settings';
|
|
22
23
|
import * as i0 from "@angular/core";
|
|
23
24
|
/**
|
|
24
25
|
* @hidden
|
|
@@ -50,6 +51,8 @@ export declare class NavigationService implements OnDestroy {
|
|
|
50
51
|
set metadata(value: NavigationMetadata);
|
|
51
52
|
get metadata(): NavigationMetadata;
|
|
52
53
|
get enabled(): boolean;
|
|
54
|
+
get pagerEnabled(): boolean;
|
|
55
|
+
get tableEnabled(): boolean;
|
|
53
56
|
get activeCell(): NavigationCell;
|
|
54
57
|
get activeRow(): NavigationRow;
|
|
55
58
|
viewport: NavigationViewport;
|
|
@@ -64,9 +67,11 @@ export declare class NavigationService implements OnDestroy {
|
|
|
64
67
|
private subs;
|
|
65
68
|
private pendingRowIndex;
|
|
66
69
|
private virtualCell;
|
|
70
|
+
private pagerIsNavigable;
|
|
71
|
+
private tableIsNavigable;
|
|
67
72
|
private get activeDataRow();
|
|
68
73
|
constructor(zone: NgZone, domEvents: DomEventsService, pagerContextService: PagerContextService, scrollRequestService: ScrollRequestService, groupsService: GroupsService, detailsService: DetailsService, focusRoot: FocusRoot, editService: EditService, cd: ChangeDetectorRef, localization: LocalizationService, focusableParent: FocusableDirective);
|
|
69
|
-
init(meta: NavigationMetadata): void;
|
|
74
|
+
init(meta: NavigationMetadata, navigableOptions: GridNavigableSection[]): void;
|
|
70
75
|
ngOnDestroy(): void;
|
|
71
76
|
registerCell(cell: LogicalCell): void;
|
|
72
77
|
registerCellOnCurrentRow(cell: LogicalCell): void;
|
|
@@ -88,6 +93,7 @@ export declare class NavigationService implements OnDestroy {
|
|
|
88
93
|
toggle(active: boolean): void;
|
|
89
94
|
hasFocus(): boolean;
|
|
90
95
|
autoFocusCell(start: number, end: number): boolean;
|
|
96
|
+
setActiveSections(navigableOptions: GridNavigableSection[]): void;
|
|
91
97
|
private focusAdjacentCell;
|
|
92
98
|
private enterCell;
|
|
93
99
|
private leaveCell;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-grid",
|
|
3
|
-
"version": "7.0
|
|
3
|
+
"version": "7.1.0-dev.202205311232",
|
|
4
4
|
"description": "Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|