@progress/kendo-angular-layout 7.1.5-dev.202210210934 → 7.1.5-dev.202210241150

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.
@@ -16,10 +16,12 @@ export declare class DrawerService {
16
16
  owner: any;
17
17
  selectedIndices: Array<number>;
18
18
  viewData: Set<DrawerViewItem>;
19
+ focusIndex: number;
19
20
  private originalItems;
20
21
  private idxCounter;
21
22
  init(): void;
22
23
  get view(): Array<DrawerViewItem>;
24
+ changeFocusedItem(items: any, keyName: any, renderer: any): void;
23
25
  private populateViewData;
24
26
  private resetViewData;
25
27
  private loadChildren;
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  * @hidden
11
11
  */
12
12
  export declare class DrawerItemComponent implements AfterViewInit {
13
- drawer: DrawerService;
13
+ drawerService: DrawerService;
14
14
  private element;
15
15
  private renderer;
16
16
  viewItem: DrawerViewItem;
@@ -24,7 +24,7 @@ export declare class DrawerItemComponent implements AfterViewInit {
24
24
  get disabledClass(): boolean;
25
25
  get selectedClass(): boolean;
26
26
  get label(): boolean;
27
- constructor(drawer: DrawerService, element: ElementRef, renderer: Renderer2);
27
+ constructor(drawerService: DrawerService, element: ElementRef, renderer: Renderer2);
28
28
  ngAfterViewInit(): void;
29
29
  get iconClasses(): string[];
30
30
  get item(): any;
@@ -2,10 +2,11 @@
2
2
  * Copyright © 2021 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 { ElementRef, NgZone, OnDestroy, OnInit, Renderer2, TemplateRef, EventEmitter } from "@angular/core";
5
+ import { ElementRef, NgZone, OnDestroy, OnInit, Renderer2, TemplateRef, EventEmitter, QueryList } from "@angular/core";
6
6
  import { DrawerService } from './drawer.service';
7
7
  import { DrawerListSelectEvent } from './events/drawer-list-select.event';
8
8
  import { DrawerViewItem } from './models/drawer-view-item.interface';
9
+ import { DrawerItemComponent } from './item.component';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
11
12
  * @hidden
@@ -20,6 +21,7 @@ export declare class DrawerListComponent implements OnInit, OnDestroy {
20
21
  expanded: boolean;
21
22
  view: DrawerViewItem[];
22
23
  select: EventEmitter<DrawerListSelectEvent>;
24
+ items: QueryList<DrawerItemComponent>;
23
25
  private subscriptions;
24
26
  constructor(drawerService: DrawerService, renderer: Renderer2, ngZone: NgZone, element: ElementRef);
25
27
  ngOnInit(): void;
@@ -27,7 +29,7 @@ export declare class DrawerListComponent implements OnInit, OnDestroy {
27
29
  identifyItem(_index: number, viewItem: DrawerViewItem): any;
28
30
  private initDomEvents;
29
31
  private clickHandler;
30
- private keyDownHandler;
32
+ private onEnterOrSpaceKeyDown;
31
33
  private getDrawerItemIndex;
32
34
  static ɵfac: i0.ɵɵFactoryDeclaration<DrawerListComponent, never>;
33
35
  static ɵcmp: i0.ɵɵComponentDeclaration<DrawerListComponent, "[kendoDrawerList]", never, { "itemTemplate": "itemTemplate"; "mini": "mini"; "expanded": "expanded"; "view": "view"; }, { "select": "select"; }, never, never>;
@@ -105,5 +105,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
105
105
  args: ['attr.dir']
106
106
  }], drawer: [{
107
107
  type: ContentChild,
108
- args: [DrawerComponent, { static: false }]
108
+ args: [DrawerComponent]
109
109
  }] } });
@@ -273,7 +273,7 @@ export class DrawerComponent {
273
273
  }
274
274
  }
275
275
  DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }, { token: i1.AnimationBuilder }, { token: i2.LocalizationService }, { token: i3.DrawerService }], target: i0.ɵɵFactoryTarget.Component });
276
- DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerComponent, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-widget": "this.hostClasses", "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "style.transform": "this.overlayTransofrmStyles", "style.flexBasis.px": "this.flexStyles", "attr.dir": "this.direction" } }, providers: [
276
+ DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerComponent, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "style.transform": "this.overlayTransofrmStyles", "style.flexBasis.px": "this.flexStyles", "attr.dir": "this.direction" } }, providers: [
277
277
  LocalizationService,
278
278
  DrawerService,
279
279
  {
@@ -288,6 +288,8 @@ DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
288
288
  </ng-template>
289
289
 
290
290
  <ul kendoDrawerList
291
+ role="menubar"
292
+ orientation="vertical"
291
293
  (select)="onSelect($event)"
292
294
  [mini]="mini"
293
295
  [expanded]="expanded"
@@ -327,6 +329,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
327
329
  </ng-template>
328
330
 
329
331
  <ul kendoDrawerList
332
+ role="menubar"
333
+ orientation="vertical"
330
334
  (select)="onSelect($event)"
331
335
  [mini]="mini"
332
336
  [expanded]="expanded"
@@ -347,9 +351,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
347
351
  `
348
352
  }]
349
353
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.AnimationBuilder }, { type: i2.LocalizationService }, { type: i3.DrawerService }]; }, propDecorators: { hostClasses: [{
350
- type: HostBinding,
351
- args: ['class.k-widget']
352
- }, {
353
354
  type: HostBinding,
354
355
  args: ['class.k-drawer']
355
356
  }], startPositionClass: [{
@@ -397,14 +398,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
397
398
  type: Output
398
399
  }], drawerTemplate: [{
399
400
  type: ContentChild,
400
- args: [DrawerTemplateDirective, { static: false }]
401
+ args: [DrawerTemplateDirective]
401
402
  }], footerTemplate: [{
402
403
  type: ContentChild,
403
- args: [DrawerFooterTemplateDirective, { static: false }]
404
+ args: [DrawerFooterTemplateDirective]
404
405
  }], headerTemplate: [{
405
406
  type: ContentChild,
406
- args: [DrawerHeaderTemplateDirective, { static: false }]
407
+ args: [DrawerHeaderTemplateDirective]
407
408
  }], itemTemplate: [{
408
409
  type: ContentChild,
409
- args: [DrawerItemTemplateDirective, { static: false }]
410
+ args: [DrawerItemTemplateDirective]
410
411
  }] } });
@@ -15,6 +15,7 @@ export const defaultIsItemExpanded = (_item) => false;
15
15
  export class DrawerService {
16
16
  constructor() {
17
17
  this.selectedIndices = [];
18
+ this.focusIndex = 0;
18
19
  this.originalItems = [];
19
20
  this.idxCounter = 0;
20
21
  this.isItemExpanded = defaultIsItemExpanded;
@@ -28,6 +29,33 @@ export class DrawerService {
28
29
  get view() {
29
30
  return Array.from(this.viewData);
30
31
  }
32
+ changeFocusedItem(items, keyName, renderer) {
33
+ const currentItem = items.get(this.focusIndex);
34
+ let nextItem;
35
+ if (keyName === 'arrowUp') {
36
+ if (this.focusIndex === 0) {
37
+ nextItem = items.get(items.length - 1);
38
+ this.focusIndex = items.length - 1;
39
+ }
40
+ else {
41
+ nextItem = items.get(this.focusIndex - 1);
42
+ this.focusIndex = this.focusIndex - 1;
43
+ }
44
+ }
45
+ else if (keyName === 'arrowDown') {
46
+ if (this.focusIndex === items.length - 1) {
47
+ nextItem = items.get(0);
48
+ this.focusIndex = 0;
49
+ }
50
+ else {
51
+ nextItem = items.get(this.focusIndex + 1);
52
+ this.focusIndex = this.focusIndex + 1;
53
+ }
54
+ }
55
+ renderer.setAttribute(currentItem.nativeElement, 'tabindex', '-1');
56
+ renderer.setAttribute(nextItem.nativeElement, 'tabindex', '0');
57
+ nextItem.nativeElement.focus();
58
+ }
31
59
  populateViewData(items, level = 0) {
32
60
  items.forEach((item) => {
33
61
  this.setSelection(item);
@@ -11,8 +11,8 @@ import * as i2 from "@angular/common";
11
11
  * @hidden
12
12
  */
13
13
  export class DrawerItemComponent {
14
- constructor(drawer, element, renderer) {
15
- this.drawer = drawer;
14
+ constructor(drawerService, element, renderer) {
15
+ this.drawerService = drawerService;
16
16
  this.element = element;
17
17
  this.renderer = renderer;
18
18
  }
@@ -20,7 +20,7 @@ export class DrawerItemComponent {
20
20
  return this.item.disabled;
21
21
  }
22
22
  get selectedClass() {
23
- return this.drawer.selectedIndices.indexOf(this.index) >= 0;
23
+ return this.drawerService.selectedIndices.indexOf(this.index) >= 0;
24
24
  }
25
25
  get label() {
26
26
  return this.item.text ? this.item.text : null;
@@ -3,12 +3,13 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Subscription } from 'rxjs';
6
- import { Component, Input, Output, EventEmitter } from "@angular/core";
6
+ import { Component, ElementRef, Input, Output, EventEmitter, ViewChildren } from "@angular/core";
7
7
  import { closestItem, itemIndex } from '../common/dom-queries';
8
8
  import { DRAWER_ITEM_INDEX } from './models/constants';
9
9
  import { Keys } from '@progress/kendo-angular-common';
10
10
  import { ACTIVE_NESTED_LINK_SELECTOR, nestedLink } from './util';
11
11
  import { DrawerListSelectEvent } from './events/drawer-list-select.event';
12
+ import { DrawerItemComponent } from './item.component';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "./drawer.service";
14
15
  import * as i2 from "./item.component";
@@ -43,12 +44,26 @@ export class DrawerListComponent {
43
44
  this.ngZone.runOutsideAngular(() => {
44
45
  const nativeElement = this.element.nativeElement;
45
46
  this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));
46
- this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));
47
+ this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', (e) => {
48
+ const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;
49
+ const isArrowUpOrDown = e.keyCode === Keys.ArrowUp || e.keyCode === Keys.ArrowDown;
50
+ if (isEnterOrSpace) {
51
+ this.onEnterOrSpaceKeyDown(e);
52
+ }
53
+ else if (isArrowUpOrDown) {
54
+ if (e.target.classList.contains('k-drawer-item')) {
55
+ const keyName = e.keyCode === Keys.ArrowUp ? 'arrowUp' : 'arrowDown';
56
+ this.drawerService.changeFocusedItem(this.items, keyName, this.renderer);
57
+ }
58
+ }
59
+ }));
47
60
  });
48
61
  }
49
62
  clickHandler(e) {
50
63
  const viewItemIdx = this.getDrawerItemIndex(e.target);
51
64
  const viewItem = this.view[viewItemIdx];
65
+ const filterItems = this.view.filter(items => !items.item.separator);
66
+ const selectedItemIndex = filterItems.findIndex(item => item.index === viewItemIdx);
52
67
  if (!viewItem) {
53
68
  return;
54
69
  }
@@ -65,17 +80,14 @@ export class DrawerListComponent {
65
80
  const event = new DrawerListSelectEvent(args);
66
81
  this.select.emit(event);
67
82
  if (!event.isDefaultPrevented()) {
83
+ this.drawerService.focusIndex = selectedItemIndex;
68
84
  this.drawerService.onSelect(viewItemIdx);
69
85
  this.drawerService.init();
70
86
  this.view = this.drawerService.view;
71
87
  }
72
88
  });
73
89
  }
74
- keyDownHandler(e) {
75
- const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;
76
- if (!isEnterOrSpace) {
77
- return;
78
- }
90
+ onEnterOrSpaceKeyDown(e) {
79
91
  this.clickHandler(e);
80
92
  const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);
81
93
  if (link) {
@@ -91,7 +103,7 @@ export class DrawerListComponent {
91
103
  }
92
104
  }
93
105
  DrawerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerListComponent, deps: [{ token: i1.DrawerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
94
- DrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: { itemTemplate: "itemTemplate", mini: "mini", expanded: "expanded", view: "view" }, outputs: { select: "select" }, ngImport: i0, template: "\n <ng-container *ngFor=\"let v of view; trackBy:identifyItem; let idx = index\">\n <li *ngIf=\"!v.item.separator\" kendoDrawerItem\n class=\"k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}\"\n [viewItem]=\"v\"\n [index]=\"idx\"\n [mini]=\"mini\"\n [expanded]=\"expanded\"\n [itemTemplate]=\"itemTemplate\"\n [attr.data-kendo-drawer-index]=\"v.index\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\"\n tabindex=\"0\">\n </li>\n\n <li *ngIf=\"v.item.separator\"\n class=\"k-drawer-item k-drawer-separator\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\">\n &nbsp;\n </li>\n </ng-container>\n ", isInline: true, components: [{ type: i2.DrawerItemComponent, selector: "[kendoDrawerItem]", inputs: ["viewItem", "index", "itemTemplate", "mini", "expanded", "disabled", "cssClass", "cssStyle"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
106
+ DrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: { itemTemplate: "itemTemplate", mini: "mini", expanded: "expanded", view: "view" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "items", predicate: DrawerItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "\n <ng-container *ngFor=\"let v of view; trackBy:identifyItem; let idx = index\">\n <li *ngIf=\"!v.item.separator\" kendoDrawerItem\n class=\"k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}\"\n role=\"menuitem\"\n [viewItem]=\"v\"\n [index]=\"idx\"\n [mini]=\"mini\"\n [expanded]=\"expanded\"\n [itemTemplate]=\"itemTemplate\"\n [attr.data-kendo-drawer-index]=\"v.index\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\"\n [tabindex]=\"v.item.id === 0 ? '0' : '-1'\">\n </li>\n\n <li *ngIf=\"v.item.separator\"\n role=\"separator\"\n class=\"k-drawer-item k-drawer-separator\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\">\n &nbsp;\n </li>\n </ng-container>\n ", isInline: true, components: [{ type: i2.DrawerItemComponent, selector: "[kendoDrawerItem]", inputs: ["viewItem", "index", "itemTemplate", "mini", "expanded", "disabled", "cssClass", "cssStyle"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
95
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerListComponent, decorators: [{
96
108
  type: Component,
97
109
  args: [{
@@ -101,6 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
101
113
  <ng-container *ngFor="let v of view; trackBy:identifyItem; let idx = index">
102
114
  <li *ngIf="!v.item.separator" kendoDrawerItem
103
115
  class="k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}"
116
+ role="menuitem"
104
117
  [viewItem]="v"
105
118
  [index]="idx"
106
119
  [mini]="mini"
@@ -109,10 +122,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
109
122
  [attr.${DRAWER_ITEM_INDEX}]="v.index"
110
123
  [ngClass]="v.item.cssClass"
111
124
  [ngStyle]="v.item.cssStyle"
112
- tabindex="0">
125
+ [tabindex]="v.item.id === 0 ? '0' : '-1'">
113
126
  </li>
114
127
 
115
128
  <li *ngIf="v.item.separator"
129
+ role="separator"
116
130
  class="k-drawer-item k-drawer-separator"
117
131
  [ngClass]="v.item.cssClass"
118
132
  [ngStyle]="v.item.cssStyle">
@@ -131,4 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
131
145
  type: Input
132
146
  }], select: [{
133
147
  type: Output
148
+ }], items: [{
149
+ type: ViewChildren,
150
+ args: [DrawerItemComponent, { read: ElementRef }]
134
151
  }] } });
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-layout',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1666344829,
12
+ publishDate: 1666612185,
13
13
  version: '',
14
14
  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'
15
15
  };
@@ -26,7 +26,7 @@ const packageMetadata = {
26
26
  name: '@progress/kendo-angular-layout',
27
27
  productName: 'Kendo UI for Angular',
28
28
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
29
- publishDate: 1666344829,
29
+ publishDate: 1666612185,
30
30
  version: '',
31
31
  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'
32
32
  };
@@ -3997,6 +3997,7 @@ const defaultIsItemExpanded = (_item) => false;
3997
3997
  class DrawerService {
3998
3998
  constructor() {
3999
3999
  this.selectedIndices = [];
4000
+ this.focusIndex = 0;
4000
4001
  this.originalItems = [];
4001
4002
  this.idxCounter = 0;
4002
4003
  this.isItemExpanded = defaultIsItemExpanded;
@@ -4010,6 +4011,33 @@ class DrawerService {
4010
4011
  get view() {
4011
4012
  return Array.from(this.viewData);
4012
4013
  }
4014
+ changeFocusedItem(items, keyName, renderer) {
4015
+ const currentItem = items.get(this.focusIndex);
4016
+ let nextItem;
4017
+ if (keyName === 'arrowUp') {
4018
+ if (this.focusIndex === 0) {
4019
+ nextItem = items.get(items.length - 1);
4020
+ this.focusIndex = items.length - 1;
4021
+ }
4022
+ else {
4023
+ nextItem = items.get(this.focusIndex - 1);
4024
+ this.focusIndex = this.focusIndex - 1;
4025
+ }
4026
+ }
4027
+ else if (keyName === 'arrowDown') {
4028
+ if (this.focusIndex === items.length - 1) {
4029
+ nextItem = items.get(0);
4030
+ this.focusIndex = 0;
4031
+ }
4032
+ else {
4033
+ nextItem = items.get(this.focusIndex + 1);
4034
+ this.focusIndex = this.focusIndex + 1;
4035
+ }
4036
+ }
4037
+ renderer.setAttribute(currentItem.nativeElement, 'tabindex', '-1');
4038
+ renderer.setAttribute(nextItem.nativeElement, 'tabindex', '0');
4039
+ nextItem.nativeElement.focus();
4040
+ }
4013
4041
  populateViewData(items, level = 0) {
4014
4042
  items.forEach((item) => {
4015
4043
  this.setSelection(item);
@@ -4235,8 +4263,8 @@ class DrawerListSelectEvent extends PreventableEvent$1 {
4235
4263
  * @hidden
4236
4264
  */
4237
4265
  class DrawerItemComponent {
4238
- constructor(drawer, element, renderer) {
4239
- this.drawer = drawer;
4266
+ constructor(drawerService, element, renderer) {
4267
+ this.drawerService = drawerService;
4240
4268
  this.element = element;
4241
4269
  this.renderer = renderer;
4242
4270
  }
@@ -4244,7 +4272,7 @@ class DrawerItemComponent {
4244
4272
  return this.item.disabled;
4245
4273
  }
4246
4274
  get selectedClass() {
4247
- return this.drawer.selectedIndices.indexOf(this.index) >= 0;
4275
+ return this.drawerService.selectedIndices.indexOf(this.index) >= 0;
4248
4276
  }
4249
4277
  get label() {
4250
4278
  return this.item.text ? this.item.text : null;
@@ -4392,12 +4420,26 @@ class DrawerListComponent {
4392
4420
  this.ngZone.runOutsideAngular(() => {
4393
4421
  const nativeElement = this.element.nativeElement;
4394
4422
  this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));
4395
- this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));
4423
+ this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', (e) => {
4424
+ const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;
4425
+ const isArrowUpOrDown = e.keyCode === Keys.ArrowUp || e.keyCode === Keys.ArrowDown;
4426
+ if (isEnterOrSpace) {
4427
+ this.onEnterOrSpaceKeyDown(e);
4428
+ }
4429
+ else if (isArrowUpOrDown) {
4430
+ if (e.target.classList.contains('k-drawer-item')) {
4431
+ const keyName = e.keyCode === Keys.ArrowUp ? 'arrowUp' : 'arrowDown';
4432
+ this.drawerService.changeFocusedItem(this.items, keyName, this.renderer);
4433
+ }
4434
+ }
4435
+ }));
4396
4436
  });
4397
4437
  }
4398
4438
  clickHandler(e) {
4399
4439
  const viewItemIdx = this.getDrawerItemIndex(e.target);
4400
4440
  const viewItem = this.view[viewItemIdx];
4441
+ const filterItems = this.view.filter(items => !items.item.separator);
4442
+ const selectedItemIndex = filterItems.findIndex(item => item.index === viewItemIdx);
4401
4443
  if (!viewItem) {
4402
4444
  return;
4403
4445
  }
@@ -4414,17 +4456,14 @@ class DrawerListComponent {
4414
4456
  const event = new DrawerListSelectEvent(args);
4415
4457
  this.select.emit(event);
4416
4458
  if (!event.isDefaultPrevented()) {
4459
+ this.drawerService.focusIndex = selectedItemIndex;
4417
4460
  this.drawerService.onSelect(viewItemIdx);
4418
4461
  this.drawerService.init();
4419
4462
  this.view = this.drawerService.view;
4420
4463
  }
4421
4464
  });
4422
4465
  }
4423
- keyDownHandler(e) {
4424
- const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;
4425
- if (!isEnterOrSpace) {
4426
- return;
4427
- }
4466
+ onEnterOrSpaceKeyDown(e) {
4428
4467
  this.clickHandler(e);
4429
4468
  const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);
4430
4469
  if (link) {
@@ -4440,7 +4479,7 @@ class DrawerListComponent {
4440
4479
  }
4441
4480
  }
4442
4481
  DrawerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerListComponent, deps: [{ token: DrawerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4443
- DrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: { itemTemplate: "itemTemplate", mini: "mini", expanded: "expanded", view: "view" }, outputs: { select: "select" }, ngImport: i0, template: "\n <ng-container *ngFor=\"let v of view; trackBy:identifyItem; let idx = index\">\n <li *ngIf=\"!v.item.separator\" kendoDrawerItem\n class=\"k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}\"\n [viewItem]=\"v\"\n [index]=\"idx\"\n [mini]=\"mini\"\n [expanded]=\"expanded\"\n [itemTemplate]=\"itemTemplate\"\n [attr.data-kendo-drawer-index]=\"v.index\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\"\n tabindex=\"0\">\n </li>\n\n <li *ngIf=\"v.item.separator\"\n class=\"k-drawer-item k-drawer-separator\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\">\n &nbsp;\n </li>\n </ng-container>\n ", isInline: true, components: [{ type: DrawerItemComponent, selector: "[kendoDrawerItem]", inputs: ["viewItem", "index", "itemTemplate", "mini", "expanded", "disabled", "cssClass", "cssStyle"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
4482
+ DrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: { itemTemplate: "itemTemplate", mini: "mini", expanded: "expanded", view: "view" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "items", predicate: DrawerItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "\n <ng-container *ngFor=\"let v of view; trackBy:identifyItem; let idx = index\">\n <li *ngIf=\"!v.item.separator\" kendoDrawerItem\n class=\"k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}\"\n role=\"menuitem\"\n [viewItem]=\"v\"\n [index]=\"idx\"\n [mini]=\"mini\"\n [expanded]=\"expanded\"\n [itemTemplate]=\"itemTemplate\"\n [attr.data-kendo-drawer-index]=\"v.index\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\"\n [tabindex]=\"v.item.id === 0 ? '0' : '-1'\">\n </li>\n\n <li *ngIf=\"v.item.separator\"\n role=\"separator\"\n class=\"k-drawer-item k-drawer-separator\"\n [ngClass]=\"v.item.cssClass\"\n [ngStyle]=\"v.item.cssStyle\">\n &nbsp;\n </li>\n </ng-container>\n ", isInline: true, components: [{ type: DrawerItemComponent, selector: "[kendoDrawerItem]", inputs: ["viewItem", "index", "itemTemplate", "mini", "expanded", "disabled", "cssClass", "cssStyle"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
4444
4483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerListComponent, decorators: [{
4445
4484
  type: Component,
4446
4485
  args: [{
@@ -4450,6 +4489,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4450
4489
  <ng-container *ngFor="let v of view; trackBy:identifyItem; let idx = index">
4451
4490
  <li *ngIf="!v.item.separator" kendoDrawerItem
4452
4491
  class="k-drawer-item {{expanded ? ' k-level-' + v.level : ''}}"
4492
+ role="menuitem"
4453
4493
  [viewItem]="v"
4454
4494
  [index]="idx"
4455
4495
  [mini]="mini"
@@ -4458,10 +4498,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4458
4498
  [attr.${DRAWER_ITEM_INDEX}]="v.index"
4459
4499
  [ngClass]="v.item.cssClass"
4460
4500
  [ngStyle]="v.item.cssStyle"
4461
- tabindex="0">
4501
+ [tabindex]="v.item.id === 0 ? '0' : '-1'">
4462
4502
  </li>
4463
4503
 
4464
4504
  <li *ngIf="v.item.separator"
4505
+ role="separator"
4465
4506
  class="k-drawer-item k-drawer-separator"
4466
4507
  [ngClass]="v.item.cssClass"
4467
4508
  [ngStyle]="v.item.cssStyle">
@@ -4480,6 +4521,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4480
4521
  type: Input
4481
4522
  }], select: [{
4482
4523
  type: Output
4524
+ }], items: [{
4525
+ type: ViewChildren,
4526
+ args: [DrawerItemComponent, { read: ElementRef }]
4483
4527
  }] } });
4484
4528
 
4485
4529
  const DEFAULT_ANIMATION = { type: 'slide', duration: 200 };
@@ -4738,7 +4782,7 @@ class DrawerComponent {
4738
4782
  }
4739
4783
  }
4740
4784
  DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.AnimationBuilder }, { token: i1.LocalizationService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });
4741
- DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerComponent, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-widget": "this.hostClasses", "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "style.transform": "this.overlayTransofrmStyles", "style.flexBasis.px": "this.flexStyles", "attr.dir": "this.direction" } }, providers: [
4785
+ DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DrawerComponent, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "style.transform": "this.overlayTransofrmStyles", "style.flexBasis.px": "this.flexStyles", "attr.dir": "this.direction" } }, providers: [
4742
4786
  LocalizationService,
4743
4787
  DrawerService,
4744
4788
  {
@@ -4753,6 +4797,8 @@ DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
4753
4797
  </ng-template>
4754
4798
 
4755
4799
  <ul kendoDrawerList
4800
+ role="menubar"
4801
+ orientation="vertical"
4756
4802
  (select)="onSelect($event)"
4757
4803
  [mini]="mini"
4758
4804
  [expanded]="expanded"
@@ -4792,6 +4838,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4792
4838
  </ng-template>
4793
4839
 
4794
4840
  <ul kendoDrawerList
4841
+ role="menubar"
4842
+ orientation="vertical"
4795
4843
  (select)="onSelect($event)"
4796
4844
  [mini]="mini"
4797
4845
  [expanded]="expanded"
@@ -4812,9 +4860,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4812
4860
  `
4813
4861
  }]
4814
4862
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.AnimationBuilder }, { type: i1.LocalizationService }, { type: DrawerService }]; }, propDecorators: { hostClasses: [{
4815
- type: HostBinding,
4816
- args: ['class.k-widget']
4817
- }, {
4818
4863
  type: HostBinding,
4819
4864
  args: ['class.k-drawer']
4820
4865
  }], startPositionClass: [{
@@ -4862,16 +4907,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4862
4907
  type: Output
4863
4908
  }], drawerTemplate: [{
4864
4909
  type: ContentChild,
4865
- args: [DrawerTemplateDirective, { static: false }]
4910
+ args: [DrawerTemplateDirective]
4866
4911
  }], footerTemplate: [{
4867
4912
  type: ContentChild,
4868
- args: [DrawerFooterTemplateDirective, { static: false }]
4913
+ args: [DrawerFooterTemplateDirective]
4869
4914
  }], headerTemplate: [{
4870
4915
  type: ContentChild,
4871
- args: [DrawerHeaderTemplateDirective, { static: false }]
4916
+ args: [DrawerHeaderTemplateDirective]
4872
4917
  }], itemTemplate: [{
4873
4918
  type: ContentChild,
4874
- args: [DrawerItemTemplateDirective, { static: false }]
4919
+ args: [DrawerItemTemplateDirective]
4875
4920
  }] } });
4876
4921
 
4877
4922
  /**
@@ -4970,7 +5015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
4970
5015
  args: ['attr.dir']
4971
5016
  }], drawer: [{
4972
5017
  type: ContentChild,
4973
- args: [DrawerComponent, { static: false }]
5018
+ args: [DrawerComponent]
4974
5019
  }] } });
4975
5020
 
4976
5021
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-layout",
3
- "version": "7.1.5-dev.202210210934",
3
+ "version": "7.1.5-dev.202210241150",
4
4
  "description": "Kendo UI for Angular Layout Package - a collection of components to create professional application layoyts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",