@sapudex/web-components 2.59.0 → 2.61.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 (322) hide show
  1. package/cypress/specs/Carousel.cy.tsx +46 -0
  2. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +52 -3
  3. package/cypress/specs/SelectBox.cy.tsx +390 -252
  4. package/cypress/specs/SideNavigation.cy.tsx +509 -0
  5. package/cypress/specs/Table.cy.tsx +90 -0
  6. package/cypress/support/component-imports.instrumented.ts +6 -0
  7. package/cypress/support/component-imports.src.ts +6 -0
  8. package/dist/Carousel.d.ts +1 -0
  9. package/dist/Carousel.js +16 -1
  10. package/dist/Carousel.js.map +1 -1
  11. package/dist/ListGroupHeaderBase.js +9 -0
  12. package/dist/ListGroupHeaderBase.js.map +1 -1
  13. package/dist/ListGroupHeaderTemplate.js +15 -1
  14. package/dist/ListGroupHeaderTemplate.js.map +1 -1
  15. package/dist/MastheadCountrySelectorTemplate.js +1 -1
  16. package/dist/MastheadCountrySelectorTemplate.js.map +1 -1
  17. package/dist/Pagination.d.ts +0 -1
  18. package/dist/Pagination.js +2 -2
  19. package/dist/Pagination.js.map +1 -1
  20. package/dist/SearchableListBaseTemplate.js +0 -1
  21. package/dist/SearchableListBaseTemplate.js.map +1 -1
  22. package/dist/SecondaryNavigation.d.ts +2 -1
  23. package/dist/SecondaryNavigation.js.map +1 -1
  24. package/dist/SecondaryNavigationItem.js +12 -6
  25. package/dist/SecondaryNavigationItem.js.map +1 -1
  26. package/dist/SecondaryNavigationTemplate.js +1 -2
  27. package/dist/SecondaryNavigationTemplate.js.map +1 -1
  28. package/dist/SelectBase.d.ts +7 -2
  29. package/dist/SelectBase.js +27 -39
  30. package/dist/SelectBase.js.map +1 -1
  31. package/dist/SideNavigation.d.ts +23 -0
  32. package/dist/SideNavigation.js +39 -0
  33. package/dist/SideNavigation.js.map +1 -1
  34. package/dist/SideNavigationItem.d.ts +10 -0
  35. package/dist/SideNavigationItem.js +67 -0
  36. package/dist/SideNavigationItem.js.map +1 -1
  37. package/dist/SideNavigationMobileTemplate.js +1 -1
  38. package/dist/SideNavigationMobileTemplate.js.map +1 -1
  39. package/dist/SideNavigationSubItem.d.ts +23 -0
  40. package/dist/SideNavigationSubItem.js +103 -0
  41. package/dist/SideNavigationSubItem.js.map +1 -1
  42. package/dist/SideNavigationSubItemTemplate.d.ts +2 -0
  43. package/dist/SideNavigationSubItemTemplate.js +10 -0
  44. package/dist/SideNavigationSubItemTemplate.js.map +1 -0
  45. package/dist/Table.js +1 -1
  46. package/dist/Table.js.map +1 -1
  47. package/dist/TableCell.d.ts +8 -2
  48. package/dist/TableCell.js +13 -11
  49. package/dist/TableCell.js.map +1 -1
  50. package/dist/TableCellBase.d.ts +2 -1
  51. package/dist/TableCellBase.js +9 -0
  52. package/dist/TableCellBase.js.map +1 -1
  53. package/dist/TableHeaderCell.d.ts +0 -1
  54. package/dist/TableHeaderCell.js +0 -4
  55. package/dist/TableHeaderCell.js.map +1 -1
  56. package/dist/TableRow.d.ts +10 -0
  57. package/dist/TableRow.js +23 -0
  58. package/dist/TableRow.js.map +1 -1
  59. package/dist/UploadItem.js +3 -4
  60. package/dist/UploadItem.js.map +1 -1
  61. package/dist/assets/{InputSuggestions-CloTVyrf.js → InputSuggestions-1OnUn6pM.js} +1 -1
  62. package/dist/assets/{ListItemStandardExpandableTextTemplate-DpquSMb2.js → ListItemStandardExpandableTextTemplate-CoBAMp_v.js} +1 -1
  63. package/dist/assets/{bundle.esm-Cyz8a5IX.js → bundle.esm-BqaVWFKf.js} +233 -233
  64. package/dist/css/themes/AccordionSpotlight.css +1 -1
  65. package/dist/css/themes/Contact.css +1 -1
  66. package/dist/css/themes/EventRibbon.css +1 -1
  67. package/dist/css/themes/Feed.css +1 -1
  68. package/dist/css/themes/FeedItem.css +1 -1
  69. package/dist/css/themes/HeroBanner.css +1 -1
  70. package/dist/css/themes/ImageGridCloud.css +1 -1
  71. package/dist/css/themes/ImageGridTicker.css +1 -1
  72. package/dist/css/themes/ImageGridTickerItem.css +1 -1
  73. package/dist/css/themes/LinkList.css +1 -1
  74. package/dist/css/themes/ListGroupHeader.css +1 -1
  75. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  76. package/dist/css/themes/MastheadItem.css +1 -1
  77. package/dist/css/themes/MastheadMenu.css +1 -1
  78. package/dist/css/themes/MastheadMenuItem.css +1 -1
  79. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  80. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  81. package/dist/css/themes/MastheadShell.css +1 -1
  82. package/dist/css/themes/MessageStrip.css +1 -1
  83. package/dist/css/themes/Modal.css +1 -1
  84. package/dist/css/themes/Pagination.css +1 -1
  85. package/dist/css/themes/PromoTile.css +1 -1
  86. package/dist/css/themes/Quote.css +1 -1
  87. package/dist/css/themes/Review.css +1 -1
  88. package/dist/css/themes/ReviewItem.css +1 -1
  89. package/dist/css/themes/SecondaryNavigation.css +1 -1
  90. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  91. package/dist/css/themes/SelectBase.css +1 -1
  92. package/dist/css/themes/SideNavigation.css +1 -1
  93. package/dist/css/themes/SideNavigationItem.css +1 -1
  94. package/dist/css/themes/SideNavigationMobile.css +1 -1
  95. package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
  96. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  97. package/dist/css/themes/TabNavigation.css +1 -1
  98. package/dist/css/themes/Table.css +1 -1
  99. package/dist/css/themes/TableCellBase.css +1 -1
  100. package/dist/css/themes/Upload.css +1 -1
  101. package/dist/css/themes/UploadItem.css +1 -1
  102. package/dist/custom-elements-internal.json +155 -12
  103. package/dist/custom-elements.json +144 -19
  104. package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
  105. package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
  106. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
  107. package/dist/generated/themes/Contact.css.d.ts +1 -1
  108. package/dist/generated/themes/Contact.css.js +1 -1
  109. package/dist/generated/themes/Contact.css.js.map +1 -1
  110. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  111. package/dist/generated/themes/EventRibbon.css.js +1 -1
  112. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  113. package/dist/generated/themes/Feed.css.d.ts +1 -1
  114. package/dist/generated/themes/Feed.css.js +1 -1
  115. package/dist/generated/themes/Feed.css.js.map +1 -1
  116. package/dist/generated/themes/FeedItem.css.d.ts +1 -1
  117. package/dist/generated/themes/FeedItem.css.js +1 -1
  118. package/dist/generated/themes/FeedItem.css.js.map +1 -1
  119. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  120. package/dist/generated/themes/HeroBanner.css.js +1 -1
  121. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  122. package/dist/generated/themes/ImageGridCloud.css.d.ts +1 -1
  123. package/dist/generated/themes/ImageGridCloud.css.js +1 -1
  124. package/dist/generated/themes/ImageGridCloud.css.js.map +1 -1
  125. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  126. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  127. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  128. package/dist/generated/themes/ImageGridTickerItem.css.d.ts +1 -1
  129. package/dist/generated/themes/ImageGridTickerItem.css.js +1 -1
  130. package/dist/generated/themes/ImageGridTickerItem.css.js.map +1 -1
  131. package/dist/generated/themes/LinkList.css.d.ts +1 -1
  132. package/dist/generated/themes/LinkList.css.js +1 -1
  133. package/dist/generated/themes/LinkList.css.js.map +1 -1
  134. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  135. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  136. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  137. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  138. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  139. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  140. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  141. package/dist/generated/themes/MastheadItem.css.js +1 -1
  142. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  143. package/dist/generated/themes/MastheadMenu.css.d.ts +1 -1
  144. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  145. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  146. package/dist/generated/themes/MastheadMenuItem.css.d.ts +1 -1
  147. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  148. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  149. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  150. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  151. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  152. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  153. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  154. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  155. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  156. package/dist/generated/themes/MastheadShell.css.js +1 -1
  157. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  158. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  159. package/dist/generated/themes/MessageStrip.css.js +1 -1
  160. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  161. package/dist/generated/themes/Modal.css.d.ts +1 -1
  162. package/dist/generated/themes/Modal.css.js +1 -1
  163. package/dist/generated/themes/Modal.css.js.map +1 -1
  164. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  165. package/dist/generated/themes/Pagination.css.js +1 -1
  166. package/dist/generated/themes/Pagination.css.js.map +1 -1
  167. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  168. package/dist/generated/themes/PromoTile.css.js +1 -1
  169. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  170. package/dist/generated/themes/Quote.css.d.ts +1 -1
  171. package/dist/generated/themes/Quote.css.js +1 -1
  172. package/dist/generated/themes/Quote.css.js.map +1 -1
  173. package/dist/generated/themes/Review.css.d.ts +1 -1
  174. package/dist/generated/themes/Review.css.js +1 -1
  175. package/dist/generated/themes/Review.css.js.map +1 -1
  176. package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
  177. package/dist/generated/themes/ReviewItem.css.js +1 -1
  178. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  179. package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
  180. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  181. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  182. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  183. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  184. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  185. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  186. package/dist/generated/themes/SelectBase.css.js +1 -1
  187. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  188. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  189. package/dist/generated/themes/SideNavigation.css.js +1 -1
  190. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  191. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  192. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  193. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  194. package/dist/generated/themes/SideNavigationMobile.css.d.ts +1 -1
  195. package/dist/generated/themes/SideNavigationMobile.css.js +1 -1
  196. package/dist/generated/themes/SideNavigationMobile.css.js.map +1 -1
  197. package/dist/generated/themes/SideNavigationMobileDropdown.css.d.ts +1 -1
  198. package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
  199. package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
  200. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  201. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  202. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  203. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  204. package/dist/generated/themes/TabNavigation.css.js +1 -1
  205. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  206. package/dist/generated/themes/Table.css.d.ts +1 -1
  207. package/dist/generated/themes/Table.css.js +1 -1
  208. package/dist/generated/themes/Table.css.js.map +1 -1
  209. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  210. package/dist/generated/themes/TableCellBase.css.js +1 -1
  211. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  212. package/dist/generated/themes/Upload.css.d.ts +1 -1
  213. package/dist/generated/themes/Upload.css.js +1 -1
  214. package/dist/generated/themes/Upload.css.js.map +1 -1
  215. package/dist/generated/themes/UploadItem.css.d.ts +1 -1
  216. package/dist/generated/themes/UploadItem.css.js +1 -1
  217. package/dist/generated/themes/UploadItem.css.js.map +1 -1
  218. package/dist/types/Table.d.ts +6 -2
  219. package/dist/types/Table.js +7 -2
  220. package/dist/types/Table.js.map +1 -1
  221. package/dist/vscode.html-custom-data.json +44 -3
  222. package/dist/web-types.json +80 -6
  223. package/package.json +1 -1
  224. package/run-cypress.js +8 -1
  225. package/src/Carousel.ts +17 -1
  226. package/src/ListGroupHeaderBase.ts +9 -0
  227. package/src/ListGroupHeaderTemplate.tsx +15 -3
  228. package/src/MastheadCountrySelectorTemplate.tsx +3 -2
  229. package/src/Pagination.ts +2 -3
  230. package/src/SearchableListBaseTemplate.tsx +0 -1
  231. package/src/SecondaryNavigation.ts +2 -1
  232. package/src/SecondaryNavigationItem.ts +14 -6
  233. package/src/SecondaryNavigationTemplate.tsx +4 -6
  234. package/src/SelectBase.ts +30 -47
  235. package/src/SideNavigation.ts +35 -0
  236. package/src/SideNavigationItem.ts +75 -0
  237. package/src/SideNavigationMobileTemplate.tsx +2 -1
  238. package/src/SideNavigationSubItem.ts +117 -1
  239. package/src/SideNavigationSubItemTemplate.tsx +56 -0
  240. package/src/Table.ts +1 -2
  241. package/src/TableCell.ts +9 -12
  242. package/src/TableCellBase.ts +10 -1
  243. package/src/TableHeaderCell.ts +0 -5
  244. package/src/TableRow.ts +20 -0
  245. package/src/UploadItem.ts +3 -5
  246. package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
  247. package/src/generated/themes/Contact.css.ts +1 -1
  248. package/src/generated/themes/EventRibbon.css.ts +1 -1
  249. package/src/generated/themes/Feed.css.ts +1 -1
  250. package/src/generated/themes/FeedItem.css.ts +1 -1
  251. package/src/generated/themes/HeroBanner.css.ts +1 -1
  252. package/src/generated/themes/ImageGridCloud.css.ts +1 -1
  253. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  254. package/src/generated/themes/ImageGridTickerItem.css.ts +1 -1
  255. package/src/generated/themes/LinkList.css.ts +1 -1
  256. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  257. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  258. package/src/generated/themes/MastheadItem.css.ts +1 -1
  259. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  260. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  261. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  262. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  263. package/src/generated/themes/MastheadShell.css.ts +1 -1
  264. package/src/generated/themes/MessageStrip.css.ts +1 -1
  265. package/src/generated/themes/Modal.css.ts +1 -1
  266. package/src/generated/themes/Pagination.css.ts +1 -1
  267. package/src/generated/themes/PromoTile.css.ts +1 -1
  268. package/src/generated/themes/Quote.css.ts +1 -1
  269. package/src/generated/themes/Review.css.ts +1 -1
  270. package/src/generated/themes/ReviewItem.css.ts +1 -1
  271. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  272. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  273. package/src/generated/themes/SelectBase.css.ts +1 -1
  274. package/src/generated/themes/SideNavigation.css.ts +1 -1
  275. package/src/generated/themes/SideNavigationItem.css.ts +1 -1
  276. package/src/generated/themes/SideNavigationMobile.css.ts +1 -1
  277. package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
  278. package/src/generated/themes/SideNavigationSubItem.css.ts +1 -1
  279. package/src/generated/themes/TabNavigation.css.ts +1 -1
  280. package/src/generated/themes/Table.css.ts +1 -1
  281. package/src/generated/themes/TableCellBase.css.ts +1 -1
  282. package/src/generated/themes/Upload.css.ts +1 -1
  283. package/src/generated/themes/UploadItem.css.ts +1 -1
  284. package/src/themes/AccordionSpotlight.css +4 -1
  285. package/src/themes/Contact.css +1 -1
  286. package/src/themes/EventRibbon.css +4 -4
  287. package/src/themes/Feed.css +2 -2
  288. package/src/themes/FeedItem.css +2 -1
  289. package/src/themes/HeroBanner.css +3 -3
  290. package/src/themes/ImageGridCloud.css +1 -1
  291. package/src/themes/ImageGridTicker.css +1 -1
  292. package/src/themes/ImageGridTickerItem.css +1 -1
  293. package/src/themes/LinkList.css +4 -4
  294. package/src/themes/ListGroupHeader.css +6 -4
  295. package/src/themes/MastheadCountrySelector.css +1 -1
  296. package/src/themes/MastheadItem.css +4 -4
  297. package/src/themes/MastheadMenu.css +1 -1
  298. package/src/themes/MastheadMenuItem.css +1 -1
  299. package/src/themes/MastheadMobileMenu.css +2 -2
  300. package/src/themes/MastheadProfileMenu.css +1 -1
  301. package/src/themes/MastheadShell.css +4 -4
  302. package/src/themes/MessageStrip.css +7 -2
  303. package/src/themes/Modal.css +1 -1
  304. package/src/themes/Pagination.css +14 -5
  305. package/src/themes/PromoTile.css +4 -3
  306. package/src/themes/Quote.css +2 -2
  307. package/src/themes/Review.css +2 -2
  308. package/src/themes/ReviewItem.css +2 -2
  309. package/src/themes/SecondaryNavigation.css +1 -2
  310. package/src/themes/SecondaryNavigationItem.css +3 -6
  311. package/src/themes/SelectBase.css +1 -1
  312. package/src/themes/SideNavigation.css +31 -8
  313. package/src/themes/SideNavigationItem.css +46 -18
  314. package/src/themes/SideNavigationMobile.css +6 -7
  315. package/src/themes/SideNavigationMobileDropdown.css +10 -3
  316. package/src/themes/SideNavigationSubItem.css +73 -17
  317. package/src/themes/TabNavigation.css +2 -2
  318. package/src/themes/Table.css +1 -1
  319. package/src/themes/TableCellBase.css +8 -0
  320. package/src/themes/Upload.css +1 -1
  321. package/src/themes/UploadItem.css +1 -1
  322. package/src/types/Table.ts +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SearchableListBaseTemplate.js","sourceRoot":"","sources":["../src/SearchableListBaseTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExSearchableListBase from \"./SearchableListBase.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\n\nexport default function SearchableListBaseTemplate(this: UDExSearchableListBase) {\n return (\n <>\n {this.showSearch && (\n <>\n <UDExSearch\n slot=\"header\"\n mode={UDExSearchMode.Standard}\n class=\"udex-filter-menu__search\"\n label={this.searchPlaceholder}\n label-animation-disabled\n non-interactive-submit-button\n show-submit-button>\n </UDExSearch>\n <span aria-live=\"polite\" aria-atomic=\"true\" class=\"hidden\">{this._accSearchResultInfo}</span>\n </>\n )}\n {this.isListEmpty ? (\n <div class=\"udex-no-result\">\n <IllustratedMessage\n name=\"NoSearchResults\"\n design=\"Dot\"\n title-text=\" \"\n subtitle-text=\" \">\n </IllustratedMessage>\n <span>{this.getNoResultText}</span>\n </div>\n ) : this.busy ? (\n <UDExBusyIndicator\n class=\"udex-busy-indicator\"\n size=\"M\"\n delay={this.busyDelay}\n active>\n </UDExBusyIndicator>\n ) : (\n <UDExList\n id=\"udex-list\"\n role={this.roleForGroupList as AriaRole}\n accessible-role={this.accessibleRoleForList}\n {...(this.isTreeStructure && this.modeMultiSelect ? { \"aria-multiselectable\": \"true\" } : {})}\n class=\"udex-filter-menu__list\"\n controlled={this.isControlled}\n mode={this.mode}\n type={this.type}\n item-icon={this.itemIcon}>\n {this._filteredItems.map((processedItem, index) => (\n processedItem.isGroup\n ? renderGroup.call(this, processedItem, index)\n : renderListItem(processedItem.item as UDExListItem, index, \"none\", this.listItemRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect)\n ))}\n </UDExList>\n )}\n </>\n );\n}\n\nfunction renderGroup(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n return (processedItem.item as UDExListGroupHeaderBase).isSelectAllHeader\n ? renderSelectAll.call(this, processedItem, index)\n : renderGroupHeader.call(this, processedItem, index);\n}\n\nfunction renderSelectAll(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n return (\n <UDExListSelectAll\n key={index}\n _additional-class-name={this.additionalClassName}\n data-token-id={item._id}\n label={item.label}\n controlled={header.controlled}\n supporting-text={item.supportingText}\n disabled={item.disabled}\n selected={item.selected}\n indeterminate={header.indeterminate}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, this.listItemRole, undefined, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect)\n )}\n </UDExListSelectAll>\n );\n}\n\nfunction renderGroupHeader(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n const childAccessibleRole = this.isTreeStructure ? \"treeitem\" : undefined;\n // Position among sibling group headers, for the explicit tree-position attributes below.\n const treeGroups = this.isTreeStructure ? this._filteredItems.filter(p => p.isGroup) : [];\n const groupPosInSet = treeGroups.indexOf(processedItem) + 1;\n const groupSetSize = treeGroups.length;\n // Explicit per-group tree position for the FilterMenu (real-focus) treeitems. Scoped to\n // MultiSelect only: the SingleSelect tree is now conformantly nested (role=\"group\" inside\n // the parent treeitem) so JAWS/NVDA count children natively — explicit values there just\n // confuse JAWS. MultiSelect still uses the malformed sibling structure until Phase 2, so it\n // keeps the explicit override. Not applied in aria-activedescendant mode (SelectBox announces\n // position via its own live region — see [[project_selectbox_aria_live_region]]).\n const treePositionAttrs = (!this._activeDescendantMode && this.isTreeStructure && this.modeMultiSelect) ? {\n \"_aria-pos-in-set\": groupPosInSet,\n \"_aria-set-size\": groupSetSize,\n } : {};\n // In aria-activedescendant mode (SelectBox), each group header host element\n // must carry role + ARIA state so screen readers can reach them via the pointer.\n // In real-focus mode (FilterMenu) the host is always transparent (role=\"none\"):\n // the shadow DOM's div.udex-list__group provides the single role=\"group\" with\n // aria-labelledby=\"group-heading\" in non-tree mode; in tree mode the treeitem is\n // on the focusable div inside the shadow.\n const hostAriaAttrs = this._activeDescendantMode ? {\n role: (this.isTreeStructure ? \"treeitem\" : \"option\") as AriaRole,\n \"aria-label\": cleanLabel(item.label ?? \"\"),\n \"aria-selected\": (this.modeMultiSelect ? undefined : (item.selected ? \"true\" : \"false\")) as string | undefined,\n \"aria-checked\": (this.modeMultiSelect ? (header.indeterminate ? \"mixed\" : (item.selected ? \"true\" : \"false\")) : undefined) as string | undefined,\n \"aria-disabled\": item.disabled ? \"true\" as string : undefined,\n \"aria-expanded\": header.collapsible ? (header.expanded ? \"true\" as string : \"false\" as string) : undefined,\n \"_use-host-aria-role\": true,\n } : { role: \"none\" as AriaRole };\n return (\n <UDExListGroupHeader\n key={index}\n id={item._id}\n {...hostAriaAttrs}\n {...treePositionAttrs}\n _tree-mode={this.isTreeStructure || undefined}\n _group-as-listbox={this.isPerGroupListbox || undefined}\n {...(index === 0 ? { \"_no-border\": \"\" } : {})}\n _additional-class-name=\"udex-searchable-list__header\"\n class={this.groupClassName}\n non-interactive={header.nonInteractive}\n data-token-id={item._id}\n label={item.label}\n supporting-text={item.supportingText}\n controlled={header.controlled}\n collapsible={header.collapsible}\n collapsed={header.collapsed}\n _filtered={this._shouldFilterItems}\n disabled={item.disabled}\n selected={item.selected}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}\n onAccordionIconClick={this.handleAccordionIconClick}\n indeterminate={header.indeterminate}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, \"none\", childAccessibleRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect, i + 1, groupItems.length)\n )}\n </UDExListGroupHeader>\n );\n}\n\nfunction renderListItem(\n item: UDExListItem,\n index: number,\n role: string,\n accessibleRole: string | undefined,\n onFirstIconClick: (e: CustomEvent) => void,\n onSecondIconClick: (e: CustomEvent) => void,\n activeDescendantMode?: boolean,\n isTreeStructure?: boolean,\n modeMultiSelect?: boolean,\n posInSet?: number,\n setSize?: number,\n) {\n // In aria-activedescendant mode (SelectBox), role + ARIA state must be on the\n // host element so screen readers can reach them via the aria-activedescendant pointer.\n const effectiveRole = accessibleRole ?? (role !== \"none\" ? role : undefined) ?? \"option\";\n const hostRole = activeDescendantMode ? (effectiveRole as AriaRole) : (role as AriaRole);\n const hostAriaAttrs = activeDescendantMode ? {\n \"aria-label\": \"test\",\n // option role (listbox): always aria-selected; treeitem + MultiSelect: aria-checked only\n \"aria-selected\": (effectiveRole !== \"treeitem\" || !modeMultiSelect) ? (item.selected ? \"true\" : \"false\") as string : undefined,\n \"aria-checked\": (effectiveRole === \"treeitem\" && !!modeMultiSelect) ? (item.indeterminate ? \"mixed\" : (item.selected ? \"true\" : \"false\")) as string : undefined,\n \"aria-disabled\": item.disabled ? \"true\" as string : undefined,\n \"_use-host-aria-role\": true,\n ...(accessibleRole ? { \"accessible-role\": accessibleRole } : {}),\n } : {\n ...(accessibleRole ? { \"accessible-role\": accessibleRole } : {}),\n };\n // Explicit per-group position for FilterMenu real-focus items. Applied whenever\n // posInSet/setSize are provided (i.e. items inside a group header), across all\n // modes except aria-activedescendant (SelectBox uses its own live region):\n // • Non-tree grouped listbox (SingleSelect non-collapsible): options get per-group\n // counts since native shadow-DOM counting is unreliable for nested custom elements.\n // • SingleSelect conformant-nested tree: explicit values match the native structural\n // count, so JAWS trusts and re-announces on every arrow step (not just group entry).\n // • MultiSelect sibling tree (Phase 2 pending): keeps the fix-20 override.\n // Not applied in aria-activedescendant mode (SelectBox — see [[project_selectbox_aria_live_region]]).\n const treePositionAttrs = (!activeDescendantMode && posInSet != null && setSize != null) ? {\n \"_aria-pos-in-set\": posInSet,\n \"_aria-set-size\": setSize,\n } : {};\n return (\n <UDExListItem\n key={index}\n id={item._id}\n role={hostRole}\n data-token-id={item._id}\n controlled={item.controlled}\n mode={item.mode}\n onFirstIconClick={onFirstIconClick}\n onSecondIconClick={onSecondIconClick}\n supporting-text={item.supportingText}\n additional-text={item.additionalText}\n additional-text-state={item.additionalTextState}\n divider={item.divider}\n disabled={item.disabled}\n selected={item.selected}\n rating={item.rating}\n total-count={item.totalCount}\n rating-count={item.ratingCount}\n rating-max={item.ratingMax}\n label={item.label}\n image={item.image}\n image-alt={item.imageAlt}\n image-badge-state={item.imageBadgeState}\n image-shape={item.imageShape}\n image-size={item.imageSize}\n flag={item.flag}\n flag-position={item.flagPosition}\n size={item.size}\n type={item.type}\n {...hostAriaAttrs}\n {...treePositionAttrs}\n {...((item as any).innerHTML ? { dangerouslySetInnerHTML: { __html: (item as any).innerHTML } } : {})}>\n </UDExListItem>\n );\n}\n"]}
1
+ {"version":3,"file":"SearchableListBaseTemplate.js","sourceRoot":"","sources":["../src/SearchableListBaseTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExSearchableListBase from \"./SearchableListBase.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\n\nexport default function SearchableListBaseTemplate(this: UDExSearchableListBase) {\n return (\n <>\n {this.showSearch && (\n <>\n <UDExSearch\n slot=\"header\"\n mode={UDExSearchMode.Standard}\n class=\"udex-filter-menu__search\"\n label={this.searchPlaceholder}\n label-animation-disabled\n non-interactive-submit-button\n show-submit-button>\n </UDExSearch>\n <span aria-live=\"polite\" aria-atomic=\"true\" class=\"hidden\">{this._accSearchResultInfo}</span>\n </>\n )}\n {this.isListEmpty ? (\n <div class=\"udex-no-result\">\n <IllustratedMessage\n name=\"NoSearchResults\"\n design=\"Dot\"\n title-text=\" \"\n subtitle-text=\" \">\n </IllustratedMessage>\n <span>{this.getNoResultText}</span>\n </div>\n ) : this.busy ? (\n <UDExBusyIndicator\n class=\"udex-busy-indicator\"\n size=\"M\"\n delay={this.busyDelay}\n active>\n </UDExBusyIndicator>\n ) : (\n <UDExList\n id=\"udex-list\"\n role={this.roleForGroupList as AriaRole}\n accessible-role={this.accessibleRoleForList}\n {...(this.isTreeStructure && this.modeMultiSelect ? { \"aria-multiselectable\": \"true\" } : {})}\n class=\"udex-filter-menu__list\"\n controlled={this.isControlled}\n mode={this.mode}\n type={this.type}\n item-icon={this.itemIcon}>\n {this._filteredItems.map((processedItem, index) => (\n processedItem.isGroup\n ? renderGroup.call(this, processedItem, index)\n : renderListItem(processedItem.item as UDExListItem, index, \"none\", this.listItemRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect)\n ))}\n </UDExList>\n )}\n </>\n );\n}\n\nfunction renderGroup(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n return (processedItem.item as UDExListGroupHeaderBase).isSelectAllHeader\n ? renderSelectAll.call(this, processedItem, index)\n : renderGroupHeader.call(this, processedItem, index);\n}\n\nfunction renderSelectAll(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n return (\n <UDExListSelectAll\n key={index}\n _additional-class-name={this.additionalClassName}\n data-token-id={item._id}\n label={item.label}\n controlled={header.controlled}\n supporting-text={item.supportingText}\n disabled={item.disabled}\n selected={item.selected}\n indeterminate={header.indeterminate}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, this.listItemRole, undefined, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect)\n )}\n </UDExListSelectAll>\n );\n}\n\nfunction renderGroupHeader(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n const childAccessibleRole = this.isTreeStructure ? \"treeitem\" : undefined;\n // Position among sibling group headers, for the explicit tree-position attributes below.\n const treeGroups = this.isTreeStructure ? this._filteredItems.filter(p => p.isGroup) : [];\n const groupPosInSet = treeGroups.indexOf(processedItem) + 1;\n const groupSetSize = treeGroups.length;\n // Explicit per-group tree position for the FilterMenu (real-focus) treeitems. Scoped to\n // MultiSelect only: the SingleSelect tree is now conformantly nested (role=\"group\" inside\n // the parent treeitem) so JAWS/NVDA count children natively — explicit values there just\n // confuse JAWS. MultiSelect still uses the malformed sibling structure until Phase 2, so it\n // keeps the explicit override. Not applied in aria-activedescendant mode (SelectBox announces\n // position via its own live region — see [[project_selectbox_aria_live_region]]).\n const treePositionAttrs = (!this._activeDescendantMode && this.isTreeStructure && this.modeMultiSelect) ? {\n \"_aria-pos-in-set\": groupPosInSet,\n \"_aria-set-size\": groupSetSize,\n } : {};\n // In aria-activedescendant mode (SelectBox), each group header host element\n // must carry role + ARIA state so screen readers can reach them via the pointer.\n // In real-focus mode (FilterMenu) the host is always transparent (role=\"none\"):\n // the shadow DOM's div.udex-list__group provides the single role=\"group\" with\n // aria-labelledby=\"group-heading\" in non-tree mode; in tree mode the treeitem is\n // on the focusable div inside the shadow.\n const hostAriaAttrs = this._activeDescendantMode ? {\n role: (this.isTreeStructure ? \"treeitem\" : \"option\") as AriaRole,\n \"aria-label\": cleanLabel(item.label ?? \"\"),\n \"aria-selected\": (this.modeMultiSelect ? undefined : (item.selected ? \"true\" : \"false\")) as string | undefined,\n \"aria-checked\": (this.modeMultiSelect ? (header.indeterminate ? \"mixed\" : (item.selected ? \"true\" : \"false\")) : undefined) as string | undefined,\n \"aria-disabled\": item.disabled ? \"true\" as string : undefined,\n \"aria-expanded\": header.collapsible ? (header.expanded ? \"true\" as string : \"false\" as string) : undefined,\n \"_use-host-aria-role\": true,\n } : { role: \"none\" as AriaRole };\n return (\n <UDExListGroupHeader\n key={index}\n id={item._id}\n {...hostAriaAttrs}\n {...treePositionAttrs}\n _tree-mode={this.isTreeStructure || undefined}\n _group-as-listbox={this.isPerGroupListbox || undefined}\n {...(index === 0 ? { \"_no-border\": \"\" } : {})}\n _additional-class-name=\"udex-searchable-list__header\"\n class={this.groupClassName}\n non-interactive={header.nonInteractive}\n data-token-id={item._id}\n label={item.label}\n supporting-text={item.supportingText}\n controlled={header.controlled}\n collapsible={header.collapsible}\n collapsed={header.collapsed}\n _filtered={this._shouldFilterItems}\n disabled={item.disabled}\n selected={item.selected}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}\n onAccordionIconClick={this.handleAccordionIconClick}\n indeterminate={header.indeterminate}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, \"none\", childAccessibleRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent, this._activeDescendantMode, this.isTreeStructure, this.modeMultiSelect, i + 1, groupItems.length)\n )}\n </UDExListGroupHeader>\n );\n}\n\nfunction renderListItem(\n item: UDExListItem,\n index: number,\n role: string,\n accessibleRole: string | undefined,\n onFirstIconClick: (e: CustomEvent) => void,\n onSecondIconClick: (e: CustomEvent) => void,\n activeDescendantMode?: boolean,\n isTreeStructure?: boolean,\n modeMultiSelect?: boolean,\n posInSet?: number,\n setSize?: number,\n) {\n // In aria-activedescendant mode (SelectBox), role + ARIA state must be on the\n // host element so screen readers can reach them via the aria-activedescendant pointer.\n const effectiveRole = accessibleRole ?? (role !== \"none\" ? role : undefined) ?? \"option\";\n const hostRole = activeDescendantMode ? (effectiveRole as AriaRole) : (role as AriaRole);\n const hostAriaAttrs = activeDescendantMode ? {\n // option role (listbox): always aria-selected; treeitem + MultiSelect: aria-checked only\n \"aria-selected\": (effectiveRole !== \"treeitem\" || !modeMultiSelect) ? (item.selected ? \"true\" : \"false\") as string : undefined,\n \"aria-checked\": (effectiveRole === \"treeitem\" && !!modeMultiSelect) ? (item.indeterminate ? \"mixed\" : (item.selected ? \"true\" : \"false\")) as string : undefined,\n \"aria-disabled\": item.disabled ? \"true\" as string : undefined,\n \"_use-host-aria-role\": true,\n ...(accessibleRole ? { \"accessible-role\": accessibleRole } : {}),\n } : {\n ...(accessibleRole ? { \"accessible-role\": accessibleRole } : {}),\n };\n // Explicit per-group position for FilterMenu real-focus items. Applied whenever\n // posInSet/setSize are provided (i.e. items inside a group header), across all\n // modes except aria-activedescendant (SelectBox uses its own live region):\n // • Non-tree grouped listbox (SingleSelect non-collapsible): options get per-group\n // counts since native shadow-DOM counting is unreliable for nested custom elements.\n // • SingleSelect conformant-nested tree: explicit values match the native structural\n // count, so JAWS trusts and re-announces on every arrow step (not just group entry).\n // • MultiSelect sibling tree (Phase 2 pending): keeps the fix-20 override.\n // Not applied in aria-activedescendant mode (SelectBox — see [[project_selectbox_aria_live_region]]).\n const treePositionAttrs = (!activeDescendantMode && posInSet != null && setSize != null) ? {\n \"_aria-pos-in-set\": posInSet,\n \"_aria-set-size\": setSize,\n } : {};\n return (\n <UDExListItem\n key={index}\n id={item._id}\n role={hostRole}\n data-token-id={item._id}\n controlled={item.controlled}\n mode={item.mode}\n onFirstIconClick={onFirstIconClick}\n onSecondIconClick={onSecondIconClick}\n supporting-text={item.supportingText}\n additional-text={item.additionalText}\n additional-text-state={item.additionalTextState}\n divider={item.divider}\n disabled={item.disabled}\n selected={item.selected}\n rating={item.rating}\n total-count={item.totalCount}\n rating-count={item.ratingCount}\n rating-max={item.ratingMax}\n label={item.label}\n image={item.image}\n image-alt={item.imageAlt}\n image-badge-state={item.imageBadgeState}\n image-shape={item.imageShape}\n image-size={item.imageSize}\n flag={item.flag}\n flag-position={item.flagPosition}\n size={item.size}\n type={item.type}\n {...hostAriaAttrs}\n {...treePositionAttrs}\n {...((item as any).innerHTML ? { dangerouslySetInnerHTML: { __html: (item as any).innerHTML } } : {})}>\n </UDExListItem>\n );\n}\n"]}
@@ -6,6 +6,7 @@ import type { NavItem } from "./SecondaryNavigationItemBase.js";
6
6
  import type UDExSecondaryNavigationItemBase from "./SecondaryNavigationItemBase.js";
7
7
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
8
  import AnalyticsName from "./types/AnalyticsName.js";
9
+ import type { RelativeValue } from "./utils/parseRelativeUnits.js";
9
10
  type UDExSecondaryNavigationClickEventDetail = {
10
11
  originalEvent: Event;
11
12
  clickedItem: NavItem;
@@ -95,7 +96,7 @@ declare class UDExSecondaryNavigation extends UI5Element {
95
96
  *
96
97
  * @public
97
98
  */
98
- maxDropdownHeight: string;
99
+ maxDropdownHeight: RelativeValue;
99
100
  _selectedMore: boolean;
100
101
  _overflowItems: Array<NavItem>;
101
102
  _visibleItems: Array<NavItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"SecondaryNavigation.js","sourceRoot":"","sources":["../src/SecondaryNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChangeInfo, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport 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-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { UDExSecondaryNavigationItemClickEventDetail, UDExSecondaryNavigationItemSubItemClickEventDetail } from \"./SecondaryNavigationItem.js\";\nimport UDExSecondaryNavigationItem from \"./SecondaryNavigationItem.js\";\nimport type UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport type { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport type UDExSecondaryNavigationItemBase from \"./SecondaryNavigationItemBase.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { MORE } from \"./generated/i18n/i18n-defaults.js\";\nimport SecondaryNavigationTemplate from \"./SecondaryNavigationTemplate.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport SecondaryNavigationCss from \"./generated/themes/SecondaryNavigation.css.js\";\n\nconst canvasContentFont: string = \"14px '72 Brand Variable'\";\nconst rootClass = \"udex-secondary-navigation__root\";\nconst ITEM_ICON_WIDTH = 20;\n\ntype UDExSecondaryNavigationClickEventDetail = {\n originalEvent: Event,\n clickedItem: NavItem;\n clickedIndex: number;\n isMore?: boolean,\n isMobile?: boolean,\n analyticsName: AnalyticsName,\n analyticsPath: Array<string>,\n sourceNode: HTMLElement,\n};\n\ntype UDExSecondaryNavigationHeadingClickEventDetail = {\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n};\n\ntype UDExSecondaryNavigationMobileMenuOpenerClickEventDetail = {\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\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 \"@sapudex/web-components/dist/SecondaryNavigation.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-secondary-navigation\",\n renderer: jsxRenderer,\n styles: [SecondaryNavigationCss],\n template: SecondaryNavigationTemplate,\n dependencies: [UDExSecondaryNavigationItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {NavItem} clickedItem The clicked item\n * @param {number} clickedIndex The index of the clicked item\n * @param {boolean} isMobile Indicates whether the click happened on mobile\n * @param {AnalyticsName} analyticsName The analytics name for the clicked item\n * @param {HTMLElement} sourceNode The source node of the clicked item\n *\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * The event is triggered on user interaction with a secondary navigation heading\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {AnalyticsName} analyticsName The analytics name for the heading\n * @param {HTMLElement} sourceNode The source node of the heading\n *\n */\n@event(\"heading-click\", { cancelable: true, bubbles: true })\n\n/**\n * The event is triggered on user interaction with the mobile menu opener\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {AnalyticsName} analyticsName The analytics name for the mobile menu opener\n * @param {HTMLElement} sourceNode The source node of the mobile menu opener\n *\n */\n@event(\"mobile-menu-opener-click\", { cancelable: true, bubbles: true })\n\nclass UDExSecondaryNavigation extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExSecondaryNavigationClickEventDetail,\n \"heading-click\": UDExSecondaryNavigationHeadingClickEventDetail,\n \"mobile-menu-opener-click\": UDExSecondaryNavigationMobileMenuOpenerClickEventDetail,\n };\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 })\n navItems: string = \"[]\";\n\n /**\n * Slot for breadcrumbs.\n *\n * @slot breadcrumbs\n * @public\n */\n @slot({ type: HTMLElement })\n breadcrumbs!: Slot<HTMLElement>;\n\n /**\n * Slot for action buttons.\n *\n * @slot buttons\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Slot<HTMLElement>;\n\n /**\n * Defines the heading of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n heading: string = \"\";\n\n /**\n * Defines the href of the heading.\n *\n * @default \"\"\n * @public\n */\n @property()\n headingHref: string = \"\";\n /**\n * Defines the height of the dropdown opened on mobile screen.\n *\n * @public\n */\n @property({ type: String })\n maxDropdownHeight!: string;\n\n @property({ type: Boolean, noAttribute: true })\n _selectedMore!: boolean;\n\n @property({ type: Object, noAttribute: true })\n _overflowItems: Array<NavItem> = [];\n\n @property({ type: Object, 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 = true;\n _rootHolder!: HTMLElement | null | undefined;\n _clickedNavItem!: UDExSecondaryNavigationItem;\n _boundReflowItems: () => void;\n _prevSlottedButtons: HTMLElement | null = null;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n this._boundReflowItems = this._handleResize.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 if (this._prevSlottedButtons) {\n ResizeHandler.deregister(this._prevSlottedButtons, this._boundReflowItems);\n }\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 if (!this._overflowItems.length) {\n this._showMoreButton = true;\n }\n this.handleOutsideClick();\n this.syncButtonsResizeHandler();\n }\n\n syncButtonsResizeHandler(): void {\n const buttonsEl = this.optionalButtons || null;\n if (buttonsEl !== this._prevSlottedButtons) {\n if (this._prevSlottedButtons) {\n ResizeHandler.deregister(this._prevSlottedButtons, this._boundReflowItems);\n }\n if (buttonsEl) {\n ResizeHandler.register(buttonsEl, this._boundReflowItems);\n } else {\n this.reflowItems();\n }\n this._prevSlottedButtons = buttonsEl;\n }\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n _handleResize() {\n this.reflowItems();\n if (this._clickedNavItem && this.isDesktopScreen) {\n this._clickedNavItem.closeDropdown();\n }\n }\n\n reflowItems(): void {\n const headingWidth = this.headingHolder\n ? this.headingHolder.offsetWidth + (parseFloat(getComputedStyle(this.headingHolder).marginInlineEnd) || 0)\n : 0;\n const availableWidth = this.rootHolder.offsetWidth - headingWidth - (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 = [...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 = this.parsedItems.slice(0, lastVisibleIndex + 1);\n this._overflowItems = this.parsedItems.slice(lastVisibleIndex + 1);\n this._showMoreButton = true;\n this.refreshRendering();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n e.stopPropagation();\n const item = e.target as UDExSecondaryNavigationItem;\n\n if (isEscape(e) && item.hasNestedItems) {\n return item.closeDropdown();\n }\n }\n\n getItemWidth(item: NavItem): number {\n const context = this.getCanvasContext();\n context.font = this.getCanvasFont();\n const iconWidth = item.items?.length ? ITEM_ICON_WIDTH : 0;\n\n return Math.ceil(context.measureText(item.title).width) + iconWidth;\n }\n\n getMoreButtonWidth(): number {\n const context = this.getCanvasContext();\n context.font = this.getCanvasFont();\n\n return Math.ceil(context.measureText(this.moreButtonText).width) + ITEM_ICON_WIDTH;\n }\n\n getCanvasFont(): string {\n const navItem = this.domNavItems[0];\n const btn = navItem?.shadowRoot?.querySelector<HTMLElement>(\".udex-secondary-navigation__item\");\n if (btn) {\n const cs = getComputedStyle(btn);\n return `${cs.fontWeight} ${cs.fontSize} ${cs.fontFamily}`;\n }\n return canvasContentFont;\n }\n\n getCanvasContext(): CanvasRenderingContext2D {\n const canvas = document.createElement(\"canvas\");\n return canvas.getContext(\"2d\")!;\n }\n\n handleItemClick(e: CustomEvent<UDExSecondaryNavigationItemClickEventDetail>): void {\n const { index, item, originalEvent: actualOriginalEvent } = e.detail;\n const clickedItem = item as UDExSecondaryNavigationItem;\n const {\n path, target, title, active, subItems, _id, mobileLinkTitle,\n } = clickedItem;\n\n const prevented = !this.fireEventItemClick(actualOriginalEvent, index, {\n path,\n target,\n title,\n active,\n mobileLinkTitle,\n items: subItems,\n }, this.getAnalyticsPath(title, path), title === this.moreButtonText);\n\n if (prevented) {\n e.preventDefault();\n return;\n }\n\n this._clickedNavItem = clickedItem;\n this.closePrevDropdown(_id);\n\n if (!subItems.length) {\n this.setActiveItem(this.parsedItems, clickedItem);\n }\n }\n\n handleSubItemClick(e: CustomEvent<UDExSecondaryNavigationItemSubItemClickEventDetail>): void {\n const { originalEvent: actualOriginalEvent, index } = e.detail;\n const item = e.detail.item as UDExSecondaryNavigationSubItem;\n const { items } = item as NavItem;\n const analyticsPath = this.getAnalyticsPath(item.title, item.path);\n const isMore = this._clickedNavItem?.title === this.moreButtonText;\n const prevented = !this.fireEventItemClick(actualOriginalEvent, index, item, analyticsPath, isMore);\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 handleHeadingClick(e: CustomEvent<UDExSecondaryNavigationHeadingClickEventDetail>): void {\n this.fireDecoratorEvent(\"heading-click\", {\n analyticsName: AnalyticsName.HeaderSub,\n sourceNode: e.target as HTMLElement,\n originalEvent: e,\n });\n }\n\n fireEventItemClick(\n e: PointerEvent | KeyboardEvent,\n clickedIndex: number,\n {\n items, target, path, title, active, mobileLinkTitle,\n }: NavItem,\n analyticsPath: Array<string> = [],\n isMore: boolean = false,\n ): boolean {\n return this.fireDecoratorEvent(\"item-click\", {\n ...(this.isMobileScreen && { isMobile: true }),\n ...(isMore && { isMore: true }),\n analyticsName: AnalyticsName.HeaderSub,\n analyticsPath,\n sourceNode: e?.currentTarget as HTMLElement,\n originalEvent: e,\n clickedItem: {\n mobileLinkTitle: mobileLinkTitle || \"\",\n path: path || \"\",\n active: active || false,\n items: items || [],\n target,\n title,\n },\n clickedIndex,\n });\n }\n\n getAnalyticsPath(clickedTitle: string, clickedPath?: string): Array<string> {\n const getLabel = (item: NavItem) => (this.isMobileScreen ? (item.mobileLinkTitle || item.title) : item.title);\n const findPath = (items: Array<NavItem>, parentPath: Array<string>): Array<string> | null => items.reduce<Array<string> | null>((found, item) => {\n if (found !== null) {\n return found;\n }\n if (item.title === clickedTitle && (!clickedPath || item.path === clickedPath)) {\n return [...parentPath, getLabel(item)];\n }\n if (item.items?.length) {\n return findPath(item.items, [...parentPath, getLabel(item)]);\n }\n return null;\n }, null);\n return findPath(this.parsedItems, []) || [];\n }\n\n setActiveItem(navItems: Array<NavItem>, clickedItem: UDExSecondaryNavigationItemBase): void {\n const updateNav = (items: Array<NavItem>, { title, path }: UDExSecondaryNavigationItemBase): boolean => {\n let hasActiveDescendant = false;\n\n items.forEach(item => {\n if (item.title === title && (item.path === path || !item.path)) {\n item.active = true;\n hasActiveDescendant = true;\n return;\n }\n\n if (item.items) {\n const childIsActive = updateNav(item.items, clickedItem);\n if (childIsActive) {\n item.active = true;\n hasActiveDescendant = true;\n } else {\n delete item.active;\n }\n } else {\n delete item.active;\n }\n });\n\n return hasActiveDescendant;\n };\n\n updateNav(navItems, clickedItem);\n this.navItems = JSON.stringify(navItems);\n }\n\n handleMobileMenuOpenerClick(e: CustomEvent): void {\n this.fireDecoratorEvent(\"mobile-menu-opener-click\", {\n analyticsName: AnalyticsName.HeaderSub,\n sourceNode: e.target as HTMLElement,\n originalEvent: e,\n });\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", this.outsideClickListener);\n }\n\n outsideClickListener = (e: MouseEvent): void => {\n if (this.isMobileScreen && !e.composedPath().includes(this)) {\n this.closeMobileDropdown();\n return;\n }\n\n if (this.isDesktopScreen) {\n this.handleDesktopDropdown(e);\n }\n };\n\n handleMobileButtonsClick(): void {\n this.closeMobileDropdown();\n }\n\n closeMobileDropdown(): void {\n this.mobileNav?.closeDropdown();\n }\n\n handleDesktopDropdown(e: MouseEvent): void {\n const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);\n if (!isClickedNavItem && this._clickedNavItem) {\n this._clickedNavItem.closeDropdown();\n }\n }\n\n closePrevDropdown(clickedItemId: string): void {\n this.domNavItems.forEach(item => {\n if (item.isOpen && item._id !== clickedItemId) {\n item.closeDropdown();\n }\n });\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 headingHolder(): 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 translate(UDExSecondaryNavigation, MORE);\n }\n\n get parsedItems(): Array<NavItem> {\n return 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 rootClass(): string {\n return `${rootClass} ${this.hasBreadcrumbsSlot ? \"\" : `${rootClass}_centered`}`.trim();\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 BreakpointUtils.isAtLeast(\"M\");\n }\n\n get isMobileScreen(): boolean {\n return BreakpointUtils.isAtMost(\"S\");\n }\n}\n\nUDExSecondaryNavigation.define();\n\nexport default UDExSecondaryNavigation;\nexport type {\n UDExSecondaryNavigationClickEventDetail,\n UDExSecondaryNavigationHeadingClickEventDetail,\n UDExSecondaryNavigationMobileMenuOpenerClickEventDetail,\n};\n"]}
1
+ {"version":3,"file":"SecondaryNavigation.js","sourceRoot":"","sources":["../src/SecondaryNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChangeInfo, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport 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-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { UDExSecondaryNavigationItemClickEventDetail, UDExSecondaryNavigationItemSubItemClickEventDetail } from \"./SecondaryNavigationItem.js\";\nimport UDExSecondaryNavigationItem from \"./SecondaryNavigationItem.js\";\nimport type UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport type { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport type UDExSecondaryNavigationItemBase from \"./SecondaryNavigationItemBase.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { MORE } from \"./generated/i18n/i18n-defaults.js\";\nimport SecondaryNavigationTemplate from \"./SecondaryNavigationTemplate.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport translate from \"./utils/translate.js\";\nimport type { RelativeValue } from \"./utils/parseRelativeUnits.js\";\n\n// Styles\nimport SecondaryNavigationCss from \"./generated/themes/SecondaryNavigation.css.js\";\n\nconst canvasContentFont: string = \"14px '72 Brand Variable'\";\nconst rootClass = \"udex-secondary-navigation__root\";\nconst ITEM_ICON_WIDTH = 20;\n\ntype UDExSecondaryNavigationClickEventDetail = {\n originalEvent: Event,\n clickedItem: NavItem;\n clickedIndex: number;\n isMore?: boolean,\n isMobile?: boolean,\n analyticsName: AnalyticsName,\n analyticsPath: Array<string>,\n sourceNode: HTMLElement,\n};\n\ntype UDExSecondaryNavigationHeadingClickEventDetail = {\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\n};\n\ntype UDExSecondaryNavigationMobileMenuOpenerClickEventDetail = {\n originalEvent: Event,\n analyticsName: AnalyticsName,\n sourceNode: HTMLElement,\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 \"@sapudex/web-components/dist/SecondaryNavigation.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-secondary-navigation\",\n renderer: jsxRenderer,\n styles: [SecondaryNavigationCss],\n template: SecondaryNavigationTemplate,\n dependencies: [UDExSecondaryNavigationItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {NavItem} clickedItem The clicked item\n * @param {number} clickedIndex The index of the clicked item\n * @param {boolean} isMobile Indicates whether the click happened on mobile\n * @param {AnalyticsName} analyticsName The analytics name for the clicked item\n * @param {HTMLElement} sourceNode The source node of the clicked item\n *\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * The event is triggered on user interaction with a secondary navigation heading\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {AnalyticsName} analyticsName The analytics name for the heading\n * @param {HTMLElement} sourceNode The source node of the heading\n *\n */\n@event(\"heading-click\", { cancelable: true, bubbles: true })\n\n/**\n * The event is triggered on user interaction with the mobile menu opener\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent The original event object\n * @param {AnalyticsName} analyticsName The analytics name for the mobile menu opener\n * @param {HTMLElement} sourceNode The source node of the mobile menu opener\n *\n */\n@event(\"mobile-menu-opener-click\", { cancelable: true, bubbles: true })\n\nclass UDExSecondaryNavigation extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExSecondaryNavigationClickEventDetail,\n \"heading-click\": UDExSecondaryNavigationHeadingClickEventDetail,\n \"mobile-menu-opener-click\": UDExSecondaryNavigationMobileMenuOpenerClickEventDetail,\n };\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 })\n navItems: string = \"[]\";\n\n /**\n * Slot for breadcrumbs.\n *\n * @slot breadcrumbs\n * @public\n */\n @slot({ type: HTMLElement })\n breadcrumbs!: Slot<HTMLElement>;\n\n /**\n * Slot for action buttons.\n *\n * @slot buttons\n * @public\n */\n @slot({ type: HTMLElement })\n buttons!: Slot<HTMLElement>;\n\n /**\n * Defines the heading of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n heading: string = \"\";\n\n /**\n * Defines the href of the heading.\n *\n * @default \"\"\n * @public\n */\n @property()\n headingHref: string = \"\";\n /**\n * Defines the height of the dropdown opened on mobile screen.\n *\n * @public\n */\n @property({ type: String })\n maxDropdownHeight!: RelativeValue;\n\n @property({ type: Boolean, noAttribute: true })\n _selectedMore!: boolean;\n\n @property({ type: Object, noAttribute: true })\n _overflowItems: Array<NavItem> = [];\n\n @property({ type: Object, 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 = true;\n _rootHolder!: HTMLElement | null | undefined;\n _clickedNavItem!: UDExSecondaryNavigationItem;\n _boundReflowItems: () => void;\n _prevSlottedButtons: HTMLElement | null = null;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n this._boundReflowItems = this._handleResize.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 if (this._prevSlottedButtons) {\n ResizeHandler.deregister(this._prevSlottedButtons, this._boundReflowItems);\n }\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 if (!this._overflowItems.length) {\n this._showMoreButton = true;\n }\n this.handleOutsideClick();\n this.syncButtonsResizeHandler();\n }\n\n syncButtonsResizeHandler(): void {\n const buttonsEl = this.optionalButtons || null;\n if (buttonsEl !== this._prevSlottedButtons) {\n if (this._prevSlottedButtons) {\n ResizeHandler.deregister(this._prevSlottedButtons, this._boundReflowItems);\n }\n if (buttonsEl) {\n ResizeHandler.register(buttonsEl, this._boundReflowItems);\n } else {\n this.reflowItems();\n }\n this._prevSlottedButtons = buttonsEl;\n }\n }\n\n refreshRendering(): void {\n this._requestRender = !this._requestRender;\n }\n\n _handleResize() {\n this.reflowItems();\n if (this._clickedNavItem && this.isDesktopScreen) {\n this._clickedNavItem.closeDropdown();\n }\n }\n\n reflowItems(): void {\n const headingWidth = this.headingHolder\n ? this.headingHolder.offsetWidth + (parseFloat(getComputedStyle(this.headingHolder).marginInlineEnd) || 0)\n : 0;\n const availableWidth = this.rootHolder.offsetWidth - headingWidth - (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 = [...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 = this.parsedItems.slice(0, lastVisibleIndex + 1);\n this._overflowItems = this.parsedItems.slice(lastVisibleIndex + 1);\n this._showMoreButton = true;\n this.refreshRendering();\n }\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n e.stopPropagation();\n const item = e.target as UDExSecondaryNavigationItem;\n\n if (isEscape(e) && item.hasNestedItems) {\n return item.closeDropdown();\n }\n }\n\n getItemWidth(item: NavItem): number {\n const context = this.getCanvasContext();\n context.font = this.getCanvasFont();\n const iconWidth = item.items?.length ? ITEM_ICON_WIDTH : 0;\n\n return Math.ceil(context.measureText(item.title).width) + iconWidth;\n }\n\n getMoreButtonWidth(): number {\n const context = this.getCanvasContext();\n context.font = this.getCanvasFont();\n\n return Math.ceil(context.measureText(this.moreButtonText).width) + ITEM_ICON_WIDTH;\n }\n\n getCanvasFont(): string {\n const navItem = this.domNavItems[0];\n const btn = navItem?.shadowRoot?.querySelector<HTMLElement>(\".udex-secondary-navigation__item\");\n if (btn) {\n const cs = getComputedStyle(btn);\n return `${cs.fontWeight} ${cs.fontSize} ${cs.fontFamily}`;\n }\n return canvasContentFont;\n }\n\n getCanvasContext(): CanvasRenderingContext2D {\n const canvas = document.createElement(\"canvas\");\n return canvas.getContext(\"2d\")!;\n }\n\n handleItemClick(e: CustomEvent<UDExSecondaryNavigationItemClickEventDetail>): void {\n const { index, item, originalEvent: actualOriginalEvent } = e.detail;\n const clickedItem = item as UDExSecondaryNavigationItem;\n const {\n path, target, title, active, subItems, _id, mobileLinkTitle,\n } = clickedItem;\n\n const prevented = !this.fireEventItemClick(actualOriginalEvent, index, {\n path,\n target,\n title,\n active,\n mobileLinkTitle,\n items: subItems,\n }, this.getAnalyticsPath(title, path), title === this.moreButtonText);\n\n if (prevented) {\n e.preventDefault();\n return;\n }\n\n this._clickedNavItem = clickedItem;\n this.closePrevDropdown(_id);\n\n if (!subItems.length) {\n this.setActiveItem(this.parsedItems, clickedItem);\n }\n }\n\n handleSubItemClick(e: CustomEvent<UDExSecondaryNavigationItemSubItemClickEventDetail>): void {\n const { originalEvent: actualOriginalEvent, index } = e.detail;\n const item = e.detail.item as UDExSecondaryNavigationSubItem;\n const { items } = item as NavItem;\n const analyticsPath = this.getAnalyticsPath(item.title, item.path);\n const isMore = this._clickedNavItem?.title === this.moreButtonText;\n const prevented = !this.fireEventItemClick(actualOriginalEvent, index, item, analyticsPath, isMore);\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 handleHeadingClick(e: CustomEvent<UDExSecondaryNavigationHeadingClickEventDetail>): void {\n this.fireDecoratorEvent(\"heading-click\", {\n analyticsName: AnalyticsName.HeaderSub,\n sourceNode: e.target as HTMLElement,\n originalEvent: e,\n });\n }\n\n fireEventItemClick(\n e: PointerEvent | KeyboardEvent,\n clickedIndex: number,\n {\n items, target, path, title, active, mobileLinkTitle,\n }: NavItem,\n analyticsPath: Array<string> = [],\n isMore: boolean = false,\n ): boolean {\n return this.fireDecoratorEvent(\"item-click\", {\n ...(this.isMobileScreen && { isMobile: true }),\n ...(isMore && { isMore: true }),\n analyticsName: AnalyticsName.HeaderSub,\n analyticsPath,\n sourceNode: e?.currentTarget as HTMLElement,\n originalEvent: e,\n clickedItem: {\n mobileLinkTitle: mobileLinkTitle || \"\",\n path: path || \"\",\n active: active || false,\n items: items || [],\n target,\n title,\n },\n clickedIndex,\n });\n }\n\n getAnalyticsPath(clickedTitle: string, clickedPath?: string): Array<string> {\n const getLabel = (item: NavItem) => (this.isMobileScreen ? (item.mobileLinkTitle || item.title) : item.title);\n const findPath = (items: Array<NavItem>, parentPath: Array<string>): Array<string> | null => items.reduce<Array<string> | null>((found, item) => {\n if (found !== null) {\n return found;\n }\n if (item.title === clickedTitle && (!clickedPath || item.path === clickedPath)) {\n return [...parentPath, getLabel(item)];\n }\n if (item.items?.length) {\n return findPath(item.items, [...parentPath, getLabel(item)]);\n }\n return null;\n }, null);\n return findPath(this.parsedItems, []) || [];\n }\n\n setActiveItem(navItems: Array<NavItem>, clickedItem: UDExSecondaryNavigationItemBase): void {\n const updateNav = (items: Array<NavItem>, { title, path }: UDExSecondaryNavigationItemBase): boolean => {\n let hasActiveDescendant = false;\n\n items.forEach(item => {\n if (item.title === title && (item.path === path || !item.path)) {\n item.active = true;\n hasActiveDescendant = true;\n return;\n }\n\n if (item.items) {\n const childIsActive = updateNav(item.items, clickedItem);\n if (childIsActive) {\n item.active = true;\n hasActiveDescendant = true;\n } else {\n delete item.active;\n }\n } else {\n delete item.active;\n }\n });\n\n return hasActiveDescendant;\n };\n\n updateNav(navItems, clickedItem);\n this.navItems = JSON.stringify(navItems);\n }\n\n handleMobileMenuOpenerClick(e: CustomEvent): void {\n this.fireDecoratorEvent(\"mobile-menu-opener-click\", {\n analyticsName: AnalyticsName.HeaderSub,\n sourceNode: e.target as HTMLElement,\n originalEvent: e,\n });\n }\n\n handleOutsideClick(): void {\n document.addEventListener(\"click\", this.outsideClickListener);\n }\n\n outsideClickListener = (e: MouseEvent): void => {\n if (this.isMobileScreen && !e.composedPath().includes(this)) {\n this.closeMobileDropdown();\n return;\n }\n\n if (this.isDesktopScreen) {\n this.handleDesktopDropdown(e);\n }\n };\n\n handleMobileButtonsClick(): void {\n this.closeMobileDropdown();\n }\n\n closeMobileDropdown(): void {\n this.mobileNav?.closeDropdown();\n }\n\n handleDesktopDropdown(e: MouseEvent): void {\n const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);\n if (!isClickedNavItem && this._clickedNavItem) {\n this._clickedNavItem.closeDropdown();\n }\n }\n\n closePrevDropdown(clickedItemId: string): void {\n this.domNavItems.forEach(item => {\n if (item.isOpen && item._id !== clickedItemId) {\n item.closeDropdown();\n }\n });\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 headingHolder(): 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 translate(UDExSecondaryNavigation, MORE);\n }\n\n get parsedItems(): Array<NavItem> {\n return 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 rootClass(): string {\n return `${rootClass} ${this.hasBreadcrumbsSlot ? \"\" : `${rootClass}_centered`}`.trim();\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 BreakpointUtils.isAtLeast(\"M\");\n }\n\n get isMobileScreen(): boolean {\n return BreakpointUtils.isAtMost(\"S\");\n }\n}\n\nUDExSecondaryNavigation.define();\n\nexport default UDExSecondaryNavigation;\nexport type {\n UDExSecondaryNavigationClickEventDetail,\n UDExSecondaryNavigationHeadingClickEventDetail,\n UDExSecondaryNavigationMobileMenuOpenerClickEventDetail,\n};\n"]}
@@ -17,6 +17,10 @@ import SecondaryNavigationItemTemplate from "./SecondaryNavigationItemTemplate.j
17
17
  // Styles
18
18
  import SecondaryNavigationItemCss from "./generated/themes/SecondaryNavigationItem.css.js";
19
19
  const DESKTOP_DROPDOWN_BOTTOM_GAP = 24;
20
+ const DROPDOWN_MAX_HEIGHT_VAR = {
21
+ desktop: "--udex-secondary-navigation-item-dropdown-desktop-max-height",
22
+ mobile: "--udex-secondary-navigation-item-dropdown-mobile-max-height",
23
+ };
20
24
  /**
21
25
  * @class
22
26
  *
@@ -260,21 +264,23 @@ let UDExSecondaryNavigationItem = class UDExSecondaryNavigationItem extends UDEx
260
264
  setDesktopDropdownMaxHeight() {
261
265
  const { top } = this.dropdown.getBoundingClientRect();
262
266
  const maxHeight = window.innerHeight - top - DESKTOP_DROPDOWN_BOTTOM_GAP;
263
- this.style.setProperty("--udex-secondary-navigation-item-dropdown-desktop-max-height", `${maxHeight}px`);
267
+ this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.desktop, `${maxHeight}px`);
264
268
  }
265
269
  setMobileDropdownMaxHeight() {
266
270
  if (!this._maxHeight || this._dropdownMaxHeightExceeds || !this.heightSatisfiesType) {
267
- const secondaryNavigationMobileTrigger = this.shadowRoot.querySelector(".udex-secondary-navigation__item");
268
- const maxDropdownHeight = window.innerHeight - secondaryNavigationMobileTrigger.clientHeight;
269
- this.style.setProperty("--udex-secondary-navigation-item-dropdown-mobile-max-height", `${maxDropdownHeight}px`);
271
+ const { clientHeight } = this.shadowRoot.querySelector(".udex-secondary-navigation__item");
272
+ const { top } = this.getBoundingClientRect();
273
+ const maxDropdownHeight = window.innerHeight - top - clientHeight;
274
+ this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${maxDropdownHeight}px`);
270
275
  return;
271
276
  }
272
- this.style.setProperty("--udex-secondary-navigation-item-dropdown-mobile-max-height", `${this._maxHeight}`);
277
+ this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${this._maxHeight}`);
273
278
  }
274
279
  get _dropdownMaxHeightExceeds() {
275
280
  const normalizedHeight = parseRelativeUnits(this._maxHeight, this.dropdown);
281
+ const { top } = this.getBoundingClientRect();
276
282
  const secondaryNavigationMobileTriggerHeight = this.shadowRoot.querySelector(".udex-secondary-navigation__item").clientHeight;
277
- return normalizedHeight >= window.innerHeight - secondaryNavigationMobileTriggerHeight;
283
+ return normalizedHeight >= window.innerHeight - top - secondaryNavigationMobileTriggerHeight;
278
284
  }
279
285
  get heightSatisfiesType() {
280
286
  return /vh|vw|%|em|rem|px/.test(this._maxHeight);
@@ -1 +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-strict.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport {\n isEscape, isEnter, isSpace, isLeft, isRight, isUp, isDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { RelativeValue } from \"./utils/parseRelativeUnits.js\";\nimport parseRelativeUnits from \"./utils/parseRelativeUnits.js\";\nimport UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport type { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport UDExSecondaryNavigationItemBase from \"./SecondaryNavigationItemBase.js\";\n\nimport SecondaryNavigationItemTemplate from \"./SecondaryNavigationItemTemplate.js\";\n\n// Styles\nimport SecondaryNavigationItemCss from \"./generated/themes/SecondaryNavigationItem.css.js\";\n\nconst DESKTOP_DROPDOWN_BOTTOM_GAP = 24;\n\ntype UDExSecondaryNavigationItemClickEventDetail = {\n item: HTMLElement,\n index: number,\n originalEvent: PointerEvent | KeyboardEvent\n};\n\ntype UDExSecondaryNavigationItemSubItemClickEventDetail = {\n item: NavItem,\n index: number,\n originalEvent: PointerEvent | KeyboardEvent\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-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/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: jsxRenderer,\n styles: [SecondaryNavigationItemCss],\n template: SecondaryNavigationItemTemplate,\n dependencies: [UDExSecondaryNavigationSubItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent the original event object\n * @param {HTMLElement} item the clicked item\n * @param {number} index the index of the clicked item\n */\n@event(\"nav-item-click\", { bubbles: true, cancelable: true })\n\n/**\n * Fires when dropdown item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent the original event object\n * @param {NavItem} item the clicked sub item\n * @param {number} index the index of the clicked sub item\n */\n@event(\"sub-item-click\", { bubbles: true, cancelable: true })\n\nclass UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {\n eventDetails!: {\n \"nav-item-click\": UDExSecondaryNavigationItemClickEventDetail,\n \"sub-item-click\": UDExSecondaryNavigationItemSubItemClickEventDetail,\n };\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!: Slot<HTMLElement>;\n\n /**\n * List of the sub items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: Object })\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 = false;\n\n /**\n * Defines the length of items in the secondary navigation.\n *\n * @private\n */\n @property({ type: Number })\n _navItemsLength!: number;\n\n /**\n * Defines the height of the dropdown opened on mobile screen.\n *\n * @private\n */\n @property({ type: String })\n _maxHeight!: RelativeValue;\n\n /**\n * Defines processed items.\n *\n * @private\n * @default []\n */\n @property({ type: Object })\n _processedItems: Array<NavItem> = [];\n\n /**\n * Defines if item is mobile menu opener.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _isMobileMenuOpener!: boolean;\n\n _dropdownHistory: Array<Array<NavItem>> = [];\n _shouldFocusFirstSubItem!: boolean;\n _subTitle!: string | undefined;\n\n onAfterRendering(): void {\n if (this.isLastItem && this.isOpen && !this._isMobileView) {\n this.setDropdownHorizontalAlign();\n }\n\n if (this._shouldFocusFirstSubItem && this.isOpen) {\n this.onFirstSubItemFocus();\n this._shouldFocusFirstSubItem = false;\n }\n\n if (this.isOpen) {\n if (this._isMobileView) {\n this.setMobileDropdownMaxHeight();\n } else {\n this.setDesktopDropdownMaxHeight();\n }\n }\n }\n\n onBeforeRendering() : void {\n this._subTitle = this.subActiveItemTitle || this._subTitle;\n }\n\n _handleWindowResize = (): void => {\n if (!this.isOpen) { return; }\n\n if (this._isMobileView) {\n this.setMobileDropdownMaxHeight();\n } else {\n this.setDesktopDropdownMaxHeight();\n }\n };\n\n onEnterDOM(): void {\n super.onEnterDOM();\n window.addEventListener(\"resize\", this._handleWindowResize);\n }\n\n onExitDOM(): void {\n super.onExitDOM();\n window.removeEventListener(\"resize\", this._handleWindowResize);\n }\n\n handleSubItemClick(e: CustomEvent | KeyboardEvent): void {\n const originalEvent: PointerEvent | KeyboardEvent = (e instanceof CustomEvent && e.detail?.originalEvent) ? e.detail.originalEvent : e as KeyboardEvent;\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 this.onShouldFocusFirstSubItem();\n }\n\n this.fireSubItemClickEvent(originalEvent, clickedItem, index);\n }\n\n onBackClick(): void {\n this.setPrevNestedItems();\n }\n\n openDropdown(e: PointerEvent | KeyboardEvent): void {\n if (this.hasNestedItems) {\n this.setDropdownItems();\n this.isOpen = !this.isOpen;\n this.onShouldFocusFirstSubItem();\n }\n\n this.fireNavItemClickEvent(e);\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n }\n\n handleItemLinkKeyDown(e: KeyboardEvent): void {\n if (isSpace(e)) {\n this.fireNavItemClickEvent(e);\n }\n }\n\n handleItemEnterOrSpaceKeys(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 const { index } = e.target as UDExSecondaryNavigationSubItem;\n if (isTabNext(e) && index === this.domNavItems.length - 1) {\n this.closeDropdown();\n }\n if (isTabPrevious(e) && index === 0) {\n this.closeDropdown();\n }\n }\n\n handleButtonsEscKey(e: KeyboardEvent): void {\n if (isEscape(e) && this._isMobileView) {\n this.handleEscapeKey();\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.handleSubItemClick(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 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 this.domNavItems[previousIndex].focus();\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 this.domNavItems[nextIndex].focus();\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, index } = e.target as UDExSecondaryNavigationSubItem;\n if (hasItems && !isBack) {\n const clickedItem = this._processedItems[index];\n this.setDropdownHistory();\n this.setNestedItems(clickedItem);\n this.onShouldFocusFirstSubItem();\n }\n }\n\n onLastSubItemFocus(): void {\n this.domNavItems[this.domNavItems.length - 1].focus();\n }\n\n fireNavItemClickEvent(e: PointerEvent | KeyboardEvent): void {\n this.fireDecoratorEvent(\"nav-item-click\", {\n item: this,\n index: this.index,\n originalEvent: e,\n });\n }\n\n fireSubItemClickEvent(e: PointerEvent | KeyboardEvent, clickedItem: NavItem, index: number): void {\n this.fireDecoratorEvent(\"sub-item-click\", {\n item: clickedItem,\n index,\n originalEvent: e,\n });\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, mobileLinkTitle } : NavItem): void {\n if (items) {\n this._processedItems = [{ title, mobileLinkTitle, isBack: true }, ...items];\n }\n }\n\n setDropdownItems(): void {\n this._processedItems = this.subItems;\n }\n\n setDesktopDropdownMaxHeight(): void {\n const { top } = this.dropdown.getBoundingClientRect();\n const maxHeight = window.innerHeight - top - DESKTOP_DROPDOWN_BOTTOM_GAP;\n this.style.setProperty(\"--udex-secondary-navigation-item-dropdown-desktop-max-height\", `${maxHeight}px`);\n }\n\n setMobileDropdownMaxHeight(): void {\n if (!this._maxHeight || this._dropdownMaxHeightExceeds || !this.heightSatisfiesType) {\n const secondaryNavigationMobileTrigger = this.shadowRoot!.querySelector(\".udex-secondary-navigation__item\")!;\n const maxDropdownHeight = window.innerHeight - secondaryNavigationMobileTrigger.clientHeight;\n this.style.setProperty(\"--udex-secondary-navigation-item-dropdown-mobile-max-height\", `${maxDropdownHeight}px`);\n return;\n }\n\n this.style.setProperty(\"--udex-secondary-navigation-item-dropdown-mobile-max-height\", `${this._maxHeight}`);\n }\n\n get _dropdownMaxHeightExceeds(): boolean {\n const normalizedHeight = parseRelativeUnits(this._maxHeight, this.dropdown);\n const secondaryNavigationMobileTriggerHeight = this.shadowRoot!.querySelector(\".udex-secondary-navigation__item\")!.clientHeight;\n return normalizedHeight >= window.innerHeight - secondaryNavigationMobileTriggerHeight;\n }\n\n get heightSatisfiesType(): boolean {\n return /vh|vw|%|em|rem|px/.test(this._maxHeight);\n }\n\n setDropdownHorizontalAlign(): void {\n const { right, left } = this.dropdown.getBoundingClientRect();\n\n if (right > window.innerWidth) {\n this.dropdown.setAttribute(\"data-horizontal-align\", \"right\");\n }\n\n if (left < 0) {\n this.dropdown.setAttribute(\"data-horizontal-align\", \"left\");\n }\n }\n\n onFirstSubItemFocus(): void {\n this.domNavItems[0]?.focus();\n }\n\n onShouldFocusFirstSubItem(): void {\n this._shouldFocusFirstSubItem = true;\n }\n\n get dropdown(): HTMLElement {\n return this.shadowRoot!.querySelector<HTMLElement>(\".udex-secondary-navigation__dropdown\")!;\n }\n\n get isLastItem(): boolean {\n return this._navItemsLength === this.index;\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 if (this.subActiveItem) {\n const { title, mobileLinkTitle } = this.subActiveItem;\n return this._isMobileView ? (mobileLinkTitle || title) : title;\n }\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 title(): string {\n return this.label;\n }\n}\n\nUDExSecondaryNavigationItem.define();\n\nexport default UDExSecondaryNavigationItem;\nexport type { UDExSecondaryNavigationItemClickEventDetail, UDExSecondaryNavigationItemSubItemClickEventDetail };\n"]}
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-strict.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport {\n isEscape, isEnter, isSpace, isLeft, isRight, isUp, isDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { RelativeValue } from \"./utils/parseRelativeUnits.js\";\nimport parseRelativeUnits from \"./utils/parseRelativeUnits.js\";\nimport UDExSecondaryNavigationSubItem from \"./SecondaryNavigationSubItem.js\";\nimport type { NavItem } from \"./SecondaryNavigationItemBase.js\";\nimport UDExSecondaryNavigationItemBase from \"./SecondaryNavigationItemBase.js\";\n\nimport SecondaryNavigationItemTemplate from \"./SecondaryNavigationItemTemplate.js\";\n\n// Styles\nimport SecondaryNavigationItemCss from \"./generated/themes/SecondaryNavigationItem.css.js\";\n\nconst DESKTOP_DROPDOWN_BOTTOM_GAP = 24;\n\ntype UDExSecondaryNavigationItemClickEventDetail = {\n item: HTMLElement,\n index: number,\n originalEvent: PointerEvent | KeyboardEvent\n};\n\ntype UDExSecondaryNavigationItemSubItemClickEventDetail = {\n item: NavItem,\n index: number,\n originalEvent: PointerEvent | KeyboardEvent\n}\n\nconst DROPDOWN_MAX_HEIGHT_VAR = {\n desktop: \"--udex-secondary-navigation-item-dropdown-desktop-max-height\",\n mobile: \"--udex-secondary-navigation-item-dropdown-mobile-max-height\",\n} as const;\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 \"@sapudex/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: jsxRenderer,\n styles: [SecondaryNavigationItemCss],\n template: SecondaryNavigationItemTemplate,\n dependencies: [UDExSecondaryNavigationSubItem],\n})\n\n/**\n * Fires when item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent the original event object\n * @param {HTMLElement} item the clicked item\n * @param {number} index the index of the clicked item\n */\n@event(\"nav-item-click\", { bubbles: true, cancelable: true })\n\n/**\n * Fires when dropdown item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {Event} originalEvent the original event object\n * @param {NavItem} item the clicked sub item\n * @param {number} index the index of the clicked sub item\n */\n@event(\"sub-item-click\", { bubbles: true, cancelable: true })\n\nclass UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {\n eventDetails!: {\n \"nav-item-click\": UDExSecondaryNavigationItemClickEventDetail,\n \"sub-item-click\": UDExSecondaryNavigationItemSubItemClickEventDetail,\n };\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!: Slot<HTMLElement>;\n\n /**\n * List of the sub items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: Object })\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 = false;\n\n /**\n * Defines the length of items in the secondary navigation.\n *\n * @private\n */\n @property({ type: Number })\n _navItemsLength!: number;\n\n /**\n * Defines the height of the dropdown opened on mobile screen.\n *\n * @private\n */\n @property({ type: String })\n _maxHeight!: RelativeValue;\n\n /**\n * Defines processed items.\n *\n * @private\n * @default []\n */\n @property({ type: Object })\n _processedItems: Array<NavItem> = [];\n\n /**\n * Defines if item is mobile menu opener.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _isMobileMenuOpener!: boolean;\n\n _dropdownHistory: Array<Array<NavItem>> = [];\n _shouldFocusFirstSubItem!: boolean;\n _subTitle!: string | undefined;\n\n onAfterRendering(): void {\n if (this.isLastItem && this.isOpen && !this._isMobileView) {\n this.setDropdownHorizontalAlign();\n }\n\n if (this._shouldFocusFirstSubItem && this.isOpen) {\n this.onFirstSubItemFocus();\n this._shouldFocusFirstSubItem = false;\n }\n\n if (this.isOpen) {\n if (this._isMobileView) {\n this.setMobileDropdownMaxHeight();\n } else {\n this.setDesktopDropdownMaxHeight();\n }\n }\n }\n\n onBeforeRendering() : void {\n this._subTitle = this.subActiveItemTitle || this._subTitle;\n }\n\n _handleWindowResize = (): void => {\n if (!this.isOpen) { return; }\n\n if (this._isMobileView) {\n this.setMobileDropdownMaxHeight();\n } else {\n this.setDesktopDropdownMaxHeight();\n }\n };\n\n onEnterDOM(): void {\n super.onEnterDOM();\n window.addEventListener(\"resize\", this._handleWindowResize);\n }\n\n onExitDOM(): void {\n super.onExitDOM();\n window.removeEventListener(\"resize\", this._handleWindowResize);\n }\n\n handleSubItemClick(e: CustomEvent | KeyboardEvent): void {\n const originalEvent: PointerEvent | KeyboardEvent = (e instanceof CustomEvent && e.detail?.originalEvent) ? e.detail.originalEvent : e as KeyboardEvent;\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 this.onShouldFocusFirstSubItem();\n }\n\n this.fireSubItemClickEvent(originalEvent, clickedItem, index);\n }\n\n onBackClick(): void {\n this.setPrevNestedItems();\n }\n\n openDropdown(e: PointerEvent | KeyboardEvent): void {\n if (this.hasNestedItems) {\n this.setDropdownItems();\n this.isOpen = !this.isOpen;\n this.onShouldFocusFirstSubItem();\n }\n\n this.fireNavItemClickEvent(e);\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n }\n\n handleItemLinkKeyDown(e: KeyboardEvent): void {\n if (isSpace(e)) {\n this.fireNavItemClickEvent(e);\n }\n }\n\n handleItemEnterOrSpaceKeys(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 const { index } = e.target as UDExSecondaryNavigationSubItem;\n if (isTabNext(e) && index === this.domNavItems.length - 1) {\n this.closeDropdown();\n }\n if (isTabPrevious(e) && index === 0) {\n this.closeDropdown();\n }\n }\n\n handleButtonsEscKey(e: KeyboardEvent): void {\n if (isEscape(e) && this._isMobileView) {\n this.handleEscapeKey();\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.handleSubItemClick(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 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 this.domNavItems[previousIndex].focus();\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 this.domNavItems[nextIndex].focus();\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, index } = e.target as UDExSecondaryNavigationSubItem;\n if (hasItems && !isBack) {\n const clickedItem = this._processedItems[index];\n this.setDropdownHistory();\n this.setNestedItems(clickedItem);\n this.onShouldFocusFirstSubItem();\n }\n }\n\n onLastSubItemFocus(): void {\n this.domNavItems[this.domNavItems.length - 1].focus();\n }\n\n fireNavItemClickEvent(e: PointerEvent | KeyboardEvent): void {\n this.fireDecoratorEvent(\"nav-item-click\", {\n item: this,\n index: this.index,\n originalEvent: e,\n });\n }\n\n fireSubItemClickEvent(e: PointerEvent | KeyboardEvent, clickedItem: NavItem, index: number): void {\n this.fireDecoratorEvent(\"sub-item-click\", {\n item: clickedItem,\n index,\n originalEvent: e,\n });\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, mobileLinkTitle } : NavItem): void {\n if (items) {\n this._processedItems = [{ title, mobileLinkTitle, isBack: true }, ...items];\n }\n }\n\n setDropdownItems(): void {\n this._processedItems = this.subItems;\n }\n\n setDesktopDropdownMaxHeight(): void {\n const { top } = this.dropdown.getBoundingClientRect();\n const maxHeight = window.innerHeight - top - DESKTOP_DROPDOWN_BOTTOM_GAP;\n this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.desktop, `${maxHeight}px`);\n }\n\n setMobileDropdownMaxHeight(): void {\n if (!this._maxHeight || this._dropdownMaxHeightExceeds || !this.heightSatisfiesType) {\n const { clientHeight } = this.shadowRoot!.querySelector(\".udex-secondary-navigation__item\")!;\n const { top } = this.getBoundingClientRect();\n const maxDropdownHeight = window.innerHeight - top - clientHeight;\n\n this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${maxDropdownHeight}px`);\n return;\n }\n\n this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${this._maxHeight}`);\n }\n\n get _dropdownMaxHeightExceeds(): boolean {\n const normalizedHeight = parseRelativeUnits(this._maxHeight, this.dropdown);\n const { top } = this.getBoundingClientRect();\n const secondaryNavigationMobileTriggerHeight = this.shadowRoot!.querySelector(\".udex-secondary-navigation__item\")!.clientHeight;\n return normalizedHeight >= window.innerHeight - top - secondaryNavigationMobileTriggerHeight;\n }\n\n get heightSatisfiesType(): boolean {\n return /vh|vw|%|em|rem|px/.test(this._maxHeight);\n }\n\n setDropdownHorizontalAlign(): void {\n const { right, left } = this.dropdown.getBoundingClientRect();\n\n if (right > window.innerWidth) {\n this.dropdown.setAttribute(\"data-horizontal-align\", \"right\");\n }\n\n if (left < 0) {\n this.dropdown.setAttribute(\"data-horizontal-align\", \"left\");\n }\n }\n\n onFirstSubItemFocus(): void {\n this.domNavItems[0]?.focus();\n }\n\n onShouldFocusFirstSubItem(): void {\n this._shouldFocusFirstSubItem = true;\n }\n\n get dropdown(): HTMLElement {\n return this.shadowRoot!.querySelector<HTMLElement>(\".udex-secondary-navigation__dropdown\")!;\n }\n\n get isLastItem(): boolean {\n return this._navItemsLength === this.index;\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 if (this.subActiveItem) {\n const { title, mobileLinkTitle } = this.subActiveItem;\n return this._isMobileView ? (mobileLinkTitle || title) : title;\n }\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 title(): string {\n return this.label;\n }\n}\n\nUDExSecondaryNavigationItem.define();\n\nexport default UDExSecondaryNavigationItem;\nexport type { UDExSecondaryNavigationItemClickEventDetail, UDExSecondaryNavigationItemSubItemClickEventDetail };\n"]}
@@ -1,7 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  import UDExSecondaryNavigationItem from "./SecondaryNavigationItem.js";
3
3
  export default function SecondaryNavigationTemplate() {
4
- return (_jsxs("div", { className: this.rootClass, children: [this.hasBreadcrumbsSlot && (_jsx("div", { className: "udex-secondary-navigation__breadcrumbs", children: _jsx("slot", { name: "breadcrumbs" }) })), _jsxs("div", { className: "udex-secondary-navigation__holder", children: [this.heading.length > 0 && (_jsx("div", { className: "udex-secondary-navigation__heading", children: this.headingHref.length > 0 ? (_jsx("a", { className: "udex-secondary-navigation__title", tabindex: 0, onClick: this.handleHeadingClick, href: this.headingHref, children: this.heading })) : (_jsx("span", { className: "udex-secondary-navigation__title", children: this.heading })) })), _jsxs("nav", { className: "udex-secondary-navigation__wrap", children: [_jsxs("ul", { className: "udex-secondary-navigation__list", onKeyDown: this.handleKeyDown, children: [this.visibleItems.map((item, index) => (_jsx("li", { className: "udex-secondary-navigation__list-item", children: _jsx(UDExSecondaryNavigationItem, { index: index, active: item.active, path: item.path, label: item.title, "mobile-link-title": item.mobileLinkTitle, target: item.target, subItems: item.items ?? [], "onui5-sub-item-click": this.handleSubItemClick, "onui5-nav-item-click": this.handleItemClick, "_nav-items-length": this.visibleItems.length }) }))), this._showMoreButton && (_jsx("li", { className: "udex-secondary-navigation__list-item", children: _jsx(UDExSecondaryNavigationItem, { index: this.visibleItems.length, "onui5-sub-item-click": this.handleSubItemClick, "onui5-nav-item-click": this.handleItemClick, label: this.moreButtonText, subItems: this._overflowItems, "_nav-items-length": this.visibleItems.length }) }))] }), this.hasDesktopButtonsSlot && (_jsx("div", { className: "udex-secondary-navigation__buttons", children: _jsx("slot", { name: "buttons" }) }))] })] }), _jsx(UDExSecondaryNavigationItem, { class: "udex-secondary-navigation__mobile-nav", role: "button", "aria-label": this.mobileMenuOpenerAriaLabel, label: this.heading, "mobile-link-title": this.title, "onui5-nav-item-click": this.handleMobileMenuOpenerClick, "onui5-sub-item-click": this.handleSubItemClick, onKeyDown: this.handleKeyDown, subItems: this.parsedItems, "_is-mobile-menu-opener": "",
5
- "_max-height": this.maxDropdownHeight, children: this.hasMobileButtonsSlot && (_jsx("div", { className: "udex-secondary-navigation__buttons", onClick: this.handleMobileButtonsClick, children: _jsx("slot", { name: "buttons" }) })) })] }));
4
+ return (_jsxs("div", { className: this.rootClass, children: [this.hasBreadcrumbsSlot && (_jsx("div", { className: "udex-secondary-navigation__breadcrumbs", children: _jsx("slot", { name: "breadcrumbs" }) })), _jsxs("div", { className: "udex-secondary-navigation__holder", children: [this.heading.length > 0 && (_jsx("div", { className: "udex-secondary-navigation__heading", children: this.headingHref.length > 0 ? (_jsx("a", { className: "udex-secondary-navigation__title", tabindex: 0, onClick: this.handleHeadingClick, href: this.headingHref, children: this.heading })) : (_jsx("span", { className: "udex-secondary-navigation__title", children: this.heading })) })), _jsxs("nav", { className: "udex-secondary-navigation__wrap", children: [_jsxs("ul", { className: "udex-secondary-navigation__list", onKeyDown: this.handleKeyDown, children: [this.visibleItems.map((item, index) => (_jsx("li", { className: "udex-secondary-navigation__list-item", children: _jsx(UDExSecondaryNavigationItem, { index: index, active: item.active, path: item.path, label: item.title, "mobile-link-title": item.mobileLinkTitle, target: item.target, subItems: item.items ?? [], "onui5-sub-item-click": this.handleSubItemClick, "onui5-nav-item-click": this.handleItemClick, _navItemsLength: this.visibleItems.length }) }))), this._showMoreButton && (_jsx("li", { className: "udex-secondary-navigation__list-item", children: _jsx(UDExSecondaryNavigationItem, { index: this.visibleItems.length, "onui5-sub-item-click": this.handleSubItemClick, "onui5-nav-item-click": this.handleItemClick, label: this.moreButtonText, subItems: this._overflowItems, _navItemsLength: this.visibleItems.length }) }))] }), this.hasDesktopButtonsSlot && (_jsx("div", { className: "udex-secondary-navigation__buttons", children: _jsx("slot", { name: "buttons" }) }))] })] }), _jsx(UDExSecondaryNavigationItem, { class: "udex-secondary-navigation__mobile-nav", role: "button", "aria-label": this.mobileMenuOpenerAriaLabel, label: this.heading, "mobile-link-title": this.title, "onui5-nav-item-click": this.handleMobileMenuOpenerClick, "onui5-sub-item-click": this.handleSubItemClick, onKeyDown: this.handleKeyDown, subItems: this.parsedItems, _maxHeight: this.maxDropdownHeight, "_is-mobile-menu-opener": true, children: this.hasMobileButtonsSlot && (_jsx("div", { className: "udex-secondary-navigation__buttons", onClick: this.handleMobileButtonsClick, children: _jsx("slot", { name: "buttons" }) })) })] }));
6
5
  }
7
6
  //# sourceMappingURL=SecondaryNavigationTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecondaryNavigationTemplate.js","sourceRoot":"","sources":["../src/SecondaryNavigationTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,2BAA2B,MAAM,8BAA8B,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,2BAA2B;IACjD,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,SAAS,aAC3B,IAAI,CAAC,kBAAkB,IAAI,CAC1B,cAAK,SAAS,EAAC,wCAAwC,YACrD,eAAM,IAAI,EAAC,aAAa,GAAQ,GAC5B,CACP,EACD,eAAK,SAAS,EAAC,mCAAmC,aAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,cAAK,SAAS,EAAC,oCAAoC,YAChD,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7B,YACE,SAAS,EAAC,kCAAkC,EAC5C,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,IAAI,CAAC,kBAAyB,EACvC,IAAI,EAAE,IAAI,CAAC,WAAW,YACrB,IAAI,CAAC,OAAO,GACX,CACL,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,kCAAkC,YAAE,IAAI,CAAC,OAAO,GAAQ,CACzE,GACG,CACP,EACD,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cACE,SAAS,EAAC,iCAAiC,EAC3C,SAAS,EAAE,IAAI,CAAC,aAAa,aAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,aAAI,SAAS,EAAC,sCAAsC,YAClD,KAAC,2BAA2B,IAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,uBACE,IAAI,CAAC,eAAe,EACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,0BACJ,IAAI,CAAC,kBAAkB,0BACvB,IAAI,CAAC,eAAe,EACpC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GACvB,GAC3B,CACN,CAAC,EACD,IAAI,CAAC,eAAe,IAAI,CACvB,aAAI,SAAS,EAAC,sCAAsC,YAClD,KAAC,2BAA2B,IAC1B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,0BACT,IAAI,CAAC,kBAAkB,0BACvB,IAAI,CAAC,eAAe,EAC1C,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,QAAQ,EAAE,IAAI,CAAC,cAAc,EACvB,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GACvB,GAC3B,CACN,IACE,EACJ,IAAI,CAAC,qBAAqB,IAAI,CAC7B,cAAK,SAAS,EAAC,oCAAoC,YACjD,eAAM,IAAI,EAAC,SAAS,GAAQ,GACxB,CACP,IACG,IACF,EACN,KAAC,2BAA2B,IAC1B,KAAK,EAAC,uCAAuC,EAC7C,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,yBAAyB,EAC1C,KAAK,EAAE,IAAI,CAAC,OAAO,uBACA,IAAI,CAAC,KAAK,0BACP,IAAI,CAAC,2BAA2B,0BAChC,IAAI,CAAC,kBAAkB,EAC7C,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAExB,wBAAwB,EAAE,EAAE;gBAC5B,aAAa,EAAE,IAAI,CAAC,iBAAiB,YAEtC,IAAI,CAAC,oBAAoB,IAAI,CAC5B,cAAK,SAAS,EAAC,oCAAoC,EAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,YACxF,eAAM,IAAI,EAAC,SAAS,GAAQ,GACxB,CACP,GAC2B,IAC1B,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type UDExSecondaryNavigation from \"./SecondaryNavigation.js\";\nimport UDExSecondaryNavigationItem from \"./SecondaryNavigationItem.js\";\n\nexport default function SecondaryNavigationTemplate(this: UDExSecondaryNavigation) {\n return (\n <div className={this.rootClass}>\n {this.hasBreadcrumbsSlot && (\n <div className=\"udex-secondary-navigation__breadcrumbs\">\n <slot name=\"breadcrumbs\"></slot>\n </div>\n )}\n <div className=\"udex-secondary-navigation__holder\">\n {this.heading.length > 0 && (\n <div className=\"udex-secondary-navigation__heading\">\n {this.headingHref.length > 0 ? (\n <a\n className=\"udex-secondary-navigation__title\"\n tabindex={0}\n onClick={this.handleHeadingClick as any}\n href={this.headingHref}>\n {this.heading}\n </a>\n ) : (\n <span className=\"udex-secondary-navigation__title\">{this.heading}</span>\n )}\n </div>\n )}\n <nav className=\"udex-secondary-navigation__wrap\">\n <ul\n className=\"udex-secondary-navigation__list\"\n onKeyDown={this.handleKeyDown}>\n {this.visibleItems.map((item, index) => (\n <li className=\"udex-secondary-navigation__list-item\">\n <UDExSecondaryNavigationItem\n index={index}\n active={item.active}\n path={item.path}\n label={item.title}\n mobile-link-title={item.mobileLinkTitle}\n target={item.target}\n subItems={item.items ?? []}\n onui5-sub-item-click={this.handleSubItemClick}\n onui5-nav-item-click={this.handleItemClick}\n {...{ \"_nav-items-length\": this.visibleItems.length }}>\n </UDExSecondaryNavigationItem>\n </li>\n ))}\n {this._showMoreButton && (\n <li className=\"udex-secondary-navigation__list-item\">\n <UDExSecondaryNavigationItem\n index={this.visibleItems.length}\n onui5-sub-item-click={this.handleSubItemClick}\n onui5-nav-item-click={this.handleItemClick}\n label={this.moreButtonText}\n subItems={this._overflowItems}\n {...{ \"_nav-items-length\": this.visibleItems.length }}>\n </UDExSecondaryNavigationItem>\n </li>\n )}\n </ul>\n {this.hasDesktopButtonsSlot && (\n <div className=\"udex-secondary-navigation__buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n )}\n </nav>\n </div>\n <UDExSecondaryNavigationItem\n class=\"udex-secondary-navigation__mobile-nav\"\n role=\"button\"\n aria-label={this.mobileMenuOpenerAriaLabel}\n label={this.heading}\n mobile-link-title={this.title}\n onui5-nav-item-click={this.handleMobileMenuOpenerClick}\n onui5-sub-item-click={this.handleSubItemClick}\n onKeyDown={this.handleKeyDown}\n subItems={this.parsedItems}\n {...{\n \"_is-mobile-menu-opener\": \"\",\n \"_max-height\": this.maxDropdownHeight\n }}>\n {this.hasMobileButtonsSlot && (\n <div className=\"udex-secondary-navigation__buttons\" onClick={this.handleMobileButtonsClick}>\n <slot name=\"buttons\"></slot>\n </div>\n )}\n </UDExSecondaryNavigationItem>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SecondaryNavigationTemplate.js","sourceRoot":"","sources":["../src/SecondaryNavigationTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,2BAA2B,MAAM,8BAA8B,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,2BAA2B;IACjD,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,SAAS,aAC3B,IAAI,CAAC,kBAAkB,IAAI,CAC1B,cAAK,SAAS,EAAC,wCAAwC,YACrD,eAAM,IAAI,EAAC,aAAa,GAAQ,GAC5B,CACP,EACD,eAAK,SAAS,EAAC,mCAAmC,aAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,cAAK,SAAS,EAAC,oCAAoC,YAChD,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7B,YACE,SAAS,EAAC,kCAAkC,EAC5C,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,IAAI,CAAC,kBAAyB,EACvC,IAAI,EAAE,IAAI,CAAC,WAAW,YACrB,IAAI,CAAC,OAAO,GACX,CACL,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,kCAAkC,YAAE,IAAI,CAAC,OAAO,GAAQ,CACzE,GACG,CACP,EACD,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cACE,SAAS,EAAC,iCAAiC,EAC3C,SAAS,EAAE,IAAI,CAAC,aAAa,aAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,aAAI,SAAS,EAAC,sCAAsC,YAClD,KAAC,2BAA2B,IAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,uBACE,IAAI,CAAC,eAAe,EACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,0BACJ,IAAI,CAAC,kBAAkB,0BACvB,IAAI,CAAC,eAAe,EAC1C,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GACb,GAC3B,CACN,CAAC,EACD,IAAI,CAAC,eAAe,IAAI,CACvB,aAAI,SAAS,EAAC,sCAAsC,YAClD,KAAC,2BAA2B,IAC1B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,0BACT,IAAI,CAAC,kBAAkB,0BACvB,IAAI,CAAC,eAAe,EAC1C,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAC7B,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GACb,GAC3B,CACN,IACE,EACJ,IAAI,CAAC,qBAAqB,IAAI,CAC7B,cAAK,SAAS,EAAC,oCAAoC,YACjD,eAAM,IAAI,EAAC,SAAS,GAAQ,GACxB,CACP,IACG,IACF,EACN,KAAC,2BAA2B,IAC1B,KAAK,EAAC,uCAAuC,EAC7C,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,yBAAyB,EAC1C,KAAK,EAAE,IAAI,CAAC,OAAO,uBACA,IAAI,CAAC,KAAK,0BACP,IAAI,CAAC,2BAA2B,0BAChC,IAAI,CAAC,kBAAkB,EAC7C,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAC1B,UAAU,EAAE,IAAI,CAAC,iBAAiB,4BACV,IAAI,YAC3B,IAAI,CAAC,oBAAoB,IAAI,CAC5B,cAAK,SAAS,EAAC,oCAAoC,EAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,YACxF,eAAM,IAAI,EAAC,SAAS,GAAQ,GACxB,CACP,GAC2B,IAC1B,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type UDExSecondaryNavigation from \"./SecondaryNavigation.js\";\nimport UDExSecondaryNavigationItem from \"./SecondaryNavigationItem.js\";\n\nexport default function SecondaryNavigationTemplate(this: UDExSecondaryNavigation) {\n return (\n <div className={this.rootClass}>\n {this.hasBreadcrumbsSlot && (\n <div className=\"udex-secondary-navigation__breadcrumbs\">\n <slot name=\"breadcrumbs\"></slot>\n </div>\n )}\n <div className=\"udex-secondary-navigation__holder\">\n {this.heading.length > 0 && (\n <div className=\"udex-secondary-navigation__heading\">\n {this.headingHref.length > 0 ? (\n <a\n className=\"udex-secondary-navigation__title\"\n tabindex={0}\n onClick={this.handleHeadingClick as any}\n href={this.headingHref}>\n {this.heading}\n </a>\n ) : (\n <span className=\"udex-secondary-navigation__title\">{this.heading}</span>\n )}\n </div>\n )}\n <nav className=\"udex-secondary-navigation__wrap\">\n <ul\n className=\"udex-secondary-navigation__list\"\n onKeyDown={this.handleKeyDown}>\n {this.visibleItems.map((item, index) => (\n <li className=\"udex-secondary-navigation__list-item\">\n <UDExSecondaryNavigationItem\n index={index}\n active={item.active}\n path={item.path}\n label={item.title}\n mobile-link-title={item.mobileLinkTitle}\n target={item.target}\n subItems={item.items ?? []}\n onui5-sub-item-click={this.handleSubItemClick}\n onui5-nav-item-click={this.handleItemClick}\n _navItemsLength={this.visibleItems.length}>\n </UDExSecondaryNavigationItem>\n </li>\n ))}\n {this._showMoreButton && (\n <li className=\"udex-secondary-navigation__list-item\">\n <UDExSecondaryNavigationItem\n index={this.visibleItems.length}\n onui5-sub-item-click={this.handleSubItemClick}\n onui5-nav-item-click={this.handleItemClick}\n label={this.moreButtonText}\n subItems={this._overflowItems}\n _navItemsLength={this.visibleItems.length}>\n </UDExSecondaryNavigationItem>\n </li>\n )}\n </ul>\n {this.hasDesktopButtonsSlot && (\n <div className=\"udex-secondary-navigation__buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n )}\n </nav>\n </div>\n <UDExSecondaryNavigationItem\n class=\"udex-secondary-navigation__mobile-nav\"\n role=\"button\"\n aria-label={this.mobileMenuOpenerAriaLabel}\n label={this.heading}\n mobile-link-title={this.title}\n onui5-nav-item-click={this.handleMobileMenuOpenerClick}\n onui5-sub-item-click={this.handleSubItemClick}\n onKeyDown={this.handleKeyDown}\n subItems={this.parsedItems}\n _maxHeight={this.maxDropdownHeight}\n _is-mobile-menu-opener={true}>\n {this.hasMobileButtonsSlot && (\n <div className=\"udex-secondary-navigation__buttons\" onClick={this.handleMobileButtonsClick}>\n <slot name=\"buttons\"></slot>\n </div>\n )}\n </UDExSecondaryNavigationItem>\n </div>\n );\n}\n"]}
@@ -184,6 +184,13 @@ declare class UDExSelectBase extends UDExSearchableListBase {
184
184
  * Activates the first navigable item as the aria-activedescendant without moving DOM focus.
185
185
  */
186
186
  _activateFirstItem(): void;
187
+ /**
188
+ * Establishes the initial aria-activedescendant when the dropdown opens, without moving
189
+ * DOM focus. In SingleSelect mode the currently selected item is activated so reopening
190
+ * restores focus to it; when nothing is selected (or in other modes) the first navigable
191
+ * item is activated instead.
192
+ */
193
+ _activateSelectedOrFirstItem(): void;
187
194
  /**
188
195
  * Navigates to the item at the given index, updating aria-activedescendant and _selectedOption.
189
196
  */
@@ -191,8 +198,6 @@ declare class UDExSelectBase extends UDExSearchableListBase {
191
198
  handleKeyDownDropdown(e: KeyboardEvent): void;
192
199
  handleEndKeyPress(items: UDExListItemBase[], lastItemIndex: number): void;
193
200
  handleHomeKeyPress(items: UDExListItemBase[]): void;
194
- handleDownKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number): void;
195
- handleUpKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number): void;
196
201
  handleLetterKeyPress(e: KeyboardEvent): void;
197
202
  handleEscKeyPress(e: KeyboardEvent): void;
198
203
  handleItemSelection(e: CustomEvent): void;