@ui5/webcomponents-fiori 2.9.0-rc.0 → 2.9.0-rc.2

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 (332) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/cypress/specs/DynamicPage.cy.tsx +38 -0
  3. package/cypress/specs/Search.cy.tsx +817 -0
  4. package/cypress/specs/SearchField.cy.tsx +0 -4
  5. package/cypress/specs/ShellBar.cy.tsx +99 -4
  6. package/cypress/specs/SideNavigation.cy.tsx +52 -0
  7. package/cypress/specs/UserMenu.cy.tsx +66 -9
  8. package/dist/.tsbuildinfo +1 -1
  9. package/dist/DynamicPage.js +12 -0
  10. package/dist/DynamicPage.js.map +1 -1
  11. package/dist/NavigationMenuItem.d.ts +1 -1
  12. package/dist/NavigationMenuItem.js +1 -1
  13. package/dist/NavigationMenuItem.js.map +1 -1
  14. package/dist/NavigationMenuItemTemplate.d.ts +2 -2
  15. package/dist/NavigationMenuItemTemplate.js +2 -12
  16. package/dist/NavigationMenuItemTemplate.js.map +1 -1
  17. package/dist/Search.d.ts +175 -0
  18. package/dist/Search.js +420 -0
  19. package/dist/Search.js.map +1 -0
  20. package/dist/SearchField.d.ts +3 -1
  21. package/dist/SearchField.js +7 -2
  22. package/dist/SearchField.js.map +1 -1
  23. package/dist/SearchFieldScopeOption.d.ts +2 -0
  24. package/dist/SearchFieldScopeOption.js +2 -0
  25. package/dist/SearchFieldScopeOption.js.map +1 -1
  26. package/dist/SearchFieldTemplate.js +1 -1
  27. package/dist/SearchFieldTemplate.js.map +1 -1
  28. package/dist/SearchItem.d.ts +52 -0
  29. package/dist/SearchItem.js +106 -0
  30. package/dist/SearchItem.js.map +1 -0
  31. package/dist/SearchItemGroup.d.ts +17 -0
  32. package/dist/SearchItemGroup.js +39 -0
  33. package/dist/SearchItemGroup.js.map +1 -0
  34. package/dist/SearchItemTemplate.d.ts +2 -0
  35. package/dist/SearchItemTemplate.js +14 -0
  36. package/dist/SearchItemTemplate.js.map +1 -0
  37. package/dist/SearchPopoverTemplate.d.ts +2 -0
  38. package/dist/SearchPopoverTemplate.js +22 -0
  39. package/dist/SearchPopoverTemplate.js.map +1 -0
  40. package/dist/SearchTemplate.d.ts +2 -0
  41. package/dist/SearchTemplate.js +7 -0
  42. package/dist/SearchTemplate.js.map +1 -0
  43. package/dist/ShellBar.d.ts +7 -2
  44. package/dist/ShellBar.js +31 -23
  45. package/dist/ShellBar.js.map +1 -1
  46. package/dist/ShellBarItem.d.ts +24 -0
  47. package/dist/ShellBarItem.js +27 -0
  48. package/dist/ShellBarItem.js.map +1 -1
  49. package/dist/ShellBarPopoverTemplate.js +1 -1
  50. package/dist/ShellBarPopoverTemplate.js.map +1 -1
  51. package/dist/ShellBarTemplate.js +11 -7
  52. package/dist/ShellBarTemplate.js.map +1 -1
  53. package/dist/SideNavigation.d.ts +21 -0
  54. package/dist/SideNavigation.js +22 -0
  55. package/dist/SideNavigation.js.map +1 -1
  56. package/dist/SideNavigationGroup.js +3 -3
  57. package/dist/SideNavigationGroup.js.map +1 -1
  58. package/dist/SideNavigationItem.js +3 -3
  59. package/dist/SideNavigationItem.js.map +1 -1
  60. package/dist/SideNavigationTemplate.js +1 -1
  61. package/dist/SideNavigationTemplate.js.map +1 -1
  62. package/dist/UserMenu.d.ts +6 -2
  63. package/dist/UserMenu.js +17 -14
  64. package/dist/UserMenu.js.map +1 -1
  65. package/dist/UserMenuAccount.d.ts +7 -0
  66. package/dist/UserMenuAccount.js +10 -0
  67. package/dist/UserMenuAccount.js.map +1 -1
  68. package/dist/UserMenuTemplate.js +26 -19
  69. package/dist/UserMenuTemplate.js.map +1 -1
  70. package/dist/ViewSettingsDialog.d.ts +1 -0
  71. package/dist/ViewSettingsDialog.js +6 -1
  72. package/dist/ViewSettingsDialog.js.map +1 -1
  73. package/dist/ViewSettingsDialogTemplate.js +1 -1
  74. package/dist/ViewSettingsDialogTemplate.js.map +1 -1
  75. package/dist/bundle.esm.js +3 -0
  76. package/dist/bundle.esm.js.map +1 -1
  77. package/dist/css/themes/DynamicPage.css +1 -1
  78. package/dist/css/themes/DynamicPageHeader.css +1 -1
  79. package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
  80. package/dist/css/themes/DynamicPageTitle.css +1 -1
  81. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  82. package/dist/css/themes/MediaGallery.css +1 -1
  83. package/dist/css/themes/MediaGalleryItem.css +1 -1
  84. package/dist/css/themes/NavigationMenu.css +1 -1
  85. package/dist/css/themes/NavigationMenuItem.css +1 -1
  86. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  87. package/dist/css/themes/NotificationListItem.css +1 -1
  88. package/dist/css/themes/NotificationListItemBase.css +1 -1
  89. package/dist/css/themes/NotificationStateIcon.css +1 -1
  90. package/dist/css/themes/Page.css +1 -1
  91. package/dist/css/themes/ProductSwitchItem.css +1 -1
  92. package/dist/css/themes/Search.css +1 -0
  93. package/dist/css/themes/SearchField.css +1 -1
  94. package/dist/css/themes/SearchItem.css +1 -0
  95. package/dist/css/themes/SearchItemGroup.css +1 -0
  96. package/dist/css/themes/ShellBar.css +1 -1
  97. package/dist/css/themes/ShellBarPopover.css +1 -1
  98. package/dist/css/themes/SideNavigation.css +1 -1
  99. package/dist/css/themes/SideNavigationGroup.css +1 -1
  100. package/dist/css/themes/SideNavigationItem.css +1 -1
  101. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  102. package/dist/css/themes/SideNavigationPopover.css +1 -1
  103. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  104. package/dist/css/themes/Timeline.css +1 -1
  105. package/dist/css/themes/TimelineGroupItem.css +1 -1
  106. package/dist/css/themes/TimelineItem.css +1 -1
  107. package/dist/css/themes/UploadCollection.css +1 -1
  108. package/dist/css/themes/UploadCollectionItem.css +1 -1
  109. package/dist/css/themes/UserMenu.css +1 -1
  110. package/dist/css/themes/UserMenuItem.css +1 -1
  111. package/dist/css/themes/UserSettingsItem.css +1 -1
  112. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  113. package/dist/css/themes/Wizard.css +1 -1
  114. package/dist/css/themes/WizardTab.css +1 -1
  115. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  116. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  117. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  118. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  119. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  120. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  121. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  122. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  123. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  124. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  125. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  126. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  127. package/dist/custom-elements-internal.json +552 -0
  128. package/dist/custom-elements.json +479 -0
  129. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  131. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  132. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  133. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/i18n/i18n-defaults.d.ts +5 -1
  144. package/dist/generated/i18n/i18n-defaults.js +6 -2
  145. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  146. package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
  147. package/dist/generated/themes/DynamicPage.css.js +1 -1
  148. package/dist/generated/themes/DynamicPage.css.js.map +1 -1
  149. package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
  150. package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
  151. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
  152. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
  153. package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
  154. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
  155. package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
  156. package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
  157. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
  158. package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
  159. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  160. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  161. package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
  162. package/dist/generated/themes/MediaGallery.css.js +1 -1
  163. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  164. package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
  165. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  166. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  167. package/dist/generated/themes/NavigationMenu.css.d.ts +1 -1
  168. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  169. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  170. package/dist/generated/themes/NavigationMenuItem.css.d.ts +1 -1
  171. package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
  172. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
  173. package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
  174. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  175. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  176. package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
  177. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  178. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  179. package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
  180. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  181. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  182. package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
  183. package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
  184. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
  185. package/dist/generated/themes/Page.css.d.ts +1 -1
  186. package/dist/generated/themes/Page.css.js +1 -1
  187. package/dist/generated/themes/Page.css.js.map +1 -1
  188. package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
  189. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  190. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  191. package/dist/generated/themes/Search.css.d.ts +2 -0
  192. package/dist/generated/themes/Search.css.js +8 -0
  193. package/dist/generated/themes/Search.css.js.map +1 -0
  194. package/dist/generated/themes/SearchField.css.d.ts +1 -1
  195. package/dist/generated/themes/SearchField.css.js +1 -1
  196. package/dist/generated/themes/SearchField.css.js.map +1 -1
  197. package/dist/generated/themes/SearchItem.css.d.ts +2 -0
  198. package/dist/generated/themes/SearchItem.css.js +8 -0
  199. package/dist/generated/themes/SearchItem.css.js.map +1 -0
  200. package/dist/generated/themes/SearchItemGroup.css.d.ts +2 -0
  201. package/dist/generated/themes/SearchItemGroup.css.js +8 -0
  202. package/dist/generated/themes/SearchItemGroup.css.js.map +1 -0
  203. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  204. package/dist/generated/themes/ShellBar.css.js +1 -1
  205. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  206. package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
  207. package/dist/generated/themes/ShellBarPopover.css.js +1 -1
  208. package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
  209. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  210. package/dist/generated/themes/SideNavigation.css.js +1 -1
  211. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  212. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  213. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  214. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  215. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  216. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  217. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  218. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  219. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  220. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  221. package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
  222. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  223. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  224. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  225. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  226. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  227. package/dist/generated/themes/Timeline.css.d.ts +1 -1
  228. package/dist/generated/themes/Timeline.css.js +1 -1
  229. package/dist/generated/themes/Timeline.css.js.map +1 -1
  230. package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
  231. package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
  232. package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
  233. package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
  234. package/dist/generated/themes/TimelineItem.css.js +1 -1
  235. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  236. package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
  237. package/dist/generated/themes/UploadCollection.css.js +1 -1
  238. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  239. package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
  240. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  241. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  242. package/dist/generated/themes/UserMenu.css.d.ts +1 -1
  243. package/dist/generated/themes/UserMenu.css.js +1 -1
  244. package/dist/generated/themes/UserMenu.css.js.map +1 -1
  245. package/dist/generated/themes/UserMenuItem.css.d.ts +1 -1
  246. package/dist/generated/themes/UserMenuItem.css.js +1 -1
  247. package/dist/generated/themes/UserMenuItem.css.js.map +1 -1
  248. package/dist/generated/themes/UserSettingsItem.css.d.ts +1 -1
  249. package/dist/generated/themes/UserSettingsItem.css.js +1 -1
  250. package/dist/generated/themes/UserSettingsItem.css.js.map +1 -1
  251. package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
  252. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  253. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  254. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  255. package/dist/generated/themes/Wizard.css.js +1 -1
  256. package/dist/generated/themes/Wizard.css.js.map +1 -1
  257. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  258. package/dist/generated/themes/WizardTab.css.js +1 -1
  259. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  260. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  261. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  262. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  263. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  264. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  265. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  266. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  267. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  268. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  269. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  270. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  271. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  272. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  273. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  274. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  275. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  276. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  277. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  278. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  279. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  280. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  281. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  282. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  283. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  284. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  285. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  286. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  287. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  288. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  289. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  290. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  291. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  292. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  293. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  294. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  295. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  296. package/dist/types/SideNavigationDesign.d.ts +17 -0
  297. package/dist/types/SideNavigationDesign.js +19 -0
  298. package/dist/types/SideNavigationDesign.js.map +1 -0
  299. package/dist/vscode.html-custom-data.json +99 -0
  300. package/dist/web-types.json +240 -1
  301. package/package.json +7 -7
  302. package/src/NavigationMenuItemTemplate.tsx +3 -83
  303. package/src/SearchFieldTemplate.tsx +1 -1
  304. package/src/SearchItemTemplate.tsx +45 -0
  305. package/src/SearchPopoverTemplate.tsx +68 -0
  306. package/src/SearchTemplate.tsx +12 -0
  307. package/src/ShellBarPopoverTemplate.tsx +1 -0
  308. package/src/ShellBarTemplate.tsx +9 -6
  309. package/src/SideNavigationTemplate.tsx +1 -0
  310. package/src/UserMenuTemplate.tsx +104 -76
  311. package/src/ViewSettingsDialogTemplate.tsx +1 -0
  312. package/src/i18n/messagebundle.properties +13 -1
  313. package/src/i18n/messagebundle_en.properties +184 -1
  314. package/src/i18n/messagebundle_en_US_saprigi.properties +7 -1
  315. package/src/themes/NavigationMenu.css +5 -7
  316. package/src/themes/NavigationMenuItem.css +21 -6
  317. package/src/themes/Search.css +63 -0
  318. package/src/themes/SearchField.css +11 -10
  319. package/src/themes/SearchItem.css +59 -0
  320. package/src/themes/SearchItemGroup.css +13 -0
  321. package/src/themes/SideNavigation.css +10 -1
  322. package/src/themes/SideNavigationItem.css +5 -7
  323. package/src/themes/SideNavigationItemBase.css +6 -0
  324. package/src/themes/SideNavigationPopover.css +0 -4
  325. package/src/themes/SideNavigationSubItem.css +4 -1
  326. package/src/themes/UserMenu.css +97 -48
  327. package/src/themes/UserMenuItem.css +1 -0
  328. package/src/themes/base/SideNavigation-parameters.css +4 -13
  329. package/src/themes/sap_horizon/SideNavigation-parameters.css +5 -13
  330. package/src/themes/sap_horizon_dark/SideNavigation-parameters.css +5 -13
  331. package/src/themes/sap_horizon_hcb/SideNavigation-parameters.css +5 -12
  332. package/src/themes/sap_horizon_hcw/SideNavigation-parameters.css +5 -12
@@ -240,6 +240,9 @@ let DynamicPage = DynamicPage_1 = class DynamicPage extends UI5Element {
240
240
  if (this.headerPinned) {
241
241
  this.showHeaderInStickArea = true;
242
242
  }
243
+ else if (this.scrollContainer.scrollTop === 0) {
244
+ this.showHeaderInStickArea = false;
245
+ }
243
246
  this.fireDecoratorEvent("pin-button-toggle");
244
247
  await renderFinished();
245
248
  this.headerActions?.focusPinButton();
@@ -257,6 +260,15 @@ let DynamicPage = DynamicPage_1 = class DynamicPage extends UI5Element {
257
260
  async _toggleHeader() {
258
261
  const headerHeight = this.dynamicPageHeader?.getBoundingClientRect().height || 0;
259
262
  const currentScrollTop = this.scrollContainer.scrollTop;
263
+ if (!this._headerSnapped && this.headerPinned) {
264
+ this.headerPinned = false;
265
+ this.fireDecoratorEvent("pin-button-toggle");
266
+ }
267
+ if (currentScrollTop <= SCROLL_THRESHOLD) {
268
+ this._headerSnapped = !this._headerSnapped;
269
+ this.showHeaderInStickArea = this._headerSnapped;
270
+ return;
271
+ }
260
272
  if (currentScrollTop > SCROLL_THRESHOLD && currentScrollTop < headerHeight) {
261
273
  if (!this._headerSnapped) {
262
274
  this._headerSnapped = true;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicPage.js","sourceRoot":"","sources":["../src/DynamicPage.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\n\nimport debounce from \"@ui5/webcomponents-base/dist/util/debounce.js\";\n\n// Template\nimport DynamicPageTemplate from \"./DynamicPageTemplate.js\";\n\n// Styles\nimport DynamicPageCss from \"./generated/themes/DynamicPage.css.js\";\n\nimport DynamicPageHeader from \"./DynamicPageHeader.js\";\nimport DynamicPageTitle from \"./DynamicPageTitle.js\";\nimport type DynamicPageHeaderActions from \"./DynamicPageHeaderActions.js\";\n\n// Texts\nimport {\n\tDYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER,\n\tDYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nconst SCROLL_DEBOUNCE_RATE = 5; // ms\nconst SCROLL_THRESHOLD = 10; // px\n/**\n * @class\n *\n * ### Overview\n *\n * A layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.\n *\n * The component consist of several components:\n *\n * - `DynamicPageTitle` - a component, holding the title of the page, the navigation actions and the content. The displayed content changes based on the current mode of the `DynamicPageHeader`.\n * - `DynamicPageHeader` - a generic container, which can contain a single layout component and any other HTML elements. The header works in two modes - expanded and snapped and its behavior can be adjusted with the help of different properties.\n * - `Content area` - a generic container, which can have a single UI5 layout.\n * - `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.\n *\n * ### Usage\n *\n * Use the `DynamicPage` if you need to have a title, that is always visible\n * and a header, that has configurable Expanding/Snapping functionality.\n * If you don't need the Expanding/Snapping functionality it is better to use the\n * `ui5-page` as a lighter component.\n *\n * The app can add to the `default` slot of the ui5-dynamic-page either content that is designed to fit its container (e.g. has 100% height),\n * or content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user\n * scroll through the content.\n *\n * ## Notes:\n *\n * - Snapping of the `DynamicPageTitle` is not supported in the following case:\n * - When the `DynamicPage` has a scroll bar, the component usually scrolls to the snapping point - the point, where the `DynamicPageHeader` is scrolled out completely. However, when there is a scroll bar, but not enough content to reach the snapping point, the snapping is not possible using scrolling.\n *\n * ### Responsive Behavior\n *\n * Dynamic page web component implements the responsive paddings design.\n *\n * ### Keyboard Handling\n *\n *\n * ### Basic Navigation\n *\n * - [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.\n * If focus is on the snap header button (arrow button), or on the header itself, once activated, it triggers the associated action (such as snap/expand the header).\n * If focus is on pin button (the button with pin icon on the bottom of the header), once activated, it triggers the associated action (pinning of the header).\n *\n * ### Fast Navigation\n * - This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\n * In order to use this functionality, you need to import the following module:\n *\n * - `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/DynamicPage.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.0.0\n * @public\n * @csspart content - Used to style the content of the component\n * @csspart fit-content - Used to style the fit content container of the component.\n * @csspart footer - Used to style the footer of the component\n */\n@customElement({\n\ttag: \"ui5-dynamic-page\",\n\trenderer: jsxRenderer,\n\tstyles: DynamicPageCss,\n\ttemplate: DynamicPageTemplate,\n})\n\n/**\n * Fired when the pin header button is toggled.\n *\n * @public\n */\n@event(\"pin-button-toggle\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the expand/collapse area of the title is toggled.\n *\n * @public\n */\n@event(\"title-toggle\", {\n\tbubbles: true,\n})\n\nclass DynamicPage extends UI5Element {\n\teventDetails!: {\n\t\t\"pin-button-toggle\": void;\n\t\t\"title-toggle\": void;\n\t}\n\t/**\n\t * Defines if the pin button is hidden.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thidePinButton = false;\n\n\t/**\n\t * Defines if the header is pinned.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\theaderPinned = false;\n\n\t/**\n\t * Defines if the footer is shown.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowFooter = false;\n\n\t/**\n\t * Defines the content of the Dynamic Page.\n\t *\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement })\n\tcontent!: HTMLElement[];\n\n\t/**\n\t * Defines the title HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageTitle })\n\ttitleArea!: Array<DynamicPageTitle>;\n\n\t/**\n\t * Defines the header HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageHeader })\n\theaderArea!: Array<DynamicPageHeader>;\n\n\t/**\n\t * Defines the footer HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement })\n\tfooterArea!: HTMLElement[];\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tskipSnapOnScroll = false;\n\tshowHeaderInStickArea = false;\n\tisToggled = false;\n\n\t@property({ type: Boolean })\n\t_headerSnapped = false;\n\n\t@query(\".ui5-dynamic-page-scroll-container\")\n\tscrollContainer?: HTMLElement;\n\n\t@query(\"[ui5-dynamic-page-header-actions]\")\n\theaderActions?: DynamicPageHeaderActions;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this.dynamicPageTitle) {\n\t\t\tthis.dynamicPageTitle.snapped = this._headerSnapped;\n\t\t\tthis.dynamicPageTitle.interactive = this.hasHeading;\n\t\t\tthis.dynamicPageTitle.hasSnappedTitleOnMobile = !!this.hasSnappedTitleOnMobile;\n\t\t\tthis.dynamicPageTitle.removeAttribute(\"hovered\");\n\t\t}\n\t}\n\n\tget dynamicPageTitle(): DynamicPageTitle | null {\n\t\treturn this.querySelector<DynamicPageTitle>(\"[ui5-dynamic-page-title]\");\n\t}\n\n\tget dynamicPageHeader(): DynamicPageHeader | null {\n\t\treturn this.querySelector<DynamicPageHeader>(\"[ui5-dynamic-page-header]\");\n\t}\n\n\tget actionsInTitle(): boolean {\n\t\treturn this._headerSnapped || this.showHeaderInStickArea || this.headerPinned;\n\t}\n\n\tget headerInTitle(): boolean {\n\t\treturn !this._headerSnapped && (this.showHeaderInStickArea || this.headerPinned);\n\t}\n\n\tget headerInContent(): boolean {\n\t\treturn !this.showHeaderInStickArea && !this.headerInTitle && !this.hasSnappedTitleOnMobile;\n\t}\n\n\tget _headerLabel() {\n\t\treturn this._headerSnapped\n\t\t\t? DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER)\n\t\t\t: DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER);\n\t}\n\n\tget _headerExpanded() {\n\t\treturn !this._headerSnapped;\n\t}\n\n\tget _accAttributesForHeaderActions() {\n\t\treturn {\n\t\t\tcontrols: `${this._id}-header` as Lowercase<string>,\n\t\t};\n\t}\n\n\tget headerTabIndex() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea) ? -1 : 0;\n\t}\n\n\tget headerAriaHidden() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea);\n\t}\n\n\tget hasHeading() {\n\t\treturn this.headerArea.length > 0;\n\t}\n\n\tget headerSnapped(): boolean {\n\t\treturn this._headerSnapped;\n\t}\n\n\tget hasSnappedTitleOnMobile() {\n\t\treturn isPhone() && this.headerSnapped && this.dynamicPageTitle?.snappedTitleOnMobile.length;\n\t}\n\n\t/**\n\t * Defines if the header is snapped.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tset headerSnapped(snapped: boolean) {\n\t\tif (snapped !== this._headerSnapped) {\n\t\t\tthis._toggleHeader();\n\t\t}\n\t}\n\n\tsnapOnScroll() {\n\t\tdebounce(() => this.snapTitleByScroll(), SCROLL_DEBOUNCE_RATE);\n\t}\n\n\tsnapTitleByScroll() {\n\t\tif (!this.dynamicPageTitle || !this.dynamicPageHeader || this.headerPinned) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isToggled) {\n\t\t\tthis.isToggled = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.skipSnapOnScroll) {\n\t\t\tthis.skipSnapOnScroll = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollTop = this.scrollContainer!.scrollTop;\n\t\tconst headerHeight = this.dynamicPageHeader.getBoundingClientRect().height;\n\t\tconst lastHeaderSnapped = this._headerSnapped;\n\n\t\tif (this._headerSnapped && scrollTop > headerHeight) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t}\n\n\t\tconst shouldSnap = !this._headerSnapped && scrollTop > headerHeight + SCROLL_THRESHOLD;\n\t\tconst shouldExpand = this._headerSnapped && (scrollTop < headerHeight - SCROLL_THRESHOLD\n\t\t\t|| (!scrollTop && !headerHeight));\n\n\t\tif (shouldSnap) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t\tthis._headerSnapped = true;\n\n\t\t\t//* snappedTitleOnMobile\n\t\t\t// If the header is snapped and the scroll is at the top, scroll down a bit\n\t\t\t// to avoid ending in an endless loop of snapping and unsnapping\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.scrollContainer!.scrollTop === 0) {\n\t\t\t\t\tthis.scrollContainer!.scrollTop = SCROLL_THRESHOLD;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (shouldExpand) {\n\t\t\tthis._headerSnapped = false;\n\t\t}\n\n\t\t// Fire event if snapped state changed\n\t\tif (lastHeaderSnapped !== this._headerSnapped) {\n\t\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\t}\n\t}\n\n\tasync onExpandClick() {\n\t\tthis.isToggled = true;\n\t\tthis._toggleHeader();\n\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.headerActions?.focusExpandButton();\n\n\t\tif (this.hasSnappedTitleOnMobile) {\n\t\t\tthis.dynamicPageTitle?.focus();\n\t\t}\n\n\t\tannounce(this._headerLabel, InvisibleMessageMode.Polite);\n\t}\n\n\tasync onPinClick() {\n\t\tthis.headerPinned = !this.headerPinned;\n\t\tif (this.headerPinned) {\n\t\t\tthis.showHeaderInStickArea = true;\n\t\t}\n\t\tthis.fireDecoratorEvent(\"pin-button-toggle\");\n\t\tawait renderFinished();\n\t\tthis.headerActions?.focusPinButton();\n\t}\n\n\tasync onToggleTitle() {\n\t\tif (!this.hasHeading) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isToggled = true;\n\t\tthis._toggleHeader();\n\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.dynamicPageTitle!.focus();\n\t}\n\n\tasync _toggleHeader() {\n\t\tconst headerHeight = this.dynamicPageHeader?.getBoundingClientRect().height || 0;\n\t\tconst currentScrollTop = this.scrollContainer!.scrollTop;\n\n\t\tif (currentScrollTop > SCROLL_THRESHOLD && currentScrollTop < headerHeight) {\n\t\t\tif (!this._headerSnapped) {\n\t\t\t\tthis._headerSnapped = true;\n\t\t\t\tthis.showHeaderInStickArea = true;\n\t\t\t\tthis.scrollContainer!.scrollTop = 0;\n\t\t\t} else {\n\t\t\t\tthis.showHeaderInStickArea = false;\n\t\t\t\tthis._headerSnapped = false;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.scrollContainer!.scrollTop === SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = 0;\n\t\t}\n\n\t\tthis.showHeaderInStickArea = !this.showHeaderInStickArea;\n\t\tthis._headerSnapped = !this._headerSnapped;\n\n\t\tthis.skipSnapOnScroll = true;\n\n\t\tawait renderFinished();\n\t\tif (this._headerSnapped && this.scrollContainer!.scrollTop < SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = SCROLL_THRESHOLD;\n\t\t}\n\t}\n\n\tasync onExpandHoverIn() {\n\t\tthis.dynamicPageTitle?.setAttribute(\"hovered\", \"\");\n\t\tawait renderFinished();\n\t}\n\n\tasync onExpandHoverOut() {\n\t\tthis.dynamicPageTitle?.removeAttribute(\"hovered\");\n\t\tawait renderFinished();\n\t}\n}\n\nDynamicPage.define();\n\nexport default DynamicPage;\n"]}
1
+ {"version":3,"file":"DynamicPage.js","sourceRoot":"","sources":["../src/DynamicPage.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\n\nimport debounce from \"@ui5/webcomponents-base/dist/util/debounce.js\";\n\n// Template\nimport DynamicPageTemplate from \"./DynamicPageTemplate.js\";\n\n// Styles\nimport DynamicPageCss from \"./generated/themes/DynamicPage.css.js\";\n\nimport DynamicPageHeader from \"./DynamicPageHeader.js\";\nimport DynamicPageTitle from \"./DynamicPageTitle.js\";\nimport type DynamicPageHeaderActions from \"./DynamicPageHeaderActions.js\";\n\n// Texts\nimport {\n\tDYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER,\n\tDYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nconst SCROLL_DEBOUNCE_RATE = 5; // ms\nconst SCROLL_THRESHOLD = 10; // px\n/**\n * @class\n *\n * ### Overview\n *\n * A layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.\n *\n * The component consist of several components:\n *\n * - `DynamicPageTitle` - a component, holding the title of the page, the navigation actions and the content. The displayed content changes based on the current mode of the `DynamicPageHeader`.\n * - `DynamicPageHeader` - a generic container, which can contain a single layout component and any other HTML elements. The header works in two modes - expanded and snapped and its behavior can be adjusted with the help of different properties.\n * - `Content area` - a generic container, which can have a single UI5 layout.\n * - `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.\n *\n * ### Usage\n *\n * Use the `DynamicPage` if you need to have a title, that is always visible\n * and a header, that has configurable Expanding/Snapping functionality.\n * If you don't need the Expanding/Snapping functionality it is better to use the\n * `ui5-page` as a lighter component.\n *\n * The app can add to the `default` slot of the ui5-dynamic-page either content that is designed to fit its container (e.g. has 100% height),\n * or content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user\n * scroll through the content.\n *\n * ## Notes:\n *\n * - Snapping of the `DynamicPageTitle` is not supported in the following case:\n * - When the `DynamicPage` has a scroll bar, the component usually scrolls to the snapping point - the point, where the `DynamicPageHeader` is scrolled out completely. However, when there is a scroll bar, but not enough content to reach the snapping point, the snapping is not possible using scrolling.\n *\n * ### Responsive Behavior\n *\n * Dynamic page web component implements the responsive paddings design.\n *\n * ### Keyboard Handling\n *\n *\n * ### Basic Navigation\n *\n * - [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.\n * If focus is on the snap header button (arrow button), or on the header itself, once activated, it triggers the associated action (such as snap/expand the header).\n * If focus is on pin button (the button with pin icon on the bottom of the header), once activated, it triggers the associated action (pinning of the header).\n *\n * ### Fast Navigation\n * - This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\n * In order to use this functionality, you need to import the following module:\n *\n * - `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/DynamicPage.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.0.0\n * @public\n * @csspart content - Used to style the content of the component\n * @csspart fit-content - Used to style the fit content container of the component.\n * @csspart footer - Used to style the footer of the component\n */\n@customElement({\n\ttag: \"ui5-dynamic-page\",\n\trenderer: jsxRenderer,\n\tstyles: DynamicPageCss,\n\ttemplate: DynamicPageTemplate,\n})\n\n/**\n * Fired when the pin header button is toggled.\n *\n * @public\n */\n@event(\"pin-button-toggle\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the expand/collapse area of the title is toggled.\n *\n * @public\n */\n@event(\"title-toggle\", {\n\tbubbles: true,\n})\n\nclass DynamicPage extends UI5Element {\n\teventDetails!: {\n\t\t\"pin-button-toggle\": void;\n\t\t\"title-toggle\": void;\n\t}\n\t/**\n\t * Defines if the pin button is hidden.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thidePinButton = false;\n\n\t/**\n\t * Defines if the header is pinned.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\theaderPinned = false;\n\n\t/**\n\t * Defines if the footer is shown.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowFooter = false;\n\n\t/**\n\t * Defines the content of the Dynamic Page.\n\t *\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement })\n\tcontent!: HTMLElement[];\n\n\t/**\n\t * Defines the title HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageTitle })\n\ttitleArea!: Array<DynamicPageTitle>;\n\n\t/**\n\t * Defines the header HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageHeader })\n\theaderArea!: Array<DynamicPageHeader>;\n\n\t/**\n\t * Defines the footer HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement })\n\tfooterArea!: HTMLElement[];\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tskipSnapOnScroll = false;\n\tshowHeaderInStickArea = false;\n\tisToggled = false;\n\n\t@property({ type: Boolean })\n\t_headerSnapped = false;\n\n\t@query(\".ui5-dynamic-page-scroll-container\")\n\tscrollContainer?: HTMLElement;\n\n\t@query(\"[ui5-dynamic-page-header-actions]\")\n\theaderActions?: DynamicPageHeaderActions;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this.dynamicPageTitle) {\n\t\t\tthis.dynamicPageTitle.snapped = this._headerSnapped;\n\t\t\tthis.dynamicPageTitle.interactive = this.hasHeading;\n\t\t\tthis.dynamicPageTitle.hasSnappedTitleOnMobile = !!this.hasSnappedTitleOnMobile;\n\t\t\tthis.dynamicPageTitle.removeAttribute(\"hovered\");\n\t\t}\n\t}\n\n\tget dynamicPageTitle(): DynamicPageTitle | null {\n\t\treturn this.querySelector<DynamicPageTitle>(\"[ui5-dynamic-page-title]\");\n\t}\n\n\tget dynamicPageHeader(): DynamicPageHeader | null {\n\t\treturn this.querySelector<DynamicPageHeader>(\"[ui5-dynamic-page-header]\");\n\t}\n\n\tget actionsInTitle(): boolean {\n\t\treturn this._headerSnapped || this.showHeaderInStickArea || this.headerPinned;\n\t}\n\n\tget headerInTitle(): boolean {\n\t\treturn !this._headerSnapped && (this.showHeaderInStickArea || this.headerPinned);\n\t}\n\n\tget headerInContent(): boolean {\n\t\treturn !this.showHeaderInStickArea && !this.headerInTitle && !this.hasSnappedTitleOnMobile;\n\t}\n\n\tget _headerLabel() {\n\t\treturn this._headerSnapped\n\t\t\t? DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER)\n\t\t\t: DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER);\n\t}\n\n\tget _headerExpanded() {\n\t\treturn !this._headerSnapped;\n\t}\n\n\tget _accAttributesForHeaderActions() {\n\t\treturn {\n\t\t\tcontrols: `${this._id}-header` as Lowercase<string>,\n\t\t};\n\t}\n\n\tget headerTabIndex() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea) ? -1 : 0;\n\t}\n\n\tget headerAriaHidden() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea);\n\t}\n\n\tget hasHeading() {\n\t\treturn this.headerArea.length > 0;\n\t}\n\n\tget headerSnapped(): boolean {\n\t\treturn this._headerSnapped;\n\t}\n\n\tget hasSnappedTitleOnMobile() {\n\t\treturn isPhone() && this.headerSnapped && this.dynamicPageTitle?.snappedTitleOnMobile.length;\n\t}\n\n\t/**\n\t * Defines if the header is snapped.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tset headerSnapped(snapped: boolean) {\n\t\tif (snapped !== this._headerSnapped) {\n\t\t\tthis._toggleHeader();\n\t\t}\n\t}\n\n\tsnapOnScroll() {\n\t\tdebounce(() => this.snapTitleByScroll(), SCROLL_DEBOUNCE_RATE);\n\t}\n\n\tsnapTitleByScroll() {\n\t\tif (!this.dynamicPageTitle || !this.dynamicPageHeader || this.headerPinned) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isToggled) {\n\t\t\tthis.isToggled = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.skipSnapOnScroll) {\n\t\t\tthis.skipSnapOnScroll = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollTop = this.scrollContainer!.scrollTop;\n\t\tconst headerHeight = this.dynamicPageHeader.getBoundingClientRect().height;\n\t\tconst lastHeaderSnapped = this._headerSnapped;\n\n\t\tif (this._headerSnapped && scrollTop > headerHeight) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t}\n\n\t\tconst shouldSnap = !this._headerSnapped && scrollTop > headerHeight + SCROLL_THRESHOLD;\n\t\tconst shouldExpand = this._headerSnapped && (scrollTop < headerHeight - SCROLL_THRESHOLD\n\t\t\t|| (!scrollTop && !headerHeight));\n\n\t\tif (shouldSnap) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t\tthis._headerSnapped = true;\n\n\t\t\t//* snappedTitleOnMobile\n\t\t\t// If the header is snapped and the scroll is at the top, scroll down a bit\n\t\t\t// to avoid ending in an endless loop of snapping and unsnapping\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.scrollContainer!.scrollTop === 0) {\n\t\t\t\t\tthis.scrollContainer!.scrollTop = SCROLL_THRESHOLD;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (shouldExpand) {\n\t\t\tthis._headerSnapped = false;\n\t\t}\n\n\t\t// Fire event if snapped state changed\n\t\tif (lastHeaderSnapped !== this._headerSnapped) {\n\t\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\t}\n\t}\n\n\tasync onExpandClick() {\n\t\tthis.isToggled = true;\n\t\tthis._toggleHeader();\n\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.headerActions?.focusExpandButton();\n\n\t\tif (this.hasSnappedTitleOnMobile) {\n\t\t\tthis.dynamicPageTitle?.focus();\n\t\t}\n\n\t\tannounce(this._headerLabel, InvisibleMessageMode.Polite);\n\t}\n\n\tasync onPinClick() {\n\t\tthis.headerPinned = !this.headerPinned;\n\t\tif (this.headerPinned) {\n\t\t\tthis.showHeaderInStickArea = true;\n\t\t} else if (this.scrollContainer!.scrollTop === 0) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t}\n\t\tthis.fireDecoratorEvent(\"pin-button-toggle\");\n\t\tawait renderFinished();\n\t\tthis.headerActions?.focusPinButton();\n\t}\n\n\tasync onToggleTitle() {\n\t\tif (!this.hasHeading) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isToggled = true;\n\t\tthis._toggleHeader();\n\t\tthis.fireDecoratorEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.dynamicPageTitle!.focus();\n\t}\n\n\tasync _toggleHeader() {\n\t\tconst headerHeight = this.dynamicPageHeader?.getBoundingClientRect().height || 0;\n\t\tconst currentScrollTop = this.scrollContainer!.scrollTop;\n\n\t\tif (!this._headerSnapped && this.headerPinned) {\n\t\t\tthis.headerPinned = false;\n\t\t\tthis.fireDecoratorEvent(\"pin-button-toggle\");\n\t\t}\n\n\t\tif (currentScrollTop <= SCROLL_THRESHOLD) {\n\t\t\tthis._headerSnapped = !this._headerSnapped;\n\t\t\tthis.showHeaderInStickArea = this._headerSnapped;\n\t\t\treturn;\n\t\t}\n\n\t\tif (currentScrollTop > SCROLL_THRESHOLD && currentScrollTop < headerHeight) {\n\t\t\tif (!this._headerSnapped) {\n\t\t\t\tthis._headerSnapped = true;\n\t\t\t\tthis.showHeaderInStickArea = true;\n\t\t\t\tthis.scrollContainer!.scrollTop = 0;\n\t\t\t} else {\n\t\t\t\tthis.showHeaderInStickArea = false;\n\t\t\t\tthis._headerSnapped = false;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.scrollContainer!.scrollTop === SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = 0;\n\t\t}\n\n\t\tthis.showHeaderInStickArea = !this.showHeaderInStickArea;\n\t\tthis._headerSnapped = !this._headerSnapped;\n\n\t\tthis.skipSnapOnScroll = true;\n\n\t\tawait renderFinished();\n\t\tif (this._headerSnapped && this.scrollContainer!.scrollTop < SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = SCROLL_THRESHOLD;\n\t\t}\n\t}\n\n\tasync onExpandHoverIn() {\n\t\tthis.dynamicPageTitle?.setAttribute(\"hovered\", \"\");\n\t\tawait renderFinished();\n\t}\n\n\tasync onExpandHoverOut() {\n\t\tthis.dynamicPageTitle?.removeAttribute(\"hovered\");\n\t\tawait renderFinished();\n\t}\n}\n\nDynamicPage.define();\n\nexport default DynamicPage;\n"]}
@@ -73,6 +73,6 @@ declare class NavigationMenuItem extends MenuItem {
73
73
  tooltip?: string;
74
74
  };
75
75
  get classes(): ClassMap;
76
- get accSideNavigationPopoverHiddenText(): string;
76
+ get acessibleNameText(): string;
77
77
  }
78
78
  export default NavigationMenuItem;
@@ -60,7 +60,7 @@ let NavigationMenuItem = class NavigationMenuItem extends MenuItem {
60
60
  result.main["ui5-navigation-menu-item-root"] = true;
61
61
  return result;
62
62
  }
63
- get accSideNavigationPopoverHiddenText() {
63
+ get acessibleNameText() {
64
64
  return NavigationMenu.i18nBundle.getText(NAVIGATION_MENU_POPOVER_HIDDEN_TEXT);
65
65
  }
66
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuItem.js","sourceRoot":"","sources":["../src/NavigationMenuItem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAE3D,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,YAAY;AACZ,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,SAAS;AACT,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EACN,mCAAmC,GACnC,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,QAAQ;IAAzC;;QAiCC,WAAM,GAAkC,SAAS,CAAC;IAiCnD,CAAC;IA/BA,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAED,IAAI,QAAQ;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;QAE/B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QAC9D,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC;QAEpD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,kCAAkC;QACrC,OAAO,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAC/E,CAAC;CACD,CAAA;AAvDA;IADC,QAAQ,EAAE;gDACG;AAmBd;IADC,QAAQ,EAAE;kDACK;AAGhB;IADC,QAAQ,EAAE;kDACuC;AAjC7C,kBAAkB;IANvB,aAAa,CAAC;QACd,QAAQ,EAAE,WAAW;QACrB,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;KAChD,CAAC;GACI,kBAAkB,CAkEvB;AAED,kBAAkB,CAAC,MAAM,EAAE,CAAC;AAE5B,eAAe,kBAAkB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport MenuItem from \"@ui5/webcomponents/dist/MenuItem.js\";\nimport type SideNavigationItemDesign from \"./types/SideNavigationItemDesign.js\";\nimport NavigationMenu from \"./NavigationMenu.js\";\n\n// Templates\nimport NavigationMenuItemTemplate from \"./NavigationMenuItemTemplate.js\";\n\n// Styles\nimport navigationMenuItemCss from \"./generated/themes/NavigationMenuItem.css.js\";\n\nimport {\n\tNAVIGATION_MENU_POPOVER_HIDDEN_TEXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-navigation-menu-item` is the item to use inside a `ui5-navigation-menu`.\n * An arbitrary hierarchy structure can be represented by recursively nesting navigation menu items.\n *\n * ### Usage\n *\n * `ui5-navigation-menu-item` represents a node in a `ui5-navigation-menu`. The navigation menu itself is rendered as a list,\n * and each `ui5-navigation-menu-item` is represented by a list item in that list. Therefore, you should only use\n * `ui5-navigation-menu-item` directly in your apps. The `ui5-li` list item is internal for the list, and not intended for public use.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/NavigationMenuItem.js\";`\n * @constructor\n * @extends MenuItem\n * @since 1.22.0\n * @private\n */\n@customElement({\n\trenderer: jsxRenderer,\n\ttag: \"ui5-navigation-menu-item\",\n\ttemplate: NavigationMenuItemTemplate,\n\tstyles: [MenuItem.styles, navigationMenuItemCss],\n})\nclass NavigationMenuItem extends MenuItem {\n\t/**\n\t * Defines the link target URI. Supports standard hyperlink behavior.\n\t * If a JavaScript action should be triggered,\n\t * this should not be set, but instead an event handler\n\t * for the `click` event should be registered.\n\t * @public\n\t * @default undefined\n\t * @since 1.22.0\n\t */\n\t@property()\n\thref?: string;\n\n\t/**\n\t * Defines the component target.\n\t *\n\t * **Notes:**\n\t *\n\t * - `_self`\n\t * - `_top`\n\t * - `_blank`\n\t * - `_parent`\n\t * - `_search`\n\t *\n\t * **This property must only be used when the `href` property is set.**\n\t * @public\n\t * @default undefined\n\t * @since 1.22.0\n\t */\n\t@property()\n\ttarget?: string;\n\n\t@property()\n\tdesign: `${SideNavigationItemDesign}` = \"Default\";\n\n\tget isExternalLink() {\n\t\treturn this.href && this.target === \"_blank\";\n\t}\n\n\tget _href() {\n\t\treturn (!this.disabled && this.href) ? this.href : undefined;\n\t}\n\n\tget _accInfo() {\n\t\tconst accInfo = super._accInfo;\n\n\t\taccInfo.role = this.href ? \"none\" : \"treeitem\";\n\n\t\tif (!accInfo.ariaHaspopup) {\n\t\t\taccInfo.ariaHaspopup = this.accessibilityAttributes.hasPopup;\n\t\t}\n\n\t\treturn accInfo;\n\t}\n\n\tget classes(): ClassMap {\n\t\tconst result = super.classes;\n\n\t\tresult.main[\"ui5-navigation-menu-item-root\"] = true;\n\n\t\treturn result;\n\t}\n\n\tget accSideNavigationPopoverHiddenText() {\n\t\treturn NavigationMenu.i18nBundle.getText(NAVIGATION_MENU_POPOVER_HIDDEN_TEXT);\n\t}\n}\n\nNavigationMenuItem.define();\n\nexport default NavigationMenuItem;\n"]}
1
+ {"version":3,"file":"NavigationMenuItem.js","sourceRoot":"","sources":["../src/NavigationMenuItem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAE3D,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,YAAY;AACZ,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,SAAS;AACT,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EACN,mCAAmC,GACnC,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,QAAQ;IAAzC;;QAiCC,WAAM,GAAkC,SAAS,CAAC;IAiCnD,CAAC;IA/BA,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAED,IAAI,QAAQ;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;QAE/B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QAC9D,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC;QAEpD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAC/E,CAAC;CACD,CAAA;AAvDA;IADC,QAAQ,EAAE;gDACG;AAmBd;IADC,QAAQ,EAAE;kDACK;AAGhB;IADC,QAAQ,EAAE;kDACuC;AAjC7C,kBAAkB;IANvB,aAAa,CAAC;QACd,QAAQ,EAAE,WAAW;QACrB,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;KAChD,CAAC;GACI,kBAAkB,CAkEvB;AAED,kBAAkB,CAAC,MAAM,EAAE,CAAC;AAE5B,eAAe,kBAAkB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport MenuItem from \"@ui5/webcomponents/dist/MenuItem.js\";\nimport type SideNavigationItemDesign from \"./types/SideNavigationItemDesign.js\";\nimport NavigationMenu from \"./NavigationMenu.js\";\n\n// Templates\nimport NavigationMenuItemTemplate from \"./NavigationMenuItemTemplate.js\";\n\n// Styles\nimport navigationMenuItemCss from \"./generated/themes/NavigationMenuItem.css.js\";\n\nimport {\n\tNAVIGATION_MENU_POPOVER_HIDDEN_TEXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-navigation-menu-item` is the item to use inside a `ui5-navigation-menu`.\n * An arbitrary hierarchy structure can be represented by recursively nesting navigation menu items.\n *\n * ### Usage\n *\n * `ui5-navigation-menu-item` represents a node in a `ui5-navigation-menu`. The navigation menu itself is rendered as a list,\n * and each `ui5-navigation-menu-item` is represented by a list item in that list. Therefore, you should only use\n * `ui5-navigation-menu-item` directly in your apps. The `ui5-li` list item is internal for the list, and not intended for public use.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/NavigationMenuItem.js\";`\n * @constructor\n * @extends MenuItem\n * @since 1.22.0\n * @private\n */\n@customElement({\n\trenderer: jsxRenderer,\n\ttag: \"ui5-navigation-menu-item\",\n\ttemplate: NavigationMenuItemTemplate,\n\tstyles: [MenuItem.styles, navigationMenuItemCss],\n})\nclass NavigationMenuItem extends MenuItem {\n\t/**\n\t * Defines the link target URI. Supports standard hyperlink behavior.\n\t * If a JavaScript action should be triggered,\n\t * this should not be set, but instead an event handler\n\t * for the `click` event should be registered.\n\t * @public\n\t * @default undefined\n\t * @since 1.22.0\n\t */\n\t@property()\n\thref?: string;\n\n\t/**\n\t * Defines the component target.\n\t *\n\t * **Notes:**\n\t *\n\t * - `_self`\n\t * - `_top`\n\t * - `_blank`\n\t * - `_parent`\n\t * - `_search`\n\t *\n\t * **This property must only be used when the `href` property is set.**\n\t * @public\n\t * @default undefined\n\t * @since 1.22.0\n\t */\n\t@property()\n\ttarget?: string;\n\n\t@property()\n\tdesign: `${SideNavigationItemDesign}` = \"Default\";\n\n\tget isExternalLink() {\n\t\treturn this.href && this.target === \"_blank\";\n\t}\n\n\tget _href() {\n\t\treturn (!this.disabled && this.href) ? this.href : undefined;\n\t}\n\n\tget _accInfo() {\n\t\tconst accInfo = super._accInfo;\n\n\t\taccInfo.role = this.href ? \"none\" : \"treeitem\";\n\n\t\tif (!accInfo.ariaHaspopup) {\n\t\t\taccInfo.ariaHaspopup = this.accessibilityAttributes.hasPopup;\n\t\t}\n\n\t\treturn accInfo;\n\t}\n\n\tget classes(): ClassMap {\n\t\tconst result = super.classes;\n\n\t\tresult.main[\"ui5-navigation-menu-item-root\"] = true;\n\n\t\treturn result;\n\t}\n\n\tget acessibleNameText() {\n\t\treturn NavigationMenu.i18nBundle.getText(NAVIGATION_MENU_POPOVER_HIDDEN_TEXT);\n\t}\n}\n\nNavigationMenuItem.define();\n\nexport default NavigationMenuItem;\n"]}
@@ -1,3 +1,3 @@
1
1
  import type NavigationMenuItem from "./NavigationMenuItem.js";
2
- import type { MenuItemHooks } from "@ui5/webcomponents/dist/MenuItemTemplate.js";
3
- export default function NavigationMenuItemTemplate(this: NavigationMenuItem, hooks?: Partial<MenuItemHooks>): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
2
+ import type { ListItemHooks } from "@ui5/webcomponents/dist/ListItemTemplate.js";
3
+ export default function NavigationMenuItemTemplate(this: NavigationMenuItem, hooks?: Partial<ListItemHooks>): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
@@ -1,23 +1,16 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  import MenuItemTemplate from "@ui5/webcomponents/dist/MenuItemTemplate.js";
3
3
  import Icon from "@ui5/webcomponents/dist/Icon.js";
4
4
  import slimArrowRightIcon from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
5
5
  import arrowRightIcon from "@ui5/webcomponents-icons/dist/arrow-right.js";
6
- import declineIcon from "@ui5/webcomponents-icons/dist/decline.js";
7
- import navBackIcon from "@ui5/webcomponents-icons/dist/nav-back.js";
8
- import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
9
- import Button from "@ui5/webcomponents/dist/Button.js";
10
- import List from "@ui5/webcomponents/dist/List.js";
11
- import BusyIndicator from "@ui5/webcomponents/dist/BusyIndicator.js";
12
6
  const predefinedHooks = {
13
7
  listItemContent,
14
8
  iconBegin,
15
9
  iconEnd,
16
- listItemPostContent: () => { },
17
10
  };
18
11
  export default function NavigationMenuItemTemplate(hooks) {
19
12
  const currentHooks = { ...predefinedHooks, ...hooks, };
20
- return _jsxs(_Fragment, { children: [this._href ? (_jsx("a", { role: "treeitem", class: "ui5-navmenu-item-link", href: this.href, target: this.target, children: MenuItemTemplate.call(this, currentHooks) })) : MenuItemTemplate.call(this, currentHooks), listItemPostContent.call(this)] });
13
+ return _jsx(_Fragment, { children: this._href ? (_jsx("a", { role: "treeitem", class: "ui5-navmenu-item-link", href: this.href, target: this.target, children: MenuItemTemplate.call(this, currentHooks) })) : MenuItemTemplate.call(this, currentHooks) });
21
14
  }
22
15
  function listItemContent() {
23
16
  return _jsx(_Fragment, { children: this.text });
@@ -38,7 +31,4 @@ function iconEnd() {
38
31
  return _jsx(Icon, { class: "ui5-sn-item-external-link-icon", name: arrowRightIcon });
39
32
  }
40
33
  }
41
- function listItemPostContent() {
42
- return this.hasSubmenu && _jsxs(ResponsivePopover, { id: `${this._id}-navigation-menu-rp`, class: "ui5-menu-rp ui5-navigation-menu ui5-menu-rp-sub-menu", verticalAlign: "Center", preventInitialFocus: true, preventFocusRestore: true, accessibleNameRef: `${this._id}-navigationMenuPopoverText`, onBeforeOpen: this._beforePopoverOpen, onOpen: this._afterPopoverOpen, onBeforeClose: this._beforePopoverClose, onClose: this._afterPopoverClose, children: [_jsx("span", { id: `${this._id}-navigationMenuPopoverText`, class: "ui5-hidden-text", children: this.accSideNavigationPopoverHiddenText }), this.isPhone && (_jsxs("div", { slot: "header", class: "ui5-menu-dialog-header", children: [this.isSubMenuOpen && (_jsx(Button, { icon: navBackIcon, class: "ui5-menu-back-button", design: "Transparent", "aria-label": this.labelBack, onClick: this._close })), _jsx("div", { class: "ui5-menu-dialog-title", children: _jsx("div", { children: this.menuHeaderTextPhone }) }), _jsx(Button, { icon: declineIcon, design: "Transparent", "aria-label": this.labelClose, onClick: this._closeAll })] })), _jsx("div", { id: `${this._id}-menu-main`, class: "ui5-navigation-menu-main", children: this.items.length ? (_jsx(List, { accessibleRole: "Tree", id: `${this.id}-menu-list`, selectionMode: "None", loading: this.loading, loadingDelay: this.loadingDelay, separators: "None", "onui5-close-menu": this._close, children: _jsx("slot", {}) })) : (this.loading && (_jsx(BusyIndicator, { id: `${this._id}-menu-busy-indicator`, delay: this.loadingDelay, class: "ui5-menu-busy-indicator", active: true }))) })] });
43
- }
44
34
  //# sourceMappingURL=NavigationMenuItemTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenuItemTemplate.js","sourceRoot":"","sources":["../src/NavigationMenuItemTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,gBAAgB,MAAM,6CAA6C,CAAC;AAE3E,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,kBAAkB,MAAM,mDAAmD,CAAC;AACnF,OAAO,cAAc,MAAM,8CAA8C,CAAC;AAC1E,OAAO,WAAW,MAAM,0CAA0C,CAAC;AACnE,OAAO,WAAW,MAAM,2CAA2C,CAAC;AACpE,OAAO,iBAAiB,MAAM,8CAA8C,CAAC;AAC7E,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,MAAM,eAAe,GAA2B;IAC/C,eAAe;IACf,SAAS;IACT,OAAO;IACP,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAA2B,KAA8B;IAC1G,MAAM,YAAY,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,GAAG,CAAC;IAEvD,OAAO,8BAEL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,YAAG,IAAI,EAAC,UAAU,EACjB,KAAK,EAAC,uBAAuB,EAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,YAElB,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,GACvC,CACJ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAG7C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAC7B,CAAC;AACL,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,4BAAG,IAAI,CAAC,IAAI,GAAI,CAAC;AACzB,CAAC;AAED,SAAS,SAAS;IACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EACvB,KAAK,EAAC,aAAa,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,GACd,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,cAAK,KAAK,EAAC,0BAA0B,GAAO,CAAC;IACrD,CAAC;AACF,CAAC;AAED,SAAS,OAAO;IACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,KAAC,IAAI,IACX,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAC,wBAAwB,GAC7B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,KAAC,IAAI,IACX,KAAK,EAAC,gCAAgC,EACtC,IAAI,EAAE,cAAc,GACnB,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB;IAC3B,OAAO,IAAI,CAAC,UAAU,IAAI,MAAC,iBAAiB,IAC3C,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,qBAAqB,EACpC,KAAK,EAAC,sDAAsD,EAC5D,aAAa,EAAC,QAAQ,EACtB,mBAAmB,QACnB,mBAAmB,QACnB,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAAG,4BAA4B,EAC1D,YAAY,EAAE,IAAI,CAAC,kBAAkB,EACrC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAC9B,aAAa,EAAE,IAAI,CAAC,mBAAmB,EACvC,OAAO,EAAE,IAAI,CAAC,kBAAkB,aAEhC,eAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,4BAA4B,EAAE,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,kCAAkC,GAAQ,EAE1H,IAAI,CAAC,OAAO,IAAI,CAChB,eAAK,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,wBAAwB,aAC/C,IAAI,CAAC,aAAa,IAAI,CACtB,KAAC,MAAM,IACN,IAAI,EAAE,WAAW,EACjB,KAAK,EAAC,sBAAsB,EAC5B,MAAM,EAAC,aAAa,gBACR,IAAI,CAAC,SAAS,EAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,GACnB,CACF,EAED,cAAK,KAAK,EAAC,uBAAuB,YACjC,wBACE,IAAI,CAAC,mBAAmB,GACpB,GACD,EAEN,KAAC,MAAM,IACN,IAAI,EAAE,WAAW,EACjB,MAAM,EAAC,aAAa,gBACR,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE,IAAI,CAAC,SAAS,GACtB,IACG,CACN,EAED,cAAK,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,YAAY,EAAE,KAAK,EAAC,0BAA0B,YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IACJ,cAAc,EAAC,MAAM,EACrB,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,YAAY,EAC1B,aAAa,EAAC,MAAM,EACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,UAAU,EAAC,MAAM,sBAEC,IAAI,CAAC,MAAM,YAE7B,gBAAa,GACP,CACP,CAAC,CAAC,CAAC,CACH,IAAI,CAAC,OAAO,IAAI,CACf,KAAC,aAAa,IACb,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,sBAAsB,EACrC,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,KAAK,EAAC,yBAAyB,EAC/B,MAAM,EAAE,IAAI,GACX,CACF,CACD,GACI,IAEc,CAAC;AACvB,CAAC","sourcesContent":["import type NavigationMenuItem from \"./NavigationMenuItem.js\";\nimport MenuItemTemplate from \"@ui5/webcomponents/dist/MenuItemTemplate.js\";\nimport type { MenuItemHooks } from \"@ui5/webcomponents/dist/MenuItemTemplate.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport slimArrowRightIcon from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport arrowRightIcon from \"@ui5/webcomponents-icons/dist/arrow-right.js\";\nimport declineIcon from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport navBackIcon from \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport ResponsivePopover from \"@ui5/webcomponents/dist/ResponsivePopover.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport List from \"@ui5/webcomponents/dist/List.js\";\nimport BusyIndicator from \"@ui5/webcomponents/dist/BusyIndicator.js\";\n\nconst predefinedHooks: Partial<MenuItemHooks> = {\n\tlistItemContent,\n\ticonBegin,\n\ticonEnd,\n\tlistItemPostContent: () => { },\n};\n\nexport default function NavigationMenuItemTemplate(this: NavigationMenuItem, hooks?: Partial<MenuItemHooks>) {\n\tconst currentHooks = { ...predefinedHooks, ...hooks, };\n\n\treturn <>\n\t\t{\n\t\t\tthis._href ? (\n\t\t\t\t<a role=\"treeitem\"\n\t\t\t\t\tclass=\"ui5-navmenu-item-link\"\n\t\t\t\t\thref={this.href}\n\t\t\t\t\ttarget={this.target}\n\t\t\t\t>\n\t\t\t\t\t{MenuItemTemplate.call(this, currentHooks)}\n\t\t\t\t</a>\n\t\t\t) : MenuItemTemplate.call(this, currentHooks)\n\t\t}\n\n\t\t{listItemPostContent.call(this)}\n\t</>;\n}\n\nfunction listItemContent(this: NavigationMenuItem) {\n\treturn <>{this.text}</>;\n}\n\nfunction iconBegin(this: NavigationMenuItem) {\n\tif (this.hasIcon) {\n\t\treturn <Icon part=\"icon\"\n\t\t\tclass=\"ui5-li-icon\"\n\t\t\tname={this.icon}\n\t\t/>;\n\t}\n\n\tif (this._siblingsWithIcon) {\n\t\treturn <div class=\"ui5-menu-item-dummy-icon\"></div>;\n\t}\n}\n\nfunction iconEnd(this: NavigationMenuItem) {\n\tif (this.hasSubmenu) {\n\t\treturn <Icon\n\t\t\tpart=\"icon\"\n\t\t\tname={slimArrowRightIcon}\n\t\t\tclass=\"ui5-menu-item-icon-end\"\n\t\t/>;\n\t}\n\n\tif (this.href) {\n\t\treturn <Icon\n\t\t\tclass=\"ui5-sn-item-external-link-icon\"\n\t\t\tname={arrowRightIcon}\n\t\t/>;\n\t}\n}\n\nfunction listItemPostContent(this: NavigationMenuItem) {\n\treturn this.hasSubmenu && <ResponsivePopover\n\t\tid={`${this._id}-navigation-menu-rp`}\n\t\tclass=\"ui5-menu-rp ui5-navigation-menu ui5-menu-rp-sub-menu\"\n\t\tverticalAlign=\"Center\"\n\t\tpreventInitialFocus\n\t\tpreventFocusRestore\n\t\taccessibleNameRef={`${this._id}-navigationMenuPopoverText`}\n\t\tonBeforeOpen={this._beforePopoverOpen}\n\t\tonOpen={this._afterPopoverOpen}\n\t\tonBeforeClose={this._beforePopoverClose}\n\t\tonClose={this._afterPopoverClose}\n\t>\n\t\t<span id={`${this._id}-navigationMenuPopoverText`} class=\"ui5-hidden-text\">{this.accSideNavigationPopoverHiddenText}</span>\n\n\t\t{this.isPhone && (\n\t\t\t<div slot=\"header\" class=\"ui5-menu-dialog-header\">\n\t\t\t\t{this.isSubMenuOpen && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={navBackIcon}\n\t\t\t\t\t\tclass=\"ui5-menu-back-button\"\n\t\t\t\t\t\tdesign=\"Transparent\"\n\t\t\t\t\t\taria-label={this.labelBack}\n\t\t\t\t\t\tonClick={this._close}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<div class=\"ui5-menu-dialog-title\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{this.menuHeaderTextPhone}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<Button\n\t\t\t\t\ticon={declineIcon}\n\t\t\t\t\tdesign=\"Transparent\"\n\t\t\t\t\taria-label={this.labelClose}\n\t\t\t\t\tonClick={this._closeAll}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t)}\n\n\t\t<div id={`${this._id}-menu-main`} class=\"ui5-navigation-menu-main\">\n\t\t\t{this.items.length ? (\n\t\t\t\t<List\n\t\t\t\t\taccessibleRole=\"Tree\"\n\t\t\t\t\tid={`${this.id}-menu-list`}\n\t\t\t\t\tselectionMode=\"None\"\n\t\t\t\t\tloading={this.loading}\n\t\t\t\t\tloadingDelay={this.loadingDelay}\n\t\t\t\t\tseparators=\"None\"\n\t\t\t\t\t// handles event from slotted children\n\t\t\t\t\tonui5-close-menu={this._close}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</List>\n\t\t\t) : (\n\t\t\t\tthis.loading && (\n\t\t\t\t\t<BusyIndicator\n\t\t\t\t\t\tid={`${this._id}-menu-busy-indicator`}\n\t\t\t\t\t\tdelay={this.loadingDelay}\n\t\t\t\t\t\tclass=\"ui5-menu-busy-indicator\"\n\t\t\t\t\t\tactive={true}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\n\t</ResponsivePopover >;\n}\n"]}
1
+ {"version":3,"file":"NavigationMenuItemTemplate.js","sourceRoot":"","sources":["../src/NavigationMenuItemTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,gBAAgB,MAAM,6CAA6C,CAAC;AAC3E,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,kBAAkB,MAAM,mDAAmD,CAAC;AACnF,OAAO,cAAc,MAAM,8CAA8C,CAAC;AAG1E,MAAM,eAAe,GAA2B;IAC/C,eAAe;IACf,SAAS;IACT,OAAO;CACP,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAA2B,KAA8B;IAC1G,MAAM,YAAY,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,GAAG,CAAC;IAEvD,OAAO,4BAEL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,YAAG,IAAI,EAAC,UAAU,EACjB,KAAK,EAAC,uBAAuB,EAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,YAElB,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,GACvC,CACJ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,GAE5C,CAAC;AACL,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,4BAAG,IAAI,CAAC,IAAI,GAAI,CAAC;AACzB,CAAC;AAED,SAAS,SAAS;IACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EACvB,KAAK,EAAC,aAAa,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,GACd,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,cAAK,KAAK,EAAC,0BAA0B,GAAO,CAAC;IACrD,CAAC;AACF,CAAC;AAED,SAAS,OAAO;IACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,KAAC,IAAI,IACX,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAC,wBAAwB,GAC7B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,KAAC,IAAI,IACX,KAAK,EAAC,gCAAgC,EACtC,IAAI,EAAE,cAAc,GACnB,CAAC;IACJ,CAAC;AACF,CAAC","sourcesContent":["import type NavigationMenuItem from \"./NavigationMenuItem.js\";\nimport MenuItemTemplate from \"@ui5/webcomponents/dist/MenuItemTemplate.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport slimArrowRightIcon from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport arrowRightIcon from \"@ui5/webcomponents-icons/dist/arrow-right.js\";\nimport type { ListItemHooks } from \"@ui5/webcomponents/dist/ListItemTemplate.js\";\n\nconst predefinedHooks: Partial<ListItemHooks> = {\n\tlistItemContent,\n\ticonBegin,\n\ticonEnd,\n};\n\nexport default function NavigationMenuItemTemplate(this: NavigationMenuItem, hooks?: Partial<ListItemHooks>) {\n\tconst currentHooks = { ...predefinedHooks, ...hooks, };\n\n\treturn <>\n\t\t{\n\t\t\tthis._href ? (\n\t\t\t\t<a role=\"treeitem\"\n\t\t\t\t\tclass=\"ui5-navmenu-item-link\"\n\t\t\t\t\thref={this.href}\n\t\t\t\t\ttarget={this.target}\n\t\t\t\t>\n\t\t\t\t\t{MenuItemTemplate.call(this, currentHooks)}\n\t\t\t\t</a>\n\t\t\t) : MenuItemTemplate.call(this, currentHooks)\n\t\t}\n\t</>;\n}\n\nfunction listItemContent(this: NavigationMenuItem) {\n\treturn <>{this.text}</>;\n}\n\nfunction iconBegin(this: NavigationMenuItem) {\n\tif (this.hasIcon) {\n\t\treturn <Icon part=\"icon\"\n\t\t\tclass=\"ui5-li-icon\"\n\t\t\tname={this.icon}\n\t\t/>;\n\t}\n\n\tif (this._siblingsWithIcon) {\n\t\treturn <div class=\"ui5-menu-item-dummy-icon\"></div>;\n\t}\n}\n\nfunction iconEnd(this: NavigationMenuItem) {\n\tif (this.hasSubmenu) {\n\t\treturn <Icon\n\t\t\tpart=\"icon\"\n\t\t\tname={slimArrowRightIcon}\n\t\t\tclass=\"ui5-menu-item-icon-end\"\n\t\t/>;\n\t}\n\n\tif (this.href) {\n\t\treturn <Icon\n\t\t\tclass=\"ui5-sn-item-external-link-icon\"\n\t\t\tname={arrowRightIcon}\n\t\t/>;\n\t}\n}\n"]}
@@ -0,0 +1,175 @@
1
+ import SearchPopupMode from "@ui5/webcomponents/dist/types/SearchPopupMode.js";
2
+ import type Popover from "@ui5/webcomponents/dist/Popover.js";
3
+ import type List from "@ui5/webcomponents/dist/List.js";
4
+ import SearchField from "./SearchField.js";
5
+ import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
6
+ import type SearchItem from "./SearchItem.js";
7
+ import type Button from "@ui5/webcomponents/dist/Button.js";
8
+ interface ISearchSuggestionItem extends UI5Element {
9
+ selected: boolean;
10
+ headingText: string;
11
+ items?: ISearchSuggestionItem[];
12
+ }
13
+ type SearchEventDetails = {
14
+ item?: ISearchSuggestionItem;
15
+ };
16
+ /**
17
+ * @class
18
+ *
19
+ * ### Overview
20
+ *
21
+ * A `ui5-search` is an input with suggestions, used for user search.
22
+ *
23
+ * The `ui5-search` consists of several elements parts:
24
+ * - Scope - displays a select in the beggining of the component, used for filtering results by their scope.
25
+ * - Input field - for user input value
26
+ * - Clear button - gives the possibility for deleting the entered value
27
+ * - Search button - a primary button for performing search, when the user has entered a search term
28
+ * - Expand/Collapse button - when there is no search term, the search button behaves as an expand/collapse button for the `ui5-search` component
29
+ * - Suggestions - a list with available search suggestions
30
+ *
31
+ * ### ES6 Module Import
32
+ *
33
+ * `import "@ui5/webcomponents/fiori/dist/Search.js";`
34
+ *
35
+ * @constructor
36
+ * @extends SearchField
37
+ * @public
38
+ * @since 2.9.0
39
+ * @experimental
40
+ */
41
+ declare class Search extends SearchField {
42
+ eventDetails: SearchField["eventDetails"] & {
43
+ search: SearchEventDetails;
44
+ "popup-action-press": void;
45
+ "open": void;
46
+ "close": void;
47
+ };
48
+ /**
49
+ * Defines the visualisation mode of the search component.
50
+ *
51
+ * @default "List"
52
+ * @public
53
+ */
54
+ popupMode: `${SearchPopupMode}`;
55
+ /**
56
+ * Defines whether the value will be autcompleted to match an item.
57
+ * @default false
58
+ * @public
59
+ */
60
+ noTypeahead: boolean;
61
+ /**
62
+ * Defines the header text to be placed in the search suggestions popup.
63
+ * @public
64
+ */
65
+ headerText: string;
66
+ /**
67
+ * Defines the subheader text to be placed in the search suggestions popup.
68
+ * @public
69
+ */
70
+ subheaderText: string;
71
+ /**
72
+ * Defines whether the popup footer action button is shown.
73
+ * Note: The footer action button is displayed only when the `popupMode` is set to `List`.
74
+ * @default false
75
+ * @public
76
+ */
77
+ showPopupAction: boolean;
78
+ /**
79
+ * Defines the popup footer action button text.
80
+ * @public
81
+ */
82
+ popupActionText: string;
83
+ /**
84
+ * Defines the Search suggestion items.
85
+ *
86
+ * @public
87
+ */
88
+ items: Array<SearchItem>;
89
+ /**
90
+ * Defines the illustrated message to be shown in the popup.
91
+ *
92
+ * @public
93
+ */
94
+ illustration: HTMLElement;
95
+ /**
96
+ * Indicates whether the items picker is open.
97
+ * @public
98
+ */
99
+ open: boolean;
100
+ /**
101
+ * Defines the inner stored value of the component.
102
+ *
103
+ * **Note:** The property is updated upon typing.
104
+ * @default ""
105
+ * @private
106
+ */
107
+ _innerValue: string;
108
+ /**
109
+ * Based on the key pressed, determines if the autocomplete should be performed.
110
+ * @private
111
+ */
112
+ _shouldAutocomplete?: boolean;
113
+ /**
114
+ * Determines whether a text selection should be performed.
115
+ * @private
116
+ */
117
+ _performTextSelection?: boolean;
118
+ /**
119
+ * Determines whether the picker should open on user input. In some cases we need to close the picker,
120
+ * (press on an item, or pressing Esc), but still focus the input. In this case we need to open the picker on input.
121
+ * @private
122
+ */
123
+ _openPickerOnInput?: boolean;
124
+ /**
125
+ * Holds the typed value from the user.
126
+ * @private
127
+ */
128
+ _typedInValue: string;
129
+ /**
130
+ * True if the first matching item is matched by starts with per term, rather than by starts with.
131
+ * @private
132
+ */
133
+ _matchedPerTerm: boolean;
134
+ /**
135
+ * Holds the currently proposed item which will be selected if the user presses Enter.
136
+ * @private
137
+ */
138
+ _proposedItem?: ISearchSuggestionItem;
139
+ constructor();
140
+ onBeforeRendering(): void;
141
+ onAfterRendering(): void;
142
+ _handleTypeAhead(item: ISearchSuggestionItem): void;
143
+ _startsWithMatchingItems(str: string): Array<ISearchSuggestionItem>;
144
+ _startsWithPerTermMatchingItems(str: string): Array<ISearchSuggestionItem>;
145
+ _isGroupItem(item: ISearchSuggestionItem): boolean;
146
+ _deselectItems(): void;
147
+ _handleDown(e: KeyboardEvent): Promise<void>;
148
+ _handleArrowDown(): Promise<void>;
149
+ _handleRight(e: KeyboardEvent): void;
150
+ _handleEnter(): void;
151
+ _handleSearchEvent(): void;
152
+ _handleEscape(): void;
153
+ _handleInput(e: InputEvent): void;
154
+ _onFooterButtonKeyDown(e: KeyboardEvent): void;
155
+ _onItemKeydown(e: KeyboardEvent): void;
156
+ _onItemClick(e: CustomEvent): void;
157
+ _onkeydown(e: KeyboardEvent): void;
158
+ _onfocusin(): void;
159
+ _onfocusout(): void;
160
+ _onFocusOutSearch(): void;
161
+ _handleClose(): void;
162
+ _handleOpen(): void;
163
+ _onFooterButtonClick(): void;
164
+ _getFirstMatchingItem(current: string): ISearchSuggestionItem | undefined;
165
+ _getPicker(): Popover;
166
+ _getItemsList(): List;
167
+ _getFooterButton(): Button;
168
+ get _flattenItems(): Array<ISearchSuggestionItem>;
169
+ get nativeInput(): HTMLInputElement | null;
170
+ get _showIllustration(): boolean;
171
+ get _showLoading(): boolean;
172
+ get _showHeader(): boolean;
173
+ get _showFooter(): boolean;
174
+ }
175
+ export default Search;