@ui5/webcomponents-fiori 1.21.0 → 1.22.0-rc.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 (283) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/Bar.d.ts +6 -27
  3. package/dist/Bar.js +3 -14
  4. package/dist/Bar.js.map +1 -1
  5. package/dist/BarcodeScannerDialog.d.ts +2 -13
  6. package/dist/BarcodeScannerDialog.js +10 -12
  7. package/dist/BarcodeScannerDialog.js.map +1 -1
  8. package/dist/DynamicSideContent.d.ts +9 -35
  9. package/dist/DynamicSideContent.js +15 -7
  10. package/dist/DynamicSideContent.js.map +1 -1
  11. package/dist/FilterItem.d.ts +3 -14
  12. package/dist/FilterItem.js +1 -5
  13. package/dist/FilterItem.js.map +1 -1
  14. package/dist/FilterItemOption.d.ts +3 -11
  15. package/dist/FilterItemOption.js +1 -5
  16. package/dist/FilterItemOption.js.map +1 -1
  17. package/dist/FlexibleColumnLayout.d.ts +13 -51
  18. package/dist/FlexibleColumnLayout.js +28 -26
  19. package/dist/FlexibleColumnLayout.js.map +1 -1
  20. package/dist/IllustratedMessage.d.ts +9 -35
  21. package/dist/IllustratedMessage.js +1 -4
  22. package/dist/IllustratedMessage.js.map +1 -1
  23. package/dist/Interfaces.d.ts +28 -88
  24. package/dist/Interfaces.js +2 -113
  25. package/dist/Interfaces.js.map +1 -1
  26. package/dist/MediaGallery.d.ts +9 -26
  27. package/dist/MediaGallery.js +4 -8
  28. package/dist/MediaGallery.js.map +1 -1
  29. package/dist/MediaGalleryItem.d.ts +7 -22
  30. package/dist/MediaGalleryItem.js +2 -5
  31. package/dist/MediaGalleryItem.js.map +1 -1
  32. package/dist/NotificationAction.d.ts +7 -20
  33. package/dist/NotificationAction.js +3 -9
  34. package/dist/NotificationAction.js.map +1 -1
  35. package/dist/NotificationListGroupItem.d.ts +5 -27
  36. package/dist/NotificationListGroupItem.js +1 -16
  37. package/dist/NotificationListGroupItem.js.map +1 -1
  38. package/dist/NotificationListItem.d.ts +3 -27
  39. package/dist/NotificationListItem.js +2 -15
  40. package/dist/NotificationListItem.js.map +1 -1
  41. package/dist/NotificationListItemBase.d.ts +7 -32
  42. package/dist/NotificationListItemBase.js +15 -15
  43. package/dist/NotificationListItemBase.js.map +1 -1
  44. package/dist/Page.d.ts +7 -35
  45. package/dist/Page.js +2 -13
  46. package/dist/Page.js.map +1 -1
  47. package/dist/ProductSwitch.d.ts +3 -10
  48. package/dist/ProductSwitch.js +1 -5
  49. package/dist/ProductSwitch.js.map +1 -1
  50. package/dist/ProductSwitchItem.d.ts +9 -22
  51. package/dist/ProductSwitchItem.js +2 -7
  52. package/dist/ProductSwitchItem.js.map +1 -1
  53. package/dist/ShellBar.d.ts +30 -90
  54. package/dist/ShellBar.js +28 -41
  55. package/dist/ShellBar.js.map +1 -1
  56. package/dist/ShellBarItem.d.ts +9 -14
  57. package/dist/ShellBarItem.js +6 -6
  58. package/dist/ShellBarItem.js.map +1 -1
  59. package/dist/SideNavigation.d.ts +29 -17
  60. package/dist/SideNavigation.js +155 -9
  61. package/dist/SideNavigation.js.map +1 -1
  62. package/dist/SideNavigationItem.d.ts +4 -17
  63. package/dist/SideNavigationItem.js +1 -5
  64. package/dist/SideNavigationItem.js.map +1 -1
  65. package/dist/SideNavigationItemBase.d.ts +7 -36
  66. package/dist/SideNavigationItemBase.js +20 -12
  67. package/dist/SideNavigationItemBase.js.map +1 -1
  68. package/dist/SideNavigationSubItem.d.ts +1 -5
  69. package/dist/SideNavigationSubItem.js +1 -5
  70. package/dist/SideNavigationSubItem.js.map +1 -1
  71. package/dist/SortItem.d.ts +3 -11
  72. package/dist/SortItem.js +1 -5
  73. package/dist/SortItem.js.map +1 -1
  74. package/dist/Timeline.d.ts +5 -16
  75. package/dist/Timeline.js +1 -5
  76. package/dist/Timeline.js.map +1 -1
  77. package/dist/TimelineItem.d.ts +11 -34
  78. package/dist/TimelineItem.js +3 -15
  79. package/dist/TimelineItem.js.map +1 -1
  80. package/dist/UploadCollection.d.ts +11 -32
  81. package/dist/UploadCollection.js +7 -9
  82. package/dist/UploadCollection.js.map +1 -1
  83. package/dist/UploadCollectionItem.d.ts +16 -47
  84. package/dist/UploadCollectionItem.js +3 -10
  85. package/dist/UploadCollectionItem.js.map +1 -1
  86. package/dist/ViewSettingsDialog.d.ts +5 -28
  87. package/dist/ViewSettingsDialog.js +34 -18
  88. package/dist/ViewSettingsDialog.js.map +1 -1
  89. package/dist/Wizard.d.ts +15 -39
  90. package/dist/Wizard.js +23 -33
  91. package/dist/Wizard.js.map +1 -1
  92. package/dist/WizardStep.d.ts +8 -31
  93. package/dist/WizardStep.js +2 -5
  94. package/dist/WizardStep.js.map +1 -1
  95. package/dist/WizardTab.d.ts +20 -24
  96. package/dist/WizardTab.js +1 -5
  97. package/dist/WizardTab.js.map +1 -1
  98. package/dist/css/themes/Bar.css +1 -1
  99. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  100. package/dist/css/themes/MediaGallery.css +1 -1
  101. package/dist/css/themes/MediaGalleryItem.css +1 -1
  102. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  103. package/dist/css/themes/NotificationListItem.css +1 -1
  104. package/dist/css/themes/NotificationListItemBase.css +1 -1
  105. package/dist/css/themes/NotificationOverflowActionsPopover.css +1 -1
  106. package/dist/css/themes/Page.css +1 -1
  107. package/dist/css/themes/ProductSwitchItem.css +1 -1
  108. package/dist/css/themes/ShellBar.css +1 -1
  109. package/dist/css/themes/SideNavigation.css +1 -1
  110. package/dist/css/themes/SideNavigationPopover.css +1 -1
  111. package/dist/css/themes/Timeline.css +1 -1
  112. package/dist/css/themes/TimelineItem.css +1 -1
  113. package/dist/css/themes/UploadCollection.css +1 -1
  114. package/dist/css/themes/UploadCollectionItem.css +1 -1
  115. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  116. package/dist/css/themes/Wizard.css +1 -1
  117. package/dist/css/themes/WizardTab.css +1 -1
  118. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  119. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  120. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  121. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  122. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  123. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  124. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  125. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  126. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  127. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  128. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  129. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  130. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  131. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  132. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  133. package/dist/custom-elements-internal.json +6682 -0
  134. package/dist/custom-elements.json +4098 -1
  135. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  143. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  144. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  145. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  146. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  147. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  148. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  150. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  151. package/dist/generated/i18n/i18n-defaults.js +2 -1
  152. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  153. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js +6 -2
  154. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js.map +1 -1
  155. package/dist/generated/templates/SideNavigationTemplate.lit.js +1 -1
  156. package/dist/generated/templates/SideNavigationTemplate.lit.js.map +1 -1
  157. package/dist/generated/themes/Bar.css.js +1 -1
  158. package/dist/generated/themes/Bar.css.js.map +1 -1
  159. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  160. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  161. package/dist/generated/themes/MediaGallery.css.js +1 -1
  162. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  163. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  164. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  165. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  166. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  167. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  168. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  169. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  170. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  171. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js +1 -1
  172. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js.map +1 -1
  173. package/dist/generated/themes/Page.css.js +1 -1
  174. package/dist/generated/themes/Page.css.js.map +1 -1
  175. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  176. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  177. package/dist/generated/themes/ShellBar.css.js +1 -1
  178. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  179. package/dist/generated/themes/SideNavigation.css.js +1 -1
  180. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  181. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  182. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  183. package/dist/generated/themes/Timeline.css.js +1 -1
  184. package/dist/generated/themes/Timeline.css.js.map +1 -1
  185. package/dist/generated/themes/TimelineItem.css.js +1 -1
  186. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  187. package/dist/generated/themes/UploadCollection.css.js +1 -1
  188. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  189. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  190. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  191. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  192. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  193. package/dist/generated/themes/Wizard.css.js +1 -1
  194. package/dist/generated/themes/Wizard.css.js.map +1 -1
  195. package/dist/generated/themes/WizardTab.css.js +1 -1
  196. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  197. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  198. package/dist/generated/themes/sap_belize/parameters-bundle.css.js.map +1 -1
  199. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  200. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js.map +1 -1
  201. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  202. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js.map +1 -1
  203. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  204. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  205. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  206. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  207. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  208. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  209. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  210. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  211. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  212. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  213. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  214. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  215. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  216. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  217. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  218. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  219. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  220. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  221. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  222. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  223. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  224. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  225. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  226. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  227. package/dist/types/BarDesign.d.ts +0 -8
  228. package/dist/types/BarDesign.js +0 -8
  229. package/dist/types/BarDesign.js.map +1 -1
  230. package/dist/types/FCLLayout.d.ts +0 -13
  231. package/dist/types/FCLLayout.js +0 -13
  232. package/dist/types/FCLLayout.js.map +1 -1
  233. package/dist/types/IllustrationMessageSize.d.ts +0 -9
  234. package/dist/types/IllustrationMessageSize.js +0 -9
  235. package/dist/types/IllustrationMessageSize.js.map +1 -1
  236. package/dist/types/IllustrationMessageType.d.ts +0 -107
  237. package/dist/types/IllustrationMessageType.js +0 -107
  238. package/dist/types/IllustrationMessageType.js.map +1 -1
  239. package/dist/types/MediaGalleryItemLayout.d.ts +0 -6
  240. package/dist/types/MediaGalleryItemLayout.js +0 -6
  241. package/dist/types/MediaGalleryItemLayout.js.map +1 -1
  242. package/dist/types/MediaGalleryLayout.d.ts +0 -7
  243. package/dist/types/MediaGalleryLayout.js +0 -7
  244. package/dist/types/MediaGalleryLayout.js.map +1 -1
  245. package/dist/types/MediaGalleryMenuHorizontalAlign.d.ts +0 -6
  246. package/dist/types/MediaGalleryMenuHorizontalAlign.js +0 -6
  247. package/dist/types/MediaGalleryMenuHorizontalAlign.js.map +1 -1
  248. package/dist/types/MediaGalleryMenuVerticalAlign.d.ts +0 -6
  249. package/dist/types/MediaGalleryMenuVerticalAlign.js +0 -6
  250. package/dist/types/MediaGalleryMenuVerticalAlign.js.map +1 -1
  251. package/dist/types/PageBackgroundDesign.d.ts +0 -7
  252. package/dist/types/PageBackgroundDesign.js +0 -7
  253. package/dist/types/PageBackgroundDesign.js.map +1 -1
  254. package/dist/types/SideContentFallDown.d.ts +0 -8
  255. package/dist/types/SideContentFallDown.js +0 -8
  256. package/dist/types/SideContentFallDown.js.map +1 -1
  257. package/dist/types/SideContentPosition.d.ts +0 -6
  258. package/dist/types/SideContentPosition.js +0 -6
  259. package/dist/types/SideContentPosition.js.map +1 -1
  260. package/dist/types/SideContentVisibility.d.ts +0 -9
  261. package/dist/types/SideContentVisibility.js +0 -9
  262. package/dist/types/SideContentVisibility.js.map +1 -1
  263. package/dist/types/TimelineLayout.d.ts +0 -6
  264. package/dist/types/TimelineLayout.js +0 -6
  265. package/dist/types/TimelineLayout.js.map +1 -1
  266. package/dist/types/UploadCollectionDnDMode.d.ts +0 -7
  267. package/dist/types/UploadCollectionDnDMode.js +0 -7
  268. package/dist/types/UploadCollectionDnDMode.js.map +1 -1
  269. package/dist/types/UploadState.d.ts +0 -8
  270. package/dist/types/UploadState.js +0 -8
  271. package/dist/types/UploadState.js.map +1 -1
  272. package/dist/types/ViewSettingsDialogMode.d.ts +0 -6
  273. package/dist/types/ViewSettingsDialogMode.js +0 -6
  274. package/dist/types/ViewSettingsDialogMode.js.map +1 -1
  275. package/dist/types/WizardContentLayout.d.ts +0 -6
  276. package/dist/types/WizardContentLayout.js +0 -6
  277. package/dist/types/WizardContentLayout.js.map +1 -1
  278. package/package.json +7 -7
  279. package/src/SideNavigation.hbs +21 -0
  280. package/src/SideNavigationPopover.hbs +61 -28
  281. package/src/i18n/messagebundle.properties +3 -0
  282. package/src/themes/SideNavigation.css +11 -1
  283. package/dist/api.json +0 -1
@@ -1,5 +1,6 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
3
+ import NavigationMenu from "@ui5/webcomponents/dist/NavigationMenu.js";
3
4
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
5
  import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
5
6
  import type { ITabbable } from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
@@ -21,6 +22,13 @@ type PopupClickEventDetail = {
21
22
  associatedItem: SideNavigationItemBase;
22
23
  };
23
24
  };
25
+ type NavigationMenuClickEventDetail = {
26
+ detail: {
27
+ item: {
28
+ associatedItem: SideNavigationItemBase;
29
+ };
30
+ };
31
+ };
24
32
  /**
25
33
  * @class
26
34
  *
@@ -57,12 +65,8 @@ type PopupClickEventDetail = {
57
65
  * <code>import "@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js";</code> (for <code>ui5-side-navigation-sub-item</code>)
58
66
  *
59
67
  * @constructor
60
- * @author SAP SE
61
- * @alias sap.ui.webc.fiori.SideNavigation
62
- * @extends sap.ui.webc.base.UI5Element
63
- * @tagname ui5-side-navigation
68
+ * @extends UI5Element
64
69
  * @since 1.0.0-rc.8
65
- * @appenddocs sap.ui.webc.fiori.SideNavigationItem sap.ui.webc.fiori.SideNavigationSubItem
66
70
  * @public
67
71
  */
68
72
  declare class SideNavigation extends UI5Element {
@@ -70,9 +74,7 @@ declare class SideNavigation extends UI5Element {
70
74
  * Defines whether the <code>ui5-side-navigation</code> is expanded or collapsed.
71
75
  *
72
76
  * @public
73
- * @type {boolean}
74
- * @defaultvalue false
75
- * @name sap.ui.webc.fiori.SideNavigation.prototype.collapsed
77
+ * @default false
76
78
  */
77
79
  collapsed: boolean;
78
80
  /**
@@ -81,9 +83,6 @@ declare class SideNavigation extends UI5Element {
81
83
  * inside the items.
82
84
  *
83
85
  * @public
84
- * @type {sap.ui.webc.fiori.SideNavigationItem[]}
85
- * @slot items
86
- * @name sap.ui.webc.fiori.SideNavigation.prototype.default
87
86
  */
88
87
  items: Array<SideNavigationItem>;
89
88
  /**
@@ -93,10 +92,7 @@ declare class SideNavigation extends UI5Element {
93
92
  * <b>Note:</b> The header is displayed when the component is expanded - the property <code>collapsed</code> is false;
94
93
  *
95
94
  * @public
96
- * @type {HTMLElement[]}
97
95
  * @since 1.0.0-rc.11
98
- * @slot header
99
- * @name sap.ui.webc.fiori.SideNavigation.prototype.header
100
96
  */
101
97
  header: Array<HTMLElement>;
102
98
  /**
@@ -106,9 +102,6 @@ declare class SideNavigation extends UI5Element {
106
102
  * <b>Note:</b> In order to achieve the best user experience, it is recommended that you keep the fixed items "flat" (do not pass sub-items)
107
103
  *
108
104
  * @public
109
- * @type {sap.ui.webc.fiori.SideNavigationItem[]}
110
- * @slot fixedItems
111
- * @name sap.ui.webc.fiori.SideNavigation.prototype.fixedItems
112
105
  */
113
106
  fixedItems: Array<SideNavigationItem>;
114
107
  /**
@@ -116,17 +109,25 @@ declare class SideNavigation extends UI5Element {
116
109
  */
117
110
  _popoverContents: SideNavigationPopoverContents;
118
111
  _inPopover: boolean;
112
+ _isOverflow: boolean;
119
113
  _flexibleItemNavigation: ItemNavigation;
120
114
  _fixedItemNavigation: ItemNavigation;
115
+ _menuPopoverItems: Array<HTMLElement>;
121
116
  static i18nBundle: I18nBundle;
122
117
  constructor();
118
+ _handleResizeBound: () => void;
123
119
  _onAfterOpen(): Promise<void>;
124
120
  get accSideNavigationPopoverHiddenText(): string;
125
121
  get ariaRoleDescNavigationList(): string;
122
+ get overflowAccessibleName(): string;
126
123
  handlePopupItemClick(e: PopupClickEventDetail): void;
124
+ handleOverflowItemClick(e: NavigationMenuClickEventDetail): void;
125
+ getOverflowPopover(): Promise<NavigationMenu>;
127
126
  getPicker(): Promise<ResponsivePopover>;
128
127
  openPicker(opener: HTMLElement): Promise<void>;
128
+ openOverflowMenu(opener: HTMLElement): Promise<void>;
129
129
  closePicker(): Promise<void>;
130
+ closeMenu(): Promise<void>;
130
131
  getPickerTree(): Promise<SideNavigation>;
131
132
  get hasHeader(): boolean;
132
133
  get showHeader(): boolean;
@@ -146,11 +147,22 @@ declare class SideNavigation extends UI5Element {
146
147
  getEnabledItems(items: Array<SideNavigationItem>): Array<ITabbable>;
147
148
  focusItem(item: SideNavigationItemBase): void;
148
149
  onAfterRendering(): void;
150
+ onEnterDOM(): void;
151
+ onExitDOM(): void;
152
+ handleResize(): void;
153
+ _updateOverflowItems(): null | undefined;
149
154
  _findFocusedItem(items: Array<SideNavigationItem>): SideNavigationItemBase | undefined;
150
155
  _getWithNestedItems(items: Array<SideNavigationItem>, expandedOnly?: boolean): Array<SideNavigationItemBase>;
151
156
  _findSelectedItem(items: Array<SideNavigationItem>): SideNavigationItemBase | undefined;
152
157
  _handleItemClick(e: KeyboardEvent | PointerEvent, item: SideNavigationItemBase): void;
158
+ _handleOverflowClick(): void;
159
+ _getOverflowItems(): Array<SideNavigationItem>;
160
+ _afterMenuClose(): Promise<void>;
153
161
  _selectItem(item: SideNavigationItemBase): void;
162
+ get _overflowDom(): SideNavigationItem | null;
163
+ get isOverflow(): boolean;
164
+ _onkeydownOverflow(e: KeyboardEvent): void;
165
+ _onkeyupOverflow(e: KeyboardEvent): void;
154
166
  static onDefine(): Promise<void>;
155
167
  }
156
168
  export default SideNavigation;
@@ -9,12 +9,16 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
9
9
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
10
10
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
11
11
  import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
12
+ import NavigationMenu from "@ui5/webcomponents/dist/NavigationMenu.js";
13
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
14
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
12
15
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
13
16
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
14
17
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
15
18
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
16
19
  import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
17
20
  import { isPhone, isTablet, isCombi, } from "@ui5/webcomponents-base/dist/Device.js";
21
+ import { isSpace, isEnter, } from "@ui5/webcomponents-base/dist/Keys.js";
18
22
  import NavigationMode from "@ui5/webcomponents-base/dist/types/NavigationMode.js";
19
23
  import Icon from "@ui5/webcomponents/dist/Icon.js";
20
24
  import "@ui5/webcomponents-icons/dist/circle-task-2.js";
@@ -24,7 +28,7 @@ import SideNavigationItem from "./SideNavigationItem.js";
24
28
  import SideNavigationSubItem from "./SideNavigationSubItem.js";
25
29
  import SideNavigationTemplate from "./generated/templates/SideNavigationTemplate.lit.js";
26
30
  import SideNavigationPopoverTemplate from "./generated/templates/SideNavigationPopoverTemplate.lit.js";
27
- import { SIDE_NAVIGATION_POPOVER_HIDDEN_TEXT, SIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC, SIDE_NAVIGATION_LIST_ARIA_ROLE_DESC, } from "./generated/i18n/i18n-defaults.js";
31
+ 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";
28
32
  // Styles
29
33
  import SideNavigationCss from "./generated/themes/SideNavigation.css.js";
30
34
  import SideNavigationPopoverCss from "./generated/themes/SideNavigationPopover.css.js";
@@ -65,12 +69,8 @@ const PAGE_UP_DOWN_SIZE = 10;
65
69
  * <code>import "@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js";</code> (for <code>ui5-side-navigation-sub-item</code>)
66
70
  *
67
71
  * @constructor
68
- * @author SAP SE
69
- * @alias sap.ui.webc.fiori.SideNavigation
70
- * @extends sap.ui.webc.base.UI5Element
71
- * @tagname ui5-side-navigation
72
+ * @extends UI5Element
72
73
  * @since 1.0.0-rc.8
73
- * @appenddocs sap.ui.webc.fiori.SideNavigationItem sap.ui.webc.fiori.SideNavigationSubItem
74
74
  * @public
75
75
  */
76
76
  let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element {
@@ -86,6 +86,8 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
86
86
  navigationMode: NavigationMode.Vertical,
87
87
  getItemsCallback: () => this.getEnabledFixedItems(),
88
88
  });
89
+ this._handleResizeBound = this.handleResize.bind(this);
90
+ this._isOverflow = false;
89
91
  }
90
92
  async _onAfterOpen() {
91
93
  // as the tree/list inside the popover is never destroyed,
@@ -110,6 +112,9 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
110
112
  }
111
113
  return SideNavigation_1.i18nBundle.getText(key);
112
114
  }
115
+ get overflowAccessibleName() {
116
+ return SideNavigation_1.i18nBundle.getText(SIDE_NAVIGATION_OVERFLOW_ACCESSIBLE_NAME);
117
+ }
113
118
  handlePopupItemClick(e) {
114
119
  const associatedItem = e.target.associatedItem;
115
120
  associatedItem.fireEvent("click");
@@ -120,6 +125,27 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
120
125
  this._selectItem(associatedItem);
121
126
  this.closePicker();
122
127
  }
128
+ handleOverflowItemClick(e) {
129
+ const associatedItem = e.detail?.item.associatedItem;
130
+ associatedItem.fireEvent("click");
131
+ if (associatedItem.selected) {
132
+ this.closeMenu();
133
+ return;
134
+ }
135
+ this._selectItem(associatedItem);
136
+ // When subitem is selected in collapsed mode parent element should be focused
137
+ if (associatedItem.nodeName.toLowerCase() === "ui5-side-navigation-sub-item") {
138
+ const parent = associatedItem.parentElement;
139
+ this._flexibleItemNavigation.setCurrentItem(parent);
140
+ }
141
+ else {
142
+ this._flexibleItemNavigation.setCurrentItem(associatedItem);
143
+ }
144
+ this.closeMenu();
145
+ }
146
+ async getOverflowPopover() {
147
+ return (await this.getStaticAreaItemDomRef()).querySelector(".ui5-side-navigation-overflow-menu");
148
+ }
123
149
  async getPicker() {
124
150
  return (await this.getStaticAreaItemDomRef()).querySelector("[ui5-responsive-popover]");
125
151
  }
@@ -127,10 +153,19 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
127
153
  const responsivePopover = await this.getPicker();
128
154
  responsivePopover.showAt(opener);
129
155
  }
156
+ async openOverflowMenu(opener) {
157
+ const menu = await this.getOverflowPopover();
158
+ menu.showAt(opener);
159
+ menu.opener = opener;
160
+ }
130
161
  async closePicker() {
131
162
  const responsivePopover = await this.getPicker();
132
163
  responsivePopover.close();
133
164
  }
165
+ async closeMenu() {
166
+ const menu = await this.getOverflowPopover();
167
+ menu.close();
168
+ }
134
169
  async getPickerTree() {
135
170
  const picker = await this.getPicker();
136
171
  return picker.querySelector("[ui5-side-navigation]");
@@ -162,11 +197,18 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
162
197
  return this.getEnabledItems(this.fixedItems);
163
198
  }
164
199
  getEnabledFlexibleItems() {
165
- return this.getEnabledItems(this.items);
200
+ if (!this._overflowDom) {
201
+ return this.getEnabledItems(this.items);
202
+ }
203
+ this._overflowDom._tabIndex = "0";
204
+ return [...this.getEnabledItems(this.items), this._overflowDom];
166
205
  }
167
206
  getEnabledItems(items) {
168
207
  let result = new Array();
169
208
  items.forEach(item => {
209
+ if (item.getDomRef()?.classList.contains("ui5-sn-item-hidden")) {
210
+ return;
211
+ }
170
212
  if (!item.disabled) {
171
213
  result.push(item);
172
214
  }
@@ -212,6 +254,61 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
212
254
  }
213
255
  }
214
256
  }
257
+ if (this.collapsed) {
258
+ this.handleResize();
259
+ }
260
+ }
261
+ onEnterDOM() {
262
+ ResizeHandler.register(this, this._handleResizeBound);
263
+ }
264
+ onExitDOM() {
265
+ ResizeHandler.deregister(this, this._handleResizeBound);
266
+ }
267
+ handleResize() {
268
+ const domRef = this.getDomRef(), overflowItemRef = domRef?.querySelector(".ui5-sn-item-overflow");
269
+ this._updateOverflowItems();
270
+ if (this._getOverflowItems().length > 0 && this.collapsed) {
271
+ overflowItemRef?.classList.remove("ui5-sn-item-hidden");
272
+ }
273
+ else {
274
+ overflowItemRef?.classList.add("ui5-sn-item-hidden");
275
+ }
276
+ }
277
+ _updateOverflowItems() {
278
+ const domRef = this.getDomRef();
279
+ if (!this.collapsed || !domRef) {
280
+ return null;
281
+ }
282
+ const overflowItemRef = domRef.querySelector(".ui5-sn-item-overflow");
283
+ const flexibleContentDomRef = domRef.querySelector(".ui5-sn-flexible");
284
+ if (!overflowItemRef) {
285
+ return null;
286
+ }
287
+ overflowItemRef.classList.add("ui5-sn-item-hidden");
288
+ const itemsRefs = [...domRef.querySelectorAll(".ui5-sn-flexible .ui5-sn-item-level1:not(.ui5-sn-item-overflow)")];
289
+ let itemsHeight = itemsRefs.reduce((sum, itemRef) => {
290
+ itemRef.classList.remove("ui5-sn-item-hidden");
291
+ return sum + itemRef.offsetHeight;
292
+ }, 0);
293
+ const { paddingTop, paddingBottom } = window.getComputedStyle(flexibleContentDomRef);
294
+ const listHeight = flexibleContentDomRef?.offsetHeight - parseInt(paddingTop) - parseInt(paddingBottom);
295
+ overflowItemRef.classList.remove("ui5-sn-item-hidden");
296
+ itemsHeight = overflowItemRef.offsetHeight;
297
+ const oSelectedItemRef = domRef.querySelector(".ui5-sn-item-selected");
298
+ if (oSelectedItemRef) {
299
+ const { marginTop, marginBottom } = window.getComputedStyle(oSelectedItemRef);
300
+ itemsHeight += oSelectedItemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
301
+ }
302
+ itemsRefs.forEach(itemRef => {
303
+ if (itemRef === oSelectedItemRef) {
304
+ return;
305
+ }
306
+ const { marginTop, marginBottom } = window.getComputedStyle(itemRef);
307
+ itemsHeight += itemRef.offsetHeight + parseFloat(marginTop) + parseFloat(marginBottom);
308
+ if (itemsHeight >= listHeight) {
309
+ itemRef.classList.add("ui5-sn-item-hidden");
310
+ }
311
+ });
215
312
  }
216
313
  _findFocusedItem(items) {
217
314
  let focusedItem;
@@ -250,6 +347,7 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
250
347
  }
251
348
  if (this.collapsed && item instanceof SideNavigationItem && item.items.length) {
252
349
  e.preventDefault();
350
+ this._isOverflow = false;
253
351
  this._popoverContents = {
254
352
  item,
255
353
  subItems: item.items,
@@ -263,6 +361,26 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
263
361
  }
264
362
  }
265
363
  }
364
+ _handleOverflowClick() {
365
+ this._isOverflow = true;
366
+ this._menuPopoverItems = this._getOverflowItems();
367
+ this.openOverflowMenu(this._overflowDom);
368
+ }
369
+ _getOverflowItems() {
370
+ const overflowClass = "ui5-sn-item-hidden";
371
+ const result = [];
372
+ this.items.forEach(item => {
373
+ if (item.getDomRef().classList.contains(overflowClass)) {
374
+ result.push(item);
375
+ }
376
+ });
377
+ return result;
378
+ }
379
+ async _afterMenuClose() {
380
+ const selectedItem = this._findSelectedItem(this.items);
381
+ await renderFinished();
382
+ selectedItem.getDomRef().focus();
383
+ }
266
384
  _selectItem(item) {
267
385
  if (item.disabled) {
268
386
  return;
@@ -276,6 +394,28 @@ let SideNavigation = SideNavigation_1 = class SideNavigation extends UI5Element
276
394
  current.selected = false;
277
395
  });
278
396
  item.selected = true;
397
+ if (this.collapsed && item.getDomRef()?.classList.contains("ui5-sn-item-hidden")) {
398
+ item.getDomRef().classList.remove("ui5-sn-item-hidden");
399
+ }
400
+ }
401
+ get _overflowDom() {
402
+ return this.shadowRoot.querySelector(".ui5-sn-item-overflow");
403
+ }
404
+ get isOverflow() {
405
+ return this._isOverflow;
406
+ }
407
+ _onkeydownOverflow(e) {
408
+ if (isSpace(e)) {
409
+ e.preventDefault();
410
+ }
411
+ if (isEnter(e)) {
412
+ this._handleOverflowClick();
413
+ }
414
+ }
415
+ _onkeyupOverflow(e) {
416
+ if (isSpace(e)) {
417
+ this._handleOverflowClick();
418
+ }
279
419
  }
280
420
  static async onDefine() {
281
421
  [SideNavigation_1.i18nBundle] = await Promise.all([
@@ -302,6 +442,9 @@ __decorate([
302
442
  __decorate([
303
443
  property({ type: Boolean })
304
444
  ], SideNavigation.prototype, "_inPopover", void 0);
445
+ __decorate([
446
+ property({ type: Object, multiple: true })
447
+ ], SideNavigation.prototype, "_menuPopoverItems", void 0);
305
448
  SideNavigation = SideNavigation_1 = __decorate([
306
449
  customElement({
307
450
  tag: "ui5-side-navigation",
@@ -316,19 +459,22 @@ SideNavigation = SideNavigation_1 = __decorate([
316
459
  SideNavigationItem,
317
460
  SideNavigationSubItem,
318
461
  Icon,
462
+ NavigationMenu,
319
463
  ],
320
464
  })
321
465
  /**
322
466
  * Fired when the selection has changed via user interaction
323
467
  *
324
- * @event sap.ui.webc.fiori.SideNavigation#selection-change
325
- * @param {sap.ui.webc.fiori.SideNavigationItemBase} item the clicked item.
468
+ * @param {SideNavigationItemBase} item the clicked item.
326
469
  * @allowPreventDefault
327
470
  * @public
328
471
  */
329
472
  ,
330
473
  event("selection-change", {
331
474
  detail: {
475
+ /**
476
+ * @public
477
+ */
332
478
  item: { type: HTMLElement },
333
479
  },
334
480
  })
@@ -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 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 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\";\nimport {\n\tSIDE_NAVIGATION_POPOVER_HIDDEN_TEXT,\n\tSIDE_NAVIGATION_COLLAPSED_LIST_ARIA_ROLE_DESC,\n\tSIDE_NAVIGATION_LIST_ARIA_ROLE_DESC,\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\n// used for the inner side navigation used in the SideNavigationPopoverTemplate\ntype PopupClickEventDetail = {\n\ttarget: {\n\t\tassociatedItem: SideNavigationItemBase\n\t}\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n * The <code>SideNavigation</code> 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 * <ul>\n * <li>The header is meant for displaying user related information - profile data, avatar, etc.</li>\n * <li>The main navigation section is related to the user’s current work context</li>\n * <li>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). </li>\n * </ul>\n *\n * <h3>Usage</h3>\n *\n * Use the available <code>ui5-side-navigation-item</code> and <code>ui5-side-navigation-sub-item</code> 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 * <h3>Keyboard Handling</h3>\n *\n * <h4>Fast Navigation</h4>\n * This component provides a build in fast navigation group which can be used via <code>F6 / Shift + F6</code> or <code> Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up</code>.\n * In order to use this functionality, you need to import the following module:\n * <code>import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"</code>\n * <br><br>\n *\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigation.js\";</code>\n * <br>\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigationItem.js\";</code> (for <code>ui5-side-navigation-item</code>)\n * <br>\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js\";</code> (for <code>ui5-side-navigation-sub-item</code>)\n *\n * @constructor\n * @author SAP SE\n * @alias sap.ui.webc.fiori.SideNavigation\n * @extends sap.ui.webc.base.UI5Element\n * @tagname ui5-side-navigation\n * @since 1.0.0-rc.8\n * @appenddocs sap.ui.webc.fiori.SideNavigationItem sap.ui.webc.fiori.SideNavigationSubItem\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],\n})\n/**\n * Fired when the selection has changed via user interaction\n *\n * @event sap.ui.webc.fiori.SideNavigation#selection-change\n * @param {sap.ui.webc.fiori.SideNavigationItemBase} item the clicked item.\n * @allowPreventDefault\n * @public\n */\n@event(\"selection-change\", {\n\tdetail: {\n\t\titem: { type: HTMLElement },\n\t},\n})\nclass SideNavigation extends UI5Element {\n\t/**\n\t * Defines whether the <code>ui5-side-navigation</code> is expanded or collapsed.\n\t *\n\t * @public\n\t * @type {boolean}\n\t * @defaultvalue false\n\t * @name sap.ui.webc.fiori.SideNavigation.prototype.collapsed\n\t */\n\t@property({ type: Boolean })\n\tcollapsed!: boolean;\n\n\t/**\n\t * Defines the main items of the <code>ui5-side-navigation</code>. Use the <code>ui5-side-navigation-item</code> component\n\t * for the top-level items, and the <code>ui5-side-navigation-sub-item</code> component for second-level items, nested\n\t * inside the items.\n\t *\n\t * @public\n\t * @type {sap.ui.webc.fiori.SideNavigationItem[]}\n\t * @slot items\n\t * @name sap.ui.webc.fiori.SideNavigation.prototype.default\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 <code>ui5-side-navigation</code>.\n\t *\n\t * <br><br>\n\t * <b>Note:</b> The header is displayed when the component is expanded - the property <code>collapsed</code> is false;\n\t *\n\t * @public\n\t * @type {HTMLElement[]}\n\t * @since 1.0.0-rc.11\n\t * @slot header\n\t * @name sap.ui.webc.fiori.SideNavigation.prototype.header\n\t */\n\t@slot()\n\theader!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the fixed items at the bottom of the <code>ui5-side-navigation</code>. Use the <code>ui5-side-navigation-item</code> component\n\t * for the fixed items, and optionally the <code>ui5-side-navigation-sub-item</code> component to provide second-level items inside them.\n\t *\n\t * <b>Note:</b> 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 * @type {sap.ui.webc.fiori.SideNavigationItem[]}\n\t * @slot fixedItems\n\t * @name sap.ui.webc.fiori.SideNavigation.prototype.fixedItems\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tfixedItems!: Array<SideNavigationItem>;\n\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\n\t_flexibleItemNavigation: ItemNavigation;\n\t_fixedItemNavigation: ItemNavigation;\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\t}\n\n\tasync _onAfterOpen() {\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\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\thandlePopupItemClick(e: PopupClickEventDetail) {\n\t\tconst associatedItem = e.target.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\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\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.showAt(opener);\n\t}\n\n\tasync closePicker() {\n\t\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.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-phone\": isPhone(),\n\t\t\t\t\"ui5-sn-tablet\": isTablet(),\n\t\t\t\t\"ui5-sn-combi\": isCombi(),\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\treturn this.getEnabledItems(this.items);\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.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\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}\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._tabIndex === \"0\");\n\t\t} else {\n\t\t\tfocusedItem = this._getWithNestedItems(items, true).find(item => item._tabIndex === \"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, 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\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_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\t}\n\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 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\n// used for the inner side navigation used in the SideNavigationPopoverTemplate\ntype PopupClickEventDetail = {\n\ttarget: {\n\t\tassociatedItem: SideNavigationItemBase\n\t}\n};\n\n// used for the inner side navigation used in the SideNavigationPopoverTemplate\ntype NavigationMenuClickEventDetail = {\n\tdetail: {\n\t\titem: {\n\t\t\tassociatedItem: SideNavigationItemBase\n\t\t}\n\t}\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n * The <code>SideNavigation</code> 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 * <ul>\n * <li>The header is meant for displaying user related information - profile data, avatar, etc.</li>\n * <li>The main navigation section is related to the user’s current work context</li>\n * <li>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). </li>\n * </ul>\n *\n * <h3>Usage</h3>\n *\n * Use the available <code>ui5-side-navigation-item</code> and <code>ui5-side-navigation-sub-item</code> 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 * <h3>Keyboard Handling</h3>\n *\n * <h4>Fast Navigation</h4>\n * This component provides a build in fast navigation group which can be used via <code>F6 / Shift + F6</code> or <code> Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up</code>.\n * In order to use this functionality, you need to import the following module:\n * <code>import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"</code>\n * <br><br>\n *\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigation.js\";</code>\n * <br>\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigationItem.js\";</code> (for <code>ui5-side-navigation-item</code>)\n * <br>\n * <code>import \"@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js\";</code> (for <code>ui5-side-navigation-sub-item</code>)\n *\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 *\n * @param {SideNavigationItemBase} item the clicked item.\n * @allowPreventDefault\n * @public\n */\n@event(\"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 <code>ui5-side-navigation</code> 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 <code>ui5-side-navigation</code>. Use the <code>ui5-side-navigation-item</code> component\n\t * for the top-level items, and the <code>ui5-side-navigation-sub-item</code> 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>;\n\n\t/**\n\t * Defines the header of the <code>ui5-side-navigation</code>.\n\t *\n\t * <br><br>\n\t * <b>Note:</b> The header is displayed when the component is expanded - the property <code>collapsed</code> 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 * Defines the fixed items at the bottom of the <code>ui5-side-navigation</code>. Use the <code>ui5-side-navigation-item</code> component\n\t * for the fixed items, and optionally the <code>ui5-side-navigation-sub-item</code> component to provide second-level items inside them.\n\t *\n\t * <b>Note:</b> 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>;\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\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 _onAfterOpen() {\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\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\thandlePopupItemClick(e: PopupClickEventDetail) {\n\t\tconst associatedItem = e.target.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\t}\n\n\thandleOverflowItemClick(e: 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\tconst responsivePopover = await this.getPicker();\n\t\tresponsivePopover.showAt(opener);\n\t}\n\n\tasync openOverflowMenu(opener: HTMLElement) {\n\t\tconst menu = await this.getOverflowPopover();\n\t\tmenu.showAt(opener);\n\t\tmenu.opener = 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-phone\": isPhone(),\n\t\t\t\t\"ui5-sn-tablet\": isTablet(),\n\t\t\t\t\"ui5-sn-combi\": isCombi(),\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\t\tthis._overflowDom._tabIndex = \"0\";\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\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._tabIndex === \"0\");\n\t\t} else {\n\t\t\tfocusedItem = this._getWithNestedItems(items, true).find(item => item._tabIndex === \"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, 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\tasync _afterMenuClose() {\n\t\tconst selectedItem = this._findSelectedItem(this.items)!;\n\n\t\tawait renderFinished();\n\t\tselectedItem.getDomRef().focus();\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"]}
@@ -13,13 +13,9 @@ import type SideNavigationSubItem from "./SideNavigationSubItem.js";
13
13
  * <code>import "@ui5/webcomponents-fiori/dist/SideNavigationItem.js";</code>
14
14
  *
15
15
  * @constructor
16
- * @author SAP SE
17
- * @alias sap.ui.webc.fiori.SideNavigationItem
18
- * @extends sap.ui.webc.fiori.SideNavigationItemBase
16
+ * @extends SideNavigationItemBase
19
17
  * @abstract
20
- * @tagname ui5-side-navigation-item
21
18
  * @public
22
- * @implements sap.ui.webc.fiori.ISideNavigationItem
23
19
  * @since 1.0.0-rc.8
24
20
  */
25
21
  declare class SideNavigationItem extends SideNavigationItemBase {
@@ -27,28 +23,21 @@ declare class SideNavigationItem extends SideNavigationItemBase {
27
23
  * Defines if the item is expanded
28
24
  *
29
25
  * @public
30
- * @type {boolean}
31
- * @defaultvalue false
32
- * @name sap.ui.webc.fiori.SideNavigationItem.prototype.expanded
26
+ * @default false
33
27
  */
34
28
  expanded: boolean;
35
29
  /**
36
30
  * Defines if the item should be collapsible or not.
37
31
  * It is true, for example, for the items inside the Popover of the Side Navigation
38
32
  * @private
39
- * @type {boolean}
40
- * @defaultvalue false
41
- * @name sap.ui.webc.fiori.SideNavigationItem.prototype._fixed
33
+ * @default false
42
34
  * @since 1.10.0
43
35
  */
44
36
  _fixed: boolean;
45
37
  /**
46
38
  * Defines nested items by passing <code>ui5-side-navigation-sub-item</code> to the default slot.
47
39
  *
48
- * @type {sap.ui.webc.fiori.ISideNavigationSubItem[]}
49
40
  * @public
50
- * @slot items
51
- * @name sap.ui.webc.fiori.SideNavigationItem.prototype.default
52
41
  */
53
42
  items: Array<SideNavigationSubItem>;
54
43
  /**
@@ -57,9 +46,7 @@ declare class SideNavigationItem extends SideNavigationItemBase {
57
46
  * By default, only clicking the arrow icon will toggle the sub items.
58
47
  *
59
48
  * @public
60
- * @type {boolean}
61
- * @defaultvalue false
62
- * @name sap.ui.webc.fiori.SideNavigationItem.prototype.wholeItemToggleable
49
+ * @default false
63
50
  * @since 1.0.0-rc.11
64
51
  */
65
52
  wholeItemToggleable: boolean;
@@ -22,13 +22,9 @@ import SideNavigationItemBase from "./SideNavigationItemBase.js";
22
22
  * <code>import "@ui5/webcomponents-fiori/dist/SideNavigationItem.js";</code>
23
23
  *
24
24
  * @constructor
25
- * @author SAP SE
26
- * @alias sap.ui.webc.fiori.SideNavigationItem
27
- * @extends sap.ui.webc.fiori.SideNavigationItemBase
25
+ * @extends SideNavigationItemBase
28
26
  * @abstract
29
- * @tagname ui5-side-navigation-item
30
27
  * @public
31
- * @implements sap.ui.webc.fiori.ISideNavigationItem
32
28
  * @since 1.0.0-rc.8
33
29
  */
34
30
  let SideNavigationItem = class SideNavigationItem extends SideNavigationItemBase {