@ui5/webcomponents-fiori 2.27.2 → 2.28.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/BarcodeScannerDialog.d.ts +1 -1
  4. package/dist/BarcodeScannerDialog.js +1 -1
  5. package/dist/BarcodeScannerDialog.js.map +1 -1
  6. package/dist/DynamicPage.d.ts +2 -0
  7. package/dist/DynamicPage.js +2 -0
  8. package/dist/DynamicPage.js.map +1 -1
  9. package/dist/FilterItem.d.ts +1 -1
  10. package/dist/FilterItem.js +1 -1
  11. package/dist/FilterItem.js.map +1 -1
  12. package/dist/FilterItemOption.d.ts +1 -1
  13. package/dist/FilterItemOption.js +1 -1
  14. package/dist/FilterItemOption.js.map +1 -1
  15. package/dist/FlexibleColumnLayout.d.ts +1 -1
  16. package/dist/FlexibleColumnLayout.js +1 -1
  17. package/dist/FlexibleColumnLayout.js.map +1 -1
  18. package/dist/IllustratedMessage.d.ts +38 -7
  19. package/dist/IllustratedMessage.js +51 -9
  20. package/dist/IllustratedMessage.js.map +1 -1
  21. package/dist/MediaGallery.d.ts +1 -0
  22. package/dist/MediaGallery.js +1 -0
  23. package/dist/MediaGallery.js.map +1 -1
  24. package/dist/NotificationList.d.ts +2 -0
  25. package/dist/NotificationList.js +2 -0
  26. package/dist/NotificationList.js.map +1 -1
  27. package/dist/NotificationListGroupItem.d.ts +1 -1
  28. package/dist/NotificationListGroupItem.js +1 -1
  29. package/dist/NotificationListGroupItem.js.map +1 -1
  30. package/dist/NotificationListItem.d.ts +2 -2
  31. package/dist/NotificationListItem.js +2 -2
  32. package/dist/NotificationListItem.js.map +1 -1
  33. package/dist/NotificationListItemBase.d.ts +2 -2
  34. package/dist/NotificationListItemBase.js +2 -2
  35. package/dist/NotificationListItemBase.js.map +1 -1
  36. package/dist/Page.d.ts +1 -1
  37. package/dist/Page.js +1 -1
  38. package/dist/Page.js.map +1 -1
  39. package/dist/ProductSwitch.d.ts +2 -1
  40. package/dist/ProductSwitch.js +2 -1
  41. package/dist/ProductSwitch.js.map +1 -1
  42. package/dist/ProductSwitchItem.d.ts +3 -3
  43. package/dist/ProductSwitchItem.js +1 -1
  44. package/dist/ProductSwitchItem.js.map +1 -1
  45. package/dist/Search.d.ts +5 -0
  46. package/dist/Search.js +5 -0
  47. package/dist/Search.js.map +1 -1
  48. package/dist/ShellBar.d.ts +13 -9
  49. package/dist/ShellBar.js +12 -8
  50. package/dist/ShellBar.js.map +1 -1
  51. package/dist/ShellBarItem.d.ts +1 -1
  52. package/dist/ShellBarItem.js.map +1 -1
  53. package/dist/SideNavigation.d.ts +36 -2
  54. package/dist/SideNavigation.js +36 -2
  55. package/dist/SideNavigation.js.map +1 -1
  56. package/dist/SideNavigationGroupTemplate.js +1 -1
  57. package/dist/SideNavigationGroupTemplate.js.map +1 -1
  58. package/dist/SideNavigationItem.d.ts +1 -1
  59. package/dist/SideNavigationItem.js +2 -2
  60. package/dist/SideNavigationItem.js.map +1 -1
  61. package/dist/SideNavigationItemBase.d.ts +13 -0
  62. package/dist/SideNavigationItemBase.js +12 -0
  63. package/dist/SideNavigationItemBase.js.map +1 -1
  64. package/dist/SideNavigationItemTemplate.js +1 -1
  65. package/dist/SideNavigationItemTemplate.js.map +1 -1
  66. package/dist/SideNavigationSearchField.d.ts +97 -0
  67. package/dist/SideNavigationSearchField.js +178 -0
  68. package/dist/SideNavigationSearchField.js.map +1 -0
  69. package/dist/SideNavigationSearchFieldTemplate.d.ts +2 -0
  70. package/dist/SideNavigationSearchFieldTemplate.js +8 -0
  71. package/dist/SideNavigationSearchFieldTemplate.js.map +1 -0
  72. package/dist/SideNavigationSubItem.d.ts +1 -1
  73. package/dist/SideNavigationSubItem.js +1 -1
  74. package/dist/SideNavigationSubItem.js.map +1 -1
  75. package/dist/SideNavigationSubItemTemplate.js +1 -1
  76. package/dist/SideNavigationSubItemTemplate.js.map +1 -1
  77. package/dist/SideNavigationTemplate.js +6 -2
  78. package/dist/SideNavigationTemplate.js.map +1 -1
  79. package/dist/SortItem.d.ts +1 -1
  80. package/dist/SortItem.js +1 -1
  81. package/dist/SortItem.js.map +1 -1
  82. package/dist/Timeline.d.ts +4 -2
  83. package/dist/Timeline.js +4 -2
  84. package/dist/Timeline.js.map +1 -1
  85. package/dist/UploadCollection.d.ts +3 -2
  86. package/dist/UploadCollection.js +2 -1
  87. package/dist/UploadCollection.js.map +1 -1
  88. package/dist/UploadCollectionItem.d.ts +1 -1
  89. package/dist/UploadCollectionItem.js +2 -2
  90. package/dist/UploadCollectionItem.js.map +1 -1
  91. package/dist/UserMenu.d.ts +4 -0
  92. package/dist/UserMenu.js +7 -1
  93. package/dist/UserMenu.js.map +1 -1
  94. package/dist/UserMenuTemplate.js +4 -4
  95. package/dist/UserMenuTemplate.js.map +1 -1
  96. package/dist/UserSettingsAppearanceView.d.ts +2 -2
  97. package/dist/UserSettingsAppearanceView.js +7 -7
  98. package/dist/UserSettingsAppearanceView.js.map +1 -1
  99. package/dist/UserSettingsAppearanceViewTemplate.js +1 -1
  100. package/dist/UserSettingsAppearanceViewTemplate.js.map +1 -1
  101. package/dist/UserSettingsDialog.d.ts +28 -2
  102. package/dist/UserSettingsDialog.js +47 -17
  103. package/dist/UserSettingsDialog.js.map +1 -1
  104. package/dist/UserSettingsDialogTemplate.js +1 -1
  105. package/dist/UserSettingsDialogTemplate.js.map +1 -1
  106. package/dist/UserSettingsItemTemplate.js +1 -1
  107. package/dist/UserSettingsItemTemplate.js.map +1 -1
  108. package/dist/ViewSettingsDialog.d.ts +8 -3
  109. package/dist/ViewSettingsDialog.js +8 -3
  110. package/dist/ViewSettingsDialog.js.map +1 -1
  111. package/dist/Wizard.d.ts +3 -2
  112. package/dist/Wizard.js +3 -2
  113. package/dist/Wizard.js.map +1 -1
  114. package/dist/WizardStep.d.ts +3 -3
  115. package/dist/WizardStep.js +1 -1
  116. package/dist/WizardStep.js.map +1 -1
  117. package/dist/WizardTab.d.ts +2 -2
  118. package/dist/WizardTab.js.map +1 -1
  119. package/dist/bundle.esm.js +1 -0
  120. package/dist/bundle.esm.js.map +1 -1
  121. package/dist/css/themes/SideNavigation.css +1 -1
  122. package/dist/css/themes/SideNavigationGroup.css +1 -1
  123. package/dist/css/themes/SideNavigationItem.css +1 -1
  124. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  125. package/dist/css/themes/SideNavigationSearchField.css +1 -0
  126. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  127. package/dist/css/themes/UserMenu.css +1 -1
  128. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -2
  129. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -2
  130. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -2
  131. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -2
  132. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -2
  133. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +139 -88
  134. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -276
  135. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -203
  136. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -209
  137. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +131 -95
  138. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -277
  139. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -209
  140. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -277
  141. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -211
  142. package/dist/custom-elements-internal.json +1273 -92
  143. package/dist/custom-elements.json +1114 -16
  144. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  180. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  181. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  182. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  183. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  184. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  185. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  186. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  187. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  188. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  189. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  190. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  191. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  192. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  193. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  194. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  195. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  196. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  197. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  198. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  199. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  200. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  201. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  202. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  203. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  204. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  205. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  206. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  207. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  208. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  209. package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
  210. package/dist/generated/i18n/i18n-defaults.js +9 -3
  211. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  212. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  213. package/dist/generated/themes/SideNavigation.css.js +1 -1
  214. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  215. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  216. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  217. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  218. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  219. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  220. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  221. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  222. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  223. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  224. package/dist/generated/themes/SideNavigationSearchField.css.d.ts +2 -0
  225. package/dist/generated/themes/SideNavigationSearchField.css.js +8 -0
  226. package/dist/generated/themes/SideNavigationSearchField.css.js.map +1 -0
  227. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  228. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  229. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  230. package/dist/generated/themes/UserMenu.css.d.ts +1 -1
  231. package/dist/generated/themes/UserMenu.css.js +1 -1
  232. package/dist/generated/themes/UserMenu.css.js.map +1 -1
  233. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  234. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -2
  235. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  236. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  237. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -2
  238. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  239. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  240. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -2
  241. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  242. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  243. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -2
  244. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  245. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  246. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -2
  247. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  248. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  249. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +139 -88
  250. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  251. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  252. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -276
  253. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  254. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  255. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -203
  256. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  257. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  258. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -209
  259. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  260. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  261. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +131 -95
  262. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  263. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  264. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -277
  265. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  266. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  267. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -209
  268. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  269. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  270. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -277
  271. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  272. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  273. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -211
  274. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  275. package/dist/types/ViewSettingsDialogMode.d.ts +2 -2
  276. package/dist/types/ViewSettingsDialogMode.js +2 -2
  277. package/dist/types/ViewSettingsDialogMode.js.map +1 -1
  278. package/dist/vscode.html-custom-data.json +43 -1
  279. package/dist/web-types.json +107 -2
  280. package/package.json +7 -7
  281. package/src/SideNavigationGroupTemplate.tsx +1 -1
  282. package/src/SideNavigationItemTemplate.tsx +1 -1
  283. package/src/SideNavigationSearchFieldTemplate.tsx +32 -0
  284. package/src/SideNavigationSubItemTemplate.tsx +1 -1
  285. package/src/SideNavigationTemplate.tsx +18 -0
  286. package/src/UserMenuTemplate.tsx +4 -3
  287. package/src/UserSettingsAppearanceViewTemplate.tsx +1 -1
  288. package/src/UserSettingsDialogTemplate.tsx +1 -1
  289. package/src/UserSettingsItemTemplate.tsx +2 -2
  290. package/src/i18n/messagebundle.properties +22 -4
  291. package/src/i18n/messagebundle_ar.properties +2 -0
  292. package/src/i18n/messagebundle_bg.properties +2 -0
  293. package/src/i18n/messagebundle_ca.properties +4 -2
  294. package/src/i18n/messagebundle_cnr.properties +2 -0
  295. package/src/i18n/messagebundle_cs.properties +2 -0
  296. package/src/i18n/messagebundle_cy.properties +2 -0
  297. package/src/i18n/messagebundle_da.properties +3 -1
  298. package/src/i18n/messagebundle_de.properties +2 -0
  299. package/src/i18n/messagebundle_el.properties +4 -2
  300. package/src/i18n/messagebundle_en.properties +4 -2
  301. package/src/i18n/messagebundle_en_GB.properties +4 -2
  302. package/src/i18n/messagebundle_en_US_sappsd.properties +4 -2
  303. package/src/i18n/messagebundle_en_US_saprigi.properties +4 -2
  304. package/src/i18n/messagebundle_en_US_saptrc.properties +4 -2
  305. package/src/i18n/messagebundle_es.properties +4 -2
  306. package/src/i18n/messagebundle_es_MX.properties +4 -2
  307. package/src/i18n/messagebundle_et.properties +4 -2
  308. package/src/i18n/messagebundle_fi.properties +2 -0
  309. package/src/i18n/messagebundle_fr.properties +2 -0
  310. package/src/i18n/messagebundle_fr_CA.properties +2 -0
  311. package/src/i18n/messagebundle_hi.properties +3 -1
  312. package/src/i18n/messagebundle_hr.properties +4 -2
  313. package/src/i18n/messagebundle_hu.properties +3 -1
  314. package/src/i18n/messagebundle_id.properties +2 -0
  315. package/src/i18n/messagebundle_it.properties +2 -0
  316. package/src/i18n/messagebundle_iw.properties +2 -0
  317. package/src/i18n/messagebundle_ja.properties +2 -0
  318. package/src/i18n/messagebundle_kk.properties +4 -2
  319. package/src/i18n/messagebundle_ko.properties +2 -0
  320. package/src/i18n/messagebundle_lt.properties +2 -0
  321. package/src/i18n/messagebundle_lv.properties +4 -2
  322. package/src/i18n/messagebundle_mk.properties +3 -1
  323. package/src/i18n/messagebundle_ms.properties +2 -0
  324. package/src/i18n/messagebundle_nl.properties +2 -0
  325. package/src/i18n/messagebundle_no.properties +2 -0
  326. package/src/i18n/messagebundle_pl.properties +2 -0
  327. package/src/i18n/messagebundle_pt.properties +4 -2
  328. package/src/i18n/messagebundle_pt_PT.properties +4 -2
  329. package/src/i18n/messagebundle_ro.properties +3 -1
  330. package/src/i18n/messagebundle_ru.properties +4 -2
  331. package/src/i18n/messagebundle_sh.properties +2 -0
  332. package/src/i18n/messagebundle_sk.properties +2 -0
  333. package/src/i18n/messagebundle_sl.properties +2 -0
  334. package/src/i18n/messagebundle_sr.properties +2 -0
  335. package/src/i18n/messagebundle_sv.properties +2 -0
  336. package/src/i18n/messagebundle_th.properties +2 -0
  337. package/src/i18n/messagebundle_tr.properties +2 -0
  338. package/src/i18n/messagebundle_uk.properties +4 -2
  339. package/src/i18n/messagebundle_vi.properties +3 -1
  340. package/src/i18n/messagebundle_zh_CN.properties +2 -0
  341. package/src/i18n/messagebundle_zh_TW.properties +2 -0
  342. package/src/themes/SideNavigation.css +4 -1
  343. package/src/themes/SideNavigationItem.css +11 -0
  344. package/src/themes/SideNavigationItemBase.css +8 -2
  345. package/src/themes/SideNavigationSearchField.css +12 -0
  346. package/src/themes/UserMenu.css +2 -0
@@ -31,7 +31,7 @@ type BarcodeScannerDialogScanErrorEventDetail = {
31
31
  * @constructor
32
32
  * @extends UI5Element
33
33
  * @public
34
- * @since 1.0.0-rc.15
34
+ * @since 1.0.0
35
35
  */
36
36
  declare class BarcodeScannerDialog extends UI5Element {
37
37
  eventDetails: {
@@ -54,7 +54,7 @@ const defaultMediaConstraints = {
54
54
  * @constructor
55
55
  * @extends UI5Element
56
56
  * @public
57
- * @since 1.0.0-rc.15
57
+ * @since 1.0.0
58
58
  */
59
59
  let BarcodeScannerDialog = BarcodeScannerDialog_1 = class BarcodeScannerDialog extends UI5Element {
60
60
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScannerDialog.js","sourceRoot":"","sources":["../src/BarcodeScannerDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type Dialog from \"@ui5/webcomponents/dist/Dialog.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 i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type { Result, Exception } from \"@zxing/library\";\nimport type { Interval } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport ZXing from \"@ui5/webcomponents-fiori/dist/ssr-zxing.js\";\n\n// Texts\nimport {\n\tBARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT,\n\tBARCODE_SCANNER_DIALOG_LOADING_TXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport BarcodeScannerDialogTemplate from \"./BarcodeScannerDialogTemplate.js\";\n\n// Styles\nimport BarcodeScannerDialogCss from \"./generated/themes/BarcodeScannerDialog.css.js\";\n\n// some tools handle named exports from UMD files and the window object is not assigned but the imports work (vitejs)\n// other tools do not handle named exports (they are undefined after the import), but the window global is assigned and can be used (web dev server)\nconst windowZXing = typeof window === \"undefined\" ? {} : window.ZXing;\nconst effectiveZXing = { ...ZXing, ...windowZXing };\nconst { BrowserMultiFormatReader, NotFoundException, BarcodeFormat } = effectiveZXing;\n\nconst defaultMediaConstraints = {\n\taudio: false,\n\tvideo: {\n\t\theight: {\n\t\t\tmin: 480,\n\t\t\tideal: 960,\n\t\t\tmax: 1440,\n\t\t},\n\t\taspectRatio: 1.333333333,\n\t\tfacingMode: \"environment\",\n\t},\n};\n\ntype BarcodeFormatString = keyof typeof BarcodeFormat;\n\ntype BarcodeScannerDialogScanSuccessEventDetail = {\n\ttext: string,\n\trawBytes: Uint8Array,\n\tformat: BarcodeFormatString,\n};\n\ntype BarcodeScannerDialogScanErrorEventDetail = {\n\tmessage: string,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `BarcodeScannerDialog` component provides barcode scanning functionality for all devices that support the `MediaDevices.getUserMedia()` native API.\n * Opening the dialog launches the device camera and scans for known barcode formats.\n *\n * A `scanSuccess` event fires whenever a barcode is identified\n * and a `scanError` event fires when the scan failed (for example, due to missing permisions).\n *\n * Internally, the component uses the zxing-js/library third party OSS.\n *\n * For a list of supported barcode formats, see the [zxing-js/library](https://github.com/zxing-js/library) documentation.\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.15\n */\n@customElement({\n\ttag: \"ui5-barcode-scanner-dialog\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: BarcodeScannerDialogTemplate,\n\tstyles: [BarcodeScannerDialogCss],\n})\n\n/**\n * Fired when the user closes the component.\n * @since 2.0.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\n\n/**\n * Fires when the scan is completed successfully.\n * @param {string} text the scan result as string\n * @param {Object} rawBytes the scan result as a Uint8Array\n * @param {string} format the format of the scanned barcode (e.g. \"QR_CODE\", \"EAN_13\", \"CODE_128\")\n * @public\n */\n@event(\"scan-success\", {\n\tbubbles: true,\n})\n\n/**\n * Fires when the scan fails with error.\n * @param {string} message the error message\n * @public\n */\n@event(\"scan-error\", {\n\tbubbles: true,\n})\n\nclass BarcodeScannerDialog extends UI5Element {\n\teventDetails!: {\n\t\tclose: void,\n\t\t\"scan-success\": BarcodeScannerDialogScanSuccessEventDetail,\n\t\t\"scan-error\": BarcodeScannerDialogScanErrorEventDetail,\n\t}\n\t/**\n\t * Defines the header HTML Element.\n\t *\n\t * **Note:** If `header` slot is provided, the labelling of the dialog is a responsibility of the application developer.\n\t * `accessibleName` should be used.\n\t *\n\t * @public\n\t * @since 2.4.0\n\t */\n\t@slot()\n\theader!: Slot<HTMLElement>;\n\n\t/**\n\t * Defines the footer HTML Element.\n\t *\n\t * **Note:** When you provide custom content for the `footer` slot, the default close button is not rendered.\n\t * This means you need to include your own mechanism within the custom `footer` to close the dialog,\n\t * such as a button with an event listener that closes the dialog.\n\t *\n\t * **Note:** If the `footer` slot is not provided, a default footer with a close button is rendered automatically,\n\t * allowing users to close the dialog without any additional implementation.\n\t *\n\t * @public\n\t * @since 2.4.0\n\t */\n\t@slot()\n\tfooter!: Slot<HTMLElement>;\n\n\t/**\n\t * Indicates whether the dialog is open.\n\t *\n\t * @public\n\t * @default false\n\t * @since 1.24.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Indicates whether a loading indicator should be displayed while the scanner is loading.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Indicates whether the scanner is ready to scan.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tisReadyToScan = false;\n\n\tdialog?: Dialog;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\t_codeReader: InstanceType<typeof BrowserMultiFormatReader>;\n\t_tempCanvas!: HTMLCanvasElement;\n\t_scanInterval!: Interval | null;\n\t_handleVideoPlayingBound: () => void;\n\t_handleCaptureRegionBound: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._codeReader = new BrowserMultiFormatReader();\n\t\tthis._handleVideoPlayingBound = this._handleVideoPlaying.bind(this);\n\t\tthis._handleCaptureRegionBound = this._handleDrawCaptureRegion.bind(this);\n\t}\n\n\tasync onAfterRendering() {\n\t\tif (!this._hasGetUserMedia()) {\n\t\t\tthis.fireDecoratorEvent(\"scan-error\", { message: \"getUserMedia() is not supported by your browser\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.open || this.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.isReadyToScan) {\n\t\t\tthis.loading = true;\n\t\t}\n\n\t\tconst video = this._getVideoElement();\n\t\tif (video.srcObject) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst stream = await this._getUserPermission();\n\t\t\tvideo.addEventListener(\"loadeddata\", this._handleVideoPlayingBound);\n\t\t\tvideo.srcObject = stream;\n\t\t} catch (error) {\n\t\t\tthis.fireDecoratorEvent(\"scan-error\", { message: (error as Error).message });\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tsuper.onEnterDOM();\n\t\twindow.addEventListener(\"resize\", this._handleCaptureRegionBound);\n\t}\n\n\tonExitDOM() {\n\t\tsuper.onExitDOM();\n\t\twindow.removeEventListener(\"resize\", this._handleCaptureRegionBound);\n\t}\n\n\tget _open() {\n\t\treturn this.open && this.isReadyToScan;\n\t}\n\n\tget _cancelButtonText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT);\n\t}\n\n\tget _busyIndicatorText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_LOADING_TXT);\n\t}\n\n\t_hasGetUserMedia() {\n\t\treturn !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n\t}\n\n\t_getUserPermission() {\n\t\treturn navigator.mediaDevices.getUserMedia(defaultMediaConstraints);\n\t}\n\n\t_getVideoElement() {\n\t\treturn this.shadowRoot!.querySelector<HTMLVideoElement>(\".ui5-barcode-scanner-dialog-video\")!;\n\t}\n\n\t_getOverlayCanvasElement() {\n\t\treturn this.shadowRoot!.querySelector<HTMLCanvasElement>(\".ui5-barcode-scanner-dialog-overlay\")!;\n\t}\n\n\t/**\n\t * CALCULATIONS\n\t *\n\t * The following methods are used to calculate the capture region\n\t * and draw it on the overlay canvas.\n\t * The capture region is a square area in the center of the video element\n\t * where the barcode scanning is performed.\n\t * The region is defined as a proportion of the video element's dimensions.\n\t * The overlay canvas is used to draw a semi-transparent black overlay\n\t * over the video element and a red border around the capture region.\n\t * The overlay canvas is updated on every frame to ensure the capture region is always visible.\n\t * The capture region is used to crop the video frame and extract the barcode image.\n\t * The extracted image is then processed by the zxing-js library to decode the barcode.\n\t */\n\n\t_calculateCaptureRegion(clientWidth: number, clientHeight: number) {\n\t\t// Define the maximum scan size as a proportion of the video element\n\t\tconst maxScanProportion = 0.66666667; // 2:3\n\t\t// Calculate maximum square dimension based on video dimensions and max proportion\n\t\tconst maxScanDimension = Math.min(clientWidth, clientHeight) * maxScanProportion;\n\t\t// Calculate offset to center the square scan region\n\t\tconst xOffset = (clientWidth - maxScanDimension) / 2;\n\t\tconst yOffset = (clientHeight - maxScanDimension) / 2;\n\t\t// Calculate the width and height of the scan region\n\t\tconst scanWidth = Math.floor(maxScanDimension);\n\t\tconst scanHeight = Math.floor(maxScanDimension);\n\n\t\treturn {\n\t\t\tscanHeight,\n\t\t\tscanWidth,\n\t\t\txOffset,\n\t\t\tyOffset,\n\t\t};\n\t}\n\n\t_drawCaptureRegion() {\n\t\tconst videoElement = this._getVideoElement();\n\t\tconst canvasElement = this._getOverlayCanvasElement();\n\t\tconst context = canvasElement.getContext(\"2d\")!;\n\n\t\tconst videoClientWidth = videoElement.clientWidth;\n\t\tconst videoClientHeight = videoElement.clientHeight;\n\n\t\t// Set canvas dimensions to match the video element's dimensions\n\t\tcanvasElement.width = videoClientWidth;\n\t\tcanvasElement.height = videoClientHeight;\n\n\t\t// Clear the canvas\n\t\tcontext.clearRect(0, 0, videoClientWidth, videoClientHeight);\n\t\t// Calculate the capture region\n\t\tconst captureRegion = this._calculateCaptureRegion(videoClientWidth, videoClientHeight);\n\n\t\t// Draw a semi-transparent black overlay over the video\n\t\tcontext.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n\t\tcontext.fillRect(0, 0, videoClientWidth, videoClientHeight);\n\t\tcontext.clearRect(captureRegion.xOffset, captureRegion.yOffset, captureRegion.scanWidth, captureRegion.scanHeight);\n\n\t\t// Draw red border around the capture region\n\t\tcontext.strokeStyle = \"red\";\n\t\tcontext.lineWidth = 1;\n\t\tcontext.strokeRect(captureRegion.xOffset, captureRegion.yOffset, captureRegion.scanWidth, captureRegion.scanHeight);\n\n\t\t// Display the overlay\n\t\tcanvasElement.style.display = \"block\";\n\t}\n\n\t_getTempCanvasElement() {\n\t\tif (!this._tempCanvas) {\n\t\t\tthis._tempCanvas = document.createElement(\"canvas\");\n\t\t}\n\t\treturn this._tempCanvas;\n\t}\n\n\t_captureFrame() {\n\t\tconst video = this._getVideoElement();\n\t\tconst tempCanvas = this._getTempCanvasElement();\n\t\tconst context = tempCanvas.getContext(\"2d\")!;\n\n\t\tconst videoWidth = video.videoWidth;\n\t\tconst videoHeight = video.videoHeight;\n\t\tconst clientWidth = video.clientWidth;\n\t\tconst clientHeight = video.clientHeight;\n\n\t\tconst captureRegion = this._calculateCaptureRegion(clientWidth, clientHeight);\n\n\t\t// Calculate the ratio of videoSize to clientSize\n\t\tconst ratioX = videoWidth / clientWidth;\n\t\tconst ratioY = videoHeight / clientHeight;\n\t\tconst scale = Math.min(ratioX, ratioY);\n\n\t\t// Calculate the scaled capture region\n\t\tconst scaledXOffset = captureRegion.xOffset * scale;\n\t\tconst scaledYOffset = captureRegion.yOffset * scale;\n\t\tconst scaledScanWidth = captureRegion.scanWidth * scale;\n\t\tconst scaledScanHeight = captureRegion.scanHeight * scale;\n\n\t\t// Set canvas dimensions to match the capture region dimensions\n\t\ttempCanvas.width = captureRegion.scanWidth;\n\t\ttempCanvas.height = captureRegion.scanHeight;\n\n\t\t// Clear the canvas\n\t\tcontext.clearRect(0, 0, tempCanvas.width, tempCanvas.height);\n\n\t\t// Correct positioning if aspect ratios are different\n\t\tconst positionX = (videoWidth - clientWidth * scale) / 2;\n\t\tconst positionY = (videoHeight - clientHeight * scale) / 2;\n\n\t\t// Calculate final source position considering the video element's offset\n\t\tconst finalXOffset = scaledXOffset + positionX;\n\t\tconst finalYOffset = scaledYOffset + positionY;\n\n\t\t// Draw the portion of the video on the canvas\n\t\tcontext.drawImage(\n\t\t\tvideo,\n\t\t\tfinalXOffset, finalYOffset, scaledScanWidth, scaledScanHeight, // Source rectangle\n\t\t\t0, 0, tempCanvas.width, tempCanvas.height, // Destination rectangle\n\t\t);\n\n\t\treturn tempCanvas;\n\t}\n\n\t/**\n\t * HANDLERS\n\t */\n\n\tasync _processFrame() {\n\t\ttry {\n\t\t\tconst canvas = this._captureFrame();\n\t\t\tconst dataUrl = canvas.toDataURL();\n\t\t\tconst result = await this._codeReader.decodeFromImageUrl(dataUrl);\n\n\t\t\tthis._handleScanSuccess(result);\n\t\t} catch (error) {\n\t\t\tthis._handleScanError(error as Exception);\n\t\t}\n\t}\n\n\t_handleScanSuccess(result: Result) {\n\t\tthis.fireDecoratorEvent(\"scan-success\", {\n\t\t\ttext: result.getText(),\n\t\t\trawBytes: result.getRawBytes(),\n\t\t\tformat: BarcodeFormat[result.getBarcodeFormat()] as BarcodeFormatString,\n\t\t});\n\t}\n\n\t_handleScanError(error: Exception) {\n\t\tif (error instanceof NotFoundException) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"scan-error\", { message: error.message });\n\t}\n\n\t_handleVideoPlaying() {\n\t\tconst FRAME_PROCESSING_INTERVAL = 200; // 5 frames per second\n\n\t\tthis.loading = false;\n\t\tthis.isReadyToScan = true;\n\n\t\t// Wait for the next animation frame before drawing the capture region\n\t\trequestAnimationFrame(() => {\n\t\t\tthis._drawCaptureRegion();\n\t\t});\n\n\t\t// Ensure any existing interval is cleared before setting a new one\n\t\tif (this._scanInterval) {\n\t\t\tclearInterval(this._scanInterval);\n\t\t}\n\n\t\tthis._scanInterval = setInterval(() => {\n\t\t\tthis._processFrame();\n\t\t}, FRAME_PROCESSING_INTERVAL);\n\t}\n\n\t_handleDrawCaptureRegion() {\n\t\tthis._drawCaptureRegion();\n\t}\n\n\t_closeDialog() {\n\t\tthis._resetReader();\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_resetReader() {\n\t\tconst video = this._getVideoElement();\n\t\tvideo.pause();\n\n\t\tif (video.srcObject) {\n\t\t\tconst stream = video.srcObject as MediaStream;\n\t\t\tconst tracks = stream.getTracks();\n\t\t\ttracks.forEach(track => track.stop());\n\t\t}\n\n\t\tvideo.srcObject = null;\n\t\tvideo.removeEventListener(\"loadeddata\", this._handleVideoPlayingBound);\n\n\t\tif (this._scanInterval) {\n\t\t\tclearInterval(this._scanInterval);\n\t\t\tthis._scanInterval = null;\n\t\t}\n\n\t\tif (this._codeReader) {\n\t\t\tthis._codeReader.reset();\n\t\t}\n\n\t\tconst overlay = this._getOverlayCanvasElement();\n\t\toverlay.style.display = \"none\";\n\n\t\t// Reset the ready state\n\t\tthis.isReadyToScan = false;\n\t}\n}\n\nBarcodeScannerDialog.define();\n\nexport default BarcodeScannerDialog;\nexport type {\n\tBarcodeScannerDialogScanErrorEventDetail,\n\tBarcodeScannerDialogScanSuccessEventDetail,\n\tBarcodeFormatString,\n};\n"]}
1
+ {"version":3,"file":"BarcodeScannerDialog.js","sourceRoot":"","sources":["../src/BarcodeScannerDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type Dialog from \"@ui5/webcomponents/dist/Dialog.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 i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type { Result, Exception } from \"@zxing/library\";\nimport type { Interval } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport ZXing from \"@ui5/webcomponents-fiori/dist/ssr-zxing.js\";\n\n// Texts\nimport {\n\tBARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT,\n\tBARCODE_SCANNER_DIALOG_LOADING_TXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport BarcodeScannerDialogTemplate from \"./BarcodeScannerDialogTemplate.js\";\n\n// Styles\nimport BarcodeScannerDialogCss from \"./generated/themes/BarcodeScannerDialog.css.js\";\n\n// some tools handle named exports from UMD files and the window object is not assigned but the imports work (vitejs)\n// other tools do not handle named exports (they are undefined after the import), but the window global is assigned and can be used (web dev server)\nconst windowZXing = typeof window === \"undefined\" ? {} : window.ZXing;\nconst effectiveZXing = { ...ZXing, ...windowZXing };\nconst { BrowserMultiFormatReader, NotFoundException, BarcodeFormat } = effectiveZXing;\n\nconst defaultMediaConstraints = {\n\taudio: false,\n\tvideo: {\n\t\theight: {\n\t\t\tmin: 480,\n\t\t\tideal: 960,\n\t\t\tmax: 1440,\n\t\t},\n\t\taspectRatio: 1.333333333,\n\t\tfacingMode: \"environment\",\n\t},\n};\n\ntype BarcodeFormatString = keyof typeof BarcodeFormat;\n\ntype BarcodeScannerDialogScanSuccessEventDetail = {\n\ttext: string,\n\trawBytes: Uint8Array,\n\tformat: BarcodeFormatString,\n};\n\ntype BarcodeScannerDialogScanErrorEventDetail = {\n\tmessage: string,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `BarcodeScannerDialog` component provides barcode scanning functionality for all devices that support the `MediaDevices.getUserMedia()` native API.\n * Opening the dialog launches the device camera and scans for known barcode formats.\n *\n * A `scanSuccess` event fires whenever a barcode is identified\n * and a `scanError` event fires when the scan failed (for example, due to missing permisions).\n *\n * Internally, the component uses the zxing-js/library third party OSS.\n *\n * For a list of supported barcode formats, see the [zxing-js/library](https://github.com/zxing-js/library) documentation.\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0\n */\n@customElement({\n\ttag: \"ui5-barcode-scanner-dialog\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: BarcodeScannerDialogTemplate,\n\tstyles: [BarcodeScannerDialogCss],\n})\n\n/**\n * Fired when the user closes the component.\n * @since 2.0.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\n\n/**\n * Fires when the scan is completed successfully.\n * @param {string} text the scan result as string\n * @param {Object} rawBytes the scan result as a Uint8Array\n * @param {string} format the format of the scanned barcode (e.g. \"QR_CODE\", \"EAN_13\", \"CODE_128\")\n * @public\n */\n@event(\"scan-success\", {\n\tbubbles: true,\n})\n\n/**\n * Fires when the scan fails with error.\n * @param {string} message the error message\n * @public\n */\n@event(\"scan-error\", {\n\tbubbles: true,\n})\n\nclass BarcodeScannerDialog extends UI5Element {\n\teventDetails!: {\n\t\tclose: void,\n\t\t\"scan-success\": BarcodeScannerDialogScanSuccessEventDetail,\n\t\t\"scan-error\": BarcodeScannerDialogScanErrorEventDetail,\n\t}\n\t/**\n\t * Defines the header HTML Element.\n\t *\n\t * **Note:** If `header` slot is provided, the labelling of the dialog is a responsibility of the application developer.\n\t * `accessibleName` should be used.\n\t *\n\t * @public\n\t * @since 2.4.0\n\t */\n\t@slot()\n\theader!: Slot<HTMLElement>;\n\n\t/**\n\t * Defines the footer HTML Element.\n\t *\n\t * **Note:** When you provide custom content for the `footer` slot, the default close button is not rendered.\n\t * This means you need to include your own mechanism within the custom `footer` to close the dialog,\n\t * such as a button with an event listener that closes the dialog.\n\t *\n\t * **Note:** If the `footer` slot is not provided, a default footer with a close button is rendered automatically,\n\t * allowing users to close the dialog without any additional implementation.\n\t *\n\t * @public\n\t * @since 2.4.0\n\t */\n\t@slot()\n\tfooter!: Slot<HTMLElement>;\n\n\t/**\n\t * Indicates whether the dialog is open.\n\t *\n\t * @public\n\t * @default false\n\t * @since 1.24.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Indicates whether a loading indicator should be displayed while the scanner is loading.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Indicates whether the scanner is ready to scan.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tisReadyToScan = false;\n\n\tdialog?: Dialog;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\t_codeReader: InstanceType<typeof BrowserMultiFormatReader>;\n\t_tempCanvas!: HTMLCanvasElement;\n\t_scanInterval!: Interval | null;\n\t_handleVideoPlayingBound: () => void;\n\t_handleCaptureRegionBound: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._codeReader = new BrowserMultiFormatReader();\n\t\tthis._handleVideoPlayingBound = this._handleVideoPlaying.bind(this);\n\t\tthis._handleCaptureRegionBound = this._handleDrawCaptureRegion.bind(this);\n\t}\n\n\tasync onAfterRendering() {\n\t\tif (!this._hasGetUserMedia()) {\n\t\t\tthis.fireDecoratorEvent(\"scan-error\", { message: \"getUserMedia() is not supported by your browser\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.open || this.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.isReadyToScan) {\n\t\t\tthis.loading = true;\n\t\t}\n\n\t\tconst video = this._getVideoElement();\n\t\tif (video.srcObject) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst stream = await this._getUserPermission();\n\t\t\tvideo.addEventListener(\"loadeddata\", this._handleVideoPlayingBound);\n\t\t\tvideo.srcObject = stream;\n\t\t} catch (error) {\n\t\t\tthis.fireDecoratorEvent(\"scan-error\", { message: (error as Error).message });\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tsuper.onEnterDOM();\n\t\twindow.addEventListener(\"resize\", this._handleCaptureRegionBound);\n\t}\n\n\tonExitDOM() {\n\t\tsuper.onExitDOM();\n\t\twindow.removeEventListener(\"resize\", this._handleCaptureRegionBound);\n\t}\n\n\tget _open() {\n\t\treturn this.open && this.isReadyToScan;\n\t}\n\n\tget _cancelButtonText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT);\n\t}\n\n\tget _busyIndicatorText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_LOADING_TXT);\n\t}\n\n\t_hasGetUserMedia() {\n\t\treturn !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n\t}\n\n\t_getUserPermission() {\n\t\treturn navigator.mediaDevices.getUserMedia(defaultMediaConstraints);\n\t}\n\n\t_getVideoElement() {\n\t\treturn this.shadowRoot!.querySelector<HTMLVideoElement>(\".ui5-barcode-scanner-dialog-video\")!;\n\t}\n\n\t_getOverlayCanvasElement() {\n\t\treturn this.shadowRoot!.querySelector<HTMLCanvasElement>(\".ui5-barcode-scanner-dialog-overlay\")!;\n\t}\n\n\t/**\n\t * CALCULATIONS\n\t *\n\t * The following methods are used to calculate the capture region\n\t * and draw it on the overlay canvas.\n\t * The capture region is a square area in the center of the video element\n\t * where the barcode scanning is performed.\n\t * The region is defined as a proportion of the video element's dimensions.\n\t * The overlay canvas is used to draw a semi-transparent black overlay\n\t * over the video element and a red border around the capture region.\n\t * The overlay canvas is updated on every frame to ensure the capture region is always visible.\n\t * The capture region is used to crop the video frame and extract the barcode image.\n\t * The extracted image is then processed by the zxing-js library to decode the barcode.\n\t */\n\n\t_calculateCaptureRegion(clientWidth: number, clientHeight: number) {\n\t\t// Define the maximum scan size as a proportion of the video element\n\t\tconst maxScanProportion = 0.66666667; // 2:3\n\t\t// Calculate maximum square dimension based on video dimensions and max proportion\n\t\tconst maxScanDimension = Math.min(clientWidth, clientHeight) * maxScanProportion;\n\t\t// Calculate offset to center the square scan region\n\t\tconst xOffset = (clientWidth - maxScanDimension) / 2;\n\t\tconst yOffset = (clientHeight - maxScanDimension) / 2;\n\t\t// Calculate the width and height of the scan region\n\t\tconst scanWidth = Math.floor(maxScanDimension);\n\t\tconst scanHeight = Math.floor(maxScanDimension);\n\n\t\treturn {\n\t\t\tscanHeight,\n\t\t\tscanWidth,\n\t\t\txOffset,\n\t\t\tyOffset,\n\t\t};\n\t}\n\n\t_drawCaptureRegion() {\n\t\tconst videoElement = this._getVideoElement();\n\t\tconst canvasElement = this._getOverlayCanvasElement();\n\t\tconst context = canvasElement.getContext(\"2d\")!;\n\n\t\tconst videoClientWidth = videoElement.clientWidth;\n\t\tconst videoClientHeight = videoElement.clientHeight;\n\n\t\t// Set canvas dimensions to match the video element's dimensions\n\t\tcanvasElement.width = videoClientWidth;\n\t\tcanvasElement.height = videoClientHeight;\n\n\t\t// Clear the canvas\n\t\tcontext.clearRect(0, 0, videoClientWidth, videoClientHeight);\n\t\t// Calculate the capture region\n\t\tconst captureRegion = this._calculateCaptureRegion(videoClientWidth, videoClientHeight);\n\n\t\t// Draw a semi-transparent black overlay over the video\n\t\tcontext.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n\t\tcontext.fillRect(0, 0, videoClientWidth, videoClientHeight);\n\t\tcontext.clearRect(captureRegion.xOffset, captureRegion.yOffset, captureRegion.scanWidth, captureRegion.scanHeight);\n\n\t\t// Draw red border around the capture region\n\t\tcontext.strokeStyle = \"red\";\n\t\tcontext.lineWidth = 1;\n\t\tcontext.strokeRect(captureRegion.xOffset, captureRegion.yOffset, captureRegion.scanWidth, captureRegion.scanHeight);\n\n\t\t// Display the overlay\n\t\tcanvasElement.style.display = \"block\";\n\t}\n\n\t_getTempCanvasElement() {\n\t\tif (!this._tempCanvas) {\n\t\t\tthis._tempCanvas = document.createElement(\"canvas\");\n\t\t}\n\t\treturn this._tempCanvas;\n\t}\n\n\t_captureFrame() {\n\t\tconst video = this._getVideoElement();\n\t\tconst tempCanvas = this._getTempCanvasElement();\n\t\tconst context = tempCanvas.getContext(\"2d\")!;\n\n\t\tconst videoWidth = video.videoWidth;\n\t\tconst videoHeight = video.videoHeight;\n\t\tconst clientWidth = video.clientWidth;\n\t\tconst clientHeight = video.clientHeight;\n\n\t\tconst captureRegion = this._calculateCaptureRegion(clientWidth, clientHeight);\n\n\t\t// Calculate the ratio of videoSize to clientSize\n\t\tconst ratioX = videoWidth / clientWidth;\n\t\tconst ratioY = videoHeight / clientHeight;\n\t\tconst scale = Math.min(ratioX, ratioY);\n\n\t\t// Calculate the scaled capture region\n\t\tconst scaledXOffset = captureRegion.xOffset * scale;\n\t\tconst scaledYOffset = captureRegion.yOffset * scale;\n\t\tconst scaledScanWidth = captureRegion.scanWidth * scale;\n\t\tconst scaledScanHeight = captureRegion.scanHeight * scale;\n\n\t\t// Set canvas dimensions to match the capture region dimensions\n\t\ttempCanvas.width = captureRegion.scanWidth;\n\t\ttempCanvas.height = captureRegion.scanHeight;\n\n\t\t// Clear the canvas\n\t\tcontext.clearRect(0, 0, tempCanvas.width, tempCanvas.height);\n\n\t\t// Correct positioning if aspect ratios are different\n\t\tconst positionX = (videoWidth - clientWidth * scale) / 2;\n\t\tconst positionY = (videoHeight - clientHeight * scale) / 2;\n\n\t\t// Calculate final source position considering the video element's offset\n\t\tconst finalXOffset = scaledXOffset + positionX;\n\t\tconst finalYOffset = scaledYOffset + positionY;\n\n\t\t// Draw the portion of the video on the canvas\n\t\tcontext.drawImage(\n\t\t\tvideo,\n\t\t\tfinalXOffset, finalYOffset, scaledScanWidth, scaledScanHeight, // Source rectangle\n\t\t\t0, 0, tempCanvas.width, tempCanvas.height, // Destination rectangle\n\t\t);\n\n\t\treturn tempCanvas;\n\t}\n\n\t/**\n\t * HANDLERS\n\t */\n\n\tasync _processFrame() {\n\t\ttry {\n\t\t\tconst canvas = this._captureFrame();\n\t\t\tconst dataUrl = canvas.toDataURL();\n\t\t\tconst result = await this._codeReader.decodeFromImageUrl(dataUrl);\n\n\t\t\tthis._handleScanSuccess(result);\n\t\t} catch (error) {\n\t\t\tthis._handleScanError(error as Exception);\n\t\t}\n\t}\n\n\t_handleScanSuccess(result: Result) {\n\t\tthis.fireDecoratorEvent(\"scan-success\", {\n\t\t\ttext: result.getText(),\n\t\t\trawBytes: result.getRawBytes(),\n\t\t\tformat: BarcodeFormat[result.getBarcodeFormat()] as BarcodeFormatString,\n\t\t});\n\t}\n\n\t_handleScanError(error: Exception) {\n\t\tif (error instanceof NotFoundException) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"scan-error\", { message: error.message });\n\t}\n\n\t_handleVideoPlaying() {\n\t\tconst FRAME_PROCESSING_INTERVAL = 200; // 5 frames per second\n\n\t\tthis.loading = false;\n\t\tthis.isReadyToScan = true;\n\n\t\t// Wait for the next animation frame before drawing the capture region\n\t\trequestAnimationFrame(() => {\n\t\t\tthis._drawCaptureRegion();\n\t\t});\n\n\t\t// Ensure any existing interval is cleared before setting a new one\n\t\tif (this._scanInterval) {\n\t\t\tclearInterval(this._scanInterval);\n\t\t}\n\n\t\tthis._scanInterval = setInterval(() => {\n\t\t\tthis._processFrame();\n\t\t}, FRAME_PROCESSING_INTERVAL);\n\t}\n\n\t_handleDrawCaptureRegion() {\n\t\tthis._drawCaptureRegion();\n\t}\n\n\t_closeDialog() {\n\t\tthis._resetReader();\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_resetReader() {\n\t\tconst video = this._getVideoElement();\n\t\tvideo.pause();\n\n\t\tif (video.srcObject) {\n\t\t\tconst stream = video.srcObject as MediaStream;\n\t\t\tconst tracks = stream.getTracks();\n\t\t\ttracks.forEach(track => track.stop());\n\t\t}\n\n\t\tvideo.srcObject = null;\n\t\tvideo.removeEventListener(\"loadeddata\", this._handleVideoPlayingBound);\n\n\t\tif (this._scanInterval) {\n\t\t\tclearInterval(this._scanInterval);\n\t\t\tthis._scanInterval = null;\n\t\t}\n\n\t\tif (this._codeReader) {\n\t\t\tthis._codeReader.reset();\n\t\t}\n\n\t\tconst overlay = this._getOverlayCanvasElement();\n\t\toverlay.style.display = \"none\";\n\n\t\t// Reset the ready state\n\t\tthis.isReadyToScan = false;\n\t}\n}\n\nBarcodeScannerDialog.define();\n\nexport default BarcodeScannerDialog;\nexport type {\n\tBarcodeScannerDialogScanErrorEventDetail,\n\tBarcodeScannerDialogScanSuccessEventDetail,\n\tBarcodeFormatString,\n};\n"]}
@@ -87,6 +87,8 @@ type DynamicPageAccessibilityAttributes = {
87
87
  * @csspart content - Used to style the content of the component
88
88
  * @csspart fit-content - Used to style the fit content container of the component.
89
89
  * @csspart footer - Used to style the footer of the component
90
+ * @ui5subcomponent DynamicPageHeader
91
+ * @ui5subcomponent DynamicPageTitle
90
92
  */
91
93
  declare class DynamicPage extends UI5Element {
92
94
  eventDetails: {
@@ -88,6 +88,8 @@ const SCROLL_THRESHOLD = 10; // px
88
88
  * @csspart content - Used to style the content of the component
89
89
  * @csspart fit-content - Used to style the fit content container of the component.
90
90
  * @csspart footer - Used to style the footer of the component
91
+ * @ui5subcomponent DynamicPageHeader
92
+ * @ui5subcomponent DynamicPageTitle
91
93
  */
92
94
  let DynamicPage = DynamicPage_1 = class DynamicPage extends UI5Element {
93
95
  constructor() {
@@ -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-strict.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 type { AriaLandmarkRole } from \"@ui5/webcomponents-base\";\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\nimport type { Slot, DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n\ntype DynamicPageHeaderRoles = Extract<AriaLandmarkRole, \"none\" | \"banner\" | \"region\">;\ntype DynamicPageContentRoles = Extract<AriaLandmarkRole, \"none\" | \"main\" | \"region\" | \"form\">;\ntype DynamicPageFooterRoles = Extract<AriaLandmarkRole, \"none\" | \"contentinfo\" | \"region\">;\ntype DynamicPageRootRoles = Extract<AriaLandmarkRole, \"none\" | \"main\" | \"region\">;\ntype DynamicPageAccessibilityAttributes = {\n\troot?: {\n\t\trole?: DynamicPageRootRoles,\n\t\tname?: string,\n\t},\n\theader?: {\n\t\trole?: DynamicPageHeaderRoles,\n\t\tname?: string,\n\t},\n\tcontent?: {\n\t\trole?: DynamicPageContentRoles,\n\t\tname?: string,\n\t},\n\tfooter?: {\n\t\trole?: DynamicPageFooterRoles,\n\t\tname?: string,\n\t},\n};\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!: DefaultSlot<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!: Slot<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!: Slot<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!: Slot<HTMLElement>;\n\n\t/**\n\t* Defines additional accessibility attributes on different areas of the component.\n\t*\n\t* The accessibilityAttributes object has the following fields,\n\t* where each field is an object supporting one or more accessibility attributes:\n\t*\n\t* - **root**: `root.role` and `root.name`.\n\t* - **header**: `header.role` and `header.name`.\n\t* - **content**: `content.role` and `content.name`.\n\t* - **footer**: `footer.role` and `footer.name`.\n\t*\n\t* The accessibility attributes support the following values:\n\t*\n\t* - **role**: Defines the accessible ARIA landmark role of the area.\n\t* Accepts the following values per section:\n\t* `root` — `none`, `main`, `region`;\n\t* `header` — `none`, `banner`, `region`;\n\t* `content` — `none`, `main`, `region`, `form`;\n\t* `footer` — `none`, `contentinfo`, `region`.\n\t*\n\t* - **name**: Defines the accessible ARIA name of the area.\n\t* Accepts any string.\n\t*\n\t* @default {}\n\t* @public\n\t* @since 2.24.0\n\t*/\n\t@property({ type: Object })\n\taccessibilityAttributes: DynamicPageAccessibilityAttributes = {};\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\tif (this.dynamicPageHeader) {\n\t\t\tthis.dynamicPageHeader._snapped = this._headerSnapped;\n\t\t}\n\t}\n\n\tget endAreaHeight() {\n\t\treturn this.showFooter ? this.footerWrapper?.getBoundingClientRect().height || 0 : 0;\n\t}\n\n\tget scrollPaddingTop() {\n\t\tconst titleHeight = this.dynamicPageTitle?.getBoundingClientRect().height || 0;\n\t\tconst headerHeight = this.dynamicPageHeader?.getBoundingClientRect().height || 0;\n\n\t\tif (this._headerSnapped) {\n\t\t\treturn titleHeight;\n\t\t}\n\n\t\tconst fullHeight = headerHeight + titleHeight;\n\t\tconst scrollTop = this.scrollContainer?.scrollTop || 0;\n\n\t\treturn Math.max(titleHeight, fullHeight - scrollTop);\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 footerWrapper() {\n\t\treturn this.shadowRoot?.querySelector(\".ui5-dynamic-page-footer\");\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 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\tget headerAriaLabel() {\n\t\treturn this.accessibilityAttributes.header?.name || (this.hasHeading ? this._headerLabel : undefined);\n\t}\n\n\tget _headerRole() { return this.accessibilityAttributes.header?.role; }\n\tget _rootRole() { return this.accessibilityAttributes.root?.role; }\n\tget _rootAriaLabel() { return this.accessibilityAttributes.root?.name; }\n\tget _contentRole() { return this.accessibilityAttributes.content?.role; }\n\tget _contentAriaLabel() { return this.accessibilityAttributes.content?.name; }\n\tget _footerRole() { return this.accessibilityAttributes.footer?.role; }\n\tget _footerAriaLabel() { return this.accessibilityAttributes.footer?.name; }\n\n\tget _hidePinButton() {\n\t\treturn this.hidePinButton || isPhone();\n\t}\n\n\tget _actionsBarStickyTop(): number {\n\t\tconst titleHeight = this.dynamicPageTitle?.getBoundingClientRect().height || 0;\n\t\tconst headerHeight = this.headerInTitle ? (this.dynamicPageHeader?.getBoundingClientRect().height || 0) : 0;\n\t\treturn titleHeight + headerHeight;\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\treturn;\n\t\t}\n\n\t\tif (!this.scrollContainer) {\n\t\t\tthis._headerSnapped = snapped;\n\t\t\tthis.showHeaderInStickArea = snapped;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._toggleHeader();\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 || !this.scrollContainer) {\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 && 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 && 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\tif (!this.scrollContainer) {\n\t\t\treturn;\n\t\t}\n\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\tonExpandHoverIn() {\n\t\tthis.dynamicPageTitle?.setAttribute(\"hovered\", \"\");\n\t}\n\n\tonExpandHoverOut() {\n\t\tthis.dynamicPageTitle?.removeAttribute(\"hovered\");\n\t}\n\n\tonContentFocusIn(e: FocusEvent) {\n\t\t// composedPath()[0] is the actual focused element inside shadow DOM (e.g. a button inside\n\t\t// a web component host). Must be captured synchronously - composedPath() returns [] inside RAF.\n\t\tconst target = e.composedPath()[0] as HTMLElement;\n\n\t\t// Ignore transient focus-trap sentinels (e.g. the Table's roving-tabindex before/after\n\t\t// elements) which have no layout box on at least one axis. Scrolling such an element into\n\t\t// view would fight the real focus target's own scroll handling and move the viewport away\n\t\t// from the focused element. Real focusables have a non-zero box on both axes.\n\t\tif (!target || target.offsetWidth === 0 || target.offsetHeight === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setScrollPadding({ start: this.scrollPaddingTop, end: this.endAreaHeight });\n\n\t\t// Elements partially hidden behind sticky header/footer appear \"in view\" to the browser\n\t\t// but are obscured. Scroll only if the target is actually behind the sticky areas.\n\t\t// Note: browsers don't reflect dynamic scroll-padding changes, so we check manually.\n\t\trequestAnimationFrame(() => {\n\t\t\tconst scrollContainer = this.scrollContainer;\n\t\t\tif (!scrollContainer) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst rect = target.getBoundingClientRect();\n\t\t\tconst containerRect = scrollContainer.getBoundingClientRect();\n\t\t\tconst topObscured = rect.top < containerRect.top + this.scrollPaddingTop;\n\t\t\tconst bottomObscured = rect.bottom > containerRect.bottom - this.endAreaHeight;\n\t\t\tif (topObscured || bottomObscured) {\n\t\t\t\ttarget.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n\t\t\t}\n\t\t});\n\t}\n\n\tonContentFocusOut() {\n\t\t// Reset scroll padding when focus leaves content (e.g., moves to sticky header).\n\t\t// The sticky header is part of the scrollable area, so keeping padding causes unwanted scroll.\n\t\tthis.setScrollPadding({ start: 0, end: 0 });\n\t}\n\n\tsetScrollPadding(padding: { start: number, end: number }) {\n\t\tthis.scrollContainer?.style.setProperty(\"scroll-padding-top\", `${padding.start}px`);\n\t\tthis.scrollContainer?.style.setProperty(\"scroll-padding-bottom\", `${padding.end}px`);\n\t}\n}\n\nDynamicPage.define();\n\nexport default DynamicPage;\n\nexport type { DynamicPageAccessibilityAttributes };\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-strict.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 type { AriaLandmarkRole } from \"@ui5/webcomponents-base\";\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\nimport type { Slot, DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n\ntype DynamicPageHeaderRoles = Extract<AriaLandmarkRole, \"none\" | \"banner\" | \"region\">;\ntype DynamicPageContentRoles = Extract<AriaLandmarkRole, \"none\" | \"main\" | \"region\" | \"form\">;\ntype DynamicPageFooterRoles = Extract<AriaLandmarkRole, \"none\" | \"contentinfo\" | \"region\">;\ntype DynamicPageRootRoles = Extract<AriaLandmarkRole, \"none\" | \"main\" | \"region\">;\ntype DynamicPageAccessibilityAttributes = {\n\troot?: {\n\t\trole?: DynamicPageRootRoles,\n\t\tname?: string,\n\t},\n\theader?: {\n\t\trole?: DynamicPageHeaderRoles,\n\t\tname?: string,\n\t},\n\tcontent?: {\n\t\trole?: DynamicPageContentRoles,\n\t\tname?: string,\n\t},\n\tfooter?: {\n\t\trole?: DynamicPageFooterRoles,\n\t\tname?: string,\n\t},\n};\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 * @ui5subcomponent DynamicPageHeader\n * @ui5subcomponent DynamicPageTitle\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!: DefaultSlot<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!: Slot<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!: Slot<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!: Slot<HTMLElement>;\n\n\t/**\n\t* Defines additional accessibility attributes on different areas of the component.\n\t*\n\t* The accessibilityAttributes object has the following fields,\n\t* where each field is an object supporting one or more accessibility attributes:\n\t*\n\t* - **root**: `root.role` and `root.name`.\n\t* - **header**: `header.role` and `header.name`.\n\t* - **content**: `content.role` and `content.name`.\n\t* - **footer**: `footer.role` and `footer.name`.\n\t*\n\t* The accessibility attributes support the following values:\n\t*\n\t* - **role**: Defines the accessible ARIA landmark role of the area.\n\t* Accepts the following values per section:\n\t* `root` — `none`, `main`, `region`;\n\t* `header` — `none`, `banner`, `region`;\n\t* `content` — `none`, `main`, `region`, `form`;\n\t* `footer` — `none`, `contentinfo`, `region`.\n\t*\n\t* - **name**: Defines the accessible ARIA name of the area.\n\t* Accepts any string.\n\t*\n\t* @default {}\n\t* @public\n\t* @since 2.24.0\n\t*/\n\t@property({ type: Object })\n\taccessibilityAttributes: DynamicPageAccessibilityAttributes = {};\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\tif (this.dynamicPageHeader) {\n\t\t\tthis.dynamicPageHeader._snapped = this._headerSnapped;\n\t\t}\n\t}\n\n\tget endAreaHeight() {\n\t\treturn this.showFooter ? this.footerWrapper?.getBoundingClientRect().height || 0 : 0;\n\t}\n\n\tget scrollPaddingTop() {\n\t\tconst titleHeight = this.dynamicPageTitle?.getBoundingClientRect().height || 0;\n\t\tconst headerHeight = this.dynamicPageHeader?.getBoundingClientRect().height || 0;\n\n\t\tif (this._headerSnapped) {\n\t\t\treturn titleHeight;\n\t\t}\n\n\t\tconst fullHeight = headerHeight + titleHeight;\n\t\tconst scrollTop = this.scrollContainer?.scrollTop || 0;\n\n\t\treturn Math.max(titleHeight, fullHeight - scrollTop);\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 footerWrapper() {\n\t\treturn this.shadowRoot?.querySelector(\".ui5-dynamic-page-footer\");\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 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\tget headerAriaLabel() {\n\t\treturn this.accessibilityAttributes.header?.name || (this.hasHeading ? this._headerLabel : undefined);\n\t}\n\n\tget _headerRole() { return this.accessibilityAttributes.header?.role; }\n\tget _rootRole() { return this.accessibilityAttributes.root?.role; }\n\tget _rootAriaLabel() { return this.accessibilityAttributes.root?.name; }\n\tget _contentRole() { return this.accessibilityAttributes.content?.role; }\n\tget _contentAriaLabel() { return this.accessibilityAttributes.content?.name; }\n\tget _footerRole() { return this.accessibilityAttributes.footer?.role; }\n\tget _footerAriaLabel() { return this.accessibilityAttributes.footer?.name; }\n\n\tget _hidePinButton() {\n\t\treturn this.hidePinButton || isPhone();\n\t}\n\n\tget _actionsBarStickyTop(): number {\n\t\tconst titleHeight = this.dynamicPageTitle?.getBoundingClientRect().height || 0;\n\t\tconst headerHeight = this.headerInTitle ? (this.dynamicPageHeader?.getBoundingClientRect().height || 0) : 0;\n\t\treturn titleHeight + headerHeight;\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\treturn;\n\t\t}\n\n\t\tif (!this.scrollContainer) {\n\t\t\tthis._headerSnapped = snapped;\n\t\t\tthis.showHeaderInStickArea = snapped;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._toggleHeader();\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 || !this.scrollContainer) {\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 && 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 && 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\tif (!this.scrollContainer) {\n\t\t\treturn;\n\t\t}\n\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\tonExpandHoverIn() {\n\t\tthis.dynamicPageTitle?.setAttribute(\"hovered\", \"\");\n\t}\n\n\tonExpandHoverOut() {\n\t\tthis.dynamicPageTitle?.removeAttribute(\"hovered\");\n\t}\n\n\tonContentFocusIn(e: FocusEvent) {\n\t\t// composedPath()[0] is the actual focused element inside shadow DOM (e.g. a button inside\n\t\t// a web component host). Must be captured synchronously - composedPath() returns [] inside RAF.\n\t\tconst target = e.composedPath()[0] as HTMLElement;\n\n\t\t// Ignore transient focus-trap sentinels (e.g. the Table's roving-tabindex before/after\n\t\t// elements) which have no layout box on at least one axis. Scrolling such an element into\n\t\t// view would fight the real focus target's own scroll handling and move the viewport away\n\t\t// from the focused element. Real focusables have a non-zero box on both axes.\n\t\tif (!target || target.offsetWidth === 0 || target.offsetHeight === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setScrollPadding({ start: this.scrollPaddingTop, end: this.endAreaHeight });\n\n\t\t// Elements partially hidden behind sticky header/footer appear \"in view\" to the browser\n\t\t// but are obscured. Scroll only if the target is actually behind the sticky areas.\n\t\t// Note: browsers don't reflect dynamic scroll-padding changes, so we check manually.\n\t\trequestAnimationFrame(() => {\n\t\t\tconst scrollContainer = this.scrollContainer;\n\t\t\tif (!scrollContainer) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst rect = target.getBoundingClientRect();\n\t\t\tconst containerRect = scrollContainer.getBoundingClientRect();\n\t\t\tconst topObscured = rect.top < containerRect.top + this.scrollPaddingTop;\n\t\t\tconst bottomObscured = rect.bottom > containerRect.bottom - this.endAreaHeight;\n\t\t\tif (topObscured || bottomObscured) {\n\t\t\t\ttarget.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n\t\t\t}\n\t\t});\n\t}\n\n\tonContentFocusOut() {\n\t\t// Reset scroll padding when focus leaves content (e.g., moves to sticky header).\n\t\t// The sticky header is part of the scrollable area, so keeping padding causes unwanted scroll.\n\t\tthis.setScrollPadding({ start: 0, end: 0 });\n\t}\n\n\tsetScrollPadding(padding: { start: number, end: number }) {\n\t\tthis.scrollContainer?.style.setProperty(\"scroll-padding-top\", `${padding.start}px`);\n\t\tthis.scrollContainer?.style.setProperty(\"scroll-padding-bottom\", `${padding.end}px`);\n\t}\n}\n\nDynamicPage.define();\n\nexport default DynamicPage;\n\nexport type { DynamicPageAccessibilityAttributes };\n"]}
@@ -19,7 +19,7 @@ import type FilterItemOption from "./FilterItemOption.js";
19
19
  * @constructor
20
20
  * @extends UI5Element
21
21
  * @abstract
22
- * @since 1.0.0-rc.16
22
+ * @since 1.0.0
23
23
  * @public
24
24
  */
25
25
  declare class FilterItem extends UI5Element {
@@ -26,7 +26,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
26
26
  * @constructor
27
27
  * @extends UI5Element
28
28
  * @abstract
29
- * @since 1.0.0-rc.16
29
+ * @since 1.0.0
30
30
  * @public
31
31
  */
32
32
  let FilterItem = class FilterItem extends UI5Element {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterItem.js","sourceRoot":"","sources":["../src/FilterItem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAGrF;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;CAwBlC,CAAA;AAjBA;IADC,QAAQ,EAAE;wCACG;AASd;IADC,QAAQ,EAAE;kDACa;AAOxB;IADC,IAAI,EAAE;0CACyB;AAvB3B,UAAU;IADf,aAAa,CAAC,iBAAiB,CAAC;GAC3B,UAAU,CAwBf;AAED,UAAU,CAAC,MAAM,EAAE,CAAC;AAEpB,eAAe,UAAU,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type FilterItemOption from \"./FilterItemOption.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-filter-item` component defines the filtering criteria for data in `ui5-view-settings-dialog`.\n * It represents a single filter category that contains multiple filter options that users can select.\n *\n * ### Usage\n *\n * The `ui5-filter-item` is used within the `ui5-view-settings-dialog` to provide filtering options.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FilterItem.js\";`\n * @constructor\n * @extends UI5Element\n * @abstract\n * @since 1.0.0-rc.16\n * @public\n */\n@customElement(\"ui5-filter-item\")\nclass FilterItem extends UI5Element {\n\t/**\n\t * Defines the text of the filter item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the additional text of the filter item.\n\t * This text is typically used to show the number of selected filter options within this category.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tadditionalText?: string;\n\n\t/**\n\t * Defines the filter options available for this filter category.\n\t * @public\n\t */\n\t@slot()\n\tvalues!: Slot<FilterItemOption>;\n}\n\nFilterItem.define();\n\nexport default FilterItem;\n"]}
1
+ {"version":3,"file":"FilterItem.js","sourceRoot":"","sources":["../src/FilterItem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAGrF;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;CAwBlC,CAAA;AAjBA;IADC,QAAQ,EAAE;wCACG;AASd;IADC,QAAQ,EAAE;kDACa;AAOxB;IADC,IAAI,EAAE;0CACyB;AAvB3B,UAAU;IADf,aAAa,CAAC,iBAAiB,CAAC;GAC3B,UAAU,CAwBf;AAED,UAAU,CAAC,MAAM,EAAE,CAAC;AAEpB,eAAe,UAAU,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type FilterItemOption from \"./FilterItemOption.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-filter-item` component defines the filtering criteria for data in `ui5-view-settings-dialog`.\n * It represents a single filter category that contains multiple filter options that users can select.\n *\n * ### Usage\n *\n * The `ui5-filter-item` is used within the `ui5-view-settings-dialog` to provide filtering options.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FilterItem.js\";`\n * @constructor\n * @extends UI5Element\n * @abstract\n * @since 1.0.0\n * @public\n */\n@customElement(\"ui5-filter-item\")\nclass FilterItem extends UI5Element {\n\t/**\n\t * Defines the text of the filter item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the additional text of the filter item.\n\t * This text is typically used to show the number of selected filter options within this category.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tadditionalText?: string;\n\n\t/**\n\t * Defines the filter options available for this filter category.\n\t * @public\n\t */\n\t@slot()\n\tvalues!: Slot<FilterItemOption>;\n}\n\nFilterItem.define();\n\nexport default FilterItem;\n"]}
@@ -18,7 +18,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
18
18
  * @constructor
19
19
  * @extends UI5Element
20
20
  * @abstract
21
- * @since 1.0.0-rc.16
21
+ * @since 1.0.0
22
22
  * @public
23
23
  */
24
24
  declare class FilterItemOption extends UI5Element {
@@ -26,7 +26,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
26
26
  * @constructor
27
27
  * @extends UI5Element
28
28
  * @abstract
29
- * @since 1.0.0-rc.16
29
+ * @since 1.0.0
30
30
  * @public
31
31
  */
32
32
  let FilterItemOption = class FilterItemOption extends UI5Element {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterItemOption.js","sourceRoot":"","sources":["../src/FilterItemOption.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QASC;;;;WAIG;QAEH,aAAQ,GAAG,KAAK,CAAC;IAClB,CAAC;CAAA,CAAA;AATA;IADC,QAAQ,EAAE;8CACG;AAQd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACX;AAfZ,gBAAgB;IADrB,aAAa,CAAC,wBAAwB,CAAC;GAClC,gBAAgB,CAgBrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-filter-item-option` component defines individual filter values within a `ui5-filter-item`.\n * It represents a single selectable option that users can choose to filter data.\n *\n * ### Usage\n *\n * The `ui5-filter-item-option` is used as a child component within `ui5-filter-item` in the context\n * of `ui5-view-settings-dialog`. Each option represents a specific value that can be used for filtering\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FilterItemOption.js\";`\n * @constructor\n * @extends UI5Element\n * @abstract\n * @since 1.0.0-rc.16\n * @public\n */\n@customElement(\"ui5-filter-item-option\")\nclass FilterItemOption extends UI5Element {\n\t/**\n\t * Defines the text of the filter option.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines if the filter option is selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n}\n\nFilterItemOption.define();\n\nexport default FilterItemOption;\n"]}
1
+ {"version":3,"file":"FilterItemOption.js","sourceRoot":"","sources":["../src/FilterItemOption.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QASC;;;;WAIG;QAEH,aAAQ,GAAG,KAAK,CAAC;IAClB,CAAC;CAAA,CAAA;AATA;IADC,QAAQ,EAAE;8CACG;AAQd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACX;AAfZ,gBAAgB;IADrB,aAAa,CAAC,wBAAwB,CAAC;GAClC,gBAAgB,CAgBrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-filter-item-option` component defines individual filter values within a `ui5-filter-item`.\n * It represents a single selectable option that users can choose to filter data.\n *\n * ### Usage\n *\n * The `ui5-filter-item-option` is used as a child component within `ui5-filter-item` in the context\n * of `ui5-view-settings-dialog`. Each option represents a specific value that can be used for filtering\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/FilterItemOption.js\";`\n * @constructor\n * @extends UI5Element\n * @abstract\n * @since 1.0.0\n * @public\n */\n@customElement(\"ui5-filter-item-option\")\nclass FilterItemOption extends UI5Element {\n\t/**\n\t * Defines the text of the filter option.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines if the filter option is selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n}\n\nFilterItemOption.define();\n\nexport default FilterItemOption;\n"]}
@@ -116,7 +116,7 @@ type FCLAccessibilityAttributes = {
116
116
  * @constructor
117
117
  * @extends UI5Element
118
118
  * @public
119
- * @since 1.0.0-rc.8
119
+ * @since 1.0.0
120
120
  */
121
121
  declare class FlexibleColumnLayout extends UI5Element {
122
122
  eventDetails: {
@@ -96,7 +96,7 @@ const COLUMN_MIN_WIDTH = 248;
96
96
  * @constructor
97
97
  * @extends UI5Element
98
98
  * @public
99
- * @since 1.0.0-rc.8
99
+ * @since 1.0.0
100
100
  */
101
101
  let FlexibleColumnLayout = FlexibleColumnLayout_1 = class FlexibleColumnLayout extends UI5Element {
102
102
  constructor() {