@ui5/webcomponents-fiori 1.23.1 → 1.24.0-rc.1

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 (192) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/BarcodeScannerDialog.d.ts +12 -1
  3. package/dist/BarcodeScannerDialog.js +17 -0
  4. package/dist/BarcodeScannerDialog.js.map +1 -1
  5. package/dist/SideNavigation.d.ts +41 -32
  6. package/dist/SideNavigation.js +112 -117
  7. package/dist/SideNavigation.js.map +1 -1
  8. package/dist/SideNavigationGroup.d.ts +55 -0
  9. package/dist/SideNavigationGroup.js +142 -0
  10. package/dist/SideNavigationGroup.js.map +1 -0
  11. package/dist/SideNavigationItem.d.ts +18 -6
  12. package/dist/SideNavigationItem.js +53 -15
  13. package/dist/SideNavigationItem.js.map +1 -1
  14. package/dist/SideNavigationItemBase.d.ts +16 -59
  15. package/dist/SideNavigationItemBase.js +23 -91
  16. package/dist/SideNavigationItemBase.js.map +1 -1
  17. package/dist/SideNavigationSelectableItemBase.d.ts +74 -0
  18. package/dist/SideNavigationSelectableItemBase.js +116 -0
  19. package/dist/SideNavigationSelectableItemBase.js.map +1 -0
  20. package/dist/SideNavigationSubItem.d.ts +6 -5
  21. package/dist/SideNavigationSubItem.js +20 -8
  22. package/dist/SideNavigationSubItem.js.map +1 -1
  23. package/dist/css/themes/Bar.css +1 -1
  24. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  25. package/dist/css/themes/MediaGallery.css +1 -1
  26. package/dist/css/themes/MediaGalleryItem.css +1 -1
  27. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  28. package/dist/css/themes/NotificationListItem.css +1 -1
  29. package/dist/css/themes/NotificationListItemBase.css +1 -1
  30. package/dist/css/themes/NotificationOverflowActionsPopover.css +1 -1
  31. package/dist/css/themes/Page.css +1 -1
  32. package/dist/css/themes/ProductSwitchItem.css +1 -1
  33. package/dist/css/themes/ShellBar.css +1 -1
  34. package/dist/css/themes/SideNavigation.css +1 -1
  35. package/dist/css/themes/SideNavigationItem.css +1 -0
  36. package/dist/css/themes/SideNavigationPopover.css +1 -1
  37. package/dist/css/themes/Timeline.css +1 -1
  38. package/dist/css/themes/TimelineItem.css +1 -1
  39. package/dist/css/themes/UploadCollection.css +1 -1
  40. package/dist/css/themes/UploadCollectionItem.css +1 -1
  41. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  42. package/dist/css/themes/Wizard.css +1 -1
  43. package/dist/css/themes/WizardTab.css +1 -1
  44. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  45. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  46. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  47. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  48. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  49. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  50. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  51. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  52. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  53. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  54. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  55. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  56. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  57. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  58. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  59. package/dist/custom-elements-internal.json +1566 -153
  60. package/dist/custom-elements.json +1539 -130
  61. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  62. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  63. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  64. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  65. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  66. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  67. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  68. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  69. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  70. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  71. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  72. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  73. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  74. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  75. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  76. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  77. package/dist/generated/i18n/i18n-defaults.js +2 -1
  78. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  79. package/dist/generated/templates/SideNavigationGroupTemplate.lit.d.ts +4 -0
  80. package/dist/generated/templates/SideNavigationGroupTemplate.lit.js +9 -0
  81. package/dist/generated/templates/SideNavigationGroupTemplate.lit.js.map +1 -0
  82. package/dist/generated/templates/SideNavigationItemTemplate.lit.d.ts +4 -0
  83. package/dist/generated/templates/SideNavigationItemTemplate.lit.js +22 -0
  84. package/dist/generated/templates/SideNavigationItemTemplate.lit.js.map +1 -0
  85. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js +2 -2
  86. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js.map +1 -1
  87. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.d.ts +4 -0
  88. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js +12 -0
  89. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js.map +1 -0
  90. package/dist/generated/templates/SideNavigationTemplate.lit.js +7 -53
  91. package/dist/generated/templates/SideNavigationTemplate.lit.js.map +1 -1
  92. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js +22 -21
  93. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js.map +1 -1
  94. package/dist/generated/themes/Bar.css.js +1 -1
  95. package/dist/generated/themes/Bar.css.js.map +1 -1
  96. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  97. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  98. package/dist/generated/themes/MediaGallery.css.js +1 -1
  99. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  100. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  101. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  102. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  103. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  104. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  105. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  106. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  107. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  108. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js +1 -1
  109. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js.map +1 -1
  110. package/dist/generated/themes/Page.css.js +1 -1
  111. package/dist/generated/themes/Page.css.js.map +1 -1
  112. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  113. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  114. package/dist/generated/themes/ShellBar.css.js +1 -1
  115. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  116. package/dist/generated/themes/SideNavigation.css.js +1 -1
  117. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  118. package/dist/generated/themes/SideNavigationItem.css.d.ts +3 -0
  119. package/dist/generated/themes/SideNavigationItem.css.js +9 -0
  120. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -0
  121. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  122. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  123. package/dist/generated/themes/Timeline.css.js +1 -1
  124. package/dist/generated/themes/Timeline.css.js.map +1 -1
  125. package/dist/generated/themes/TimelineItem.css.js +1 -1
  126. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  127. package/dist/generated/themes/UploadCollection.css.js +1 -1
  128. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  129. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  130. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  131. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  132. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  133. package/dist/generated/themes/Wizard.css.js +1 -1
  134. package/dist/generated/themes/Wizard.css.js.map +1 -1
  135. package/dist/generated/themes/WizardTab.css.js +1 -1
  136. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  137. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  138. package/dist/generated/themes/sap_belize/parameters-bundle.css.js.map +1 -1
  139. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  140. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js.map +1 -1
  141. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  142. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js.map +1 -1
  143. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  144. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  145. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  146. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  147. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  148. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  149. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  150. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  151. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  152. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  153. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  154. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  155. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  156. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  157. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  158. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  159. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  160. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  161. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  162. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  163. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  164. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  165. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  166. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  167. package/dist/vscode.html-custom-data.json +976 -0
  168. package/dist/web-types.json +2230 -0
  169. package/package.json +7 -7
  170. package/src/SideNavigation.hbs +13 -235
  171. package/src/SideNavigationGroup.hbs +42 -0
  172. package/src/SideNavigationItem.hbs +154 -0
  173. package/src/SideNavigationPopover.hbs +1 -2
  174. package/src/SideNavigationSubItem.hbs +57 -0
  175. package/src/i18n/messagebundle.properties +3 -0
  176. package/src/themes/Bar.css +1 -0
  177. package/src/themes/SideNavigation.css +7 -286
  178. package/src/themes/SideNavigationItem.css +320 -0
  179. package/src/themes/base/Bar-parameters.css +1 -0
  180. package/src/themes/base/SideNavigation-parameters.css +0 -1
  181. package/src/themes/sap_fiori_3_hcb/Bar-parameters.css +5 -0
  182. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  183. package/src/themes/sap_fiori_3_hcw/Bar-parameters.css +5 -0
  184. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  185. package/src/themes/sap_horizon/SideNavigation-parameters.css +0 -1
  186. package/src/themes/sap_horizon_dark/SideNavigation-parameters.css +0 -1
  187. package/src/themes/sap_horizon_hcb/Bar-parameters.css +5 -0
  188. package/src/themes/sap_horizon_hcb/SideNavigation-parameters.css +0 -1
  189. package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  190. package/src/themes/sap_horizon_hcw/Bar-parameters.css +5 -0
  191. package/src/themes/sap_horizon_hcw/SideNavigation-parameters.css +0 -1
  192. package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
@@ -20,12 +20,11 @@ import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation
20
20
  import { isPhone, isTablet, isCombi, } from "@ui5/webcomponents-base/dist/Device.js";
21
21
  import { isSpace, isEnter, } from "@ui5/webcomponents-base/dist/Keys.js";
22
22
  import NavigationMode from "@ui5/webcomponents-base/dist/types/NavigationMode.js";
23
- import Icon from "@ui5/webcomponents/dist/Icon.js";
24
- import "@ui5/webcomponents-icons/dist/circle-task-2.js";
25
- import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
26
- import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
23
+ import SideNavigationItemBase from "./SideNavigationItemBase.js";
24
+ import SideNavigationSelectableItemBase from "./SideNavigationSelectableItemBase.js";
27
25
  import SideNavigationItem from "./SideNavigationItem.js";
28
26
  import SideNavigationSubItem from "./SideNavigationSubItem.js";
27
+ import SideNavigationGroup from "./SideNavigationGroup.js";
29
28
  import SideNavigationTemplate from "./generated/templates/SideNavigationTemplate.lit.js";
30
29
  import SideNavigationPopoverTemplate from "./generated/templates/SideNavigationPopoverTemplate.lit.js";
31
30
  import { SIDE_NAVIGATION_POPOVER_HIDDEN_TEXT, SIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC, SIDE_NAVIGATION_LIST_ARIA_ROLE_DESC, SIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME, } from "./generated/i18n/i18n-defaults.js";
@@ -41,26 +40,30 @@ const PAGE_UP_DOWN_SIZE = 10;
41
40
  * The `SideNavigation` is used as a standard menu in applications.
42
41
  * It consists of three containers: header (top-aligned), main navigation section (top-aligned) and the secondary section (bottom-aligned).
43
42
  *
44
- * - The header is meant for displaying user related information - profile data, avatar, etc.
45
- * - The main navigation section is related to the user’s current work context
46
- * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).
43
+ * - The header is meant for displaying user related information - profile data, avatar, etc.
44
+ * - The main navigation section is related to the user’s current work context
45
+ * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).
47
46
  *
48
47
  * ### Usage
49
48
  *
50
- * Use the available `ui5-side-navigation-item` and `ui5-side-navigation-sub-item` components to build your menu.
49
+ * Use the available `ui5-side-navigation-group`, `ui5-side-navigation-item`
50
+ * and `ui5-side-navigation-sub-item` components to build your menu.
51
51
  * The items can consist of text only or an icon with text. The use or non-use of icons must be consistent for all items on one level.
52
52
  * You must not combine entries with and without icons on the same level. We strongly recommend that you do not use icons on the second level.
53
53
  *
54
54
  * ### Keyboard Handling
55
55
  *
56
- * #### Fast Navigation
56
+ * ### Fast Navigation
57
57
  * This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.
58
58
  * In order to use this functionality, you need to import the following module:
59
59
  * `import "@ui5/webcomponents-base/dist/features/F6Navigation.js"`
60
60
  *
61
+ *
61
62
  * ### ES6 Module Import
62
63
  *
63
- * `import "@ui5/webcomponents-fiori/dist/SideNavigation.js";`
64
+ * `import "@ui5/webcomponents-fiori/dist/SideNavigation.js"`
65
+ *
66
+ * `import "@ui5/webcomponents-fiori/dist/SideNavigationGroup.js";` (for `ui5-side-navigation-group`)
64
67
  *
65
68
  * `import "@ui5/webcomponents-fiori/dist/SideNavigationItem.js";` (for `ui5-side-navigation-item`)
66
69
  *
@@ -86,6 +89,14 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
86
89
  this._handleResizeBound = this.handleResize.bind(this);
87
90
  this._isOverflow = false;
88
91
  }
92
+ onBeforeRendering() {
93
+ super.onBeforeRendering();
94
+ this._getAllItems(this.items).concat(this._getAllItems(this.fixedItems)).forEach(item => {
95
+ item.sideNavCollapsed = this.collapsed;
96
+ item.inPopover = this.inPopover;
97
+ item.sideNavigation = this;
98
+ });
99
+ }
89
100
  async _onAfterPopoverOpen() {
90
101
  // as the tree/list inside the popover is never destroyed,
91
102
  // item navigation index should be managed, because items are
@@ -99,11 +110,6 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
99
110
  tree.items[0]?.focus();
100
111
  }
101
112
  }
102
- async _onAfterMenuClose() {
103
- const selectedItem = this._findSelectedItem(this.items);
104
- await renderFinished();
105
- selectedItem.getDomRef().focus();
106
- }
107
113
  async _onBeforePopoverOpen() {
108
114
  const popover = await this.getPicker();
109
115
  popover?.opener?.classList.add("ui5-sn-item-active");
@@ -145,23 +151,26 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
145
151
  await renderFinished();
146
152
  this._popoverContents.item.getDomRef().classList.add("ui5-sn-item-no-hover-effect");
147
153
  }
148
- handleOverflowItemClick(e) {
149
- const associatedItem = e.detail.item.associatedItem;
154
+ async handleOverflowItemClick(e) {
155
+ const associatedItem = e.detail?.item.associatedItem;
150
156
  associatedItem.fireEvent("click");
151
157
  if (associatedItem.selected) {
152
158
  this.closeMenu();
153
159
  return;
154
160
  }
155
161
  this._selectItem(associatedItem);
162
+ this.closeMenu();
163
+ await renderFinished();
156
164
  // When subitem is selected in collapsed mode parent element should be focused
157
165
  if (associatedItem.nodeName.toLowerCase() === "ui5-side-navigation-sub-item") {
158
166
  const parent = associatedItem.parentElement;
159
- this._flexibleItemNavigation.setCurrentItem(parent);
167
+ this.focusItem(parent);
168
+ parent?.focus();
160
169
  }
161
170
  else {
162
- this._flexibleItemNavigation.setCurrentItem(associatedItem);
171
+ this.focusItem(associatedItem);
172
+ associatedItem?.focus();
163
173
  }
164
- this.closeMenu();
165
174
  }
166
175
  async getOverflowPopover() {
167
176
  return (await this.getStaticAreaItemDomRef()).querySelector(".ui5-side-navigation-overflow-menu");
@@ -203,13 +212,12 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
203
212
  return !!this.fixedItems.length;
204
213
  }
205
214
  get _rootRole() {
206
- return this._inPopover ? "none" : undefined;
215
+ return this.inPopover ? "none" : undefined;
207
216
  }
208
217
  get classes() {
209
218
  return {
210
219
  root: {
211
220
  "ui5-sn-collapsed": this.collapsed,
212
- "ui5-sn-in-popover": this._inPopover,
213
221
  },
214
222
  };
215
223
  }
@@ -217,23 +225,21 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
217
225
  return this.getEnabledItems(this.fixedItems);
218
226
  }
219
227
  getEnabledFlexibleItems() {
220
- if (!this._overflowDom) {
221
- return this.getEnabledItems(this.items);
228
+ const items = this.getEnabledItems(this.items);
229
+ if (this._overflowItem) {
230
+ items.push(this._overflowItem);
222
231
  }
223
- return [...this.getEnabledItems(this.items), this._overflowDom];
232
+ return items;
224
233
  }
225
234
  getEnabledItems(items) {
226
- let result = new Array();
227
- items.forEach(item => {
228
- if (item.getDomRef()?.classList.contains("ui5-sn-item-hidden")) {
235
+ const result = new Array();
236
+ this._getFocusableItems(items).forEach(item => {
237
+ if (item.classList.contains("ui5-sn-item-hidden")) {
229
238
  return;
230
239
  }
231
240
  if (!item.disabled) {
232
241
  result.push(item);
233
242
  }
234
- if (!this.collapsed && item.expanded) {
235
- result = result.concat(item.items.filter(el => !el.disabled));
236
- }
237
243
  });
238
244
  return result;
239
245
  }
@@ -246,32 +252,15 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
246
252
  }
247
253
  }
248
254
  onAfterRendering() {
249
- const activeElement = this.shadowRoot.activeElement;
250
- const flexibleDom = this.shadowRoot.querySelector(".ui5-sn-flexible");
251
- if (!flexibleDom.contains(activeElement)) {
252
- const selectedItem = this._findSelectedItem(this.items);
255
+ if (!this.getDomRef()?.matches(":focus-within")) {
256
+ let selectedItem = this._findSelectedItem(this.items);
253
257
  if (selectedItem) {
254
258
  this._flexibleItemNavigation.setCurrentItem(selectedItem);
255
259
  }
256
- else {
257
- const focusedItem = this._findFocusedItem(this.items);
258
- if (!focusedItem) {
259
- this._flexibleItemNavigation.setCurrentItem(this.items[0]);
260
- }
261
- }
262
- }
263
- const fixedDom = this.shadowRoot.querySelector(".ui5-sn-fixed");
264
- if (!fixedDom?.contains(activeElement)) {
265
- const selectedItem = this._findSelectedItem(this.fixedItems);
260
+ selectedItem = this._findSelectedItem(this.fixedItems);
266
261
  if (selectedItem) {
267
262
  this._fixedItemNavigation.setCurrentItem(selectedItem);
268
263
  }
269
- else {
270
- const focusedItem = this._findFocusedItem(this.fixedItems);
271
- if (!focusedItem) {
272
- this._fixedItemNavigation.setCurrentItem(this.fixedItems[0]);
273
- }
274
- }
275
264
  }
276
265
  if (this.collapsed) {
277
266
  this.handleResize();
@@ -285,80 +274,83 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
285
274
  ResizeHandler.deregister(this, this._handleResizeBound);
286
275
  }
287
276
  handleResize() {
288
- const domRef = this.getDomRef(), overflowItemRef = domRef?.querySelector(".ui5-sn-item-overflow");
289
277
  this._updateOverflowItems();
290
- if (this._getOverflowItems().length > 0 && this.collapsed) {
291
- overflowItemRef?.classList.remove("ui5-sn-item-hidden");
292
- }
293
- else {
294
- overflowItemRef?.classList.add("ui5-sn-item-hidden");
295
- }
296
278
  }
297
279
  _updateOverflowItems() {
298
280
  const domRef = this.getDomRef();
299
281
  if (!this.collapsed || !domRef) {
300
282
  return null;
301
283
  }
302
- const overflowItemRef = domRef.querySelector(".ui5-sn-item-overflow");
284
+ const overflowItem = this._overflowItem;
303
285
  const flexibleContentDomRef = domRef.querySelector(".ui5-sn-flexible");
304
- if (!overflowItemRef) {
286
+ if (!overflowItem) {
305
287
  return null;
306
288
  }
307
- overflowItemRef.classList.add("ui5-sn-item-hidden");
308
- const itemsRefs = [...domRef.querySelectorAll(".ui5-sn-flexible .ui5-sn-item-level1:not(.ui5-sn-item-overflow)")];
309
- let itemsHeight = itemsRefs.reduce((sum, itemRef) => {
289
+ overflowItem.classList.add("ui5-sn-item-hidden");
290
+ const overflowItems = this.overflowItems;
291
+ let itemsHeight = overflowItems.reduce((sum, itemRef) => {
310
292
  itemRef.classList.remove("ui5-sn-item-hidden");
311
293
  return sum + itemRef.offsetHeight;
312
294
  }, 0);
313
295
  const { paddingTop, paddingBottom } = window.getComputedStyle(flexibleContentDomRef);
314
296
  const listHeight = flexibleContentDomRef?.offsetHeight - parseInt(paddingTop) - parseInt(paddingBottom);
315
- overflowItemRef.classList.remove("ui5-sn-item-hidden");
316
- itemsHeight = overflowItemRef.offsetHeight;
317
- const oSelectedItemRef = domRef.querySelector(".ui5-sn-item-selected");
318
- if (oSelectedItemRef) {
319
- const { marginTop, marginBottom } = window.getComputedStyle(oSelectedItemRef);
320
- itemsHeight += oSelectedItemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
297
+ if (itemsHeight <= listHeight) {
298
+ return;
299
+ }
300
+ overflowItem.classList.remove("ui5-sn-item-hidden");
301
+ itemsHeight = overflowItem.offsetHeight;
302
+ const selectedItem = overflowItems.find(item => {
303
+ return item instanceof SideNavigationSelectableItemBase && item._selected;
304
+ });
305
+ if (selectedItem && selectedItem instanceof SideNavigationItemBase) {
306
+ const selectedItemDomRef = selectedItem.getDomRef();
307
+ const { marginTop, marginBottom } = window.getComputedStyle(selectedItemDomRef);
308
+ itemsHeight += selectedItemDomRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
321
309
  }
322
- itemsRefs.forEach(itemRef => {
323
- if (itemRef === oSelectedItemRef) {
310
+ overflowItems.forEach(item => {
311
+ if (item === selectedItem) {
324
312
  return;
325
313
  }
326
- const { marginTop, marginBottom } = window.getComputedStyle(itemRef);
327
- itemsHeight += itemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
328
- if (itemsHeight >= listHeight) {
329
- itemRef.classList.add("ui5-sn-item-hidden");
314
+ let itemDomRef;
315
+ if (item instanceof SideNavigationItemBase) {
316
+ itemDomRef = item.getDomRef();
317
+ }
318
+ else {
319
+ itemDomRef = item;
320
+ }
321
+ const { marginTop, marginBottom } = window.getComputedStyle(itemDomRef);
322
+ itemsHeight += itemDomRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
323
+ if (itemsHeight > listHeight) {
324
+ item.classList.add("ui5-sn-item-hidden");
330
325
  }
331
326
  });
327
+ this._flexibleItemNavigation._init();
332
328
  }
333
329
  _findFocusedItem(items) {
334
- let focusedItem;
335
- if (this.collapsed) {
336
- focusedItem = items.find(item => item.forcedTabIndex === "0");
337
- }
338
- else {
339
- focusedItem = this._getWithNestedItems(items, true).find(item => item.forcedTabIndex === "0");
340
- }
341
- return focusedItem;
342
- }
343
- _getWithNestedItems(items, expandedOnly = false) {
344
- let result = new Array();
345
- items.forEach(item => {
346
- result.push(item);
347
- if (!expandedOnly || item.expanded) {
348
- result = result.concat(item.items);
349
- }
350
- });
351
- return result;
330
+ return this._getFocusableItems(items).find(item => item.forcedTabIndex === "0");
331
+ }
332
+ _getSelectableItems(items) {
333
+ return items.reduce((result, item) => {
334
+ return result.concat(item.selectableItems);
335
+ }, new Array());
336
+ }
337
+ _getFocusableItems(items) {
338
+ return items.reduce((result, item) => {
339
+ return result.concat(item.focusableItems);
340
+ }, new Array());
341
+ }
342
+ _getAllItems(items) {
343
+ return items.reduce((result, item) => {
344
+ return result.concat(item.allItems);
345
+ }, new Array());
352
346
  }
353
347
  _findSelectedItem(items) {
354
- let selectedItem;
355
- if (this.collapsed) {
356
- selectedItem = items.find(item => item._selected);
357
- }
358
- else {
359
- selectedItem = this._getWithNestedItems(items).find(current => current.selected);
360
- }
361
- return selectedItem;
348
+ return this._getSelectableItems(items).find(item => item._selected);
349
+ }
350
+ get overflowItems() {
351
+ return this.items.reduce((result, item) => {
352
+ return result.concat(item.overflowItems);
353
+ }, new Array());
362
354
  }
363
355
  _handleItemClick(e, item) {
364
356
  if (item.selected && !this.collapsed) {
@@ -384,13 +376,14 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
384
376
  _handleOverflowClick() {
385
377
  this._isOverflow = true;
386
378
  this._menuPopoverItems = this._getOverflowItems();
387
- this.openOverflowMenu(this._overflowDom);
379
+ this.openOverflowMenu(this._overflowItem.getFocusDomRef());
388
380
  }
389
381
  _getOverflowItems() {
390
382
  const overflowClass = "ui5-sn-item-hidden";
391
383
  const result = [];
392
- this.items.forEach(item => {
393
- if (item.getDomRef().classList.contains(overflowClass)) {
384
+ this.overflowItems.forEach(item => {
385
+ if (item instanceof SideNavigationSelectableItemBase
386
+ && item.classList.contains(overflowClass)) {
394
387
  result.push(item);
395
388
  }
396
389
  });
@@ -403,18 +396,19 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
403
396
  if (!this.fireEvent("selection-change", { item }, true)) {
404
397
  return;
405
398
  }
406
- let items = this._getWithNestedItems(this.items);
407
- items = items.concat(this._getWithNestedItems(this.fixedItems));
399
+ let items = this._getSelectableItems(this.items);
400
+ items = items.concat(this._getSelectableItems(this.fixedItems));
408
401
  items.forEach(current => {
409
402
  current.selected = false;
410
403
  });
411
404
  item.selected = true;
412
- if (this.collapsed && item.getDomRef()?.classList.contains("ui5-sn-item-hidden")) {
413
- item.getDomRef().classList.remove("ui5-sn-item-hidden");
414
- }
415
405
  }
416
- get _overflowDom() {
417
- return this.shadowRoot.querySelector(".ui5-sn-item-overflow");
406
+ get _overflowItem() {
407
+ const overflowItem = this.shadowRoot.querySelector(".ui5-sn-item-overflow");
408
+ if (overflowItem) {
409
+ overflowItem.sideNavigation = this;
410
+ }
411
+ return overflowItem;
418
412
  }
419
413
  get isOverflow() {
420
414
  return this._isOverflow;
@@ -445,18 +439,18 @@ __decorate([
445
439
  __decorate([
446
440
  slot({ type: HTMLElement, invalidateOnChildChange: true, "default": true })
447
441
  ], SideNavigation.prototype, "items", void 0);
448
- __decorate([
449
- slot()
450
- ], SideNavigation.prototype, "header", void 0);
451
442
  __decorate([
452
443
  slot({ type: HTMLElement, invalidateOnChildChange: true })
453
444
  ], SideNavigation.prototype, "fixedItems", void 0);
445
+ __decorate([
446
+ slot()
447
+ ], SideNavigation.prototype, "header", void 0);
454
448
  __decorate([
455
449
  property({ type: Object })
456
450
  ], SideNavigation.prototype, "_popoverContents", void 0);
457
451
  __decorate([
458
452
  property({ type: Boolean })
459
- ], SideNavigation.prototype, "_inPopover", void 0);
453
+ ], SideNavigation.prototype, "inPopover", void 0);
460
454
  __decorate([
461
455
  property({ type: Object, multiple: true })
462
456
  ], SideNavigation.prototype, "_menuPopoverItems", void 0);
@@ -474,15 +468,16 @@ SideNavigation = SideNavigation_1 = __decorate([
474
468
  staticAreaStyles: SideNavigationPopoverCss,
475
469
  dependencies: [
476
470
  ResponsivePopover,
471
+ SideNavigationGroup,
477
472
  SideNavigationItem,
478
473
  SideNavigationSubItem,
479
- Icon,
480
474
  NavigationMenu,
481
475
  ],
482
476
  })
483
477
  /**
484
478
  * Fired when the selection has changed via user interaction
485
- * @param {SideNavigationItemBase} item the clicked item.
479
+ *
480
+ * @param {SideNavigationSelectableItemBase} item the clicked item.
486
481
  * @allowPreventDefault
487
482
  * @public
488
483
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SideNavigation.js","sourceRoot":"","sources":["../src/SideNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport ResponsivePopover from \"@ui5/webcomponents/dist/ResponsivePopover.js\";\nimport NavigationMenu from \"@ui5/webcomponents/dist/NavigationMenu.js\";\nimport type { MenuItemClickEventDetail } from \"@ui5/webcomponents/dist/Menu.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport {\n\tisPhone,\n\tisTablet,\n\tisCombi,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisSpace,\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport NavigationMode from \"@ui5/webcomponents-base/dist/types/NavigationMode.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/circle-task-2.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-right-arrow.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport type SideNavigationItemBase from \"./SideNavigationItemBase.js\";\nimport SideNavigationItem from \"./SideNavigationItem.js\";\nimport SideNavigationSubItem from \"./SideNavigationSubItem.js\";\nimport SideNavigationTemplate from \"./generated/templates/SideNavigationTemplate.lit.js\";\nimport SideNavigationPopoverTemplate from \"./generated/templates/SideNavigationPopoverTemplate.lit.js\";\n\nimport {\n\tSIDE_NAVIGATION_POPOVER_HIDDEN_TEXT,\n\tSIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC,\n\tSIDE_NAVIGATION_LIST_ARIA_ROLE_DESC,\n\tSIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport SideNavigationCss from \"./generated/themes/SideNavigation.css.js\";\nimport SideNavigationPopoverCss from \"./generated/themes/SideNavigationPopover.css.js\";\n\nconst PAGE_UP_DOWN_SIZE = 10;\n\ntype SideNavigationPopoverContents = {\n\titem: SideNavigationItem,\n\tsubItems: Array<SideNavigationSubItem>,\n};\n\ntype SideNavigationSelectionChangeEventDetail = {\n\titem: SideNavigationItemBase,\n};\n\ntype PopupSideNavigationItem = SideNavigationItem & { associatedItem: SideNavigationItemBase };\n\n// used for the inner side navigation used in the SideNavigationPopoverTemplate\ntype NavigationMenuClickEventDetail = MenuItemClickEventDetail & {\n\titem: Pick<MenuItemClickEventDetail, \"item\"> & {\n\t\tassociatedItem: SideNavigationItemBase,\n\t}\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `SideNavigation` is used as a standard menu in applications.\n * It consists of three containers: header (top-aligned), main navigation section (top-aligned) and the secondary section (bottom-aligned).\n *\n * - The header is meant for displaying user related information - profile data, avatar, etc.\n * - The main navigation section is related to the user’s current work context\n * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).\n *\n * ### Usage\n *\n * Use the available `ui5-side-navigation-item` and `ui5-side-navigation-sub-item` components to build your menu.\n * The items can consist of text only or an icon with text. The use or non-use of icons must be consistent for all items on one level.\n * You must not combine entries with and without icons on the same level. We strongly recommend that you do not use icons on the second level.\n *\n * ### Keyboard Handling\n *\n * #### Fast Navigation\n * This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigation.js\";`\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigationItem.js\";` (for `ui5-side-navigation-item`)\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js\";` (for `ui5-side-navigation-sub-item`)\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.8\n * @public\n */\n\n@customElement({\n\ttag: \"ui5-side-navigation\",\n\tfastNavigation: true,\n\trenderer: litRender,\n\ttemplate: SideNavigationTemplate,\n\tstaticAreaTemplate: SideNavigationPopoverTemplate,\n\tstyles: SideNavigationCss,\n\tstaticAreaStyles: SideNavigationPopoverCss,\n\tdependencies: [\n\t\tResponsivePopover,\n\t\tSideNavigationItem,\n\t\tSideNavigationSubItem,\n\t\tIcon,\n\t\tNavigationMenu,\n\t],\n})\n/**\n * Fired when the selection has changed via user interaction\n * @param {SideNavigationItemBase} item the clicked item.\n * @allowPreventDefault\n * @public\n */\n@event<SideNavigationSelectionChangeEventDetail>(\"selection-change\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\titem: { type: HTMLElement },\n\t},\n})\nclass SideNavigation extends UI5Element {\n\t/**\n\t * Defines whether the `ui5-side-navigation` is expanded or collapsed.\n\t * @public\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\tcollapsed!: boolean;\n\n\t/**\n\t * Defines the main items of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component\n\t * for the top-level items, and the `ui5-side-navigation-sub-item` component for second-level items, nested\n\t * inside the items.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\titems!: Array<SideNavigationItem>;\n\n\t/**\n\t * Defines the header of the `ui5-side-navigation`.\n\t *\n\t * **Note:** The header is displayed when the component is expanded - the property `collapsed` is false;\n\t * @public\n\t * @since 1.0.0-rc.11\n\t */\n\t@slot()\n\theader!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the fixed items at the bottom of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component\n\t * for the fixed items, and optionally the `ui5-side-navigation-sub-item` component to provide second-level items inside them.\n\t *\n\t * **Note:** In order to achieve the best user experience, it is recommended that you keep the fixed items \"flat\" (do not pass sub-items)\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tfixedItems!: Array<SideNavigationItem>;\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_popoverContents!: SideNavigationPopoverContents;\n\n\t@property({ type: Boolean })\n\t_inPopover!: boolean;\n\t_isOverflow!: boolean;\n\t_flexibleItemNavigation: ItemNavigation;\n\t_fixedItemNavigation: ItemNavigation;\n\n\t@property({ type: Object, multiple: true })\n\t_menuPopoverItems!: Array<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tisTouchDevice!: boolean;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._flexibleItemNavigation = new ItemNavigation(this, {\n\t\t\tskipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items\n\t\t\tnavigationMode: NavigationMode.Vertical,\n\t\t\tgetItemsCallback: () => this.getEnabledFlexibleItems(),\n\t\t});\n\n\t\tthis._fixedItemNavigation = new ItemNavigation(this, {\n\t\t\tskipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items\n\t\t\tnavigationMode: NavigationMode.Vertical,\n\t\t\tgetItemsCallback: () => this.getEnabledFixedItems(),\n\t\t});\n\n\t\tthis._handleResizeBound = this.handleResize.bind(this);\n\t\tthis._isOverflow = false;\n\t}\n\n\t_handleResizeBound: () => void;\n\n\tasync _onAfterPopoverOpen() {\n\t\t// as the tree/list inside the popover is never destroyed,\n\t\t// item navigation index should be managed, because items are\n\t\t// dynamically recreated and tabIndexes are not updated\n\t\tconst tree = await this.getPickerTree();\n\t\tconst selectedItem = tree._findSelectedItem(tree.items);\n\t\tif (selectedItem) {\n\t\t\tselectedItem.focus();\n\t\t} else {\n\t\t\ttree.items[0]?.focus();\n\t\t}\n\t}\n\n\tasync _onAfterMenuClose() {\n\t\tconst selectedItem = this._findSelectedItem(this.items)!;\n\n\t\tawait renderFinished();\n\t\tselectedItem.getDomRef().focus();\n\t}\n\n\tasync _onBeforePopoverOpen() {\n\t\tconst popover = await this.getPicker();\n\t\t(popover?.opener as HTMLElement)?.classList.add(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforePopoverClose() {\n\t\tconst popover = await this.getPicker();\n\t\t(popover?.opener as HTMLElement)?.classList.remove(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforeMenuOpen() {\n\t\tconst popover = await this.getOverflowPopover();\n\t\t(popover?.opener as HTMLElement)?.classList.add(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforeMenuClose() {\n\t\tconst popover = await this.getOverflowPopover();\n\t\t(popover?.opener as HTMLElement)?.classList.remove(\"ui5-sn-item-active\");\n\t}\n\n\tget accSideNavigationPopoverHiddenText() {\n\t\treturn SideNavigation.i18nBundle.getText(SIDE_NAVIGATION_POPOVER_HIDDEN_TEXT);\n\t}\n\n\tget ariaRoleDescNavigationList() {\n\t\tlet key = SIDE_NAVIGATION_LIST_ARIA_ROLE_DESC;\n\t\tif (this.collapsed) {\n\t\t\tkey = SIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC;\n\t\t}\n\n\t\treturn SideNavigation.i18nBundle.getText(key);\n\t}\n\n\tget overflowAccessibleName() {\n\t\treturn SideNavigation.i18nBundle.getText(SIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME);\n\t}\n\n\tasync handlePopupItemClick(e: KeyboardEvent | PointerEvent) {\n\t\tconst associatedItem = (e.target as PopupSideNavigationItem).associatedItem;\n\n\t\tassociatedItem.fireEvent(\"click\");\n\t\tif (associatedItem.selected) {\n\t\t\tthis.closePicker();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selectItem(associatedItem);\n\t\tthis.closePicker();\n\n\t\tawait renderFinished();\n\t\tthis._popoverContents.item.getDomRef().classList.add(\"ui5-sn-item-no-hover-effect\");\n\t}\n\n\thandleOverflowItemClick(e: CustomEvent<NavigationMenuClickEventDetail>) {\n\t\tconst associatedItem = e.detail.item.associatedItem;\n\n\t\tassociatedItem.fireEvent(\"click\");\n\t\tif (associatedItem.selected) {\n\t\t\tthis.closeMenu();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selectItem(associatedItem);\n\n\t\t// When subitem is selected in collapsed mode parent element should be focused\n\t\tif (associatedItem.nodeName.toLowerCase() === \"ui5-side-navigation-sub-item\") {\n\t\t\tconst parent = associatedItem.parentElement as SideNavigationItem;\n\t\t\tthis._flexibleItemNavigation.setCurrentItem(parent);\n\t\t} else {\n\t\t\tthis._flexibleItemNavigation.setCurrentItem(associatedItem);\n\t\t}\n\n\t\tthis.closeMenu();\n\t}\n\n\tasync getOverflowPopover() {\n\t\treturn (await this.getStaticAreaItemDomRef())!.querySelector<NavigationMenu>(\".ui5-side-navigation-overflow-menu\")!;\n\t}\n\n\tasync getPicker() {\n\t\treturn (await this.getStaticAreaItemDomRef())!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tasync openPicker(opener: HTMLElement) {\n\t\topener.classList.add(\"ui5-sn-item-active\");\n\n\t\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.opener = opener;\n\t\tresponsivePopover.showAt(opener);\n\t}\n\n\tasync openOverflowMenu(opener: HTMLElement) {\n\t\topener.classList.add(\"ui5-sn-item-active\");\n\n\t\tconst menu = await this.getOverflowPopover();\n\t\tmenu.opener = opener;\n\t\tmenu.showAt(opener);\n\t}\n\n\tasync closePicker() {\n\t\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.close();\n\t}\n\n\tasync closeMenu() {\n\t\tconst menu = await this.getOverflowPopover();\n\t\tmenu.close();\n\t}\n\n\tasync getPickerTree() {\n\t\tconst picker = await this.getPicker();\n\t\treturn picker.querySelector<SideNavigation>(\"[ui5-side-navigation]\")!;\n\t}\n\n\tget hasHeader() {\n\t\treturn !!this.header.length;\n\t}\n\n\tget showHeader() {\n\t\treturn this.hasHeader && !this.collapsed;\n\t}\n\n\tget hasFixedItems() {\n\t\treturn !!this.fixedItems.length;\n\t}\n\n\tget _rootRole() {\n\t\treturn this._inPopover ? \"none\" : undefined;\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\troot: {\n\t\t\t\t\"ui5-sn-collapsed\": this.collapsed,\n\t\t\t\t\"ui5-sn-in-popover\": this._inPopover,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetEnabledFixedItems() : Array<ITabbable> {\n\t\treturn this.getEnabledItems(this.fixedItems);\n\t}\n\n\tgetEnabledFlexibleItems() : Array<ITabbable> {\n\t\tif (!this._overflowDom) {\n\t\t\treturn this.getEnabledItems(this.items);\n\t\t}\n\n\t\treturn [...this.getEnabledItems(this.items), this._overflowDom];\n\t}\n\n\tgetEnabledItems(items: Array<SideNavigationItem>) : Array<ITabbable> {\n\t\tlet result = new Array<ITabbable>();\n\n\t\titems.forEach(item => {\n\t\t\tif (item.getDomRef()?.classList.contains(\"ui5-sn-item-hidden\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!item.disabled) {\n\t\t\t\tresult.push(item);\n\t\t\t}\n\n\t\t\tif (!this.collapsed && item.expanded) {\n\t\t\t\tresult = result.concat(item.items.filter(el => !el.disabled));\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\tfocusItem(item: SideNavigationItemBase) {\n\t\tif (item.isFixedItem) {\n\t\t\tthis._fixedItemNavigation.setCurrentItem(item);\n\t\t} else {\n\t\t\tthis._flexibleItemNavigation.setCurrentItem(item);\n\t\t}\n\t}\n\n\tonAfterRendering() {\n\t\tconst activeElement = this.shadowRoot!.activeElement;\n\t\tconst flexibleDom = this.shadowRoot!.querySelector(\".ui5-sn-flexible\")!;\n\t\tif (!flexibleDom.contains(activeElement)) {\n\t\t\tconst selectedItem = this._findSelectedItem(this.items);\n\t\t\tif (selectedItem) {\n\t\t\t\tthis._flexibleItemNavigation.setCurrentItem(selectedItem);\n\t\t\t} else {\n\t\t\t\tconst focusedItem = this._findFocusedItem(this.items);\n\t\t\t\tif (!focusedItem) {\n\t\t\t\t\tthis._flexibleItemNavigation.setCurrentItem(this.items[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst fixedDom = this.shadowRoot!.querySelector(\".ui5-sn-fixed\");\n\t\tif (!fixedDom?.contains(activeElement)) {\n\t\t\tconst selectedItem = this._findSelectedItem(this.fixedItems);\n\t\t\tif (selectedItem) {\n\t\t\t\tthis._fixedItemNavigation.setCurrentItem(selectedItem);\n\t\t\t} else {\n\t\t\t\tconst focusedItem = this._findFocusedItem(this.fixedItems);\n\t\t\t\tif (!focusedItem) {\n\t\t\t\t\tthis._fixedItemNavigation.setCurrentItem(this.fixedItems[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.collapsed) {\n\t\t\tthis.handleResize();\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResizeBound);\n\n\t\tthis.isTouchDevice = isPhone() || (isTablet() && !isCombi());\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResizeBound);\n\t}\n\n\thandleResize() {\n\t\tconst domRef = this.getDomRef(),\n\t\t\toverflowItemRef = domRef?.querySelector(\".ui5-sn-item-overflow\");\n\n\t\tthis._updateOverflowItems();\n\n\t\tif (this._getOverflowItems().length > 0 && this.collapsed) {\n\t\t\toverflowItemRef?.classList.remove(\"ui5-sn-item-hidden\");\n\t\t} else {\n\t\t\toverflowItemRef?.classList.add(\"ui5-sn-item-hidden\");\n\t\t}\n\t}\n\n\t_updateOverflowItems() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!this.collapsed || !domRef) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst overflowItemRef:HTMLElement = domRef.querySelector(\".ui5-sn-item-overflow\")!;\n\t\tconst flexibleContentDomRef:HTMLElement = domRef.querySelector(\".ui5-sn-flexible\")!;\n\t\tif (!overflowItemRef) {\n\t\t\treturn null;\n\t\t}\n\n\t\toverflowItemRef.classList.add(\"ui5-sn-item-hidden\");\n\n\t\tconst itemsRefs = [...domRef.querySelectorAll<HTMLElement>(\".ui5-sn-flexible .ui5-sn-item-level1:not(.ui5-sn-item-overflow)\")];\n\n\t\tlet itemsHeight = itemsRefs.reduce<number>((sum, itemRef) => {\n\t\t\titemRef.classList.remove(\"ui5-sn-item-hidden\");\n\t\t\treturn sum + itemRef.offsetHeight;\n\t\t}, 0);\n\n\t\tconst { paddingTop, paddingBottom } = window.getComputedStyle(flexibleContentDomRef);\n\t\tconst listHeight = flexibleContentDomRef?.offsetHeight - parseInt(paddingTop) - parseInt(paddingBottom);\n\n\t\toverflowItemRef.classList.remove(\"ui5-sn-item-hidden\");\n\n\t\titemsHeight = overflowItemRef.offsetHeight;\n\t\tconst oSelectedItemRef = domRef.querySelector(\".ui5-sn-item-selected\") as HTMLElement;\n\t\tif (oSelectedItemRef) {\n\t\t\tconst { marginTop, marginBottom } = window.getComputedStyle(oSelectedItemRef);\n\n\t\t\titemsHeight += oSelectedItemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);\n\t\t}\n\n\t\titemsRefs.forEach(itemRef => {\n\t\t\tif (itemRef === oSelectedItemRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { marginTop, marginBottom } = window.getComputedStyle(itemRef);\n\t\t\titemsHeight += itemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);\n\n\t\t\tif (itemsHeight >= listHeight) {\n\t\t\t\titemRef.classList.add(\"ui5-sn-item-hidden\");\n\t\t\t}\n\t\t});\n\t}\n\n\t_findFocusedItem(items: Array<SideNavigationItem>) : SideNavigationItemBase | undefined {\n\t\tlet focusedItem;\n\n\t\tif (this.collapsed) {\n\t\t\tfocusedItem = items.find(item => item.forcedTabIndex === \"0\");\n\t\t} else {\n\t\t\tfocusedItem = this._getWithNestedItems(items, true).find(item => item.forcedTabIndex === \"0\");\n\t\t}\n\n\t\treturn focusedItem;\n\t}\n\n\t_getWithNestedItems(items: Array<SideNavigationItem>, expandedOnly = false): Array<SideNavigationItemBase> {\n\t\tlet result = new Array<SideNavigationItemBase>();\n\n\t\titems.forEach(item => {\n\t\t\tresult.push(item);\n\n\t\t\tif (!expandedOnly || item.expanded) {\n\t\t\t\tresult = result.concat(item.items);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t_findSelectedItem(items: Array<SideNavigationItem>) : SideNavigationItemBase | undefined {\n\t\tlet selectedItem;\n\n\t\tif (this.collapsed) {\n\t\t\tselectedItem = items.find(item => item._selected);\n\t\t} else {\n\t\t\tselectedItem = this._getWithNestedItems(items).find(current => current.selected);\n\t\t}\n\n\t\treturn selectedItem;\n\t}\n\n\t_handleItemClick(e: KeyboardEvent | PointerEvent | CustomEvent<NavigationMenuClickEventDetail>, item: SideNavigationItemBase) {\n\t\tif (item.selected && !this.collapsed) {\n\t\t\titem.fireEvent(\"click\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.collapsed && item instanceof SideNavigationItem && item.items.length) {\n\t\t\te.preventDefault();\n\t\t\tthis._isOverflow = false;\n\n\t\t\tthis._popoverContents = {\n\t\t\t\titem,\n\t\t\t\tsubItems: item.items,\n\t\t\t};\n\n\t\t\tthis.openPicker(item.getFocusDomRef() as HTMLElement);\n\t\t} else {\n\t\t\titem.fireEvent(\"click\");\n\n\t\t\tif (!item.selected) {\n\t\t\t\tthis._selectItem(item);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleOverflowClick() {\n\t\tthis._isOverflow = true;\n\t\tthis._menuPopoverItems = this._getOverflowItems();\n\n\t\tthis.openOverflowMenu(this._overflowDom as HTMLElement);\n\t}\n\n\t_getOverflowItems(): Array<SideNavigationItem> {\n\t\tconst overflowClass = \"ui5-sn-item-hidden\";\n\t\tconst result: Array<SideNavigationItem> = [];\n\n\t\tthis.items.forEach(item => {\n\t\t\tif (item.getDomRef().classList.contains(overflowClass)) {\n\t\t\t\t result.push(item);\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\t_selectItem(item: SideNavigationItemBase) {\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.fireEvent<SideNavigationSelectionChangeEventDetail>(\"selection-change\", { item }, true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet items = this._getWithNestedItems(this.items);\n\t\titems = items.concat(this._getWithNestedItems(this.fixedItems));\n\n\t\titems.forEach(current => {\n\t\t\tcurrent.selected = false;\n\t\t});\n\n\t\titem.selected = true;\n\n\t\tif (this.collapsed && item.getDomRef()?.classList.contains(\"ui5-sn-item-hidden\")) {\n\t\t\titem.getDomRef().classList.remove(\"ui5-sn-item-hidden\");\n\t\t}\n\t}\n\n\tget _overflowDom() {\n\t\treturn this.shadowRoot!.querySelector<SideNavigationItem>(\".ui5-sn-item-overflow\");\n\t}\n\n\tget isOverflow() {\n\t\treturn this._isOverflow;\n\t}\n\n\t_onkeydownOverflow(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._handleOverflowClick();\n\t\t}\n\t}\n\n\t_onkeyupOverflow(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\tthis._handleOverflowClick();\n\t\t}\n\t}\n\tstatic async onDefine() {\n\t\t[SideNavigation.i18nBundle] = await Promise.all([\n\t\t\tgetI18nBundle(\"@ui5/webcomponents-fiori\"),\n\t\t\tsuper.onDefine(),\n\t\t]);\n\t}\n}\n\nSideNavigation.define();\n\nexport default SideNavigation;\n\nexport type {\n\tSideNavigationSelectionChangeEventDetail,\n};\n"]}
1
+ {"version":3,"file":"SideNavigation.js","sourceRoot":"","sources":["../src/SideNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport ResponsivePopover from \"@ui5/webcomponents/dist/ResponsivePopover.js\";\nimport NavigationMenu from \"@ui5/webcomponents/dist/NavigationMenu.js\";\nimport type { MenuItemClickEventDetail } from \"@ui5/webcomponents/dist/Menu.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport {\n\tisPhone,\n\tisTablet,\n\tisCombi,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisSpace,\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport NavigationMode from \"@ui5/webcomponents-base/dist/types/NavigationMode.js\";\nimport SideNavigationItemBase from \"./SideNavigationItemBase.js\";\nimport SideNavigationSelectableItemBase from \"./SideNavigationSelectableItemBase.js\";\nimport SideNavigationItem from \"./SideNavigationItem.js\";\nimport SideNavigationSubItem from \"./SideNavigationSubItem.js\";\nimport SideNavigationGroup from \"./SideNavigationGroup.js\";\nimport SideNavigationTemplate from \"./generated/templates/SideNavigationTemplate.lit.js\";\nimport SideNavigationPopoverTemplate from \"./generated/templates/SideNavigationPopoverTemplate.lit.js\";\n\nimport {\n\tSIDE_NAVIGATION_POPOVER_HIDDEN_TEXT,\n\tSIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC,\n\tSIDE_NAVIGATION_LIST_ARIA_ROLE_DESC,\n\tSIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport SideNavigationCss from \"./generated/themes/SideNavigation.css.js\";\nimport SideNavigationPopoverCss from \"./generated/themes/SideNavigationPopover.css.js\";\n\nconst PAGE_UP_DOWN_SIZE = 10;\n\ntype SideNavigationPopoverContents = {\n\titem: SideNavigationItem,\n\tsubItems: Array<SideNavigationSubItem>,\n};\n\ntype SideNavigationSelectionChangeEventDetail = {\n\titem: SideNavigationItemBase,\n};\n\ntype PopupSideNavigationItem = SideNavigationItem & { associatedItem: SideNavigationSelectableItemBase };\n\n// used for the inner side navigation used in the SideNavigationPopoverTemplate\ntype NavigationMenuClickEventDetail = MenuItemClickEventDetail & {\n\titem: Pick<MenuItemClickEventDetail, \"item\"> & {\n\t\tassociatedItem: SideNavigationSelectableItemBase,\n\t}\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `SideNavigation` is used as a standard menu in applications.\n * It consists of three containers: header (top-aligned), main navigation section (top-aligned) and the secondary section (bottom-aligned).\n *\n * - The header is meant for displaying user related information - profile data, avatar, etc.\n * - The main navigation section is related to the user’s current work context\n * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).\n *\n * ### Usage\n *\n * Use the available `ui5-side-navigation-group`, `ui5-side-navigation-item`\n * and `ui5-side-navigation-sub-item` components to build your menu.\n * The items can consist of text only or an icon with text. The use or non-use of icons must be consistent for all items on one level.\n * You must not combine entries with and without icons on the same level. We strongly recommend that you do not use icons on the second level.\n *\n * ### Keyboard Handling\n *\n * ### Fast Navigation\n * This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigation.js\"`\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigationGroup.js\";` (for `ui5-side-navigation-group`)\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigationItem.js\";` (for `ui5-side-navigation-item`)\n *\n * `import \"@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js\";` (for `ui5-side-navigation-sub-item`)\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.8\n * @public\n */\n\n@customElement({\n\ttag: \"ui5-side-navigation\",\n\tfastNavigation: true,\n\trenderer: litRender,\n\ttemplate: SideNavigationTemplate,\n\tstaticAreaTemplate: SideNavigationPopoverTemplate,\n\tstyles: SideNavigationCss,\n\tstaticAreaStyles: SideNavigationPopoverCss,\n\tdependencies: [\n\t\tResponsivePopover,\n\t\tSideNavigationGroup,\n\t\tSideNavigationItem,\n\t\tSideNavigationSubItem,\n\t\tNavigationMenu,\n\t],\n})\n/**\n * Fired when the selection has changed via user interaction\n *\n * @param {SideNavigationSelectableItemBase} item the clicked item.\n * @allowPreventDefault\n * @public\n */\n@event<SideNavigationSelectionChangeEventDetail>(\"selection-change\", {\n\tdetail: {\n\t\t/**\n\t\t * @public\n\t\t */\n\t\titem: { type: HTMLElement },\n\t},\n})\nclass SideNavigation extends UI5Element {\n\t/**\n\t * Defines whether the `ui5-side-navigation` is expanded or collapsed.\n\t *\n\t * @public\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\tcollapsed!: boolean;\n\n\t/**\n\t * Defines the main items of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component\n\t * for the top-level items, and the `ui5-side-navigation-sub-item` component for second-level items, nested\n\t * inside the items.\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\titems!: Array<SideNavigationItem | SideNavigationGroup>;\n\n\t/**\n\t * Defines the fixed items at the bottom of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component\n\t * for the fixed items, and optionally the `ui5-side-navigation-sub-item` component to provide second-level items inside them.\n\t *\n\t * **Note:** In order to achieve the best user experience, it is recommended that you keep the fixed items \"flat\" (do not pass sub-items)\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tfixedItems!: Array<SideNavigationItem | SideNavigationGroup>;\n\n\t/**\n\t * Defines the header of the `ui5-side-navigation`.\n\t *\n\t * **Note:** The header is displayed when the component is expanded - the property `collapsed` is false;\n\t *\n\t * @public\n\t * @since 1.0.0-rc.11\n\t */\n\t@slot()\n\theader!: Array<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_popoverContents!: SideNavigationPopoverContents;\n\n\t@property({ type: Boolean })\n\tinPopover!: boolean;\n\t_isOverflow!: boolean;\n\t_flexibleItemNavigation: ItemNavigation;\n\t_fixedItemNavigation: ItemNavigation;\n\n\t@property({ type: Object, multiple: true })\n\t_menuPopoverItems!: Array<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tisTouchDevice!: boolean;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._flexibleItemNavigation = new ItemNavigation(this, {\n\t\t\tskipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items\n\t\t\tnavigationMode: NavigationMode.Vertical,\n\t\t\tgetItemsCallback: () => this.getEnabledFlexibleItems(),\n\t\t});\n\n\t\tthis._fixedItemNavigation = new ItemNavigation(this, {\n\t\t\tskipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items\n\t\t\tnavigationMode: NavigationMode.Vertical,\n\t\t\tgetItemsCallback: () => this.getEnabledFixedItems(),\n\t\t});\n\n\t\tthis._handleResizeBound = this.handleResize.bind(this);\n\t\tthis._isOverflow = false;\n\t}\n\n\t_handleResizeBound: () => void;\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tthis._getAllItems(this.items).concat(this._getAllItems(this.fixedItems)).forEach(item => {\n\t\t\titem.sideNavCollapsed = this.collapsed;\n\t\t\titem.inPopover = this.inPopover;\n\t\t\titem.sideNavigation = this;\n\t\t});\n\t}\n\n\tasync _onAfterPopoverOpen() {\n\t\t// as the tree/list inside the popover is never destroyed,\n\t\t// item navigation index should be managed, because items are\n\t\t// dynamically recreated and tabIndexes are not updated\n\t\tconst tree = await this.getPickerTree();\n\t\tconst selectedItem = tree._findSelectedItem(tree.items);\n\t\tif (selectedItem) {\n\t\t\tselectedItem.focus();\n\t\t} else {\n\t\t\ttree.items[0]?.focus();\n\t\t}\n\t}\n\n\tasync _onBeforePopoverOpen() {\n\t\tconst popover = await this.getPicker();\n\t\t(popover?.opener as HTMLElement)?.classList.add(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforePopoverClose() {\n\t\tconst popover = await this.getPicker();\n\t\t(popover?.opener as HTMLElement)?.classList.remove(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforeMenuOpen() {\n\t\tconst popover = await this.getOverflowPopover();\n\t\t(popover?.opener as HTMLElement)?.classList.add(\"ui5-sn-item-active\");\n\t}\n\n\tasync _onBeforeMenuClose() {\n\t\tconst popover = await this.getOverflowPopover();\n\t\t(popover?.opener as HTMLElement)?.classList.remove(\"ui5-sn-item-active\");\n\t}\n\n\tget accSideNavigationPopoverHiddenText() {\n\t\treturn SideNavigation.i18nBundle.getText(SIDE_NAVIGATION_POPOVER_HIDDEN_TEXT);\n\t}\n\n\tget ariaRoleDescNavigationList() {\n\t\tlet key = SIDE_NAVIGATION_LIST_ARIA_ROLE_DESC;\n\t\tif (this.collapsed) {\n\t\t\tkey = SIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC;\n\t\t}\n\n\t\treturn SideNavigation.i18nBundle.getText(key);\n\t}\n\n\tget overflowAccessibleName() {\n\t\treturn SideNavigation.i18nBundle.getText(SIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME);\n\t}\n\n\tasync handlePopupItemClick(e: KeyboardEvent | PointerEvent) {\n\t\tconst associatedItem = (e.target as PopupSideNavigationItem).associatedItem;\n\n\t\tassociatedItem.fireEvent(\"click\");\n\t\tif (associatedItem.selected) {\n\t\t\tthis.closePicker();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selectItem(associatedItem);\n\t\tthis.closePicker();\n\n\t\tawait renderFinished();\n\t\tthis._popoverContents.item.getDomRef()!.classList.add(\"ui5-sn-item-no-hover-effect\");\n\t}\n\n\tasync handleOverflowItemClick(e: CustomEvent<NavigationMenuClickEventDetail>) {\n\t\tconst associatedItem = e.detail?.item.associatedItem;\n\n\t\tassociatedItem.fireEvent(\"click\");\n\t\tif (associatedItem.selected) {\n\t\t\tthis.closeMenu();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selectItem(associatedItem);\n\n\t\tthis.closeMenu();\n\t\tawait renderFinished();\n\n\t\t// When subitem is selected in collapsed mode parent element should be focused\n\t\tif (associatedItem.nodeName.toLowerCase() === \"ui5-side-navigation-sub-item\") {\n\t\t\tconst parent = associatedItem.parentElement as SideNavigationItem;\n\t\t\tthis.focusItem(parent);\n\t\t\tparent?.focus();\n\t\t} else {\n\t\t\tthis.focusItem(associatedItem);\n\t\t\tassociatedItem?.focus();\n\t\t}\n\t}\n\n\tasync getOverflowPopover() {\n\t\treturn (await this.getStaticAreaItemDomRef())!.querySelector<NavigationMenu>(\".ui5-side-navigation-overflow-menu\")!;\n\t}\n\n\tasync getPicker() {\n\t\treturn (await this.getStaticAreaItemDomRef())!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tasync openPicker(opener: HTMLElement) {\n\t\topener.classList.add(\"ui5-sn-item-active\");\n\n\t\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.opener = opener;\n\t\tresponsivePopover.showAt(opener);\n\t}\n\n\tasync openOverflowMenu(opener: HTMLElement) {\n\t\topener.classList.add(\"ui5-sn-item-active\");\n\n\t\tconst menu = await this.getOverflowPopover();\n\t\tmenu.opener = opener;\n\t\tmenu.showAt(opener);\n\t}\n\n\tasync closePicker() {\n\t\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.close();\n\t}\n\n\tasync closeMenu() {\n\t\tconst menu = await this.getOverflowPopover();\n\t\tmenu.close();\n\t}\n\n\tasync getPickerTree() {\n\t\tconst picker = await this.getPicker();\n\t\treturn picker.querySelector<SideNavigation>(\"[ui5-side-navigation]\")!;\n\t}\n\n\tget hasHeader() {\n\t\treturn !!this.header.length;\n\t}\n\n\tget showHeader() {\n\t\treturn this.hasHeader && !this.collapsed;\n\t}\n\n\tget hasFixedItems() {\n\t\treturn !!this.fixedItems.length;\n\t}\n\n\tget _rootRole() {\n\t\treturn this.inPopover ? \"none\" : undefined;\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\troot: {\n\t\t\t\t\"ui5-sn-collapsed\": this.collapsed,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetEnabledFixedItems() : Array<ITabbable> {\n\t\treturn this.getEnabledItems(this.fixedItems);\n\t}\n\n\tgetEnabledFlexibleItems() : Array<ITabbable> {\n\t\tconst items = this.getEnabledItems(this.items);\n\n\t\tif (this._overflowItem) {\n\t\t\titems.push(this._overflowItem);\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetEnabledItems(items: Array<SideNavigationItem | SideNavigationGroup>) : Array<ITabbable> {\n\t\tconst result = new Array<ITabbable>();\n\n\t\tthis._getFocusableItems(items).forEach(item => {\n\t\t\tif (item.classList.contains(\"ui5-sn-item-hidden\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!item.disabled) {\n\t\t\t\tresult.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfocusItem(item: SideNavigationItemBase) {\n\t\tif (item.isFixedItem) {\n\t\t\tthis._fixedItemNavigation.setCurrentItem(item);\n\t\t} else {\n\t\t\tthis._flexibleItemNavigation.setCurrentItem(item);\n\t\t}\n\t}\n\n\tonAfterRendering() {\n\t\tif (!this.getDomRef()?.matches(\":focus-within\")) {\n\t\t\tlet selectedItem = this._findSelectedItem(this.items);\n\t\t\tif (selectedItem) {\n\t\t\t\tthis._flexibleItemNavigation.setCurrentItem(selectedItem);\n\t\t\t}\n\n\t\t\tselectedItem = this._findSelectedItem(this.fixedItems);\n\t\t\tif (selectedItem) {\n\t\t\t\tthis._fixedItemNavigation.setCurrentItem(selectedItem);\n\t\t\t}\n\t\t}\n\n\t\tif (this.collapsed) {\n\t\t\tthis.handleResize();\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._handleResizeBound);\n\n\t\tthis.isTouchDevice = isPhone() || (isTablet() && !isCombi());\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._handleResizeBound);\n\t}\n\n\thandleResize() {\n\t\tthis._updateOverflowItems();\n\t}\n\n\t_updateOverflowItems() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (!this.collapsed || !domRef) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst overflowItem = this._overflowItem!;\n\t\tconst flexibleContentDomRef : HTMLElement = domRef.querySelector(\".ui5-sn-flexible\")!;\n\t\tif (!overflowItem) {\n\t\t\treturn null;\n\t\t}\n\n\t\toverflowItem.classList.add(\"ui5-sn-item-hidden\");\n\n\t\tconst overflowItems = this.overflowItems;\n\n\t\tlet itemsHeight = overflowItems.reduce<number>((sum, itemRef) => {\n\t\t\titemRef.classList.remove(\"ui5-sn-item-hidden\");\n\t\t\treturn sum + itemRef.offsetHeight;\n\t\t}, 0);\n\n\t\tconst { paddingTop, paddingBottom } = window.getComputedStyle(flexibleContentDomRef);\n\t\tconst listHeight = flexibleContentDomRef?.offsetHeight - parseInt(paddingTop) - parseInt(paddingBottom);\n\n\t\tif (itemsHeight <= listHeight) {\n\t\t\treturn;\n\t\t}\n\n\t\toverflowItem.classList.remove(\"ui5-sn-item-hidden\");\n\n\t\titemsHeight = overflowItem.offsetHeight;\n\n\t\tconst selectedItem = overflowItems.find(item => {\n\t\t\treturn item instanceof SideNavigationSelectableItemBase && item._selected;\n\t\t});\n\n\t\tif (selectedItem && selectedItem instanceof SideNavigationItemBase) {\n\t\t\tconst selectedItemDomRef = selectedItem.getDomRef();\n\t\t\tconst { marginTop, marginBottom } = window.getComputedStyle(selectedItemDomRef!);\n\n\t\t\titemsHeight += selectedItemDomRef!.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);\n\t\t}\n\n\t\toverflowItems.forEach(item => {\n\t\t\tif (item === selectedItem) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet itemDomRef;\n\n\t\t\tif (item instanceof SideNavigationItemBase) {\n\t\t\t\titemDomRef = item.getDomRef()!;\n\t\t\t} else {\n\t\t\t\titemDomRef = item;\n\t\t\t}\n\n\t\t\tconst { marginTop, marginBottom } = window.getComputedStyle(itemDomRef);\n\t\t\titemsHeight += itemDomRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);\n\n\t\t\tif (itemsHeight > listHeight) {\n\t\t\t\titem.classList.add(\"ui5-sn-item-hidden\");\n\t\t\t}\n\t\t});\n\n\t\tthis._flexibleItemNavigation._init();\n\t}\n\n\t_findFocusedItem(items: Array<SideNavigationItem | SideNavigationGroup>) : SideNavigationItemBase | undefined {\n\t\treturn this._getFocusableItems(items).find(item => item.forcedTabIndex === \"0\");\n\t}\n\n\t_getSelectableItems(items: Array<SideNavigationItem | SideNavigationGroup>) : Array<SideNavigationSelectableItemBase> {\n\t\treturn items.reduce((result, item) => {\n\t\t\treturn result.concat(item.selectableItems);\n\t\t}, new Array<SideNavigationSelectableItemBase>());\n\t}\n\n\t_getFocusableItems(items: Array<SideNavigationItem | SideNavigationGroup>) : Array<SideNavigationItemBase> {\n\t\treturn items.reduce((result, item) => {\n\t\t\treturn result.concat(item.focusableItems);\n\t\t}, new Array<SideNavigationItemBase>());\n\t}\n\n\t_getAllItems(items: Array<SideNavigationItem | SideNavigationGroup>) : Array<SideNavigationItemBase> {\n\t\treturn items.reduce((result, item) => {\n\t\t\treturn result.concat(item.allItems);\n\t\t}, new Array<SideNavigationItemBase>());\n\t}\n\n\t_findSelectedItem(items: Array<SideNavigationItem | SideNavigationGroup>) : SideNavigationSelectableItemBase | undefined {\n\t\treturn this._getSelectableItems(items).find(item => item._selected);\n\t}\n\n\tget overflowItems() : Array<HTMLElement> {\n\t\treturn this.items.reduce((result, item) => {\n\t\t\treturn result.concat(item.overflowItems);\n\t\t}, new Array<HTMLElement>());\n\t}\n\n\t_handleItemClick(e: KeyboardEvent | PointerEvent, item: SideNavigationSelectableItemBase) {\n\t\tif (item.selected && !this.collapsed) {\n\t\t\titem.fireEvent(\"click\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.collapsed && item instanceof SideNavigationItem && item.items.length) {\n\t\t\te.preventDefault();\n\t\t\tthis._isOverflow = false;\n\n\t\t\tthis._popoverContents = {\n\t\t\t\titem,\n\t\t\t\tsubItems: item.items,\n\t\t\t};\n\n\t\t\tthis.openPicker(item.getFocusDomRef() as HTMLElement);\n\t\t} else {\n\t\t\titem.fireEvent(\"click\");\n\n\t\t\tif (!item.selected) {\n\t\t\t\tthis._selectItem(item);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleOverflowClick() {\n\t\tthis._isOverflow = true;\n\t\tthis._menuPopoverItems = this._getOverflowItems();\n\n\t\tthis.openOverflowMenu(this._overflowItem!.getFocusDomRef() as HTMLElement);\n\t}\n\n\t_getOverflowItems(): Array<SideNavigationSelectableItemBase> {\n\t\tconst overflowClass = \"ui5-sn-item-hidden\";\n\t\tconst result: Array<SideNavigationSelectableItemBase> = [];\n\n\t\tthis.overflowItems.forEach(item => {\n\t\t\tif (item instanceof SideNavigationSelectableItemBase\n\t\t\t\t&& item.classList.contains(overflowClass)) {\n\t\t\t\t result.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t_selectItem(item: SideNavigationSelectableItemBase) {\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.fireEvent<SideNavigationSelectionChangeEventDetail>(\"selection-change\", { item }, true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet items = this._getSelectableItems(this.items);\n\t\titems = items.concat(this._getSelectableItems(this.fixedItems));\n\n\t\titems.forEach(current => {\n\t\t\tcurrent.selected = false;\n\t\t});\n\n\t\titem.selected = true;\n\t}\n\n\tget _overflowItem() {\n\t\tconst overflowItem = this.shadowRoot!.querySelector<SideNavigationItem>(\".ui5-sn-item-overflow\");\n\t\tif (overflowItem) {\n\t\t\toverflowItem.sideNavigation = this;\n\t\t}\n\n\t\treturn overflowItem;\n\t}\n\n\tget isOverflow() {\n\t\treturn this._isOverflow;\n\t}\n\n\t_onkeydownOverflow(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._handleOverflowClick();\n\t\t}\n\t}\n\n\t_onkeyupOverflow(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\tthis._handleOverflowClick();\n\t\t}\n\t}\n\tstatic async onDefine() {\n\t\t[SideNavigation.i18nBundle] = await Promise.all([\n\t\t\tgetI18nBundle(\"@ui5/webcomponents-fiori\"),\n\t\t\tsuper.onDefine(),\n\t\t]);\n\t}\n}\n\nSideNavigation.define();\n\nexport default SideNavigation;\n\nexport type {\n\tSideNavigationSelectionChangeEventDetail,\n};\n"]}
@@ -0,0 +1,55 @@
1
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
2
+ import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
3
+ import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
4
+ import SideNavigationItemBase from "./SideNavigationItemBase.js";
5
+ import type SideNavigationSelectableItemBase from "./SideNavigationSelectableItemBase.js";
6
+ import type SideNavigationItem from "./SideNavigationItem.js";
7
+ /**
8
+ * @class
9
+ *
10
+ * ### Overview
11
+ *
12
+ * Represents a group of navigation actions within `ui5-side-navigation`.
13
+ * The `ui5-side-navigation-group` can only be used inside a `ui5-side-navigation`.
14
+ *
15
+ * ### ES6 Module Import
16
+ *
17
+ * `import "@ui5/webcomponents-fiori/dist/SideNavigationGroup.js";`
18
+ *
19
+ * @constructor
20
+ * @extends SideNavigationItemBase
21
+ * @public
22
+ * @abstract
23
+ * @since 1.24.0
24
+ */
25
+ declare class SideNavigationGroup extends SideNavigationItemBase {
26
+ /**
27
+ * Defines if the item is expanded
28
+ *
29
+ * @public
30
+ * @default false
31
+ */
32
+ expanded: boolean;
33
+ /**
34
+ * Defines nested items by passing `ui5-side-navigation-item` to the default slot.
35
+ *
36
+ * @public
37
+ */
38
+ items: Array<SideNavigationItem>;
39
+ static i18nBundle: I18nBundle;
40
+ get overflowItems(): Array<HTMLElement>;
41
+ get selectableItems(): Array<SideNavigationSelectableItemBase>;
42
+ get focusableItems(): Array<SideNavigationItemBase>;
43
+ get allItems(): Array<SideNavigationItemBase>;
44
+ get _groupId(): string | undefined;
45
+ get _expanded(): boolean | undefined;
46
+ get _toggleIconName(): "navigation-right-arrow" | "navigation-down-arrow";
47
+ get belowGroupClassName(): "" | "ui5-sn-item-group-below-group";
48
+ get accDescription(): string;
49
+ _onkeydown: (e: KeyboardEvent) => void;
50
+ _onclick: () => void;
51
+ _onfocusin: (e: FocusEvent) => void;
52
+ _toggle(): void;
53
+ static onDefine(): Promise<void>;
54
+ }
55
+ export default SideNavigationGroup;