@ui5/webcomponents-fiori 2.0.0-rc.3 → 2.0.0-rc.4

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 (262) hide show
  1. package/.env.testing +4 -0
  2. package/CHANGELOG.md +122 -0
  3. package/README.md +2 -18
  4. package/dist/DynamicPage.d.ts +163 -0
  5. package/dist/DynamicPage.js +298 -0
  6. package/dist/DynamicPage.js.map +1 -0
  7. package/dist/DynamicPageHeader.d.ts +38 -0
  8. package/dist/DynamicPageHeader.js +58 -0
  9. package/dist/DynamicPageHeader.js.map +1 -0
  10. package/dist/DynamicPageHeaderActions.d.ts +72 -0
  11. package/dist/DynamicPageHeaderActions.js +136 -0
  12. package/dist/DynamicPageHeaderActions.js.map +1 -0
  13. package/dist/DynamicPageTitle.d.ts +147 -0
  14. package/dist/DynamicPageTitle.js +206 -0
  15. package/dist/DynamicPageTitle.js.map +1 -0
  16. package/dist/NotificationList.d.ts +23 -0
  17. package/dist/NotificationList.js +55 -0
  18. package/dist/NotificationList.js.map +1 -0
  19. package/dist/NotificationListGroupItem.d.ts +28 -23
  20. package/dist/NotificationListGroupItem.js +78 -62
  21. package/dist/NotificationListGroupItem.js.map +1 -1
  22. package/dist/NotificationListGroupList.d.ts +16 -0
  23. package/dist/NotificationListGroupList.js +33 -0
  24. package/dist/NotificationListGroupList.js.map +1 -0
  25. package/dist/NotificationListItem.d.ts +79 -7
  26. package/dist/NotificationListItem.js +202 -28
  27. package/dist/NotificationListItem.js.map +1 -1
  28. package/dist/NotificationListItemBase.d.ts +5 -69
  29. package/dist/NotificationListItemBase.js +29 -120
  30. package/dist/NotificationListItemBase.js.map +1 -1
  31. package/dist/ShellBar.d.ts +10 -38
  32. package/dist/ShellBar.js +14 -88
  33. package/dist/ShellBar.js.map +1 -1
  34. package/dist/SideNavigation.js +4 -4
  35. package/dist/SideNavigation.js.map +1 -1
  36. package/dist/SideNavigationSelectableItemBase.js +1 -0
  37. package/dist/SideNavigationSelectableItemBase.js.map +1 -1
  38. package/dist/ViewSettingsDialog.js +5 -3
  39. package/dist/ViewSettingsDialog.js.map +1 -1
  40. package/dist/Wizard.d.ts +1 -1
  41. package/dist/Wizard.js +5 -2
  42. package/dist/Wizard.js.map +1 -1
  43. package/dist/bundle.esm.d.ts +0 -1
  44. package/dist/bundle.esm.js +5 -3
  45. package/dist/bundle.esm.js.map +1 -1
  46. package/dist/css/themes/DynamicPage.css +1 -0
  47. package/dist/css/themes/DynamicPageHeader.css +1 -0
  48. package/dist/css/themes/DynamicPageHeaderActions.css +1 -0
  49. package/dist/css/themes/DynamicPageTitle.css +1 -0
  50. package/dist/css/themes/IllustratedMessage.css +1 -1
  51. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  52. package/dist/css/themes/NotificationListItem.css +1 -1
  53. package/dist/css/themes/NotificationListItemBase.css +1 -1
  54. package/dist/css/themes/NotificationStateIcon.css +1 -0
  55. package/dist/css/themes/ShellBar.css +1 -1
  56. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  57. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  58. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  59. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  60. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  61. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  62. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  63. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  64. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  65. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  66. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  67. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  68. package/dist/custom-elements-internal.json +750 -812
  69. package/dist/custom-elements.json +414 -549
  70. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  71. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  72. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  73. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  74. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  75. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  76. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  77. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  78. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  79. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  80. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  81. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  82. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  83. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  84. package/dist/generated/i18n/i18n-defaults.d.ts +18 -9
  85. package/dist/generated/i18n/i18n-defaults.js +20 -11
  86. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  87. package/dist/generated/js-imports/Illustrations.js +2 -1
  88. package/dist/generated/js-imports/Illustrations.js.map +1 -1
  89. package/dist/generated/templates/BarcodeScannerDialogTemplate.lit.js +1 -1
  90. package/dist/generated/templates/BarcodeScannerDialogTemplate.lit.js.map +1 -1
  91. package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.d.ts +4 -0
  92. package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.js +6 -0
  93. package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.js.map +1 -0
  94. package/dist/generated/templates/DynamicPageHeaderTemplate.lit.d.ts +4 -0
  95. package/dist/generated/templates/DynamicPageHeaderTemplate.lit.js +5 -0
  96. package/dist/generated/templates/DynamicPageHeaderTemplate.lit.js.map +1 -0
  97. package/dist/generated/templates/DynamicPageTemplate.lit.d.ts +4 -0
  98. package/dist/generated/templates/DynamicPageTemplate.lit.js +12 -0
  99. package/dist/generated/templates/DynamicPageTemplate.lit.js.map +1 -0
  100. package/dist/generated/templates/DynamicPageTitleTemplate.lit.d.ts +4 -0
  101. package/dist/generated/templates/DynamicPageTitleTemplate.lit.js +8 -0
  102. package/dist/generated/templates/DynamicPageTitleTemplate.lit.js.map +1 -0
  103. package/dist/generated/templates/NotificationListGroupItemTemplate.lit.js +3 -11
  104. package/dist/generated/templates/NotificationListGroupItemTemplate.lit.js.map +1 -1
  105. package/dist/generated/templates/NotificationListItemTemplate.lit.js +9 -11
  106. package/dist/generated/templates/NotificationListItemTemplate.lit.js.map +1 -1
  107. package/dist/generated/templates/ShellBarPopoverTemplate.lit.js +1 -1
  108. package/dist/generated/templates/ShellBarPopoverTemplate.lit.js.map +1 -1
  109. package/dist/generated/templates/ShellBarTemplate.lit.js +2 -2
  110. package/dist/generated/templates/ShellBarTemplate.lit.js.map +1 -1
  111. package/dist/generated/templates/SideNavigationItemTemplate.lit.js +2 -2
  112. package/dist/generated/templates/SideNavigationItemTemplate.lit.js.map +1 -1
  113. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js +5 -7
  114. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js.map +1 -1
  115. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js +2 -2
  116. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js.map +1 -1
  117. package/dist/generated/templates/SideNavigationTemplate.lit.js +5 -7
  118. package/dist/generated/templates/SideNavigationTemplate.lit.js.map +1 -1
  119. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js +1 -1
  120. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js.map +1 -1
  121. package/dist/generated/templates/ViewSettingsDialogTemplate.lit.js +1 -1
  122. package/dist/generated/templates/ViewSettingsDialogTemplate.lit.js.map +1 -1
  123. package/dist/generated/themes/DynamicPage.css.js +9 -0
  124. package/dist/generated/themes/DynamicPage.css.js.map +1 -0
  125. package/dist/generated/themes/{NotificationOverflowActionsPopover.css.js → DynamicPageHeader.css.js} +2 -2
  126. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -0
  127. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +3 -0
  128. package/dist/generated/themes/DynamicPageHeaderActions.css.js +9 -0
  129. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -0
  130. package/dist/generated/themes/DynamicPageTitle.css.d.ts +3 -0
  131. package/dist/generated/themes/DynamicPageTitle.css.js +9 -0
  132. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -0
  133. package/dist/generated/themes/IllustratedMessage.css.js +1 -1
  134. package/dist/generated/themes/IllustratedMessage.css.js.map +1 -1
  135. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  136. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  137. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  138. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  139. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  140. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  141. package/dist/generated/themes/NotificationStateIcon.css.d.ts +3 -0
  142. package/dist/generated/themes/{NotificationPrioIcon.css.js → NotificationStateIcon.css.js} +2 -2
  143. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -0
  144. package/dist/generated/themes/ShellBar.css.js +1 -1
  145. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  146. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  147. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  148. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  149. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  150. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  151. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  152. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  153. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  154. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  155. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  156. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  157. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  158. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  159. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  160. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  161. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  162. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  163. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  164. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  165. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  166. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  167. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  168. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  169. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  170. package/dist/styles/ToolLayout.css +1 -0
  171. package/dist/styles/ToolLayout.module.css +1 -0
  172. package/dist/types/NotificationListItemImportance.d.ts +16 -0
  173. package/dist/types/NotificationListItemImportance.js +18 -0
  174. package/dist/types/NotificationListItemImportance.js.map +1 -0
  175. package/dist/vscode.html-custom-data.json +57 -152
  176. package/dist/web-types.json +193 -226
  177. package/package.json +8 -9
  178. package/src/BarcodeScannerDialog.hbs +1 -1
  179. package/src/DynamicPage.hbs +58 -0
  180. package/src/DynamicPageHeader.hbs +3 -0
  181. package/src/DynamicPageHeaderActions.hbs +25 -0
  182. package/src/DynamicPageTitle.hbs +45 -0
  183. package/src/NotificationListGroupItem.hbs +31 -72
  184. package/src/NotificationListItem.hbs +46 -50
  185. package/src/ShellBar.hbs +2 -10
  186. package/src/ShellBarPopover.hbs +4 -2
  187. package/src/SideNavigationItem.hbs +2 -0
  188. package/src/SideNavigationPopover.hbs +2 -5
  189. package/src/SideNavigationSubItem.hbs +2 -0
  190. package/src/UploadCollectionItem.hbs +1 -0
  191. package/src/ViewSettingsDialog.hbs +2 -1
  192. package/src/i18n/messagebundle.properties +42 -17
  193. package/src/i18n/messagebundle_en.properties +16 -11
  194. package/src/i18n/messagebundle_en_US_saprigi.properties +16 -11
  195. package/src/themes/DynamicPage.css +150 -0
  196. package/src/themes/DynamicPageHeader.css +11 -0
  197. package/src/themes/DynamicPageHeaderActions.css +49 -0
  198. package/src/themes/DynamicPageTitle.css +153 -0
  199. package/src/themes/IllustratedMessage.css +1 -1
  200. package/src/themes/NotificationListGroupItem.css +27 -21
  201. package/src/themes/NotificationListItem.css +81 -22
  202. package/src/themes/NotificationListItemBase.css +5 -18
  203. package/src/themes/NotificationStateIcon.css +5 -0
  204. package/src/themes/ShellBar.css +8 -0
  205. package/src/themes/base/DynamicPage-parameters.css +18 -0
  206. package/src/themes/base/DynamicPageHeader-parameters.css +8 -0
  207. package/src/themes/base/DynamicPageHeaderActions-parameters.css +7 -0
  208. package/src/themes/base/DynamicPageTitle-parameters.css +19 -0
  209. package/src/themes/base/NotificationListItem-parameters.css +28 -1
  210. package/src/themes/base/ShellBar-parameters.css +0 -3
  211. package/src/themes/sap_belize/DynamicPage-parameters.css +16 -0
  212. package/src/themes/sap_belize_hcb/DynamicPageTitle-parameters.css +6 -0
  213. package/src/themes/sap_belize_hcw/DynamicPageTitle-parameters.css +6 -0
  214. package/src/themes/sap_fiori_3/DynamicPageHeaderActions-parameters.css +5 -0
  215. package/src/themes/sap_fiori_3/DynamicPageTitle-parameters.css +4 -0
  216. package/src/themes/sap_fiori_3/parameters-bundle.css +5 -0
  217. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +5 -0
  218. package/src/themes/sap_fiori_3_hcb/DynamicPageTitle-parameters.css +6 -0
  219. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +5 -0
  220. package/src/themes/sap_fiori_3_hcw/DynamicPageTitle-parameters.css +6 -0
  221. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +5 -0
  222. package/src/themes/sap_horizon/DynamicPageHeaderActions-parameters.css +6 -0
  223. package/src/themes/sap_horizon/DynamicPageTitle-parameters.css +5 -0
  224. package/src/themes/sap_horizon/NotificationListItem-parameters.css +17 -1
  225. package/src/themes/sap_horizon/ShellBar-parameters.css +0 -3
  226. package/src/themes/sap_horizon/parameters-bundle.css +6 -2
  227. package/src/themes/sap_horizon_dark/NotificationListItem-parameters.css +17 -1
  228. package/src/themes/sap_horizon_dark/ShellBar-parameters.css +0 -3
  229. package/src/themes/sap_horizon_dark/parameters-bundle.css +6 -2
  230. package/src/themes/sap_horizon_dark_exp/NotificationListItem-parameters.css +1 -1
  231. package/src/themes/sap_horizon_dark_exp/ShellBar-parameters.css +0 -3
  232. package/src/themes/sap_horizon_dark_exp/parameters-bundle.css +5 -1
  233. package/src/themes/sap_horizon_exp/NotificationListItem-parameters.css +1 -1
  234. package/src/themes/sap_horizon_exp/ShellBar-parameters.css +0 -3
  235. package/src/themes/sap_horizon_exp/parameters-bundle.css +5 -1
  236. package/src/themes/sap_horizon_hcb/DynamicPageTitle-parameters.css +11 -0
  237. package/src/themes/sap_horizon_hcb/NotificationListItem-parameters.css +21 -0
  238. package/src/themes/sap_horizon_hcb/parameters-bundle.css +5 -0
  239. package/src/themes/sap_horizon_hcb_exp/parameters-bundle.css +4 -0
  240. package/src/themes/sap_horizon_hcw/DynamicPageTitle-parameters.css +11 -0
  241. package/src/themes/sap_horizon_hcw/NotificationListItem-parameters.css +21 -0
  242. package/src/themes/sap_horizon_hcw/parameters-bundle.css +6 -0
  243. package/src/themes/sap_horizon_hcw_exp/parameters-bundle.css +4 -0
  244. package/LICENSE.txt +0 -201
  245. package/dist/NotificationAction.d.ts +0 -57
  246. package/dist/NotificationAction.js +0 -63
  247. package/dist/NotificationAction.js.map +0 -1
  248. package/dist/css/themes/NotificationOverflowActionsPopover.css +0 -1
  249. package/dist/css/themes/NotificationPrioIcon.css +0 -1
  250. package/dist/features/CoPilotAnimation.d.ts +0 -1
  251. package/dist/features/CoPilotAnimation.js +0 -7
  252. package/dist/features/CoPilotAnimation.js.map +0 -1
  253. package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.d.ts +0 -4
  254. package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.js +0 -6
  255. package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.js.map +0 -1
  256. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js.map +0 -1
  257. package/dist/generated/themes/NotificationPrioIcon.css.js.map +0 -1
  258. package/src/NotificationOverflowActionsPopover.hbs +0 -21
  259. package/src/themes/NotificationOverflowActionsPopover.css +0 -12
  260. package/src/themes/NotificationPrioIcon.css +0 -17
  261. /package/dist/generated/themes/{NotificationOverflowActionsPopover.css.d.ts → DynamicPage.css.d.ts} +0 -0
  262. /package/dist/generated/themes/{NotificationPrioIcon.css.d.ts → DynamicPageHeader.css.d.ts} +0 -0
package/.env.testing ADDED
@@ -0,0 +1,4 @@
1
+ # .env.testing
2
+ VITE_BUNDLE_PATH="../../dist/bundle.esm.js"
3
+ # take the "development" conditional exports
4
+ NODE_ENV=development
package/CHANGELOG.md CHANGED
@@ -3,6 +3,128 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.0.0-rc.4](https://github.com/SAP/ui5-webcomponents/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2024-05-29)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **ui5-illustrated-mesasge:** update subtitle color ([#8986](https://github.com/SAP/ui5-webcomponents/issues/8986)) ([c9a5120](https://github.com/SAP/ui5-webcomponents/commit/c9a5120912d22980e25adbb042d308fee5201487)), closes [#8984](https://github.com/SAP/ui5-webcomponents/issues/8984)
12
+ * **ui5-notification-list:** fix keyboard issues ([#9040](https://github.com/SAP/ui5-webcomponents/issues/9040)) ([f1c0635](https://github.com/SAP/ui5-webcomponents/commit/f1c0635d6d2b94e94b7ecc311bb49480db1fae6d))
13
+ * **ui5-notification:** implement keyboard navigation spec ([#8975](https://github.com/SAP/ui5-webcomponents/issues/8975)) ([d68c883](https://github.com/SAP/ui5-webcomponents/commit/d68c883f527e57f75bdad5a7a421b3ab8e4efbb0))
14
+ * **ui5-side-navigation-item:** "selected" is no longer announced on every focused item ([#9008](https://github.com/SAP/ui5-webcomponents/issues/9008)) ([8cd3f83](https://github.com/SAP/ui5-webcomponents/commit/8cd3f83e2fcc31d57ebcdd38ee2ceff36150e1d1))
15
+ * **ui5-side-navigation-item:** click event is no longer fired twice ([#8944](https://github.com/SAP/ui5-webcomponents/issues/8944)) ([0dd36ca](https://github.com/SAP/ui5-webcomponents/commit/0dd36ca4b84c3b73fbb9c9cd44cee3d7b6e97d2a))
16
+
17
+
18
+ ### Code Refactoring
19
+
20
+ * **ui5-popup:** rename after-open and after-close events to 'open' and 'close' ([#8946](https://github.com/SAP/ui5-webcomponents/issues/8946)) ([912167d](https://github.com/SAP/ui5-webcomponents/commit/912167d18cd5e365a03513defc570da5bf372715)), closes [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461)
21
+ * **ui5-shellbar:** introducing assistant slot ([#8963](https://github.com/SAP/ui5-webcomponents/issues/8963)) ([2a8c252](https://github.com/SAP/ui5-webcomponents/commit/2a8c252ecf67fce81d5ac7b2a7d949c058de9d17)), closes [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#7887](https://github.com/SAP/ui5-webcomponents/issues/7887)
22
+
23
+
24
+ ### Features
25
+
26
+ * **ui5-dynamic-page:** introduce new component ([#7899](https://github.com/SAP/ui5-webcomponents/issues/7899)) ([3752ce7](https://github.com/SAP/ui5-webcomponents/commit/3752ce701fe915fa0b02ba2b114c40bf3b7d9123))
27
+ * **ui5-li-notification-group:** enhance 'Expand'/'Collapse' tooltip ([#9042](https://github.com/SAP/ui5-webcomponents/issues/9042)) ([08b81c7](https://github.com/SAP/ui5-webcomponents/commit/08b81c7bd852a50f735ab8621cb3e0de69c25497))
28
+ * **ui5-li-notification:** implement new design ([#8426](https://github.com/SAP/ui5-webcomponents/issues/8426)) ([e451cdc](https://github.com/SAP/ui5-webcomponents/commit/e451cdc3709553dcb780f637463dc1b29e8f2971))
29
+
30
+
31
+ ### BREAKING CHANGES
32
+
33
+ * **ui5-notification:** Instead of `ui5-list`, `ui5-notification-list` should be used as a container for `ui5-li-notification-group` and `ui5-li-notification` components.
34
+
35
+ Previously the application developers were defining notifications in this way:
36
+
37
+ ```
38
+ <ui5-list>
39
+ <ui5-li-notification-group title-text="Group Title" >
40
+ <ui5-li-notification..
41
+ ```
42
+ To support accessibility, developers should now use the `ui5-notification-list` as seen below:
43
+
44
+ ```
45
+ <ui5-notification-list>
46
+ <ui5-li-notification-group title-text="Group Title" >
47
+ <ui5-li-notification..
48
+ ```
49
+ * **ui5-shellbar:** 1. The `showCoPilot` property of the `ui5-shellbar` is removed.
50
+
51
+ If you have previously used the `showCoPilot` property:
52
+ ```html
53
+ <ui5-shellbar show-co-pilot></ui5-shellbar>
54
+ ```
55
+ it will no longer work for the component.
56
+
57
+ 2. The `CoPilotAnimation` feature of the `ui5-shellbar` is removed.
58
+
59
+ If you have previously used the `CoPilotAnimation` feature:
60
+ ```js
61
+ import CoPilotAnimation from "@ui5/webcomponents-fiori/dist/features/CoPilotAnimation.js"
62
+ ```
63
+ it will no longer work for the component.
64
+
65
+ 3. The `copilotDomRef` getter of the `ui5-shellbar` is removed.
66
+
67
+ If you have previously used the `copilotDomRef` public getter:
68
+ ```js
69
+ shellbar.copilotDomRef
70
+ ```
71
+
72
+ it will no longer work for the component.
73
+
74
+ 4. The `co-pilot-click` event of the `ui5-shellbar` is removed.
75
+ If you have previously used the `co-pilot-click` public event:
76
+ ```js
77
+ shellbar.addEventListener("ui5-co-pilot-click", function(event) {
78
+ ...
79
+ });
80
+ ```
81
+
82
+ it will no longer work for the component.
83
+
84
+ You can achieve similar functionality with the new slot:
85
+
86
+ HTML:
87
+ ```html
88
+ <ui5-shellbar>
89
+ <ui5-toggle-button id="assistant" icon="sap-icon://da" slot="assistant"></ui5-toggle-button>
90
+ </ui5-shellbar>
91
+ ```
92
+
93
+ JavaScript:
94
+ ```js
95
+ assistant.addEventListener("click", function (event) {
96
+ const toggleButton = event.target;
97
+ toggleButton.icon = toggleButton.pressed ? "sap-icon://da-2" : "sap-icon://da";
98
+ });
99
+
100
+ ```
101
+ * **ui5-popup:** Event names `after-close` and `after-open` are now named `close` and `open`.
102
+ Previously the application developers could subscribe to the events as follows:
103
+ ```ts
104
+ popup.addEventListener("after-open", function() {
105
+ //...
106
+ });
107
+ popup.addEventListener("after-close", function() {
108
+ //...
109
+ });
110
+ ```
111
+
112
+ Now the application developers should include the ui5-bar as follows:
113
+ ```ts
114
+ popup.addEventListener("open", function() {
115
+ //...
116
+ });
117
+
118
+ popup.addEventListener("close", function() {
119
+ //...
120
+ });
121
+
122
+ ```
123
+
124
+
125
+
126
+
127
+
6
128
  # [2.0.0-rc.3](https://github.com/SAP/ui5-webcomponents/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2024-05-10)
7
129
 
8
130
 
package/README.md CHANGED
@@ -18,7 +18,8 @@ such as a common header (ShellBar).
18
18
  | Illustrated Message | `ui5-illustrated-message` | `import "@ui5/webcomponents-fiori/dist/IllustratedMessage.js";` |
19
19
  | Media Gallery | `ui5-media-gallery` | `import "@ui5/webcomponents-fiori/dist/MediaGallery.js";` |
20
20
  | Media Gallery Item | `ui5-media-gallery-item` | comes with `ui5-media-gallery` |
21
- | Notification List Item | `ui5-li-notifcation` | `import "@ui5/webcomponents-fiori/dist/NotifcationListItem.js";` |
21
+ | Notification List | `ui5-notification-list` | `import "@ui5/webcomponents-fiori/dist/NotifcationList.js";` |
22
+ | Notification List Item | `ui5-li-notification` | `import "@ui5/webcomponents-fiori/dist/NotifcationListItem.js";` |
22
23
  | Notification Group List Item | `ui5-li-notification-group` | `import "@ui5/webcomponents-fiori/dist/NotifcationListGroupItem.js";` |
23
24
  | Notification Action | `ui5-notification-action` | `import "@ui5/webcomponents-fiori/dist/NotificationAction.js";` |
24
25
  | Page | `ui5-page` | `import "@ui5/webcomponents-fiori/dist/Page.js";` |
@@ -50,23 +51,6 @@ import "@ui5/webcomponents-fiori/dist/Assets.js";
50
51
  |------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
51
52
  | `i18n`, `themes` | `@ui5/webcomponents-fiori/dist/Assets.js` | Theming parameters and translations for the components <br/><br/> *Automatically imports also:<br/> `@ui5/webcomponents/dist/Assets.js`* |
52
53
 
53
- ## Provided features
54
-
55
-
56
- | Affects | Feature Import | Description |
57
- |----------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|
58
- | `ui5-shellbar` | `@ui5/webcomponents-fiori/dist/features/CoPilotAnimation.js` | Support for a better (but bigger in size) animation for the "co-pilot" button in the shellbar component |
59
-
60
- ### Shellbar CoPilot animation
61
-
62
- ```js
63
- import "@ui5/webcomponents-fiori/dist/features/CoPilotAnimation.js";
64
- ```
65
-
66
- By default, the `ui5-shellbar` CoPilot button ships with a simple animation for better performance.
67
- Importing the module above enables the detailed but more resource-intensive animation instead.
68
-
69
-
70
54
  ## Resources
71
55
  - [UI5 Web Components - README.md](https://github.com/SAP/ui5-webcomponents/blob/main/README.md)
72
56
  - [UI5 Web Components - Home Page](https://sap.github.io/ui5-webcomponents)
@@ -0,0 +1,163 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
3
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
+ import DynamicPageHeader from "./DynamicPageHeader.js";
5
+ import DynamicPageTitle from "./DynamicPageTitle.js";
6
+ import DynamicPageHeaderActions from "./DynamicPageHeaderActions.js";
7
+ /**
8
+ * @class
9
+ *
10
+ * ### Overview
11
+ *
12
+ * A layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.
13
+ *
14
+ * The component consist of several components:
15
+ *
16
+ * - `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`.
17
+ * - `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.
18
+ * - `Content area` - a generic container, which can have a single UI5 layout.
19
+ * - `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.
20
+ *
21
+ * ### Usage
22
+ *
23
+ * Use the `DynamicPage` if you need to have a title, that is always visible
24
+ * and a header, that has configurable Expanding/Snapping functionality.
25
+ * If you don't need the Expanding/Snapping functionality it is better to use the
26
+ * `ui5-page` as a lighter component.
27
+ *
28
+ * 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),
29
+ * or content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user
30
+ * scroll through the content.
31
+ *
32
+ * ## Notes:
33
+ *
34
+ * - Snapping of the `DynamicPageTitle` is not supported in the following case:
35
+ * - 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.
36
+ *
37
+ * ### Responsive Behavior
38
+ *
39
+ * Dynamic page web component implements the responsive paddings design.
40
+ *
41
+ * ### Keyboard Handling
42
+ *
43
+ *
44
+ * ### Basic Navigation
45
+ *
46
+ * - [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.
47
+ * 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).
48
+ * 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).
49
+ *
50
+ * ### Fast Navigation
51
+ * - 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`.
52
+ * In order to use this functionality, you need to import the following module:
53
+ *
54
+ * - `import "@ui5/webcomponents-base/dist/features/F6Navigation.js"`
55
+ *
56
+ * ### ES6 Module Import
57
+ *
58
+ * `import "@ui5/webcomponents-fiori/dist/DynamicPage.js";`
59
+ *
60
+ * @constructor
61
+ * @extends UI5Element
62
+ * @since 2.0.0
63
+ * @public
64
+ * @csspart content - Used to style the content of the component
65
+ * @csspart fit-content - Used to style the fit content container of the component.
66
+ * @csspart footer - Used to style the footer of the component
67
+ */
68
+ declare class DynamicPage extends UI5Element {
69
+ /**
70
+ * Defines if the pin button is hidden.
71
+ *
72
+ * @default false
73
+ * @public
74
+ */
75
+ hidePinButton: boolean;
76
+ /**
77
+ * Defines if the header is pinned.
78
+ *
79
+ * @default false
80
+ * @public
81
+ */
82
+ headerPinned: boolean;
83
+ /**
84
+ * Defines if the footer is shown.
85
+ *
86
+ * @default false
87
+ * @public
88
+ */
89
+ showFooter: boolean;
90
+ /**
91
+ * Defines the current media query size.
92
+ *
93
+ * @private
94
+ */
95
+ mediaRange: string;
96
+ /**
97
+ * Defines the content of the Dynamic Page.
98
+ *
99
+ * @public
100
+ */
101
+ content: HTMLElement[];
102
+ /**
103
+ * Defines the title HTML Element.
104
+ *
105
+ * @public
106
+ */
107
+ titleArea: Array<DynamicPageTitle>;
108
+ /**
109
+ * Defines the header HTML Element.
110
+ *
111
+ * @public
112
+ */
113
+ headerArea: Array<DynamicPageHeader>;
114
+ /**
115
+ * Defines the footer HTML Element.
116
+ *
117
+ * @public
118
+ */
119
+ footerArea: HTMLElement[];
120
+ static i18nBundle: I18nBundle;
121
+ skipSnapOnScroll: boolean;
122
+ showHeaderInStickArea: boolean;
123
+ _headerSnapped: boolean;
124
+ _updateMediaRange: ResizeObserverCallback;
125
+ constructor();
126
+ static onDefine(): Promise<void>;
127
+ onEnterDOM(): void;
128
+ onExitDOM(): void;
129
+ onBeforeRendering(): void;
130
+ get dynamicPageTitle(): DynamicPageTitle | null;
131
+ get dynamicPageHeader(): DynamicPageHeader | null;
132
+ get scrollContainer(): HTMLElement | null;
133
+ get headerActions(): DynamicPageHeaderActions | null;
134
+ get actionsInTitle(): boolean;
135
+ get headerInTitle(): boolean;
136
+ get headerInContent(): boolean;
137
+ get _headerLabel(): string;
138
+ get _headerExpanded(): boolean;
139
+ get _accAttributesForHeaderActions(): {
140
+ controls: string;
141
+ };
142
+ get headerTabIndex(): -1 | 0;
143
+ get headerAriaHidden(): boolean;
144
+ get hasHeading(): boolean;
145
+ get headerSnapped(): boolean;
146
+ /**
147
+ * Defines if the header is snapped.
148
+ *
149
+ * @default false
150
+ * @public
151
+ */
152
+ set headerSnapped(snapped: boolean);
153
+ snapOnScroll(): void;
154
+ snapTitleByScroll(): void;
155
+ onExpandClick(): Promise<void>;
156
+ onPinClick(): Promise<void>;
157
+ onToggleTitle(): Promise<void>;
158
+ _toggleHeader(): Promise<void>;
159
+ onExpandHoverIn(): Promise<void>;
160
+ onExpandHoverOut(): Promise<void>;
161
+ updateMediaRange(): void;
162
+ }
163
+ export default DynamicPage;
@@ -0,0 +1,298 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var DynamicPage_1;
8
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
9
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
10
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
12
+ import event from "@ui5/webcomponents-base/dist/decorators/event.js";
13
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
14
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
15
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
16
+ import MediaRange from "@ui5/webcomponents-base/dist/MediaRange.js";
17
+ import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
18
+ import InvisibleMessageMode from "@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js";
19
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
20
+ import debounce from "@ui5/webcomponents-base/dist/util/debounce.js";
21
+ // Template
22
+ import DynamicPageTemplate from "./generated/templates/DynamicPageTemplate.lit.js";
23
+ // Styles
24
+ import DynamicPageCss from "./generated/themes/DynamicPage.css.js";
25
+ import DynamicPageHeader from "./DynamicPageHeader.js";
26
+ import DynamicPageTitle from "./DynamicPageTitle.js";
27
+ import DynamicPageHeaderActions from "./DynamicPageHeaderActions.js";
28
+ // Texts
29
+ import { DYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER, DYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER, } from "./generated/i18n/i18n-defaults.js";
30
+ const SCROLL_DEBOUNCE_RATE = 5; // ms
31
+ const SCROLL_THRESHOLD = 10; // px
32
+ /**
33
+ * @class
34
+ *
35
+ * ### Overview
36
+ *
37
+ * A layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.
38
+ *
39
+ * The component consist of several components:
40
+ *
41
+ * - `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`.
42
+ * - `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.
43
+ * - `Content area` - a generic container, which can have a single UI5 layout.
44
+ * - `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.
45
+ *
46
+ * ### Usage
47
+ *
48
+ * Use the `DynamicPage` if you need to have a title, that is always visible
49
+ * and a header, that has configurable Expanding/Snapping functionality.
50
+ * If you don't need the Expanding/Snapping functionality it is better to use the
51
+ * `ui5-page` as a lighter component.
52
+ *
53
+ * 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),
54
+ * or content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user
55
+ * scroll through the content.
56
+ *
57
+ * ## Notes:
58
+ *
59
+ * - Snapping of the `DynamicPageTitle` is not supported in the following case:
60
+ * - 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.
61
+ *
62
+ * ### Responsive Behavior
63
+ *
64
+ * Dynamic page web component implements the responsive paddings design.
65
+ *
66
+ * ### Keyboard Handling
67
+ *
68
+ *
69
+ * ### Basic Navigation
70
+ *
71
+ * - [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.
72
+ * 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).
73
+ * 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).
74
+ *
75
+ * ### Fast Navigation
76
+ * - 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`.
77
+ * In order to use this functionality, you need to import the following module:
78
+ *
79
+ * - `import "@ui5/webcomponents-base/dist/features/F6Navigation.js"`
80
+ *
81
+ * ### ES6 Module Import
82
+ *
83
+ * `import "@ui5/webcomponents-fiori/dist/DynamicPage.js";`
84
+ *
85
+ * @constructor
86
+ * @extends UI5Element
87
+ * @since 2.0.0
88
+ * @public
89
+ * @csspart content - Used to style the content of the component
90
+ * @csspart fit-content - Used to style the fit content container of the component.
91
+ * @csspart footer - Used to style the footer of the component
92
+ */
93
+ let DynamicPage = DynamicPage_1 = class DynamicPage extends UI5Element {
94
+ constructor() {
95
+ super();
96
+ this.skipSnapOnScroll = false;
97
+ this.showHeaderInStickArea = false;
98
+ this._updateMediaRange = this.updateMediaRange.bind(this);
99
+ }
100
+ static async onDefine() {
101
+ DynamicPage_1.i18nBundle = await getI18nBundle("@ui5/webcomponents-fiori");
102
+ }
103
+ onEnterDOM() {
104
+ ResizeHandler.register(this, this._updateMediaRange);
105
+ }
106
+ onExitDOM() {
107
+ ResizeHandler.deregister(this, this._updateMediaRange);
108
+ }
109
+ onBeforeRendering() {
110
+ if (this.dynamicPageTitle) {
111
+ this.dynamicPageTitle.snapped = this._headerSnapped;
112
+ this.dynamicPageTitle.interactive = this.hasHeading;
113
+ }
114
+ }
115
+ get dynamicPageTitle() {
116
+ return this.querySelector("[ui5-dynamic-page-title]");
117
+ }
118
+ get dynamicPageHeader() {
119
+ return this.querySelector("[ui5-dynamic-page-header]");
120
+ }
121
+ get scrollContainer() {
122
+ return this.shadowRoot.querySelector(".ui5-dynamic-page-scroll-container");
123
+ }
124
+ get headerActions() {
125
+ return this.shadowRoot.querySelector("ui5-dynamic-page-header-actions");
126
+ }
127
+ get actionsInTitle() {
128
+ return this._headerSnapped || this.showHeaderInStickArea || this.headerPinned;
129
+ }
130
+ get headerInTitle() {
131
+ return !this._headerSnapped && (this.showHeaderInStickArea || this.headerPinned);
132
+ }
133
+ get headerInContent() {
134
+ return !this.showHeaderInStickArea && !this.headerInTitle;
135
+ }
136
+ get _headerLabel() {
137
+ return this._headerSnapped
138
+ ? DynamicPage_1.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER)
139
+ : DynamicPage_1.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER);
140
+ }
141
+ get _headerExpanded() {
142
+ return !this._headerSnapped;
143
+ }
144
+ get _accAttributesForHeaderActions() {
145
+ return {
146
+ controls: `${this._id}-header`,
147
+ };
148
+ }
149
+ get headerTabIndex() {
150
+ return (this._headerSnapped || this.showHeaderInStickArea) ? -1 : 0;
151
+ }
152
+ get headerAriaHidden() {
153
+ return (this._headerSnapped || this.showHeaderInStickArea);
154
+ }
155
+ get hasHeading() {
156
+ return this.headerArea.length > 0;
157
+ }
158
+ get headerSnapped() {
159
+ return this._headerSnapped;
160
+ }
161
+ /**
162
+ * Defines if the header is snapped.
163
+ *
164
+ * @default false
165
+ * @public
166
+ */
167
+ set headerSnapped(snapped) {
168
+ if (snapped !== this._headerSnapped) {
169
+ this._toggleHeader();
170
+ }
171
+ }
172
+ snapOnScroll() {
173
+ debounce(() => this.snapTitleByScroll(), SCROLL_DEBOUNCE_RATE);
174
+ }
175
+ snapTitleByScroll() {
176
+ if (!this.dynamicPageTitle || !this.dynamicPageHeader || this.headerPinned) {
177
+ return;
178
+ }
179
+ const scrollTop = this.scrollContainer.scrollTop;
180
+ const lastHeaderSnapped = this._headerSnapped;
181
+ if (this.skipSnapOnScroll) {
182
+ this.skipSnapOnScroll = false;
183
+ return;
184
+ }
185
+ if (scrollTop > this.dynamicPageHeader.getBoundingClientRect().height) {
186
+ this.showHeaderInStickArea = false;
187
+ this._headerSnapped = true;
188
+ }
189
+ else {
190
+ this._headerSnapped = false;
191
+ }
192
+ if (lastHeaderSnapped !== this._headerSnapped) {
193
+ this.fireEvent("title-toggle");
194
+ }
195
+ this.dynamicPageTitle.snapped = this._headerSnapped;
196
+ }
197
+ async onExpandClick() {
198
+ this._toggleHeader();
199
+ this.fireEvent("title-toggle");
200
+ await renderFinished();
201
+ this.headerActions?.focusExpandButton();
202
+ announce(this._headerLabel, InvisibleMessageMode.Polite);
203
+ }
204
+ async onPinClick() {
205
+ this.headerPinned = !this.headerPinned;
206
+ this.fireEvent("pin-button-toggle");
207
+ await renderFinished();
208
+ this.headerActions?.focusPinButton();
209
+ }
210
+ async onToggleTitle() {
211
+ if (!this.hasHeading) {
212
+ return;
213
+ }
214
+ this._toggleHeader();
215
+ this.fireEvent("title-toggle");
216
+ await renderFinished();
217
+ this.dynamicPageTitle.focus();
218
+ }
219
+ async _toggleHeader() {
220
+ if (this.scrollContainer.scrollTop === SCROLL_THRESHOLD) {
221
+ this.scrollContainer.scrollTop = 0;
222
+ }
223
+ this.showHeaderInStickArea = !this.showHeaderInStickArea;
224
+ this._headerSnapped = !this._headerSnapped;
225
+ this.skipSnapOnScroll = true;
226
+ await renderFinished();
227
+ if (this._headerSnapped && this.scrollContainer.scrollTop < SCROLL_THRESHOLD) {
228
+ this.scrollContainer.scrollTop = SCROLL_THRESHOLD;
229
+ }
230
+ }
231
+ async onExpandHoverIn() {
232
+ this.dynamicPageTitle?.setAttribute("hovered", "");
233
+ await renderFinished();
234
+ }
235
+ async onExpandHoverOut() {
236
+ this.dynamicPageTitle?.removeAttribute("hovered");
237
+ await renderFinished();
238
+ }
239
+ updateMediaRange() {
240
+ this.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef().offsetWidth);
241
+ }
242
+ };
243
+ __decorate([
244
+ property({ type: Boolean })
245
+ ], DynamicPage.prototype, "hidePinButton", void 0);
246
+ __decorate([
247
+ property({ type: Boolean })
248
+ ], DynamicPage.prototype, "headerPinned", void 0);
249
+ __decorate([
250
+ property({ type: Boolean })
251
+ ], DynamicPage.prototype, "showFooter", void 0);
252
+ __decorate([
253
+ property()
254
+ ], DynamicPage.prototype, "mediaRange", void 0);
255
+ __decorate([
256
+ slot({ "default": true, type: HTMLElement })
257
+ ], DynamicPage.prototype, "content", void 0);
258
+ __decorate([
259
+ slot({ type: DynamicPageTitle })
260
+ ], DynamicPage.prototype, "titleArea", void 0);
261
+ __decorate([
262
+ slot({ type: DynamicPageHeader })
263
+ ], DynamicPage.prototype, "headerArea", void 0);
264
+ __decorate([
265
+ slot({ type: HTMLElement })
266
+ ], DynamicPage.prototype, "footerArea", void 0);
267
+ __decorate([
268
+ property({ type: Boolean })
269
+ ], DynamicPage.prototype, "_headerSnapped", void 0);
270
+ __decorate([
271
+ property({ type: Boolean })
272
+ ], DynamicPage.prototype, "headerSnapped", null);
273
+ DynamicPage = DynamicPage_1 = __decorate([
274
+ customElement({
275
+ tag: "ui5-dynamic-page",
276
+ renderer: litRender,
277
+ styles: DynamicPageCss,
278
+ template: DynamicPageTemplate,
279
+ dependencies: [DynamicPageHeaderActions],
280
+ })
281
+ /**
282
+ * Fired when the pin header button is toggled.
283
+ *
284
+ * @public
285
+ */
286
+ ,
287
+ event("pin-button-toggle")
288
+ /**
289
+ * Fired when the expand/collapse area of the title is toggled.
290
+ *
291
+ * @public
292
+ */
293
+ ,
294
+ event("title-toggle")
295
+ ], DynamicPage);
296
+ DynamicPage.define();
297
+ export default DynamicPage;
298
+ //# sourceMappingURL=DynamicPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPage.js","sourceRoot":"","sources":["../src/DynamicPage.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport MediaRange from \"@ui5/webcomponents-base/dist/MediaRange.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\n\nimport debounce from \"@ui5/webcomponents-base/dist/util/debounce.js\";\n\n// Template\nimport DynamicPageTemplate from \"./generated/templates/DynamicPageTemplate.lit.js\";\n\n// Styles\nimport DynamicPageCss from \"./generated/themes/DynamicPage.css.js\";\n\nimport DynamicPageHeader from \"./DynamicPageHeader.js\";\nimport DynamicPageTitle from \"./DynamicPageTitle.js\";\nimport DynamicPageHeaderActions from \"./DynamicPageHeaderActions.js\";\n\n// Texts\nimport {\n\tDYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER,\n\tDYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nconst SCROLL_DEBOUNCE_RATE = 5; // ms\nconst SCROLL_THRESHOLD = 10; // px\n/**\n * @class\n *\n * ### Overview\n *\n * A layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.\n *\n * The component consist of several components:\n *\n * - `DynamicPageTitle` - a component, holding the title of the page, the navigation actions and the content. The displayed content changes based on the current mode of the `DynamicPageHeader`.\n * - `DynamicPageHeader` - a generic container, which can contain a single layout component and any other HTML elements. The header works in two modes - expanded and snapped and its behavior can be adjusted with the help of different properties.\n * - `Content area` - a generic container, which can have a single UI5 layout.\n * - `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.\n *\n * ### Usage\n *\n * Use the `DynamicPage` if you need to have a title, that is always visible\n * and a header, that has configurable Expanding/Snapping functionality.\n * If you don't need the Expanding/Snapping functionality it is better to use the\n * `ui5-page` as a lighter component.\n *\n * The app can add to the `default` slot of the ui5-dynamic-page either content that is designed to fit its container (e.g. has 100% height),\n * or content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user\n * scroll through the content.\n *\n * ## Notes:\n *\n * - Snapping of the `DynamicPageTitle` is not supported in the following case:\n * - When the `DynamicPage` has a scroll bar, the component usually scrolls to the snapping point - the point, where the `DynamicPageHeader` is scrolled out completely. However, when there is a scroll bar, but not enough content to reach the snapping point, the snapping is not possible using scrolling.\n *\n * ### Responsive Behavior\n *\n * Dynamic page web component implements the responsive paddings design.\n *\n * ### Keyboard Handling\n *\n *\n * ### Basic Navigation\n *\n * - [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.\n * If focus is on the snap header button (arrow button), or on the header itself, once activated, it triggers the associated action (such as snap/expand the header).\n * If focus is on pin button (the button with pin icon on the bottom of the header), once activated, it triggers the associated action (pinning of the header).\n *\n * ### Fast Navigation\n * - This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\n * In order to use this functionality, you need to import the following module:\n *\n * - `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/DynamicPage.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.0.0\n * @public\n * @csspart content - Used to style the content of the component\n * @csspart fit-content - Used to style the fit content container of the component.\n * @csspart footer - Used to style the footer of the component\n */\n@customElement({\n\ttag: \"ui5-dynamic-page\",\n\trenderer: litRender,\n\tstyles: DynamicPageCss,\n\ttemplate: DynamicPageTemplate,\n\tdependencies: [DynamicPageHeaderActions],\n})\n\n/**\n * Fired when the pin header button is toggled.\n *\n * @public\n */\n@event(\"pin-button-toggle\")\n\n/**\n * Fired when the expand/collapse area of the title is toggled.\n *\n * @public\n */\n@event(\"title-toggle\")\n\nclass DynamicPage extends UI5Element {\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!: boolean;\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!: boolean;\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!: boolean;\n\n\t/**\n\t * Defines the current media query size.\n\t *\n\t * @private\n\t */\n\t@property()\n\tmediaRange!: string;\n\n\t/**\n\t * Defines the content of the Dynamic Page.\n\t *\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement })\n\tcontent!: HTMLElement[];\n\n\t/**\n\t * Defines the title HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageTitle })\n\ttitleArea!: Array<DynamicPageTitle>;\n\n\t/**\n\t * Defines the header HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: DynamicPageHeader })\n\theaderArea!: Array<DynamicPageHeader>;\n\n\t/**\n\t * Defines the footer HTML Element.\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement })\n\tfooterArea!: HTMLElement[];\n\n\tstatic i18nBundle: I18nBundle;\n\n\tskipSnapOnScroll = false;\n\tshowHeaderInStickArea = false;\n\n\t@property({ type: Boolean })\n\t_headerSnapped!: boolean;\n\n\t_updateMediaRange: ResizeObserverCallback;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._updateMediaRange = this.updateMediaRange.bind(this);\n\t}\n\n\tstatic async onDefine() {\n\t\tDynamicPage.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-fiori\");\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(this, this._updateMediaRange);\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._updateMediaRange);\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}\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 scrollContainer(): HTMLElement | null {\n\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\".ui5-dynamic-page-scroll-container\");\n\t}\n\n\tget headerActions(): DynamicPageHeaderActions | null {\n\t\treturn this.shadowRoot!.querySelector<DynamicPageHeaderActions>(\"ui5-dynamic-page-header-actions\");\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;\n\t}\n\n\tget _headerLabel() {\n\t\treturn this._headerSnapped\n\t\t\t? DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_SNAPPED_HEADER)\n\t\t\t: DynamicPage.i18nBundle.getText(DYNAMIC_PAGE_ARIA_LABEL_EXPANDED_HEADER);\n\t}\n\n\tget _headerExpanded() {\n\t\treturn !this._headerSnapped;\n\t}\n\n\tget _accAttributesForHeaderActions() {\n\t\treturn {\n\t\t\tcontrols: `${this._id}-header`,\n\t\t};\n\t}\n\n\tget headerTabIndex() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea) ? -1 : 0;\n\t}\n\n\tget headerAriaHidden() {\n\t\treturn (this._headerSnapped || this.showHeaderInStickArea);\n\t}\n\n\tget hasHeading() {\n\t\treturn this.headerArea.length > 0;\n\t}\n\n\tget headerSnapped(): boolean {\n\t\treturn this._headerSnapped;\n\t}\n\n\t/**\n\t * Defines if the header is snapped.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tset headerSnapped(snapped: boolean) {\n\t\tif (snapped !== this._headerSnapped) {\n\t\t\tthis._toggleHeader();\n\t\t}\n\t}\n\n\tsnapOnScroll() {\n\t\tdebounce(() => this.snapTitleByScroll(), SCROLL_DEBOUNCE_RATE);\n\t}\n\n\tsnapTitleByScroll() {\n\t\tif (!this.dynamicPageTitle || !this.dynamicPageHeader || this.headerPinned) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollTop = this.scrollContainer!.scrollTop;\n\t\tconst lastHeaderSnapped = this._headerSnapped;\n\n\t\tif (this.skipSnapOnScroll) {\n\t\t\tthis.skipSnapOnScroll = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (scrollTop > this.dynamicPageHeader.getBoundingClientRect().height) {\n\t\t\tthis.showHeaderInStickArea = false;\n\t\t\tthis._headerSnapped = true;\n\t\t} else {\n\t\t\tthis._headerSnapped = false;\n\t\t}\n\n\t\tif (lastHeaderSnapped !== this._headerSnapped) {\n\t\t\tthis.fireEvent(\"title-toggle\");\n\t\t}\n\n\t\tthis.dynamicPageTitle.snapped = this._headerSnapped;\n\t}\n\n\tasync onExpandClick() {\n\t\tthis._toggleHeader();\n\t\tthis.fireEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.headerActions?.focusExpandButton();\n\t\tannounce(this._headerLabel, InvisibleMessageMode.Polite);\n\t}\n\n\tasync onPinClick() {\n\t\tthis.headerPinned = !this.headerPinned;\n\t\tthis.fireEvent(\"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._toggleHeader();\n\t\tthis.fireEvent(\"title-toggle\");\n\t\tawait renderFinished();\n\t\tthis.dynamicPageTitle!.focus();\n\t}\n\n\tasync _toggleHeader() {\n\t\tif (this.scrollContainer!.scrollTop === SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = 0;\n\t\t}\n\n\t\tthis.showHeaderInStickArea = !this.showHeaderInStickArea;\n\t\tthis._headerSnapped = !this._headerSnapped;\n\n\t\tthis.skipSnapOnScroll = true;\n\n\t\tawait renderFinished();\n\t\tif (this._headerSnapped && this.scrollContainer!.scrollTop < SCROLL_THRESHOLD) {\n\t\t\tthis.scrollContainer!.scrollTop = SCROLL_THRESHOLD;\n\t\t}\n\t}\n\n\tasync onExpandHoverIn() {\n\t\tthis.dynamicPageTitle?.setAttribute(\"hovered\", \"\");\n\t\tawait renderFinished();\n\t}\n\n\tasync onExpandHoverOut() {\n\t\tthis.dynamicPageTitle?.removeAttribute(\"hovered\");\n\t\tawait renderFinished();\n\t}\n\n\tupdateMediaRange() {\n\t\tthis.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef()!.offsetWidth);\n\t}\n}\n\nDynamicPage.define();\n\nexport default DynamicPage;\n"]}