@sapudex/web-components 0.111.0 → 0.117.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 (334) hide show
  1. package/.npmrc +1 -2
  2. package/bundle.esm.js +4 -0
  3. package/dist/AccordionItem.d.ts +7 -0
  4. package/dist/AccordionItem.js +6 -2
  5. package/dist/AccordionItem.js.map +1 -1
  6. package/dist/Avatar.d.ts +8 -1
  7. package/dist/Avatar.js +5 -2
  8. package/dist/Avatar.js.map +1 -1
  9. package/dist/CountrySelector.d.ts +6 -7
  10. package/dist/CountrySelector.js +15 -7
  11. package/dist/CountrySelector.js.map +1 -1
  12. package/dist/Dropdown.d.ts +10 -0
  13. package/dist/Dropdown.js +10 -0
  14. package/dist/Dropdown.js.map +1 -1
  15. package/dist/FilterMenu.d.ts +14 -4
  16. package/dist/FilterMenu.js +46 -7
  17. package/dist/FilterMenu.js.map +1 -1
  18. package/dist/Footer.d.ts +40 -1
  19. package/dist/Footer.js +151 -1
  20. package/dist/Footer.js.map +1 -1
  21. package/dist/InputGroup.d.ts +75 -0
  22. package/dist/InputGroup.js +101 -0
  23. package/dist/InputGroup.js.map +1 -0
  24. package/dist/List.d.ts +7 -0
  25. package/dist/List.js +78 -18
  26. package/dist/List.js.map +1 -1
  27. package/dist/ListItem.d.ts +0 -1
  28. package/dist/ListItem.js +0 -6
  29. package/dist/ListItem.js.map +1 -1
  30. package/dist/ListItemBase.d.ts +3 -0
  31. package/dist/ListItemBase.js +12 -0
  32. package/dist/ListItemBase.js.map +1 -1
  33. package/dist/MastheadMobileMenu.d.ts +4 -1
  34. package/dist/MastheadMobileMenu.js +10 -3
  35. package/dist/MastheadMobileMenu.js.map +1 -1
  36. package/dist/PhoneNumberField.d.ts +8 -0
  37. package/dist/PhoneNumberField.js +23 -10
  38. package/dist/PhoneNumberField.js.map +1 -1
  39. package/dist/Search.d.ts +60 -1
  40. package/dist/Search.js +191 -19
  41. package/dist/Search.js.map +1 -1
  42. package/dist/SecondaryNavigation.d.ts +37 -45
  43. package/dist/SecondaryNavigation.js +148 -153
  44. package/dist/SecondaryNavigation.js.map +1 -1
  45. package/dist/SecondaryNavigationItem.d.ts +101 -0
  46. package/dist/SecondaryNavigationItem.js +287 -0
  47. package/dist/SecondaryNavigationItem.js.map +1 -0
  48. package/dist/SecondaryNavigationItemBase.d.ts +68 -0
  49. package/dist/SecondaryNavigationItemBase.js +78 -0
  50. package/dist/SecondaryNavigationItemBase.js.map +1 -0
  51. package/dist/SecondaryNavigationSubItem.d.ts +52 -0
  52. package/dist/SecondaryNavigationSubItem.js +102 -0
  53. package/dist/SecondaryNavigationSubItem.js.map +1 -0
  54. package/dist/SelectBox.d.ts +7 -0
  55. package/dist/SelectBox.js +27 -2
  56. package/dist/SelectBox.js.map +1 -1
  57. package/dist/StatusBadge.d.ts +67 -0
  58. package/dist/StatusBadge.js +104 -0
  59. package/dist/StatusBadge.js.map +1 -0
  60. package/dist/Tab.js +1 -1
  61. package/dist/Tab.js.map +1 -1
  62. package/dist/Table.d.ts +5 -5
  63. package/dist/Table.js +5 -5
  64. package/dist/Table.js.map +1 -1
  65. package/dist/Tag.d.ts +7 -1
  66. package/dist/Tag.js +6 -2
  67. package/dist/Tag.js.map +1 -1
  68. package/dist/TextArea.js.map +1 -1
  69. package/dist/assets/{bundle.esm-b7920968.js → bundle.esm-f65ae7da.js} +189 -184
  70. package/dist/assets/messagebundle_en-7249941b.js +1 -0
  71. package/dist/css/themes/AccordionItem.css +1 -1
  72. package/dist/css/themes/Avatar.css +1 -1
  73. package/dist/css/themes/Breadcrumbs.css +1 -1
  74. package/dist/css/themes/Checkbox.css +1 -1
  75. package/dist/css/themes/CountrySelector.css +1 -1
  76. package/dist/css/themes/DatePicker.css +1 -1
  77. package/dist/css/themes/Dropdown.css +1 -1
  78. package/dist/css/themes/FilterMenu.css +1 -1
  79. package/dist/css/themes/HeroBanner.css +1 -1
  80. package/dist/css/themes/InputGroup.css +1 -0
  81. package/dist/css/themes/MastheadItem.css +1 -1
  82. package/dist/css/themes/MastheadMenuItem.css +1 -1
  83. package/dist/css/themes/MastheadShell.css +1 -1
  84. package/dist/css/themes/MediaPlayer.css +1 -1
  85. package/dist/css/themes/PhoneNumberField.css +1 -1
  86. package/dist/css/themes/RatingIndicator.css +1 -1
  87. package/dist/css/themes/Search.css +1 -1
  88. package/dist/css/themes/SearchSuggestions.css +1 -1
  89. package/dist/css/themes/SecondaryNavigation.css +1 -1
  90. package/dist/css/themes/SecondaryNavigationItem.css +1 -0
  91. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -0
  92. package/dist/css/themes/Slider.css +1 -1
  93. package/dist/css/themes/StatusBadge.css +1 -0
  94. package/dist/css/themes/Tag.css +1 -1
  95. package/dist/css/themes/TextField.css +1 -1
  96. package/dist/custom-elements-internal.json +1070 -116
  97. package/dist/custom-elements.json +1047 -169
  98. package/dist/features/SearchSuggestionsPopover.d.ts +3 -3
  99. package/dist/features/SearchSuggestionsPopover.js +16 -18
  100. package/dist/features/SearchSuggestionsPopover.js.map +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  102. package/dist/generated/i18n/i18n-defaults.d.ts +8 -1
  103. package/dist/generated/i18n/i18n-defaults.js +8 -1
  104. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  105. package/dist/generated/templates/AccordionItemTemplate.lit.js +2 -1
  106. package/dist/generated/templates/AccordionItemTemplate.lit.js.map +1 -1
  107. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
  108. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  109. package/dist/generated/templates/DropdownTemplate.lit.js +1 -1
  110. package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
  111. package/dist/generated/templates/FilterMenuTemplate.lit.js +3 -3
  112. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  113. package/dist/generated/templates/FooterTemplate.lit.js +15 -15
  114. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  115. package/dist/generated/templates/HeroBannerTemplate.lit.js +2 -2
  116. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  117. package/dist/generated/templates/InputGroupTemplate.lit.d.ts +4 -0
  118. package/dist/generated/templates/InputGroupTemplate.lit.js +7 -0
  119. package/dist/generated/templates/InputGroupTemplate.lit.js.map +1 -0
  120. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +4 -4
  121. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  122. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  123. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  124. package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
  125. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
  126. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +15 -10
  127. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  128. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
  129. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  130. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +11 -10
  131. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  132. package/dist/generated/templates/SearchTemplate.lit.js +11 -10
  133. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  134. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
  135. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  136. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.d.ts +4 -0
  137. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +11 -0
  138. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -0
  139. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.d.ts +4 -0
  140. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +9 -0
  141. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -0
  142. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -9
  143. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  144. package/dist/generated/templates/SelectBoxTemplate.lit.js +1 -1
  145. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  146. package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +4 -0
  147. package/dist/generated/templates/StatusBadgeTemplate.lit.js +5 -0
  148. package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +1 -0
  149. package/dist/generated/themes/AccordionItem.css.js +1 -1
  150. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  151. package/dist/generated/themes/Avatar.css.js +1 -1
  152. package/dist/generated/themes/Avatar.css.js.map +1 -1
  153. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  154. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  155. package/dist/generated/themes/Checkbox.css.js +1 -1
  156. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  157. package/dist/generated/themes/CountrySelector.css.js +1 -1
  158. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  159. package/dist/generated/themes/DatePicker.css.js +1 -1
  160. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  161. package/dist/generated/themes/Dropdown.css.js +1 -1
  162. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  163. package/dist/generated/themes/FilterMenu.css.js +1 -1
  164. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  165. package/dist/generated/themes/HeroBanner.css.js +1 -1
  166. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  167. package/dist/generated/themes/InputGroup.css.d.ts +3 -0
  168. package/dist/generated/themes/InputGroup.css.js +9 -0
  169. package/dist/generated/themes/InputGroup.css.js.map +1 -0
  170. package/dist/generated/themes/MastheadItem.css.js +1 -1
  171. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  172. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  173. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  174. package/dist/generated/themes/MastheadShell.css.js +1 -1
  175. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  176. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  177. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  178. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  179. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  180. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  181. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  182. package/dist/generated/themes/Search.css.js +1 -1
  183. package/dist/generated/themes/Search.css.js.map +1 -1
  184. package/dist/generated/themes/SearchSuggestions.css.js +1 -1
  185. package/dist/generated/themes/SearchSuggestions.css.js.map +1 -1
  186. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  187. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  188. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +3 -0
  189. package/dist/generated/themes/SecondaryNavigationItem.css.js +9 -0
  190. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -0
  191. package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +3 -0
  192. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +9 -0
  193. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -0
  194. package/dist/generated/themes/Slider.css.js +1 -1
  195. package/dist/generated/themes/Slider.css.js.map +1 -1
  196. package/dist/generated/themes/StatusBadge.css.d.ts +3 -0
  197. package/dist/generated/themes/StatusBadge.css.js +9 -0
  198. package/dist/generated/themes/StatusBadge.css.js.map +1 -0
  199. package/dist/generated/themes/Tag.css.js +1 -1
  200. package/dist/generated/themes/Tag.css.js.map +1 -1
  201. package/dist/generated/themes/TextField.css.js +1 -1
  202. package/dist/generated/themes/TextField.css.js.map +1 -1
  203. package/dist/i18n/messagebundle.properties +12 -1
  204. package/dist/i18n/messagebundle_en.properties +8 -1
  205. package/dist/types/callback.d.ts +2 -0
  206. package/dist/types/callback.js +2 -0
  207. package/dist/types/callback.js.map +1 -0
  208. package/dist/utils/debounce.d.ts +2 -2
  209. package/dist/utils/debounce.js.map +1 -1
  210. package/dist/utils/retryUntilSuccessful.d.ts +3 -0
  211. package/dist/utils/retryUntilSuccessful.js +21 -0
  212. package/dist/utils/retryUntilSuccessful.js.map +1 -0
  213. package/dist/vscode.html-custom-data.json +178 -14
  214. package/dist/web-types.json +406 -32
  215. package/package.json +1 -1
  216. package/src/AccordionItem.hbs +12 -1
  217. package/src/AccordionItem.ts +11 -2
  218. package/src/Avatar.ts +12 -3
  219. package/src/CountrySelector.hbs +3 -3
  220. package/src/CountrySelector.ts +22 -21
  221. package/src/Dropdown.hbs +0 -1
  222. package/src/Dropdown.ts +10 -0
  223. package/src/FilterMenu.hbs +5 -1
  224. package/src/FilterMenu.ts +60 -10
  225. package/src/Footer.hbs +154 -91
  226. package/src/Footer.ts +158 -1
  227. package/src/HeroBanner.hbs +24 -21
  228. package/src/InputGroup.hbs +20 -0
  229. package/src/InputGroup.ts +137 -0
  230. package/src/List.ts +92 -21
  231. package/src/ListGroupHeader.hbs +9 -5
  232. package/src/ListItem.hbs +2 -1
  233. package/src/ListItem.ts +0 -7
  234. package/src/ListItemBase.ts +14 -0
  235. package/src/ListSelectAll.hbs +1 -0
  236. package/src/MastheadMobileMenu.hbs +51 -28
  237. package/src/MastheadMobileMenu.ts +12 -3
  238. package/src/MastheadProfileMenu.hbs +1 -1
  239. package/src/PhoneNumberField.ts +27 -3
  240. package/src/Search.hbs +26 -3
  241. package/src/Search.ts +236 -21
  242. package/src/SearchSuggestions.hbs +47 -49
  243. package/src/SearchableListBase.hbs +2 -0
  244. package/src/SecondaryNavigation.hbs +52 -72
  245. package/src/SecondaryNavigation.ts +182 -186
  246. package/src/SecondaryNavigationItem.hbs +63 -0
  247. package/src/SecondaryNavigationItem.ts +358 -0
  248. package/src/SecondaryNavigationItemBase.ts +115 -0
  249. package/src/SecondaryNavigationSubItem.hbs +41 -0
  250. package/src/SecondaryNavigationSubItem.ts +123 -0
  251. package/src/SelectBox.hbs +1 -0
  252. package/src/SelectBox.ts +38 -1
  253. package/src/StatusBadge.hbs +9 -0
  254. package/src/StatusBadge.ts +129 -0
  255. package/src/Tab.ts +1 -1
  256. package/src/Table.ts +7 -7
  257. package/src/Tag.ts +12 -3
  258. package/src/TextArea.ts +1 -1
  259. package/src/features/SearchSuggestionsPopover.ts +18 -20
  260. package/src/generated/i18n/i18n-defaults.ts +2 -2
  261. package/src/generated/templates/AccordionItemTemplate.lit.ts +2 -1
  262. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
  263. package/src/generated/templates/DropdownTemplate.lit.ts +1 -1
  264. package/src/generated/templates/FilterMenuTemplate.lit.ts +3 -3
  265. package/src/generated/templates/FooterTemplate.lit.ts +15 -15
  266. package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -2
  267. package/src/generated/templates/InputGroupTemplate.lit.ts +12 -0
  268. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +4 -4
  269. package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
  270. package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
  271. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +15 -10
  272. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
  273. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +11 -10
  274. package/src/generated/templates/SearchTemplate.lit.ts +10 -9
  275. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
  276. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +16 -0
  277. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +14 -0
  278. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -9
  279. package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
  280. package/src/generated/templates/StatusBadgeTemplate.lit.ts +10 -0
  281. package/src/generated/themes/AccordionItem.css.ts +1 -1
  282. package/src/generated/themes/Avatar.css.ts +1 -1
  283. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  284. package/src/generated/themes/Checkbox.css.ts +1 -1
  285. package/src/generated/themes/CountrySelector.css.ts +1 -1
  286. package/src/generated/themes/DatePicker.css.ts +1 -1
  287. package/src/generated/themes/Dropdown.css.ts +1 -1
  288. package/src/generated/themes/FilterMenu.css.ts +1 -1
  289. package/src/generated/themes/HeroBanner.css.ts +1 -1
  290. package/src/generated/themes/InputGroup.css.ts +13 -0
  291. package/src/generated/themes/MastheadItem.css.ts +1 -1
  292. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  293. package/src/generated/themes/MastheadShell.css.ts +1 -1
  294. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  295. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  296. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  297. package/src/generated/themes/Search.css.ts +1 -1
  298. package/src/generated/themes/SearchSuggestions.css.ts +1 -1
  299. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  300. package/src/generated/themes/SecondaryNavigationItem.css.ts +13 -0
  301. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +13 -0
  302. package/src/generated/themes/Slider.css.ts +1 -1
  303. package/src/generated/themes/StatusBadge.css.ts +13 -0
  304. package/src/generated/themes/Tag.css.ts +1 -1
  305. package/src/generated/themes/TextField.css.ts +1 -1
  306. package/src/i18n/messagebundle.properties +12 -1
  307. package/src/i18n/messagebundle_en.properties +8 -1
  308. package/src/themes/AccordionItem.css +20 -15
  309. package/src/themes/Avatar.css +20 -0
  310. package/src/themes/Breadcrumbs.css +4 -2
  311. package/src/themes/Checkbox.css +12 -0
  312. package/src/themes/CountrySelector.css +16 -1
  313. package/src/themes/DatePicker.css +1 -1
  314. package/src/themes/Dropdown.css +3 -1
  315. package/src/themes/FilterMenu.css +10 -0
  316. package/src/themes/HeroBanner.css +42 -6
  317. package/src/themes/InputGroup.css +19 -0
  318. package/src/themes/MastheadItem.css +2 -7
  319. package/src/themes/MastheadMenuItem.css +0 -4
  320. package/src/themes/MastheadShell.css +9 -10
  321. package/src/themes/MediaPlayer.css +3 -2
  322. package/src/themes/PhoneNumberField.css +17 -3
  323. package/src/themes/Search.css +168 -21
  324. package/src/themes/SearchSuggestions.css +7 -1
  325. package/src/themes/SecondaryNavigation.css +44 -302
  326. package/src/themes/SecondaryNavigationItem.css +220 -0
  327. package/src/themes/SecondaryNavigationSubItem.css +118 -0
  328. package/src/themes/StatusBadge.css +135 -0
  329. package/src/themes/Tag.css +6 -1
  330. package/src/themes/TextField.css +10 -1
  331. package/src/types/callback.ts +3 -0
  332. package/src/utils/debounce.ts +1 -1
  333. package/src/utils/retryUntilSuccessful.ts +23 -0
  334. package/dist/assets/messagebundle_en-26cd7a92.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SecondaryNavigation.js","sourceRoot":"","sources":["../src/SecondaryNavigation.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 property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport {\n isLeft,\n isRight,\n isUp,\n isDown,\n isEscape,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { MORE } from \"./generated/i18n/i18n-defaults.js\";\n\nimport SecondaryNavigationTemplate from \"./generated/templates/SecondaryNavigationTemplate.lit.js\";\n\n// Styles\nimport SecondaryNavigationCss from \"./generated/themes/SecondaryNavigation.css.js\";\n\nconst mobileMenuActiveClass = \"udex-secondary-navigation__root_open\";\nconst rootClass = \"udex-secondary-navigation__root\";\nconst breakpointSizeS: number = 979;\n\nexport enum Target {\n _blank = \"_blank\",\n _parent = \"_parent\",\n _self = \"_self\",\n _top = \"_top\",\n}\n\nexport type NavItem = {\n path: string;\n mobileLinkTitle: string;\n target: Target;\n title: string;\n active?: boolean;\n}\n\nexport type SecondaryNavigationItemClickDetail = {\n originalEvent: Event,\n clickedItem: HTMLElement;\n clickedIndex: number;\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-secondary-navigation</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/SecondaryNavigation.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-secondary-navigation\",\n renderer: litRender,\n styles: SecondaryNavigationCss,\n template: SecondaryNavigationTemplate,\n dependencies: [UI5Icon],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event<SecondaryNavigationItemClickDetail>(\"item-click\", {\n detail: {\n originalEvent: {\n type: Event,\n },\n clickedItem: {\n type: HTMLElement,\n },\n clickedIndex: {\n type: Integer,\n },\n },\n})\n\nclass UDExSecondaryNavigation extends UI5Element {\n /**\n * Defines an aria label for the mobile menu opener\n *\n * @public\n */\n @property({ type: String })\n mobileMenuOpenerAriaLabel!: string;\n\n /**\n * List of the nav items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: String, defaultValue: \"[]\" })\n navItems!: string;\n\n /**\n * Slot for breadcrumbs.\n *\n * @slot breadcrumbs\n * @public\n */\n @slot({ type: HTMLElement })\n breadcrumbs!: Array<HTMLElement>;\n\n /**\n * Slot for action buttons.\n *\n * @slot buttons\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Array<HTMLElement>;\n\n /**\n * Defines the title of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n title!: string;\n\n @property({ type: Boolean, noAttribute: true })\n _dropdownMoreIsOpen!: boolean;\n\n @property({ type: HTMLElement, defaultValue: [], noAttribute: true })\n _overflowItems!: Array<NavItem>;\n\n @property({ type: HTMLElement, defaultValue: [], noAttribute: true })\n _navItems!: Array<NavItem>;\n\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n @property({ type: Boolean, noAttribute: true })\n _mobileBtnExpanded = false;\n\n _navigationList: Array<NavItem> | undefined;\n _dropdown!: HTMLElement | null | undefined;\n _rootHolder!: HTMLElement | null | undefined;\n _boundReflowItems: () => void;\n\n static i18nBundle: any;\n\n static async onDefine(): Promise<void> {\n UDExSecondaryNavigation.i18nBundle = await getI18nBundle(\"udex-secondary-navigation\");\n }\n\n constructor() {\n super();\n this._boundReflowItems = this.reflowItems.bind(this);\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n\n if (this.isDesktopScreen) {\n this.reflowItems();\n }\n\n ResizeHandler.register(this.rootHolder, this._boundReflowItems);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this.rootHolder, this._boundReflowItems);\n }\n\n onAfterRendering(): void {\n this._rootHolder = this.rootHolder;\n this._dropdown = this.getDropdown();\n\n this.handleOutsideClick();\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n reflowItems(): void {\n const availableWidth = this.rootHolder.offsetWidth - this.heading.offsetWidth - (this.optionalButtons?.offsetWidth || 0);\n const moreButtonWidth = this.getMoreButtonWidth();\n const itemsGap = 20;\n\n const widths = this.navigationList.map(item => this.getItemWidth(item));\n\n const steps: Array<number> = [];\n widths.forEach((itemWidth, index) => {\n steps.push((steps.at(-1) || 0) + itemWidth + (index && itemsGap));\n });\n\n if ((steps.at(-1) || 0) <= availableWidth) {\n this._navItems.splice(0, Infinity, ...this.navigationList);\n this.refreshRendering();\n return;\n }\n\n // @ts-ignore\n const lastVisibleIndex: number = steps.findLastIndex((size: number) => size < (availableWidth - moreButtonWidth - 20));\n this._navItems.splice(0, Infinity, ...this.navigationList.slice(0, lastVisibleIndex + 1));\n this._overflowItems.splice(0, Infinity, ...this.navigationList.slice(lastVisibleIndex + 1));\n this.refreshRendering();\n }\n\n handleKeyDown(e: KeyboardEvent) {\n e.stopPropagation();\n this.handleLeftArrow(e);\n this.handleRightArrow(e);\n this.handleEscapeKey(e);\n }\n\n handleEscapeKey(e: KeyboardEvent) {\n if (isEscape(e)) {\n if (!this.isDesktopScreen) {\n this._rootHolder?.classList.remove(mobileMenuActiveClass);\n this.getMobileButtonMenu().focus();\n } else {\n this.onCloseDropdown();\n this.getMoreButton().focus();\n }\n }\n }\n\n handleKeyDownDropdown(e: KeyboardEvent) {\n e.stopPropagation();\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n this.handleEscapeKey(e);\n }\n\n handleLeftArrow(e: KeyboardEvent): void {\n if (isLeft(e)) {\n this.focusPrevNavItem(e);\n }\n }\n\n handleRightArrow(e: KeyboardEvent): void {\n if (isRight(e)) {\n this.focusNextNavItem(e);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n if (isUp(e)) {\n this.focusPrevNavItem(e);\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n if (isDown(e)) {\n this.focusNextNavItem(e);\n }\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", () => {\n if (this._dropdown) {\n this.onCloseDropdown();\n }\n });\n }\n\n handleMobileOpen(): void {\n this._rootHolder?.classList.toggle(mobileMenuActiveClass);\n this._mobileBtnExpanded = !this._mobileBtnExpanded;\n }\n\n handleToggleDropdown(): void {\n this._dropdownMoreIsOpen = !this._dropdownMoreIsOpen;\n }\n\n focusPrevNavItem(e: KeyboardEvent): void {\n const el = e.target as HTMLElement;\n const currentItem = el.parentElement as HTMLElement;\n const currentSelectedIndex = this.getCurrentIndex(currentItem);\n const lastItemIndex = this.navigationItems.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n const listItem = this.getListItemByIndex(previousSelectIndex);\n listItem?.focus();\n }\n\n focusNextNavItem(e: KeyboardEvent): void {\n const el = e.target as HTMLElement;\n const currentItem = el.parentElement as HTMLElement;\n const currentSelectedIndex = this.getCurrentIndex(currentItem);\n const nextSelectIndex = currentSelectedIndex + 1 > this.navigationItems.length - 1 ? 0 : currentSelectedIndex + 1;\n const listItem = this.getListItemByIndex(nextSelectIndex);\n listItem?.focus();\n }\n\n onCloseDropdown(): void {\n this._dropdownMoreIsOpen = false;\n }\n\n getItemWidth(item: NavItem): number {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = \"16px / 17.6px '72 Brand Variable'\";\n\n return Math.ceil(context.measureText(item.title).width);\n }\n\n getCurrentIndex(item: HTMLElement): number {\n return this.navigationItems.indexOf(item);\n }\n\n getListItemByIndex(index: number): HTMLElement | null {\n return this.navigationItems[index].querySelector(\".udex-secondary-navigation__link-btn\");\n }\n\n getDropdown(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-secondary-navigation__dropdown\")!;\n }\n\n getMobileButtonMenu(): HTMLElement {\n return this.shadowRoot?.querySelector(\".udex-secondary-navigation__mobile-opener\") as HTMLElement;\n }\n\n getMoreButton(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-secondary-navigation__list-item_more > button\")!;\n }\n\n getMoreButtonWidth(): number {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = \"16px / 17.6px '72 Brand Variable'\";\n\n return Math.ceil(context.measureText(\"More\").width) + 4 + 16;\n }\n\n parseArrayFromString<T>(string: string): T[] {\n return string ? JSON.parse(string) as T[] : [];\n }\n\n handleNavigationClick(e: MouseEvent) {\n const target = e.target as HTMLElement;\n const clickedIndex = this.domNavItems.indexOf(target);\n const prevented = !this.fireEvent(\"item-click\", {\n originalEvent: e,\n clickedItem: target,\n clickedIndex,\n }, true);\n\n if (prevented) {\n e.preventDefault();\n return;\n }\n\n if (this.domNavItems.length > 0) {\n this.navigationList.forEach(item => delete item.active);\n this.navigationList[clickedIndex].active = true;\n this.refreshRendering();\n }\n }\n\n get navigationItems(): Array<HTMLElement> {\n return Array.from(this.shadowRoot!.querySelectorAll(\".udex-secondary-navigation__link-btn-wrap\"));\n }\n\n get domNavItems(): Array<HTMLElement> {\n const navigationItemsSelector = \".udex-secondary-navigation__item:not(.udex-secondary-navigation__link-btn-more), .udex-secondary-navigation__dropdown-item\";\n const domNavItems = this.shadowRoot?.querySelectorAll<HTMLElement>(navigationItemsSelector);\n return domNavItems ? Array.from(domNavItems) : [];\n }\n\n get rootHolder(): HTMLElement {\n return (this.shadowRoot ? this.shadowRoot.querySelector<HTMLElement>(\".udex-secondary-navigation__root\") : undefined)!;\n }\n\n get heading(): HTMLElement {\n return (this.shadowRoot ? this.shadowRoot.querySelector<HTMLElement>(\".udex-secondary-navigation__heading\") : undefined)!;\n }\n\n get optionalButtons() {\n return this.shadowRoot?.querySelector<HTMLElement>(\".udex-secondary-navigation__buttons\");\n }\n\n get linksList() {\n return this.shadowRoot?.querySelector<HTMLElement>(\".udex-secondary-navigation__list\");\n }\n\n get moreButtonText(): string {\n return UDExSecondaryNavigation.i18nBundle.getText(MORE) as string;\n }\n\n get activeItemText(): string {\n const activeItem = this.navigationList.find(item => item.active);\n return activeItem ? activeItem?.title : \"\";\n }\n\n get moreClass(): string {\n const rootClasses = \"udex-secondary-navigation__list-item udex-secondary-navigation__list-item_more\";\n return this._dropdownMoreIsOpen ? `${rootClasses} udex-secondary-navigation__list-item_open` : `${rootClasses}`;\n }\n\n get navigationList(): Array<NavItem> {\n if (!this._navigationList) {\n this._navigationList = this.parseArrayFromString<NavItem>(this.navItems);\n }\n return this._navigationList;\n }\n\n get items(): Array<NavItem> {\n return this.isDesktopScreen ? this._navItems : this.navigationList;\n }\n\n get moreIsActive(): boolean {\n return this._overflowItems.some(item => item.active);\n }\n\n get rootClass(): string {\n const centeredClass = this.hasBreadcrumbsSlot ? \"\" : `${rootClass}_centered`;\n return `${rootClass} ${centeredClass}`;\n }\n\n get hasBreadcrumbsSlot(): boolean {\n return !!this.getSlottedNodes(\"breadcrumbs\").length;\n }\n\n get isDesktopScreen(): boolean {\n return window.innerWidth > breakpointSizeS;\n }\n}\n\nUDExSecondaryNavigation.define();\n\nexport default UDExSecondaryNavigation;\n"]}
1
+ {"version":3,"file":"SecondaryNavigation.js","sourceRoot":"","sources":["../src/SecondaryNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element, { ChangeInfo } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport {\n isLeft,\n isRight,\n isEscape,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport UDExSecondaryNavigationItem from \"./SecondaryNavigationItem.js\";\nimport UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport UDExSecondaryNavigationItemBase, { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport { MORE } from \"./generated/i18n/i18n-defaults.js\";\n\nimport SecondaryNavigationTemplate from \"./generated/templates/SecondaryNavigationTemplate.lit.js\";\n\n// Styles\nimport SecondaryNavigationCss from \"./generated/themes/SecondaryNavigation.css.js\";\n\nconst canvasContentFont: string = \"16px / 17.6px '72 Brand Variable'\";\nconst breakpointSizeS: number = 979;\n\nexport type SecondaryNavigationItemClickDetail = {\n originalEvent: Event,\n clickedItem: UDExSecondaryNavigationItem;\n clickedIndex: number;\n};\n\nexport type SecondaryNavigationSubItemClickDetail = {\n originalEvent: Event,\n clickedItem: {\n items: Array<NavItem>\n };\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-secondary-navigation</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/SecondaryNavigation.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-secondary-navigation\",\n renderer: litRender,\n styles: SecondaryNavigationCss,\n template: SecondaryNavigationTemplate,\n dependencies: [UDExSecondaryNavigationItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event<SecondaryNavigationItemClickDetail>(\"item-click\", {\n detail: {\n originalEvent: {\n type: Event,\n },\n clickedItem: {\n type: HTMLElement,\n },\n clickedIndex: {\n type: Integer,\n },\n },\n})\n\n/**\n * Fires when sub item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event<SecondaryNavigationSubItemClickDetail>(\"sub-item-click\", {\n detail: {\n originalEvent: {\n type: Event,\n },\n clickedItem: {\n type: HTMLElement,\n },\n },\n})\n\nclass UDExSecondaryNavigation extends UI5Element {\n /**\n * Defines an aria label for the mobile menu opener\n *\n * @public\n */\n @property({ type: String })\n mobileMenuOpenerAriaLabel!: string;\n\n /**\n * List of the nav items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: String, defaultValue: \"[]\" })\n navItems!: string;\n\n /**\n * Slot for breadcrumbs.\n *\n * @slot breadcrumbs\n * @public\n */\n @slot({ type: HTMLElement })\n breadcrumbs!: Array<HTMLElement>;\n\n /**\n * Slot for action buttons.\n *\n * @slot buttons\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Array<HTMLElement>;\n\n /**\n * Defines the title of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n title!: string;\n\n /**\n * Defines the href of the title.\n *\n * @default \"\"\n * @public\n */\n @property()\n titleHref!: string;\n\n @property({ type: Boolean, noAttribute: true })\n _selectedMore!: boolean;\n\n @property({ type: Object, multiple: true, noAttribute: true })\n _overflowItems!: Array<NavItem>;\n\n @property({ type: Object, multiple: true, noAttribute: true })\n _visibleItems!: Array<NavItem>;\n\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n @property({ type: Boolean, noAttribute: true })\n _mobileBtnExpanded = false;\n\n _navItems!: Array<NavItem>;\n _showMoreButton: boolean;\n _rootHolder!: HTMLElement | null | undefined;\n _clickedNavItem!: UDExSecondaryNavigationItem;\n _boundReflowItems: () => void;\n\n static i18nBundle: any;\n\n static async onDefine(): Promise<void> {\n UDExSecondaryNavigation.i18nBundle = await getI18nBundle(\"udex-secondary-navigation\");\n }\n\n constructor() {\n super();\n this._showMoreButton = true;\n this._boundReflowItems = this.reflowItems.bind(this);\n }\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n\n ResizeHandler.register(this, this._boundReflowItems);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._boundReflowItems);\n }\n\n onInvalidation(changeInfo: ChangeInfo): void {\n if (changeInfo.name === \"navItems\") {\n this.reflowItems();\n }\n }\n\n onAfterRendering(): void {\n this._rootHolder = this.rootHolder;\n this.handleOutsideClick();\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n reflowItems(): void {\n const availableWidth = this.rootHolder.offsetWidth - this.heading?.offsetWidth - (this.optionalButtons?.offsetWidth || 0);\n const moreButtonWidth = this.getMoreButtonWidth();\n const itemsGap = 20;\n const widths = this.parsedItems.map(item => this.getItemWidth(item));\n const steps: Array<number> = [];\n\n widths?.forEach((itemWidth, index) => {\n steps.push((steps.at(-1) || 0) + itemWidth + (index && itemsGap));\n });\n\n if ((steps.at(-1) || 0) <= availableWidth) {\n this._visibleItems.splice(0, Infinity, ...this.parsedItems);\n this._showMoreButton = false;\n this.refreshRendering();\n return;\n }\n\n if (this.parsedItems) {\n // @ts-ignore\n const lastVisibleIndex: number = steps.findLastIndex((size: number) => size < (availableWidth - moreButtonWidth - itemsGap));\n this._visibleItems.splice(0, Infinity, ...this.parsedItems.slice(0, lastVisibleIndex + 1));\n this._overflowItems.splice(0, Infinity, ...this.parsedItems.slice(lastVisibleIndex + 1));\n this._showMoreButton = true;\n this.refreshRendering();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isLeft(e)) {\n this.focusPrevNavItem(e);\n }\n if (isRight(e)) {\n this.focusNextNavItem(e);\n }\n if (isEscape(e)) {\n (e.target as UDExSecondaryNavigationItem).closeDropdown();\n }\n }\n\n focusPrevNavItem(e: KeyboardEvent): void {\n const item = e.target as UDExSecondaryNavigationItem;\n const currentSelectedIndex = this.getCurrentIndex(item);\n const lastItemIndex = this.domNavItems.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n this.domNavItems[previousSelectIndex]?.focus();\n }\n\n focusNextNavItem(e: KeyboardEvent): void {\n const item = e.target as UDExSecondaryNavigationItem;\n const currentSelectedIndex = this.getCurrentIndex(item);\n const nextSelectIndex = currentSelectedIndex + 1 > this.domNavItems.length - 1 ? 0 : currentSelectedIndex + 1;\n this.domNavItems[nextSelectIndex].focus();\n }\n\n getItemWidth(item: NavItem): number {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = canvasContentFont;\n\n return Math.ceil(context.measureText(item.title).width);\n }\n\n getMoreButtonWidth(): number {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = canvasContentFont;\n\n return Math.ceil(context.measureText(this.moreButtonText).width);\n }\n\n getCurrentIndex(item: UDExSecondaryNavigationItem): number {\n return this.domNavItems.indexOf(item);\n }\n\n handleItemClick(e: CustomEvent): void {\n const clickedItem = e.detail.item as UDExSecondaryNavigationItem;\n const prevented = !this.fireEvent(\"item-click\", {\n originalEvent: e,\n clickedItem,\n clickedIndex: this.getCurrentIndex(clickedItem),\n }, true);\n\n if (prevented) {\n e.preventDefault();\n return;\n }\n\n this._clickedNavItem = clickedItem;\n this.closePrevDropdown(clickedItem._id);\n\n if (!clickedItem.hasNestedItems) {\n this.setActiveItem(this.parsedItems, clickedItem);\n }\n }\n\n handleSubItemClick(e: CustomEvent): void {\n const item = e.detail.item as UDExSecondaryNavigationSubItem;\n const { items } = item as NavItem;\n const prevented = !this.fireEvent(\"sub-item-click\", {\n originalEvent: e,\n clickedItem: item,\n }, true);\n\n if (prevented) {\n e.preventDefault();\n return;\n }\n\n if (this.isMobileScreen && !items) {\n this.mobileNav.closeDropdown();\n }\n\n if (!items) {\n this.setActiveItem(this.parsedItems, item);\n this._clickedNavItem?.closeDropdown();\n }\n }\n\n setActiveItem(navItems: Array<NavItem>, clickedItem: UDExSecondaryNavigationItemBase): void {\n const updateNav = (items: Array<NavItem>, { title, path }: UDExSecondaryNavigationItemBase) => {\n items.forEach(item => {\n if (item.title === title && item.path === path) {\n item.active = true;\n return;\n }\n delete item.active;\n\n if (item.items) {\n updateNav(item.items, clickedItem);\n }\n });\n };\n\n updateNav(navItems, clickedItem);\n this.navItems = JSON.stringify(navItems);\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", (e: MouseEvent) => {\n if (this.isMobileScreen && e.target !== this) {\n this.mobileNav?.closeDropdown();\n return;\n }\n\n const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);\n if (this.isDesktopScreen && !isClickedNavItem && this._clickedNavItem) {\n this._clickedNavItem.closeDropdown();\n }\n });\n }\n\n closePrevDropdown(clickedItemId: string): void {\n this.domNavItems.forEach(item => {\n if (clickedItemId !== item._id) {\n item.closeDropdown();\n }\n });\n }\n\n parseArrayFromString<T>(string: string): T[] {\n return string ? JSON.parse(string) as T[] : [];\n }\n\n get domNavItems(): Array<UDExSecondaryNavigationItem> {\n const items = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationItem>(\"udex-secondary-navigation-item\");\n return items ? Array.from(items) : [];\n }\n\n get rootHolder(): HTMLElement {\n return (this.shadowRoot ? this.shadowRoot.querySelector<HTMLElement>(\".udex-secondary-navigation__root\") : undefined)!;\n }\n\n get heading(): HTMLElement {\n return (this.shadowRoot ? this.shadowRoot.querySelector<HTMLElement>(\".udex-secondary-navigation__heading\") : undefined)!;\n }\n\n get mobileNav(): UDExSecondaryNavigationItem {\n return (this.shadowRoot ? this.shadowRoot.querySelector<UDExSecondaryNavigationItem>(\".udex-secondary-navigation__mobile-nav\") : undefined)!;\n }\n\n get optionalButtons(): HTMLElement | null | undefined {\n return this.shadowRoot?.querySelector<HTMLElement>(\".udex-secondary-navigation__buttons\");\n }\n\n get moreButtonText(): string {\n return UDExSecondaryNavigation.i18nBundle.getText(MORE) as string;\n }\n\n get parsedItems(): Array<NavItem> {\n return this.parseArrayFromString<NavItem>(this.navItems);\n }\n\n get visibleItems(): Array<NavItem> {\n return this.isDesktopScreen ? this._visibleItems : this.parsedItems;\n }\n\n get hasBreadcrumbsSlot(): boolean {\n return !!this.getSlottedNodes(\"breadcrumbs\").length && this.isDesktopScreen;\n }\n\n get hasDesktopButtonsSlot(): boolean {\n return this.hasButtons && this.isDesktopScreen;\n }\n\n get hasMobileButtonsSlot(): boolean {\n return this.hasButtons && this.isMobileScreen;\n }\n\n get hasButtons(): boolean {\n return !!this.getSlottedNodes(\"buttons\").length;\n }\n\n get isDesktopScreen(): boolean {\n return window.innerWidth > breakpointSizeS;\n }\n\n get isMobileScreen(): boolean {\n return window.innerWidth <= breakpointSizeS;\n }\n}\n\nUDExSecondaryNavigation.define();\n\nexport default UDExSecondaryNavigation;\n"]}
@@ -0,0 +1,101 @@
1
+ import UDExSecondaryNavigationSubItem from "./SecondaryNavigationSubItem.js";
2
+ import UDExSecondaryNavigationItemBase, { NavItem } from "./SecondaryNavigationItemBase.js";
3
+ import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
4
+ export declare const menuItemRole: string;
5
+ /**
6
+ * @class
7
+ *
8
+ * <h3 class="comment-api-title">Overview</h3>
9
+ *
10
+ *
11
+ * <h3>Usage</h3>
12
+ *
13
+ * For the <code>udex-secondary-navigation-item</code>
14
+ * <h3>ES6 Module Import</h3>
15
+ *
16
+ * <code>import "@udex/web-components/dist/SecondaryNavigationItem.js";</code>
17
+ *
18
+ * @constructor
19
+ * @extends UDExSecondaryNavigationItemBase
20
+ * @tagname udex-secondary-navigation-item
21
+ * @private
22
+ */
23
+ declare class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
24
+ /**
25
+ * Defines an aria label for item
26
+ *
27
+ * @public
28
+ */
29
+ ariaLabel: string;
30
+ /**
31
+ * Defines a role for item
32
+ *
33
+ * @public
34
+ */
35
+ role: string;
36
+ /**
37
+ * Defines the content of the item.
38
+ *
39
+ * @slot content
40
+ * @public
41
+ */
42
+ buttons: Array<HTMLElement>;
43
+ /**
44
+ * List of the sub items
45
+ *
46
+ * @default "[]"
47
+ * @public
48
+ */
49
+ subItems: Array<NavItem>;
50
+ /**
51
+ * Defines if dropdown is opened.
52
+ *
53
+ * @public
54
+ * @default false
55
+ */
56
+ isOpen: boolean;
57
+ /**
58
+ * Defines processed items.
59
+ *
60
+ * @private
61
+ * @default []
62
+ */
63
+ _processedItems: Array<NavItem>;
64
+ _dropdownHistory: Array<Array<NavItem>>;
65
+ _shouldFocusFirstSubItem: boolean;
66
+ _subTitle: string | undefined;
67
+ onAfterRendering(): void;
68
+ onBeforeRendering(): void;
69
+ onItemClick(): void;
70
+ onSubItemClick(e: Event): void;
71
+ onBackClick(): void;
72
+ toggleDropdown(): void;
73
+ closeDropdown(): void;
74
+ handleItemLinkKeyDown(e: KeyboardEvent): void;
75
+ handleItemButtonKeyDown(e: KeyboardEvent): void;
76
+ handleSubItemKeyDown(e: KeyboardEvent): void;
77
+ handleUpArrow(e: KeyboardEvent): void;
78
+ handleDownArrow(e: KeyboardEvent): void;
79
+ handleLeftArrow(e: KeyboardEvent): void;
80
+ handleRightArrow(e: KeyboardEvent): void;
81
+ handleEnterAndSpace(e: KeyboardEvent): void;
82
+ handleEscapeKey(): void;
83
+ setDropdownHistory(): void;
84
+ setPrevNestedItems(): void;
85
+ setNestedItems({ title, items }: NavItem): void;
86
+ setDropdownItems(): void;
87
+ onFirstSubItemFocus(): void;
88
+ onLastSubItemFocus(): void;
89
+ onShouldFocusFirstSubItem(): void;
90
+ get domNavItems(): Array<UDExSecondaryNavigationSubItem>;
91
+ get hasNestedItems(): boolean;
92
+ get isSubItemActive(): boolean;
93
+ get isActive(): boolean;
94
+ get subActiveItemTitle(): string | undefined;
95
+ get subActiveItem(): NavItem | undefined;
96
+ get isLink(): boolean;
97
+ get itemRole(): string;
98
+ get menuItemRole(): string;
99
+ get title(): string;
100
+ }
101
+ export default UDExSecondaryNavigationItem;
@@ -0,0 +1,287 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
8
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
9
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
10
+ import event from "@ui5/webcomponents-base/dist/decorators/event.js";
11
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
12
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
13
+ import { isLeft, isRight, isUp, isDown, isEscape, isSpace, isEnter, isHome, isEnd, } from "@ui5/webcomponents-base/dist/Keys.js";
14
+ import UDExSecondaryNavigationSubItem from "./SecondaryNavigationSubItem.js";
15
+ import UDExSecondaryNavigationItemBase from "./SecondaryNavigationItemBase.js";
16
+ import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
17
+ import SecondaryNavigationItemTemplate from "./generated/templates/SecondaryNavigationItemTemplate.lit.js";
18
+ // Styles
19
+ import SecondaryNavigationItemCss from "./generated/themes/SecondaryNavigationItem.css.js";
20
+ export const menuItemRole = "menuitem";
21
+ /**
22
+ * @class
23
+ *
24
+ * <h3 class="comment-api-title">Overview</h3>
25
+ *
26
+ *
27
+ * <h3>Usage</h3>
28
+ *
29
+ * For the <code>udex-secondary-navigation-item</code>
30
+ * <h3>ES6 Module Import</h3>
31
+ *
32
+ * <code>import "@udex/web-components/dist/SecondaryNavigationItem.js";</code>
33
+ *
34
+ * @constructor
35
+ * @extends UDExSecondaryNavigationItemBase
36
+ * @tagname udex-secondary-navigation-item
37
+ * @private
38
+ */
39
+ let UDExSecondaryNavigationItem = class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
40
+ constructor() {
41
+ super(...arguments);
42
+ /**
43
+ * Defines processed items.
44
+ *
45
+ * @private
46
+ * @default []
47
+ */
48
+ this._processedItems = [];
49
+ this._dropdownHistory = [];
50
+ }
51
+ onAfterRendering() {
52
+ if (this._shouldFocusFirstSubItem && this.isOpen) {
53
+ this.onFirstSubItemFocus();
54
+ this._shouldFocusFirstSubItem = false;
55
+ }
56
+ }
57
+ onBeforeRendering() {
58
+ this._subTitle = this.subActiveItemTitle || this._subTitle;
59
+ }
60
+ onItemClick() {
61
+ if (this.hasNestedItems) {
62
+ this.setDropdownItems();
63
+ this.toggleDropdown();
64
+ }
65
+ this.fireEvent("nav-item-click", { item: this });
66
+ }
67
+ onSubItemClick(e) {
68
+ const { index } = e.target;
69
+ const clickedItem = this._processedItems[index];
70
+ if (clickedItem.items) {
71
+ this.setDropdownHistory();
72
+ this.setNestedItems(clickedItem);
73
+ }
74
+ this.fireEvent("sub-item-click", {
75
+ item: clickedItem,
76
+ });
77
+ }
78
+ onBackClick() {
79
+ this.setPrevNestedItems();
80
+ }
81
+ toggleDropdown() {
82
+ this.isOpen = !this.isOpen;
83
+ }
84
+ closeDropdown() {
85
+ this.isOpen = false;
86
+ }
87
+ handleItemLinkKeyDown(e) {
88
+ if (isEnter(e) || isSpace(e)) {
89
+ e.preventDefault();
90
+ this.onItemClick();
91
+ }
92
+ }
93
+ handleItemButtonKeyDown(e) {
94
+ if (isEnter(e) || isSpace(e)) {
95
+ this.onShouldFocusFirstSubItem();
96
+ }
97
+ }
98
+ handleSubItemKeyDown(e) {
99
+ e.stopPropagation();
100
+ if (isEscape(e)) {
101
+ this.handleEscapeKey();
102
+ }
103
+ if (isLeft(e)) {
104
+ this.handleLeftArrow(e);
105
+ }
106
+ if (isRight(e)) {
107
+ this.handleRightArrow(e);
108
+ }
109
+ if (isUp(e)) {
110
+ e.preventDefault();
111
+ this.handleUpArrow(e);
112
+ }
113
+ if (isDown(e)) {
114
+ e.preventDefault();
115
+ this.handleDownArrow(e);
116
+ }
117
+ if (isHome(e)) {
118
+ e.preventDefault();
119
+ this.onFirstSubItemFocus();
120
+ }
121
+ if (isEnd(e)) {
122
+ e.preventDefault();
123
+ this.onLastSubItemFocus();
124
+ }
125
+ if (isEnter(e) || isSpace(e)) {
126
+ e.preventDefault();
127
+ this.handleEnterAndSpace(e);
128
+ }
129
+ }
130
+ handleUpArrow(e) {
131
+ const { index } = e.target;
132
+ const lastIndex = this.domNavItems.length - 1;
133
+ const previousIndex = index - 1 < 0 ? lastIndex : index - 1;
134
+ if (!(lastIndex === previousIndex)) {
135
+ this.domNavItems[previousIndex].focus();
136
+ }
137
+ }
138
+ handleDownArrow(e) {
139
+ const { index } = e.target;
140
+ const nextIndex = index + 1 > this.domNavItems.length - 1 ? 0 : index + 1;
141
+ if (!(nextIndex === 0)) {
142
+ this.domNavItems[nextIndex].focus();
143
+ }
144
+ }
145
+ handleLeftArrow(e) {
146
+ const { isBack } = e.target;
147
+ if (isBack) {
148
+ this.setPrevNestedItems();
149
+ this.onShouldFocusFirstSubItem();
150
+ }
151
+ }
152
+ handleRightArrow(e) {
153
+ const { hasItems, isBack } = e.target;
154
+ if (hasItems && !isBack) {
155
+ this.onSubItemClick(e);
156
+ this.onShouldFocusFirstSubItem();
157
+ }
158
+ }
159
+ handleEnterAndSpace(e) {
160
+ const { hasItems, isBack } = e.target;
161
+ if (isBack) {
162
+ this.onBackClick();
163
+ this.onShouldFocusFirstSubItem();
164
+ return;
165
+ }
166
+ this.onSubItemClick(e);
167
+ if (hasItems) {
168
+ this.onShouldFocusFirstSubItem();
169
+ }
170
+ else {
171
+ this.closeDropdown();
172
+ this.focus();
173
+ }
174
+ }
175
+ handleEscapeKey() {
176
+ this.closeDropdown();
177
+ this.focus();
178
+ }
179
+ setDropdownHistory() {
180
+ this._dropdownHistory.push(this._processedItems);
181
+ }
182
+ setPrevNestedItems() {
183
+ this._processedItems = this._dropdownHistory.pop();
184
+ }
185
+ setNestedItems({ title, items }) {
186
+ if (items) {
187
+ this._processedItems = [{ title, isBack: true }, ...items];
188
+ }
189
+ }
190
+ setDropdownItems() {
191
+ this._processedItems = this.subItems;
192
+ }
193
+ onFirstSubItemFocus() {
194
+ this.domNavItems[0].focus();
195
+ }
196
+ onLastSubItemFocus() {
197
+ this.domNavItems[this.domNavItems.length - 1].focus();
198
+ }
199
+ onShouldFocusFirstSubItem() {
200
+ this._shouldFocusFirstSubItem = true;
201
+ }
202
+ get domNavItems() {
203
+ const domNavItems = this.shadowRoot?.querySelectorAll("udex-secondary-navigation-sub-item");
204
+ return domNavItems ? Array.from(domNavItems) : [];
205
+ }
206
+ get hasNestedItems() {
207
+ return this.subItems.length > 0;
208
+ }
209
+ get isSubItemActive() {
210
+ return !!this.subActiveItem?.active;
211
+ }
212
+ get isActive() {
213
+ return this.isSubItemActive || this.active;
214
+ }
215
+ get subActiveItemTitle() {
216
+ return this.subActiveItem?.title;
217
+ }
218
+ get subActiveItem() {
219
+ return this.getActiveSubItem(this.subItems);
220
+ }
221
+ get isLink() {
222
+ return !this.hasNestedItems && !!this.path;
223
+ }
224
+ get itemRole() {
225
+ return this.role ? this.role : this.menuItemRole;
226
+ }
227
+ get menuItemRole() {
228
+ return menuItemRole;
229
+ }
230
+ get title() {
231
+ return this.label;
232
+ }
233
+ };
234
+ __decorate([
235
+ property({ type: String })
236
+ ], UDExSecondaryNavigationItem.prototype, "ariaLabel", void 0);
237
+ __decorate([
238
+ property({ type: String })
239
+ ], UDExSecondaryNavigationItem.prototype, "role", void 0);
240
+ __decorate([
241
+ slot({ type: HTMLElement })
242
+ ], UDExSecondaryNavigationItem.prototype, "buttons", void 0);
243
+ __decorate([
244
+ property({ type: Object, multiple: true })
245
+ ], UDExSecondaryNavigationItem.prototype, "subItems", void 0);
246
+ __decorate([
247
+ property({ type: Boolean })
248
+ ], UDExSecondaryNavigationItem.prototype, "isOpen", void 0);
249
+ __decorate([
250
+ property({ type: Object })
251
+ ], UDExSecondaryNavigationItem.prototype, "_processedItems", void 0);
252
+ UDExSecondaryNavigationItem = __decorate([
253
+ customElement({
254
+ tag: "udex-secondary-navigation-item",
255
+ renderer: litRender,
256
+ styles: SecondaryNavigationItemCss,
257
+ template: SecondaryNavigationItemTemplate,
258
+ dependencies: [UI5Icon, UDExSecondaryNavigationSubItem],
259
+ })
260
+ /**
261
+ * Fires when item is clicked
262
+ *
263
+ * @allowPreventDefault
264
+ * @public
265
+ */
266
+ ,
267
+ event("nav-item-click", {
268
+ detail: {
269
+ item: { type: HTMLElement },
270
+ },
271
+ })
272
+ /**
273
+ * Fires when dropdown item is clicked
274
+ *
275
+ * @allowPreventDefault
276
+ * @public
277
+ */
278
+ ,
279
+ event("sub-item-click", {
280
+ detail: {
281
+ item: { type: Array },
282
+ },
283
+ })
284
+ ], UDExSecondaryNavigationItem);
285
+ UDExSecondaryNavigationItem.define();
286
+ export default UDExSecondaryNavigationItem;
287
+ //# sourceMappingURL=SecondaryNavigationItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecondaryNavigationItem.js","sourceRoot":"","sources":["../src/SecondaryNavigationItem.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport {\n isLeft,\n isRight,\n isUp,\n isDown,\n isEscape,\n isSpace,\n isEnter,\n isHome,\n isEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport UDExSecondaryNavigationItemBase, { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\n\nimport SecondaryNavigationItemTemplate from \"./generated/templates/SecondaryNavigationItemTemplate.lit.js\";\n\n// Styles\nimport SecondaryNavigationItemCss from \"./generated/themes/SecondaryNavigationItem.css.js\";\n\nexport const menuItemRole: string = \"menuitem\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-secondary-navigation-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/SecondaryNavigationItem.js\";</code>\n *\n * @constructor\n * @extends UDExSecondaryNavigationItemBase\n * @tagname udex-secondary-navigation-item\n * @private\n */\n@customElement({\n tag: \"udex-secondary-navigation-item\",\n renderer: litRender,\n styles: SecondaryNavigationItemCss,\n template: SecondaryNavigationItemTemplate,\n dependencies: [UI5Icon, UDExSecondaryNavigationSubItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"nav-item-click\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n\n/**\n * Fires when dropdown item is clicked\n *\n * @allowPreventDefault\n * @public\n */\n@event(\"sub-item-click\", {\n detail: {\n item: { type: Array },\n },\n})\n\nclass UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {\n /**\n * Defines an aria label for item\n *\n * @public\n */\n @property({ type: String })\n ariaLabel!: string;\n\n /**\n * Defines a role for item\n *\n * @public\n */\n @property({ type: String })\n role!: string;\n\n /**\n * Defines the content of the item.\n *\n * @slot content\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Array<HTMLElement>;\n\n /**\n * List of the sub items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: Object, multiple: true })\n subItems!: Array<NavItem>;\n\n /**\n * Defines if dropdown is opened.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n isOpen!: boolean;\n\n /**\n * Defines processed items.\n *\n * @private\n * @default []\n */\n @property({ type: Object })\n _processedItems: Array<NavItem> = [];\n\n _dropdownHistory: Array<Array<NavItem>> = [];\n _shouldFocusFirstSubItem!: boolean;\n _subTitle!: string | undefined;\n\n onAfterRendering(): void {\n if (this._shouldFocusFirstSubItem && this.isOpen) {\n this.onFirstSubItemFocus();\n this._shouldFocusFirstSubItem = false;\n }\n }\n\n onBeforeRendering() : void {\n this._subTitle = this.subActiveItemTitle || this._subTitle;\n }\n\n onItemClick(): void {\n if (this.hasNestedItems) {\n this.setDropdownItems();\n this.toggleDropdown();\n }\n\n this.fireEvent(\"nav-item-click\", { item: this });\n }\n\n onSubItemClick(e: Event): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const clickedItem = this._processedItems[index];\n\n if (clickedItem.items) {\n this.setDropdownHistory();\n this.setNestedItems(clickedItem);\n }\n\n this.fireEvent(\"sub-item-click\", {\n item: clickedItem,\n });\n }\n\n onBackClick(): void {\n this.setPrevNestedItems();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n }\n\n handleItemLinkKeyDown(e: KeyboardEvent): void {\n if (isEnter(e) || isSpace(e)) {\n e.preventDefault();\n this.onItemClick();\n }\n }\n\n handleItemButtonKeyDown(e: KeyboardEvent): void {\n if (isEnter(e) || isSpace(e)) {\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleSubItemKeyDown(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isEscape(e)) {\n this.handleEscapeKey();\n }\n if (isLeft(e)) {\n this.handleLeftArrow(e);\n }\n if (isRight(e)) {\n this.handleRightArrow(e);\n }\n if (isUp(e)) {\n e.preventDefault();\n this.handleUpArrow(e);\n }\n if (isDown(e)) {\n e.preventDefault();\n this.handleDownArrow(e);\n }\n if (isHome(e)) {\n e.preventDefault();\n this.onFirstSubItemFocus();\n }\n if (isEnd(e)) {\n e.preventDefault();\n this.onLastSubItemFocus();\n }\n if (isEnter(e) || isSpace(e)) {\n e.preventDefault();\n this.handleEnterAndSpace(e);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const lastIndex = this.domNavItems.length - 1;\n const previousIndex = index - 1 < 0 ? lastIndex : index - 1;\n if (!(lastIndex === previousIndex)) {\n this.domNavItems[previousIndex].focus();\n }\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n const { index } = e.target as UDExSecondaryNavigationSubItem;\n const nextIndex = index + 1 > this.domNavItems.length - 1 ? 0 : index + 1;\n if (!(nextIndex === 0)) {\n this.domNavItems[nextIndex].focus();\n }\n }\n\n handleLeftArrow(e: KeyboardEvent): void {\n const { isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (isBack) {\n this.setPrevNestedItems();\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleRightArrow(e: KeyboardEvent): void {\n const { hasItems, isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (hasItems && !isBack) {\n this.onSubItemClick(e);\n this.onShouldFocusFirstSubItem();\n }\n }\n\n handleEnterAndSpace(e: KeyboardEvent): void {\n const { hasItems, isBack } = e.target as UDExSecondaryNavigationSubItem;\n if (isBack) {\n this.onBackClick();\n this.onShouldFocusFirstSubItem();\n return;\n }\n\n this.onSubItemClick(e);\n\n if (hasItems) {\n this.onShouldFocusFirstSubItem();\n } else {\n this.closeDropdown();\n this.focus();\n }\n }\n\n handleEscapeKey(): void {\n this.closeDropdown();\n this.focus();\n }\n\n setDropdownHistory(): void {\n this._dropdownHistory.push(this._processedItems);\n }\n\n setPrevNestedItems(): void {\n this._processedItems = this._dropdownHistory.pop()!;\n }\n\n setNestedItems({ title, items } : NavItem): void {\n if (items) {\n this._processedItems = [{ title, isBack: true }, ...items];\n }\n }\n\n setDropdownItems(): void {\n this._processedItems = this.subItems;\n }\n\n onFirstSubItemFocus(): void {\n this.domNavItems[0].focus();\n }\n\n onLastSubItemFocus(): void {\n this.domNavItems[this.domNavItems.length - 1].focus();\n }\n\n onShouldFocusFirstSubItem(): void {\n this._shouldFocusFirstSubItem = true;\n }\n\n get domNavItems(): Array<UDExSecondaryNavigationSubItem> {\n const domNavItems = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationSubItem>(\"udex-secondary-navigation-sub-item\");\n return domNavItems ? Array.from(domNavItems) : [];\n }\n\n get hasNestedItems(): boolean {\n return this.subItems.length > 0;\n }\n\n get isSubItemActive(): boolean {\n return !!this.subActiveItem?.active;\n }\n\n get isActive(): boolean {\n return this.isSubItemActive || this.active;\n }\n\n get subActiveItemTitle(): string | undefined {\n return this.subActiveItem?.title;\n }\n\n get subActiveItem(): NavItem | undefined {\n return this.getActiveSubItem(this.subItems);\n }\n\n get isLink(): boolean {\n return !this.hasNestedItems && !!this.path;\n }\n\n get itemRole(): string {\n return this.role ? this.role : this.menuItemRole;\n }\n\n get menuItemRole(): string {\n return menuItemRole;\n }\n\n get title(): string {\n return this.label;\n }\n}\n\nUDExSecondaryNavigationItem.define();\n\nexport default UDExSecondaryNavigationItem;\n"]}
@@ -0,0 +1,68 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ export declare enum Target {
3
+ _blank = "_blank",
4
+ _parent = "_parent",
5
+ _self = "_self",
6
+ _top = "_top"
7
+ }
8
+ export type NavItem = {
9
+ path?: string;
10
+ mobileLinkTitle?: string;
11
+ target?: Target;
12
+ title: string;
13
+ active?: boolean;
14
+ isBack?: boolean;
15
+ items?: Array<NavItem>;
16
+ };
17
+ /**
18
+ * @class
19
+ *
20
+ * A class to serve as a foundation
21
+ * for the <code>UDExSecondaryNavigationItem</code> and <code>UDExSecondaryNavigationSubItem</code> classes.
22
+ *
23
+ * @constructor
24
+ * @author SAP SE
25
+ * @extends UI5Element
26
+ * @public
27
+ */
28
+ declare class UDExSecondaryNavigationItemBase extends UI5Element {
29
+ /**
30
+ * Defines active state for the item
31
+ *
32
+ * @public
33
+ */
34
+ active: boolean;
35
+ /**
36
+ * Defines path for the item
37
+ *
38
+ * @public
39
+ */
40
+ path: string;
41
+ /**
42
+ * Defines target for the item
43
+ *
44
+ * @public
45
+ */
46
+ target: string;
47
+ /**
48
+ * Defines subTitle for the item
49
+ *
50
+ * @public
51
+ */
52
+ subTitle: string;
53
+ /**
54
+ * Defines label for the item
55
+ *
56
+ * @public
57
+ */
58
+ label: string;
59
+ /**
60
+ * Defines the index for the item.
61
+ *
62
+ * @public
63
+ */
64
+ index: number;
65
+ onEnterDOM(): void;
66
+ getActiveSubItem(data: Array<NavItem>): NavItem | undefined;
67
+ }
68
+ export default UDExSecondaryNavigationItemBase;