@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.
- package/.env.testing +4 -0
- package/CHANGELOG.md +122 -0
- package/README.md +2 -18
- package/dist/DynamicPage.d.ts +163 -0
- package/dist/DynamicPage.js +298 -0
- package/dist/DynamicPage.js.map +1 -0
- package/dist/DynamicPageHeader.d.ts +38 -0
- package/dist/DynamicPageHeader.js +58 -0
- package/dist/DynamicPageHeader.js.map +1 -0
- package/dist/DynamicPageHeaderActions.d.ts +72 -0
- package/dist/DynamicPageHeaderActions.js +136 -0
- package/dist/DynamicPageHeaderActions.js.map +1 -0
- package/dist/DynamicPageTitle.d.ts +147 -0
- package/dist/DynamicPageTitle.js +206 -0
- package/dist/DynamicPageTitle.js.map +1 -0
- package/dist/NotificationList.d.ts +23 -0
- package/dist/NotificationList.js +55 -0
- package/dist/NotificationList.js.map +1 -0
- package/dist/NotificationListGroupItem.d.ts +28 -23
- package/dist/NotificationListGroupItem.js +78 -62
- package/dist/NotificationListGroupItem.js.map +1 -1
- package/dist/NotificationListGroupList.d.ts +16 -0
- package/dist/NotificationListGroupList.js +33 -0
- package/dist/NotificationListGroupList.js.map +1 -0
- package/dist/NotificationListItem.d.ts +79 -7
- package/dist/NotificationListItem.js +202 -28
- package/dist/NotificationListItem.js.map +1 -1
- package/dist/NotificationListItemBase.d.ts +5 -69
- package/dist/NotificationListItemBase.js +29 -120
- package/dist/NotificationListItemBase.js.map +1 -1
- package/dist/ShellBar.d.ts +10 -38
- package/dist/ShellBar.js +14 -88
- package/dist/ShellBar.js.map +1 -1
- package/dist/SideNavigation.js +4 -4
- package/dist/SideNavigation.js.map +1 -1
- package/dist/SideNavigationSelectableItemBase.js +1 -0
- package/dist/SideNavigationSelectableItemBase.js.map +1 -1
- package/dist/ViewSettingsDialog.js +5 -3
- package/dist/ViewSettingsDialog.js.map +1 -1
- package/dist/Wizard.d.ts +1 -1
- package/dist/Wizard.js +5 -2
- package/dist/Wizard.js.map +1 -1
- package/dist/bundle.esm.d.ts +0 -1
- package/dist/bundle.esm.js +5 -3
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/DynamicPage.css +1 -0
- package/dist/css/themes/DynamicPageHeader.css +1 -0
- package/dist/css/themes/DynamicPageHeaderActions.css +1 -0
- package/dist/css/themes/DynamicPageTitle.css +1 -0
- package/dist/css/themes/IllustratedMessage.css +1 -1
- package/dist/css/themes/NotificationListGroupItem.css +1 -1
- package/dist/css/themes/NotificationListItem.css +1 -1
- package/dist/css/themes/NotificationListItemBase.css +1 -1
- package/dist/css/themes/NotificationStateIcon.css +1 -0
- package/dist/css/themes/ShellBar.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +750 -812
- package/dist/custom-elements.json +414 -549
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +18 -9
- package/dist/generated/i18n/i18n-defaults.js +20 -11
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/js-imports/Illustrations.js +2 -1
- package/dist/generated/js-imports/Illustrations.js.map +1 -1
- package/dist/generated/templates/BarcodeScannerDialogTemplate.lit.js +1 -1
- package/dist/generated/templates/BarcodeScannerDialogTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.js +6 -0
- package/dist/generated/templates/DynamicPageHeaderActionsTemplate.lit.js.map +1 -0
- package/dist/generated/templates/DynamicPageHeaderTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/DynamicPageHeaderTemplate.lit.js +5 -0
- package/dist/generated/templates/DynamicPageHeaderTemplate.lit.js.map +1 -0
- package/dist/generated/templates/DynamicPageTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/DynamicPageTemplate.lit.js +12 -0
- package/dist/generated/templates/DynamicPageTemplate.lit.js.map +1 -0
- package/dist/generated/templates/DynamicPageTitleTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/DynamicPageTitleTemplate.lit.js +8 -0
- package/dist/generated/templates/DynamicPageTitleTemplate.lit.js.map +1 -0
- package/dist/generated/templates/NotificationListGroupItemTemplate.lit.js +3 -11
- package/dist/generated/templates/NotificationListGroupItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/NotificationListItemTemplate.lit.js +9 -11
- package/dist/generated/templates/NotificationListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ShellBarPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/ShellBarPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ShellBarTemplate.lit.js +2 -2
- package/dist/generated/templates/ShellBarTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SideNavigationItemTemplate.lit.js +2 -2
- package/dist/generated/templates/SideNavigationItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js +5 -7
- package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js +2 -2
- package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SideNavigationTemplate.lit.js +5 -7
- package/dist/generated/templates/SideNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/UploadCollectionItemTemplate.lit.js +1 -1
- package/dist/generated/templates/UploadCollectionItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ViewSettingsDialogTemplate.lit.js +1 -1
- package/dist/generated/templates/ViewSettingsDialogTemplate.lit.js.map +1 -1
- package/dist/generated/themes/DynamicPage.css.js +9 -0
- package/dist/generated/themes/DynamicPage.css.js.map +1 -0
- package/dist/generated/themes/{NotificationOverflowActionsPopover.css.js → DynamicPageHeader.css.js} +2 -2
- package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -0
- package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +3 -0
- package/dist/generated/themes/DynamicPageHeaderActions.css.js +9 -0
- package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -0
- package/dist/generated/themes/DynamicPageTitle.css.d.ts +3 -0
- package/dist/generated/themes/DynamicPageTitle.css.js +9 -0
- package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -0
- package/dist/generated/themes/IllustratedMessage.css.js +1 -1
- package/dist/generated/themes/IllustratedMessage.css.js.map +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListItem.css.js +1 -1
- package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
- package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.d.ts +3 -0
- package/dist/generated/themes/{NotificationPrioIcon.css.js → NotificationStateIcon.css.js} +2 -2
- package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -0
- package/dist/generated/themes/ShellBar.css.js +1 -1
- package/dist/generated/themes/ShellBar.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
- package/dist/styles/ToolLayout.css +1 -0
- package/dist/styles/ToolLayout.module.css +1 -0
- package/dist/types/NotificationListItemImportance.d.ts +16 -0
- package/dist/types/NotificationListItemImportance.js +18 -0
- package/dist/types/NotificationListItemImportance.js.map +1 -0
- package/dist/vscode.html-custom-data.json +57 -152
- package/dist/web-types.json +193 -226
- package/package.json +8 -9
- package/src/BarcodeScannerDialog.hbs +1 -1
- package/src/DynamicPage.hbs +58 -0
- package/src/DynamicPageHeader.hbs +3 -0
- package/src/DynamicPageHeaderActions.hbs +25 -0
- package/src/DynamicPageTitle.hbs +45 -0
- package/src/NotificationListGroupItem.hbs +31 -72
- package/src/NotificationListItem.hbs +46 -50
- package/src/ShellBar.hbs +2 -10
- package/src/ShellBarPopover.hbs +4 -2
- package/src/SideNavigationItem.hbs +2 -0
- package/src/SideNavigationPopover.hbs +2 -5
- package/src/SideNavigationSubItem.hbs +2 -0
- package/src/UploadCollectionItem.hbs +1 -0
- package/src/ViewSettingsDialog.hbs +2 -1
- package/src/i18n/messagebundle.properties +42 -17
- package/src/i18n/messagebundle_en.properties +16 -11
- package/src/i18n/messagebundle_en_US_saprigi.properties +16 -11
- package/src/themes/DynamicPage.css +150 -0
- package/src/themes/DynamicPageHeader.css +11 -0
- package/src/themes/DynamicPageHeaderActions.css +49 -0
- package/src/themes/DynamicPageTitle.css +153 -0
- package/src/themes/IllustratedMessage.css +1 -1
- package/src/themes/NotificationListGroupItem.css +27 -21
- package/src/themes/NotificationListItem.css +81 -22
- package/src/themes/NotificationListItemBase.css +5 -18
- package/src/themes/NotificationStateIcon.css +5 -0
- package/src/themes/ShellBar.css +8 -0
- package/src/themes/base/DynamicPage-parameters.css +18 -0
- package/src/themes/base/DynamicPageHeader-parameters.css +8 -0
- package/src/themes/base/DynamicPageHeaderActions-parameters.css +7 -0
- package/src/themes/base/DynamicPageTitle-parameters.css +19 -0
- package/src/themes/base/NotificationListItem-parameters.css +28 -1
- package/src/themes/base/ShellBar-parameters.css +0 -3
- package/src/themes/sap_belize/DynamicPage-parameters.css +16 -0
- package/src/themes/sap_belize_hcb/DynamicPageTitle-parameters.css +6 -0
- package/src/themes/sap_belize_hcw/DynamicPageTitle-parameters.css +6 -0
- package/src/themes/sap_fiori_3/DynamicPageHeaderActions-parameters.css +5 -0
- package/src/themes/sap_fiori_3/DynamicPageTitle-parameters.css +4 -0
- package/src/themes/sap_fiori_3/parameters-bundle.css +5 -0
- package/src/themes/sap_fiori_3_dark/parameters-bundle.css +5 -0
- package/src/themes/sap_fiori_3_hcb/DynamicPageTitle-parameters.css +6 -0
- package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +5 -0
- package/src/themes/sap_fiori_3_hcw/DynamicPageTitle-parameters.css +6 -0
- package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +5 -0
- package/src/themes/sap_horizon/DynamicPageHeaderActions-parameters.css +6 -0
- package/src/themes/sap_horizon/DynamicPageTitle-parameters.css +5 -0
- package/src/themes/sap_horizon/NotificationListItem-parameters.css +17 -1
- package/src/themes/sap_horizon/ShellBar-parameters.css +0 -3
- package/src/themes/sap_horizon/parameters-bundle.css +6 -2
- package/src/themes/sap_horizon_dark/NotificationListItem-parameters.css +17 -1
- package/src/themes/sap_horizon_dark/ShellBar-parameters.css +0 -3
- package/src/themes/sap_horizon_dark/parameters-bundle.css +6 -2
- package/src/themes/sap_horizon_dark_exp/NotificationListItem-parameters.css +1 -1
- package/src/themes/sap_horizon_dark_exp/ShellBar-parameters.css +0 -3
- package/src/themes/sap_horizon_dark_exp/parameters-bundle.css +5 -1
- package/src/themes/sap_horizon_exp/NotificationListItem-parameters.css +1 -1
- package/src/themes/sap_horizon_exp/ShellBar-parameters.css +0 -3
- package/src/themes/sap_horizon_exp/parameters-bundle.css +5 -1
- package/src/themes/sap_horizon_hcb/DynamicPageTitle-parameters.css +11 -0
- package/src/themes/sap_horizon_hcb/NotificationListItem-parameters.css +21 -0
- package/src/themes/sap_horizon_hcb/parameters-bundle.css +5 -0
- package/src/themes/sap_horizon_hcb_exp/parameters-bundle.css +4 -0
- package/src/themes/sap_horizon_hcw/DynamicPageTitle-parameters.css +11 -0
- package/src/themes/sap_horizon_hcw/NotificationListItem-parameters.css +21 -0
- package/src/themes/sap_horizon_hcw/parameters-bundle.css +6 -0
- package/src/themes/sap_horizon_hcw_exp/parameters-bundle.css +4 -0
- package/LICENSE.txt +0 -201
- package/dist/NotificationAction.d.ts +0 -57
- package/dist/NotificationAction.js +0 -63
- package/dist/NotificationAction.js.map +0 -1
- package/dist/css/themes/NotificationOverflowActionsPopover.css +0 -1
- package/dist/css/themes/NotificationPrioIcon.css +0 -1
- package/dist/features/CoPilotAnimation.d.ts +0 -1
- package/dist/features/CoPilotAnimation.js +0 -7
- package/dist/features/CoPilotAnimation.js.map +0 -1
- package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.d.ts +0 -4
- package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.js +0 -6
- package/dist/generated/templates/NotificationOverflowActionsPopoverTemplate.lit.js.map +0 -1
- package/dist/generated/themes/NotificationOverflowActionsPopover.css.js.map +0 -1
- package/dist/generated/themes/NotificationPrioIcon.css.js.map +0 -1
- package/src/NotificationOverflowActionsPopover.hbs +0 -21
- package/src/themes/NotificationOverflowActionsPopover.css +0 -12
- package/src/themes/NotificationPrioIcon.css +0 -17
- /package/dist/generated/themes/{NotificationOverflowActionsPopover.css.d.ts → DynamicPage.css.d.ts} +0 -0
- /package/dist/generated/themes/{NotificationPrioIcon.css.d.ts → DynamicPageHeader.css.d.ts} +0 -0
package/.env.testing
ADDED
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
|
|
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"]}
|