@progress/kendo-angular-layout 6.5.2-dev.202203111452 → 6.6.0

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.
Files changed (37) hide show
  1. package/dist/cdn/js/kendo-angular-layout.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/main.js +1 -0
  4. package/dist/es/package-metadata.js +1 -1
  5. package/dist/es/panelbar/events/collapse-event.js +17 -0
  6. package/dist/es/panelbar/events/expand-event.js +17 -0
  7. package/dist/es/panelbar/events/select-event.js +17 -0
  8. package/dist/es/panelbar/events.js +7 -0
  9. package/dist/es/panelbar/panelbar-item.component.js +1 -1
  10. package/dist/es/panelbar/panelbar.component.js +120 -30
  11. package/dist/es2015/index.metadata.json +1 -1
  12. package/dist/es2015/main.d.ts +1 -0
  13. package/dist/es2015/main.js +1 -0
  14. package/dist/es2015/package-metadata.js +1 -1
  15. package/dist/es2015/panelbar/events/collapse-event.d.ts +15 -0
  16. package/dist/es2015/panelbar/events/collapse-event.js +10 -0
  17. package/dist/es2015/panelbar/events/expand-event.d.ts +15 -0
  18. package/dist/es2015/panelbar/events/expand-event.js +10 -0
  19. package/dist/es2015/panelbar/events/select-event.d.ts +15 -0
  20. package/dist/es2015/panelbar/events/select-event.js +10 -0
  21. package/dist/es2015/panelbar/events.d.ts +7 -0
  22. package/dist/es2015/panelbar/events.js +7 -0
  23. package/dist/es2015/panelbar/panelbar-item.component.js +16 -1
  24. package/dist/es2015/panelbar/panelbar.component.d.ts +23 -0
  25. package/dist/es2015/panelbar/panelbar.component.js +132 -40
  26. package/dist/fesm2015/index.js +198 -74
  27. package/dist/fesm5/index.js +187 -65
  28. package/dist/npm/main.js +1 -0
  29. package/dist/npm/package-metadata.js +1 -1
  30. package/dist/npm/panelbar/events/collapse-event.js +19 -0
  31. package/dist/npm/panelbar/events/expand-event.js +19 -0
  32. package/dist/npm/panelbar/events/select-event.js +19 -0
  33. package/dist/npm/panelbar/events.js +12 -0
  34. package/dist/npm/panelbar/panelbar-item.component.js +1 -1
  35. package/dist/npm/panelbar/panelbar.component.js +120 -30
  36. package/dist/systemjs/kendo-angular-layout.js +1 -1
  37. package/package.json +1 -1
@@ -21,7 +21,7 @@ const packageMetadata = {
21
21
  name: '@progress/kendo-angular-layout',
22
22
  productName: 'Kendo UI for Angular',
23
23
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
24
- publishDate: 1647010257,
24
+ publishDate: 1649340417,
25
25
  version: '',
26
26
  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'
27
27
  };
@@ -660,7 +660,22 @@ PanelBarItemComponent = PanelBarItemComponent_1 = __decorate([
660
660
  [src]="imageUrl"
661
661
  alt="">
662
662
  <ng-container *ngIf="!titleTemplate"><span class="k-panelbar-item-text">{{title}}</span></ng-container>
663
- <ng-template *ngIf="titleTemplate" [ngTemplateOutlet]="titleTemplate"></ng-template>
663
+ <ng-template *ngIf="titleTemplate"
664
+ [ngTemplateOutlet]="titleTemplate"
665
+ [ngTemplateOutletContext]="{
666
+ item: {
667
+ title: title,
668
+ id: id,
669
+ icon: icon,
670
+ iconClass: iconClass,
671
+ imageUrl: imageUrl,
672
+ selected: selected,
673
+ expanded: expanded,
674
+ disabled: disabled,
675
+ focused: focused,
676
+ content: content
677
+ }
678
+ }"></ng-template>
664
679
  <span *ngIf="hasChildItems || hasContent"
665
680
  class="k-icon k-panelbar-toggle"
666
681
  [ngClass]="{'k-i-arrow-chevron-up k-panelbar-collapse': expanded, 'k-i-arrow-chevron-down k-panelbar-expand': !expanded}">
@@ -762,6 +777,55 @@ PanelBarItemTemplateDirective = __decorate([
762
777
  __metadata("design:paramtypes", [TemplateRef])
763
778
  ], PanelBarItemTemplateDirective);
764
779
 
780
+ /**
781
+ * @hidden
782
+ */
783
+ class PreventableEvent$1 {
784
+ /**
785
+ * @hidden
786
+ */
787
+ constructor(args) {
788
+ this.prevented = false;
789
+ Object.assign(this, args);
790
+ }
791
+ /**
792
+ * Prevents the default action for a specified event.
793
+ * In this way, the source component suppresses
794
+ * the built-in behavior that follows the event.
795
+ */
796
+ preventDefault() {
797
+ this.prevented = true;
798
+ }
799
+ /**
800
+ * Returns `true` if the event was prevented
801
+ * by any of its subscribers.
802
+ *
803
+ * @returns `true` if the default action was prevented.
804
+ * Otherwise, returns `false`.
805
+ */
806
+ isDefaultPrevented() {
807
+ return this.prevented;
808
+ }
809
+ }
810
+
811
+ /**
812
+ * Arguments for the `collapse` event of the PanelBar.
813
+ */
814
+ class PanelBarCollapseEvent extends PreventableEvent$1 {
815
+ }
816
+
817
+ /**
818
+ * Arguments for the `expand` event of the PanelBar.
819
+ */
820
+ class PanelBarExpandEvent extends PreventableEvent$1 {
821
+ }
822
+
823
+ /**
824
+ * Arguments for the `select` event of the PanelBar.
825
+ */
826
+ class PanelBarSelectEvent extends PreventableEvent$1 {
827
+ }
828
+
765
829
  /**
766
830
  * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).
767
831
  */
@@ -793,17 +857,35 @@ class PanelBarComponent {
793
857
  * Sets the height of the component when the `"full"` expand mode is used.
794
858
  * This option is ignored in the `"multiple"` and `"single"` expand modes.
795
859
  */
796
- this.height = "400px";
860
+ this.height = '400px';
797
861
  /**
798
862
  * Fires each time the user interacts with a PanelBar item
799
863
  * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).
800
864
  * The event data contains all items that are modified.
801
865
  */
802
866
  this.stateChange = new EventEmitter();
867
+ /**
868
+ * Fires when an item is about to be selected.
869
+ * ([see example]({% slug events_panelbar %}))
870
+ * This event is preventable. If you cancel it, the item will not be selected.
871
+ */
872
+ this.select = new EventEmitter();
873
+ /**
874
+ * Fires when an item is about to be expanded.
875
+ * ([see example]({% slug events_panelbar %}))
876
+ * This event is preventable. If you cancel it, the item will remain collapsed.
877
+ */
878
+ this.expand = new EventEmitter();
879
+ /**
880
+ * Fires when an item is about to be collapsed.
881
+ * ([see example]({% slug events_panelbar %}))
882
+ * This event is preventable. If you cancel it, the item will remain expanded.
883
+ */
884
+ this.collapse = new EventEmitter();
803
885
  this.tabIndex = 0;
804
- this.role = "tree";
886
+ this.role = 'tree';
805
887
  this.hostClass = true;
806
- this.activeDescendant = "";
888
+ this.activeDescendant = '';
807
889
  this.isViewInit = true;
808
890
  this.focused = false;
809
891
  this._keepItemContent = false;
@@ -815,7 +897,7 @@ class PanelBarComponent {
815
897
  childrenHeight += item.headerHeight();
816
898
  });
817
899
  this.childrenItems.forEach(item => {
818
- item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? (panelbarHeight - childrenHeight) + "px" : 'auto';
900
+ item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? (panelbarHeight - childrenHeight) + 'px' : 'auto';
819
901
  item.contentOverflow = contentOverflow;
820
902
  });
821
903
  };
@@ -854,7 +936,7 @@ class PanelBarComponent {
854
936
  return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';
855
937
  }
856
938
  get overflow() {
857
- return this.expandMode === PanelBarExpandMode.Full ? "hidden" : "visible";
939
+ return this.expandMode === PanelBarExpandMode.Full ? 'hidden' : 'visible';
858
940
  }
859
941
  get dir() {
860
942
  return this.localization.rtl ? 'rtl' : 'ltr';
@@ -904,7 +986,7 @@ class PanelBarComponent {
904
986
  this.validateConfiguration();
905
987
  }
906
988
  ngOnChanges(changes) {
907
- if (changes['height'] || changes['expandMode'] || changes["items"]) { // tslint:disable-line
989
+ if (changes['height'] || changes['expandMode'] || changes['items']) { // tslint:disable-line
908
990
  if (this.childrenItems) {
909
991
  setTimeout(this.updateChildrenHeight);
910
992
  }
@@ -951,7 +1033,7 @@ class PanelBarComponent {
951
1033
  onComponentBlur() {
952
1034
  this.eventService.onBlur();
953
1035
  this.focused = false;
954
- this.activeDescendant = "";
1036
+ this.activeDescendant = '';
955
1037
  }
956
1038
  /**
957
1039
  * @hidden
@@ -970,6 +1052,26 @@ class PanelBarComponent {
970
1052
  }
971
1053
  }
972
1054
  }
1055
+ /**
1056
+ * @hidden
1057
+ */
1058
+ emitEvent(event, item) {
1059
+ let eventArgs;
1060
+ switch (event) {
1061
+ case 'select':
1062
+ eventArgs = new PanelBarSelectEvent();
1063
+ break;
1064
+ case 'collapse':
1065
+ eventArgs = new PanelBarCollapseEvent();
1066
+ break;
1067
+ default:
1068
+ eventArgs = new PanelBarExpandEvent();
1069
+ break;
1070
+ }
1071
+ eventArgs.item = item.serialize();
1072
+ this[event].emit(eventArgs);
1073
+ return eventArgs;
1074
+ }
973
1075
  get viewItems() {
974
1076
  let treeItems = [];
975
1077
  this.viewChildItems.toArray().forEach(item => {
@@ -981,7 +1083,7 @@ class PanelBarComponent {
981
1083
  validateConfiguration() {
982
1084
  if (isDevMode()) {
983
1085
  if (this.items && (this.contentItems && this.contentItems.length > 0)) {
984
- throw new Error("Invalid configuration: mixed template components and items property.");
1086
+ throw new Error('Invalid configuration: mixed template components and items property.');
985
1087
  }
986
1088
  }
987
1089
  }
@@ -996,30 +1098,71 @@ class PanelBarComponent {
996
1098
  let focusedState = selectedState;
997
1099
  selectedState = this.selectable ? selectedState : currentItem.selected;
998
1100
  if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {
999
- currentItem.selected = selectedState;
1000
- currentItem.focused = focusedState;
1001
- this.activeDescendant = focusedState ? currentItem.itemId : "";
1002
- modifiedItems.push(currentItem);
1101
+ const isSelectPrevented = selectedState ? this.emitEvent('select', currentItem).isDefaultPrevented() : false;
1102
+ if (!isSelectPrevented) {
1103
+ currentItem.selected = selectedState;
1104
+ currentItem.focused = focusedState;
1105
+ this.activeDescendant = focusedState ? currentItem.itemId : '';
1106
+ modifiedItems.push(currentItem);
1107
+ }
1003
1108
  }
1004
1109
  });
1005
1110
  if (this.expandMode === PanelBarExpandMode.Multiple) {
1006
- if (item.hasChildItems || item.hasContent) {
1007
- item.expanded = !item.expanded;
1008
- }
1009
- if (modifiedItems.indexOf(item) < 0) {
1010
- modifiedItems.push(item);
1111
+ if ((item.hasChildItems || item.hasContent) && item.selected) {
1112
+ const isEventPrevented = item.expanded ?
1113
+ this.emitEvent('collapse', item).isDefaultPrevented() :
1114
+ this.emitEvent('expand', item).isDefaultPrevented();
1115
+ if (!isEventPrevented) {
1116
+ item.expanded = !item.expanded;
1117
+ if (modifiedItems.indexOf(item) < 0) {
1118
+ modifiedItems.push(item);
1119
+ }
1120
+ }
1011
1121
  }
1012
1122
  }
1013
1123
  else {
1014
1124
  let siblings = item.parent ? item.parent.childrenItems : this.childrenItems;
1015
- if (item.hasChildItems || item.hasContent) {
1125
+ let preventedCollapseItem;
1126
+ let expandedItems = [];
1127
+ if ((item.hasChildItems || item.hasContent) && item.selected) {
1016
1128
  siblings
1017
1129
  .forEach((currentItem) => {
1018
1130
  let expandedState = currentItem === item;
1019
1131
  if (currentItem.expanded !== expandedState) {
1020
- currentItem.expanded = expandedState;
1021
- if (modifiedItems.indexOf(currentItem) < 0) {
1022
- modifiedItems.push(currentItem);
1132
+ const isEventPrevented = currentItem.expanded ?
1133
+ this.emitEvent('collapse', currentItem).isDefaultPrevented() :
1134
+ this.emitEvent('expand', currentItem).isDefaultPrevented();
1135
+ if (!isEventPrevented) {
1136
+ currentItem.expanded = expandedState;
1137
+ if (currentItem.expanded) {
1138
+ expandedItems.push(currentItem);
1139
+ }
1140
+ if (modifiedItems.indexOf(currentItem) < 0) {
1141
+ modifiedItems.push(currentItem);
1142
+ }
1143
+ }
1144
+ else if (isEventPrevented && currentItem.expanded) {
1145
+ preventedCollapseItem = currentItem;
1146
+ }
1147
+ }
1148
+ else if (currentItem.expanded === expandedState && expandedState) {
1149
+ const isCollapsePrevented = this.emitEvent('collapse', currentItem).isDefaultPrevented();
1150
+ if (!isCollapsePrevented) {
1151
+ currentItem.expanded = !currentItem.expanded;
1152
+ if (modifiedItems.indexOf(currentItem) < 0) {
1153
+ modifiedItems.push(currentItem);
1154
+ }
1155
+ }
1156
+ }
1157
+ });
1158
+ expandedItems.forEach(item => {
1159
+ if (preventedCollapseItem && item.id !== preventedCollapseItem.id) {
1160
+ item.expanded = false;
1161
+ if (isDevMode()) {
1162
+ const expandMode = PanelBarExpandMode[this.expandMode].toLowerCase();
1163
+ console.warn(`
1164
+ The ${expandMode} expandMode allows the expansion of only one item at a time.
1165
+ See https://www.telerik.com/kendo-angular-ui-develop/components/layout/panelbar/expand-modes/`);
1023
1166
  }
1024
1167
  }
1025
1168
  });
@@ -1052,16 +1195,16 @@ class PanelBarComponent {
1052
1195
  currentIndex = visibleItems.findIndex(item => item === currentItem);
1053
1196
  }
1054
1197
  switch (action) {
1055
- case "lastItem":
1198
+ case 'lastItem':
1056
1199
  nextItem = visibleItems[visibleItems.length - 1];
1057
1200
  break;
1058
- case "firstItem":
1201
+ case 'firstItem':
1059
1202
  nextItem = visibleItems[0];
1060
1203
  break;
1061
- case "nextItem":
1204
+ case 'nextItem':
1062
1205
  nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];
1063
1206
  break;
1064
- case "previousItem":
1207
+ case 'previousItem':
1065
1208
  nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];
1066
1209
  break;
1067
1210
  default:
@@ -1078,16 +1221,16 @@ class PanelBarComponent {
1078
1221
  this.stateChange.emit(modifiedItems);
1079
1222
  }
1080
1223
  focusLastItem() {
1081
- this.focusItem("lastItem");
1224
+ this.focusItem('lastItem');
1082
1225
  }
1083
1226
  focusFirstItem() {
1084
- this.focusItem("firstItem");
1227
+ this.focusItem('firstItem');
1085
1228
  }
1086
1229
  focusNextItem() {
1087
- this.focusItem("nextItem");
1230
+ this.focusItem('nextItem');
1088
1231
  }
1089
1232
  focusPreviousItem() {
1090
- this.focusItem("previousItem");
1233
+ this.focusItem('previousItem');
1091
1234
  }
1092
1235
  expandItem() {
1093
1236
  let currentItem = this.allItems.filter(item => item.focused)[0];
@@ -1169,6 +1312,18 @@ __decorate([
1169
1312
  Output(),
1170
1313
  __metadata("design:type", EventEmitter)
1171
1314
  ], PanelBarComponent.prototype, "stateChange", void 0);
1315
+ __decorate([
1316
+ Output(),
1317
+ __metadata("design:type", EventEmitter)
1318
+ ], PanelBarComponent.prototype, "select", void 0);
1319
+ __decorate([
1320
+ Output(),
1321
+ __metadata("design:type", EventEmitter)
1322
+ ], PanelBarComponent.prototype, "expand", void 0);
1323
+ __decorate([
1324
+ Output(),
1325
+ __metadata("design:type", EventEmitter)
1326
+ ], PanelBarComponent.prototype, "collapse", void 0);
1172
1327
  __decorate([
1173
1328
  HostBinding('attr.tabIndex'),
1174
1329
  __metadata("design:type", Number)
@@ -1257,17 +1412,17 @@ PanelBarComponent = __decorate([
1257
1412
  <ng-template [ngIf]="items?.length">
1258
1413
  <ng-container *ngFor="let item of items">
1259
1414
  <kendo-panelbar-item *ngIf="!item.hidden"
1260
- [title]="item.title"
1261
- [id]="item.id"
1262
- [icon]="item.icon"
1263
- [iconClass]="item.iconClass"
1264
- [imageUrl]="item.imageUrl"
1265
- [selected]="!!item.selected"
1266
- [expanded]="!!item.expanded"
1267
- [disabled]="!!item.disabled"
1268
- [template]="templateRef"
1269
- [items]="item.children"
1270
- [content]="item.content"
1415
+ [title]="item.title"
1416
+ [id]="item.id"
1417
+ [icon]="item.icon"
1418
+ [iconClass]="item.iconClass"
1419
+ [imageUrl]="item.imageUrl"
1420
+ [selected]="!!item.selected"
1421
+ [expanded]="!!item.expanded"
1422
+ [disabled]="!!item.disabled"
1423
+ [template]="templateRef"
1424
+ [items]="item.children"
1425
+ [content]="item.content"
1271
1426
  >
1272
1427
  </kendo-panelbar-item>
1273
1428
  </ng-container>
@@ -2572,37 +2727,6 @@ const DIRECTION_CLASSES = {
2572
2727
  */
2573
2728
  const DEFAULT_SCROLL_BEHAVIOR = 'smooth';
2574
2729
 
2575
- /**
2576
- * @hidden
2577
- */
2578
- class PreventableEvent$1 {
2579
- /**
2580
- * @hidden
2581
- */
2582
- constructor(args) {
2583
- this.prevented = false;
2584
- Object.assign(this, args);
2585
- }
2586
- /**
2587
- * Prevents the default action for a specified event.
2588
- * In this way, the source component suppresses
2589
- * the built-in behavior that follows the event.
2590
- */
2591
- preventDefault() {
2592
- this.prevented = true;
2593
- }
2594
- /**
2595
- * Returns `true` if the event was prevented
2596
- * by any of its subscribers.
2597
- *
2598
- * @returns `true` if the default action was prevented.
2599
- * Otherwise, returns `false`.
2600
- */
2601
- isDefaultPrevented() {
2602
- return this.prevented;
2603
- }
2604
- }
2605
-
2606
2730
  /**
2607
2731
  * Arguments for the `tabScroll` event of the TabStrip.
2608
2732
  * The `tabScroll` event fires when the tabs are being scrolled.
@@ -8786,4 +8910,4 @@ LayoutModule = __decorate([
8786
8910
  * Generated bundle index. Do not edit.
8787
8911
  */
8788
8912
 
8789
- export { PreventableEvent$1 as PreventableEvent, DrawerService, DrawerItemComponent, DrawerListComponent, DRAWER_ITEM_INDEX, PanelBarService, SplitterBarComponent, SplitterService, StepperListComponent, StepperMessages, STEPPER_STEP_INDEX, StepperStepComponent, StepperService, TabStripMessages, TabComponent, TabStripScrollableButtonComponent, ScrollService, TabStripService, TileLayoutDraggingService, PreventableEvent$2 as PreventableEvent$1, TileLayoutResizeHandleDirective, PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarExpandMode, SplitterComponent, SplitterPaneComponent, TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, LocalizedTabStripMessagesDirective, TabStripCustomMessagesComponent, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerSelectEvent, StepperComponent, StepperActivateEvent, StepperCustomMessagesComponent, LocalizedStepperMessagesDirective, AvatarComponent, CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CardActionsComponent, CardSeparatorDirective, CardTitleDirective, CardSubtitleDirective, CardMediaDirective, CardAction, ExpansionPanelComponent, ExpansionPanelTitleDirective, ExpansionPanelActionEvent, TileLayoutComponent, TileLayoutItemComponent, TileLayoutItemBodyComponent, TileLayoutItemHeaderComponent, TileLayoutReorderEvent, TileLayoutResizeEvent, AvatarModule, CardModule, DrawerModule, LayoutModule, PanelBarModule, SplitterModule, StepperModule, TabStripModule, ExpansionPanelModule, TileLayoutModule, StackLayoutModule, GridLayoutModule, StackLayoutComponent, GridLayoutComponent, GridLayoutItemComponent, TabCloseEvent, SelectEvent, DrawerTemplateDirective, DrawerItemTemplateDirective, DrawerHeaderTemplateDirective, DrawerFooterTemplateDirective, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperStepTemplateDirective };
8913
+ export { PreventableEvent$1 as PreventableEvent, DrawerService, DrawerItemComponent, DrawerListComponent, DRAWER_ITEM_INDEX, PanelBarService, SplitterBarComponent, SplitterService, StepperListComponent, StepperMessages, STEPPER_STEP_INDEX, StepperStepComponent, StepperService, TabStripMessages, TabComponent, TabStripScrollableButtonComponent, ScrollService, TabStripService, TileLayoutDraggingService, PreventableEvent$2 as PreventableEvent$1, TileLayoutResizeHandleDirective, PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarExpandMode, SplitterComponent, SplitterPaneComponent, TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, LocalizedTabStripMessagesDirective, TabStripCustomMessagesComponent, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerSelectEvent, StepperComponent, StepperActivateEvent, StepperCustomMessagesComponent, LocalizedStepperMessagesDirective, AvatarComponent, CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CardActionsComponent, CardSeparatorDirective, CardTitleDirective, CardSubtitleDirective, CardMediaDirective, CardAction, ExpansionPanelComponent, ExpansionPanelTitleDirective, ExpansionPanelActionEvent, TileLayoutComponent, TileLayoutItemComponent, TileLayoutItemBodyComponent, TileLayoutItemHeaderComponent, TileLayoutReorderEvent, TileLayoutResizeEvent, AvatarModule, CardModule, DrawerModule, LayoutModule, PanelBarModule, SplitterModule, StepperModule, TabStripModule, ExpansionPanelModule, TileLayoutModule, StackLayoutModule, GridLayoutModule, StackLayoutComponent, GridLayoutComponent, GridLayoutItemComponent, PanelBarCollapseEvent, PanelBarExpandEvent, PanelBarSelectEvent, TabCloseEvent, SelectEvent, DrawerTemplateDirective, DrawerItemTemplateDirective, DrawerHeaderTemplateDirective, DrawerFooterTemplateDirective, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperStepTemplateDirective };