@ui5/webcomponents-fiori 2.7.0-rc.0 → 2.7.0-rc.1
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/CHANGELOG.md +21 -0
- package/cypress/specs/ShellBar.cy.ts +241 -0
- package/cypress/specs/Timeline.cy.ts +55 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/DynamicPage.d.ts +0 -11
- package/dist/DynamicPage.js +0 -15
- package/dist/DynamicPage.js.map +1 -1
- package/dist/FlexibleColumnLayout.d.ts +11 -3
- package/dist/FlexibleColumnLayout.js +63 -5
- package/dist/FlexibleColumnLayout.js.map +1 -1
- package/dist/FlexibleColumnLayoutTemplate.js +6 -2
- package/dist/FlexibleColumnLayoutTemplate.js.map +1 -1
- package/dist/ShellBar.d.ts +87 -37
- package/dist/ShellBar.js +492 -195
- package/dist/ShellBar.js.map +1 -1
- package/dist/ShellBarPopoverTemplate.d.ts +2 -0
- package/dist/ShellBarPopoverTemplate.js +8 -0
- package/dist/ShellBarPopoverTemplate.js.map +1 -0
- package/dist/ShellBarSpacer.d.ts +17 -0
- package/dist/ShellBarSpacer.js +38 -0
- package/dist/ShellBarSpacer.js.map +1 -0
- package/dist/ShellBarTemplate.d.ts +2 -0
- package/dist/ShellBarTemplate.js +36 -0
- package/dist/ShellBarTemplate.js.map +1 -0
- package/dist/TimelineGroupItem.d.ts +1 -2
- package/dist/TimelineGroupItem.js +0 -7
- package/dist/TimelineGroupItem.js.map +1 -1
- package/dist/TimelineGroupItemTemplate.js +12 -1
- package/dist/TimelineGroupItemTemplate.js.map +1 -1
- package/dist/TimelineItem.d.ts +13 -0
- package/dist/TimelineItem.js +29 -2
- package/dist/TimelineItem.js.map +1 -1
- package/dist/TimelineItemTemplate.js +2 -2
- package/dist/TimelineItemTemplate.js.map +1 -1
- package/dist/Wizard.d.ts +0 -2
- package/dist/Wizard.js +0 -15
- package/dist/Wizard.js.map +1 -1
- package/dist/bundle.esm.js +1 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/DynamicPage.css +1 -1
- package/dist/css/themes/DynamicPageHeader.css +1 -1
- package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
- package/dist/css/themes/DynamicPageTitle.css +1 -1
- package/dist/css/themes/FlexibleColumnLayout.css +1 -1
- package/dist/css/themes/MediaGallery.css +1 -1
- package/dist/css/themes/MediaGalleryItem.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 -1
- package/dist/css/themes/Page.css +1 -1
- package/dist/css/themes/ProductSwitchItem.css +1 -1
- package/dist/css/themes/ShellBar.css +1 -1
- package/dist/css/themes/ShellBarPopover.css +1 -1
- package/dist/css/themes/SideNavigation.css +1 -1
- package/dist/css/themes/SideNavigationGroup.css +1 -1
- package/dist/css/themes/SideNavigationItem.css +1 -1
- package/dist/css/themes/SideNavigationItemBase.css +1 -1
- package/dist/css/themes/SideNavigationPopover.css +1 -1
- package/dist/css/themes/SideNavigationSubItem.css +1 -1
- package/dist/css/themes/Timeline.css +1 -1
- package/dist/css/themes/TimelineGroupItem.css +1 -1
- package/dist/css/themes/TimelineItem.css +1 -1
- package/dist/css/themes/UploadCollection.css +1 -1
- package/dist/css/themes/UploadCollectionItem.css +1 -1
- package/dist/css/themes/ViewSettingsDialog.css +1 -1
- package/dist/css/themes/Wizard.css +1 -1
- package/dist/css/themes/WizardTab.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 +132 -3
- package/dist/custom-elements.json +83 -3
- package/dist/fcl-utils/FCLLayout.d.ts +9 -1
- package/dist/fcl-utils/FCLLayout.js +73 -3
- package/dist/fcl-utils/FCLLayout.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_TW.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 +12 -1
- package/dist/generated/i18n/i18n-defaults.js +12 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPage.css.js +1 -1
- package/dist/generated/themes/DynamicPage.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
- package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
- package/dist/generated/themes/MediaGallery.css.js +1 -1
- package/dist/generated/themes/MediaGallery.css.js.map +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.d.ts +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.d.ts +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.d.ts +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 +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
- package/dist/generated/themes/Page.css.d.ts +1 -1
- package/dist/generated/themes/Page.css.js +1 -1
- package/dist/generated/themes/Page.css.js.map +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
- package/dist/generated/themes/ShellBar.css.d.ts +1 -1
- package/dist/generated/themes/ShellBar.css.js +1 -1
- package/dist/generated/themes/ShellBar.css.js.map +1 -1
- package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
- package/dist/generated/themes/ShellBarPopover.css.js +1 -1
- package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
- package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigation.css.js +1 -1
- package/dist/generated/themes/SideNavigation.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
- package/dist/generated/themes/Timeline.css.d.ts +1 -1
- package/dist/generated/themes/Timeline.css.js +1 -1
- package/dist/generated/themes/Timeline.css.js.map +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
- package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
- package/dist/generated/themes/TimelineItem.css.js +1 -1
- package/dist/generated/themes/TimelineItem.css.js.map +1 -1
- package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
- package/dist/generated/themes/UploadCollection.css.js +1 -1
- package/dist/generated/themes/UploadCollection.css.js.map +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
- package/dist/generated/themes/Wizard.css.d.ts +1 -1
- package/dist/generated/themes/Wizard.css.js +1 -1
- package/dist/generated/themes/Wizard.css.js.map +1 -1
- package/dist/generated/themes/WizardTab.css.d.ts +1 -1
- package/dist/generated/themes/WizardTab.css.js +1 -1
- package/dist/generated/themes/WizardTab.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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.d.ts +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/types/FCLLayout.d.ts +18 -0
- package/dist/types/FCLLayout.js +18 -0
- package/dist/types/FCLLayout.js.map +1 -1
- package/dist/vscode.html-custom-data.json +21 -2
- package/dist/web-types.json +41 -6
- package/package.json +7 -7
- package/src/FlexibleColumnLayoutTemplate.tsx +18 -4
- package/src/ShellBarPopoverTemplate.tsx +47 -0
- package/src/ShellBarTemplate.tsx +276 -0
- package/src/TimelineGroupItemTemplate.tsx +14 -1
- package/src/TimelineItemTemplate.tsx +2 -1
- package/src/i18n/messagebundle.properties +28 -0
- package/src/i18n/messagebundle_ar.properties +2 -0
- package/src/i18n/messagebundle_bg.properties +2 -0
- package/src/i18n/messagebundle_ca.properties +2 -0
- package/src/i18n/messagebundle_cnr.properties +2 -0
- package/src/i18n/messagebundle_cs.properties +2 -0
- package/src/i18n/messagebundle_cy.properties +2 -0
- package/src/i18n/messagebundle_da.properties +2 -0
- package/src/i18n/messagebundle_de.properties +2 -0
- package/src/i18n/messagebundle_el.properties +2 -0
- package/src/i18n/messagebundle_en.properties +6 -0
- package/src/i18n/messagebundle_en_GB.properties +2 -0
- package/src/i18n/messagebundle_en_US_sappsd.properties +6 -0
- package/src/i18n/messagebundle_en_US_saprigi.properties +6 -0
- package/src/i18n/messagebundle_en_US_saptrc.properties +6 -0
- package/src/i18n/messagebundle_es.properties +2 -0
- package/src/i18n/messagebundle_es_MX.properties +2 -0
- package/src/i18n/messagebundle_et.properties +2 -0
- package/src/i18n/messagebundle_fi.properties +2 -0
- package/src/i18n/messagebundle_fr.properties +2 -0
- package/src/i18n/messagebundle_fr_CA.properties +2 -0
- package/src/i18n/messagebundle_hi.properties +2 -0
- package/src/i18n/messagebundle_hr.properties +2 -0
- package/src/i18n/messagebundle_hu.properties +2 -0
- package/src/i18n/messagebundle_id.properties +2 -0
- package/src/i18n/messagebundle_it.properties +2 -0
- package/src/i18n/messagebundle_iw.properties +2 -0
- package/src/i18n/messagebundle_ja.properties +2 -0
- package/src/i18n/messagebundle_kk.properties +2 -0
- package/src/i18n/messagebundle_ko.properties +2 -0
- package/src/i18n/messagebundle_lt.properties +4 -2
- package/src/i18n/messagebundle_lv.properties +2 -0
- package/src/i18n/messagebundle_mk.properties +2 -0
- package/src/i18n/messagebundle_ms.properties +2 -0
- package/src/i18n/messagebundle_nl.properties +2 -0
- package/src/i18n/messagebundle_no.properties +2 -0
- package/src/i18n/messagebundle_pl.properties +2 -0
- package/src/i18n/messagebundle_pt.properties +2 -0
- package/src/i18n/messagebundle_pt_PT.properties +2 -0
- package/src/i18n/messagebundle_ro.properties +2 -0
- package/src/i18n/messagebundle_ru.properties +3 -1
- package/src/i18n/messagebundle_sh.properties +2 -0
- package/src/i18n/messagebundle_sk.properties +2 -0
- package/src/i18n/messagebundle_sl.properties +2 -0
- package/src/i18n/messagebundle_sr.properties +2 -0
- package/src/i18n/messagebundle_sv.properties +2 -0
- package/src/i18n/messagebundle_th.properties +2 -0
- package/src/i18n/messagebundle_tr.properties +2 -0
- package/src/i18n/messagebundle_uk.properties +2 -0
- package/src/i18n/messagebundle_vi.properties +2 -0
- package/src/i18n/messagebundle_zh_CN.properties +2 -0
- package/src/i18n/messagebundle_zh_TW.properties +2 -0
- package/src/themes/DynamicPage.css +51 -46
- package/src/themes/DynamicPageHeader.css +0 -2
- package/src/themes/FlexibleColumnLayout.css +19 -2
- package/src/themes/Page.css +1 -1
- package/src/themes/ShellBar.css +139 -80
- package/src/themes/ShellBarPopover.css +30 -0
- package/src/themes/TimelineItem.css +16 -0
- package/src/themes/Wizard.css +37 -24
- package/src/themes/base/DynamicPageHeader-parameters.css +0 -3
- package/src/themes/base/ShellBar-parameters.css +4 -0
- package/src/themes/sap_horizon/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -0
- package/dist/generated/templates/ShellBarPopoverTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ShellBarPopoverTemplate.lit.js +0 -9
- package/dist/generated/templates/ShellBarPopoverTemplate.lit.js.map +0 -1
- package/dist/generated/templates/ShellBarTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ShellBarTemplate.lit.js +0 -34
- package/dist/generated/templates/ShellBarTemplate.lit.js.map +0 -1
- package/src/ShellBar.hbs +0 -229
- package/src/ShellBarPopover.hbs +0 -35
package/dist/ShellBar.js
CHANGED
|
@@ -12,27 +12,34 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
|
12
12
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
13
13
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
14
14
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
15
|
-
import
|
|
15
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
16
16
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
17
|
-
import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
17
|
+
import { isSpace, isEnter, isLeft, isRight, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
18
|
+
import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
|
|
18
19
|
import ListItemStandard from "@ui5/webcomponents/dist/ListItemStandard.js";
|
|
19
20
|
import List from "@ui5/webcomponents/dist/List.js";
|
|
20
21
|
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
21
22
|
import Button from "@ui5/webcomponents/dist/Button.js";
|
|
23
|
+
import Menu from "@ui5/webcomponents/dist/Menu.js";
|
|
22
24
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
23
25
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
24
|
-
import "@ui5/webcomponents-icons/dist/search.js";
|
|
25
|
-
import "@ui5/webcomponents-icons/dist/
|
|
26
|
-
import "@ui5/webcomponents-icons/dist/
|
|
27
|
-
import "@ui5/webcomponents-icons/dist/
|
|
28
|
-
import "@ui5/webcomponents-icons/dist/
|
|
26
|
+
import search from "@ui5/webcomponents-icons/dist/search.js";
|
|
27
|
+
import da from "@ui5/webcomponents-icons/dist/da.js";
|
|
28
|
+
import bell from "@ui5/webcomponents-icons/dist/bell.js";
|
|
29
|
+
import overflow from "@ui5/webcomponents-icons/dist/overflow.js";
|
|
30
|
+
import grid from "@ui5/webcomponents-icons/dist/grid.js";
|
|
31
|
+
import throttle from "@ui5/webcomponents-base/dist/util/throttle.js";
|
|
32
|
+
import { getScopedVarName } from "@ui5/webcomponents-base/dist/CustomElementsScope.js";
|
|
33
|
+
import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
|
|
29
34
|
// Templates
|
|
30
|
-
import ShellBarTemplate from "./
|
|
35
|
+
import ShellBarTemplate from "./ShellBarTemplate.js";
|
|
31
36
|
// Styles
|
|
32
37
|
import shellBarStyles from "./generated/themes/ShellBar.css.js";
|
|
33
38
|
import ShellBarPopoverCss from "./generated/themes/ShellBarPopover.css.js";
|
|
34
|
-
import { SHELLBAR_LABEL, SHELLBAR_LOGO, SHELLBAR_NOTIFICATIONS, SHELLBAR_CANCEL, SHELLBAR_PROFILE, SHELLBAR_PRODUCTS, SHELLBAR_SEARCH, SHELLBAR_OVERFLOW, } from "./generated/i18n/i18n-defaults.js";
|
|
35
|
-
const
|
|
39
|
+
import { SHELLBAR_LABEL, SHELLBAR_LOGO, SHELLBAR_NOTIFICATIONS, SHELLBAR_NOTIFICATIONS_NO_COUNT, SHELLBAR_CANCEL, SHELLBAR_PROFILE, SHELLBAR_PRODUCTS, SHELLBAR_SEARCH, SHELLBAR_SEARCH_FIELD, SHELLBAR_OVERFLOW, SHELLBAR_LOGO_AREA, SHELLBAR_ADDITIONAL_CONTEXT, SHELLBAR_SEARCHFIELD_DESCRIPTION, SHELLBAR_SEARCH_BTN_OPEN, SHELLBAR_PRODUCT_SWITCH_BTN, } from "./generated/i18n/i18n-defaults.js";
|
|
40
|
+
const RESIZE_THROTTLE_RATE = 40; // ms
|
|
41
|
+
// actions always visible in lean mode, order is important
|
|
42
|
+
const PREDEFINED_PLACE_ACTIONS = ["feedback", "sys-help"];
|
|
36
43
|
/**
|
|
37
44
|
* @class
|
|
38
45
|
* ### Overview
|
|
@@ -140,47 +147,134 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
140
147
|
* @since 1.10.0
|
|
141
148
|
*/
|
|
142
149
|
this.accessibilityAttributes = {};
|
|
150
|
+
/**
|
|
151
|
+
* @private
|
|
152
|
+
*/
|
|
153
|
+
this.breakpointSize = "S";
|
|
143
154
|
/**
|
|
144
155
|
* @private
|
|
145
156
|
*/
|
|
146
157
|
this.withLogo = false;
|
|
147
|
-
this._menuPopoverItems = [];
|
|
148
158
|
this._menuPopoverExpanded = false;
|
|
149
159
|
this._overflowPopoverExpanded = false;
|
|
150
|
-
this.
|
|
151
|
-
this.
|
|
152
|
-
this.
|
|
160
|
+
this.hasVisibleStartContent = false;
|
|
161
|
+
this.hasVisibleEndContent = false;
|
|
162
|
+
this._cachedHiddenContent = [];
|
|
163
|
+
this._lastOffsetWidth = 0;
|
|
164
|
+
this._observableContent = [];
|
|
165
|
+
this._searchBarAutoOpen = false;
|
|
166
|
+
this._searchBarAutoClosed = false;
|
|
167
|
+
this._searchIconPressed = false;
|
|
153
168
|
this._hiddenIcons = [];
|
|
154
169
|
this._itemsInfo = [];
|
|
155
170
|
this._isInitialRendering = true;
|
|
171
|
+
this._overflowNotifications = null;
|
|
156
172
|
// marks if preventDefault() is called in item's press handler
|
|
157
173
|
this._defaultItemPressPrevented = false;
|
|
158
|
-
this.
|
|
159
|
-
this.
|
|
174
|
+
this.additionalContextObserver = new MutationObserver(() => {
|
|
175
|
+
this._updateAdditionalContextItems();
|
|
160
176
|
});
|
|
161
177
|
this._headerPress = () => {
|
|
162
|
-
this._updateClonedMenuItems();
|
|
163
178
|
if (this.hasMenuItems) {
|
|
164
179
|
const menuPopover = this._getMenuPopover();
|
|
165
180
|
menuPopover.opener = this.shadowRoot.querySelector(".ui5-shellbar-menu-button");
|
|
166
181
|
menuPopover.open = true;
|
|
167
182
|
}
|
|
168
183
|
};
|
|
169
|
-
this._handleResize = () => {
|
|
170
|
-
this.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
184
|
+
this._handleResize = throttle(() => {
|
|
185
|
+
this.menuPopover = this._getMenuPopover();
|
|
186
|
+
this.overflowPopover = this._getOverflowPopover();
|
|
187
|
+
this.overflowPopover.open = false;
|
|
188
|
+
if (this._lastOffsetWidth !== this.offsetWidth) {
|
|
174
189
|
this._overflowActions();
|
|
175
|
-
|
|
176
|
-
|
|
190
|
+
if (this._searchBarAutoOpen) {
|
|
191
|
+
this._searchBarInitialState();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}, RESIZE_THROTTLE_RATE);
|
|
195
|
+
}
|
|
196
|
+
_searchBarInitialState() {
|
|
197
|
+
const spacerWidth = this.shadowRoot.querySelector(".ui5-shellbar-spacer") ? this.shadowRoot.querySelector(".ui5-shellbar-spacer").getBoundingClientRect().width : 0;
|
|
198
|
+
const searchFieldWidth = this.domCalculatedValues("--_ui5_shellbar_search_field_width");
|
|
199
|
+
if (this._searchIconPressed || document.activeElement === this.searchField[0]) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (this._showFullWidthSearch) {
|
|
203
|
+
this.showSearchField = false;
|
|
204
|
+
this._searchBarAutoClosed = true;
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if ((spacerWidth <= 0 || this.additionalContextHidden.length !== 0) && this.showSearchField === true) {
|
|
208
|
+
this.showSearchField = false;
|
|
209
|
+
this._searchBarAutoClosed = true;
|
|
210
|
+
}
|
|
211
|
+
if (spacerWidth > searchFieldWidth && this.additionalContextHidden.length === 0 && this.showSearchField === false) {
|
|
212
|
+
this.showSearchField = true;
|
|
213
|
+
this._searchBarAutoClosed = false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
_onKeyDown(e) {
|
|
217
|
+
const items = this._getVisibleAndInteractiveItems();
|
|
218
|
+
const activeElement = getActiveElement();
|
|
219
|
+
const currentIndex = items.findIndex(el => el === activeElement);
|
|
220
|
+
if (isLeft(e) || isRight(e)) {
|
|
221
|
+
e.preventDefault(); // Prevent the default behavior to avoid any further automatic focus movemen
|
|
222
|
+
// Focus navigation based on the key pressed
|
|
223
|
+
if (isLeft(e)) {
|
|
224
|
+
this._focusPreviousItem(items, currentIndex);
|
|
225
|
+
}
|
|
226
|
+
else if (isRight(e)) {
|
|
227
|
+
this._focusNextItem(items, currentIndex);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
177
230
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
231
|
+
_focusNextItem(items, currentIndex) {
|
|
232
|
+
if (currentIndex < items.length - 1) {
|
|
233
|
+
(items[currentIndex + 1]).focus(); // Focus the next element
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
_focusPreviousItem(items, currentIndex) {
|
|
237
|
+
if (currentIndex > 0) {
|
|
238
|
+
(items[currentIndex - 1]).focus(); // Focus the previous element
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
_isVisible(element) {
|
|
242
|
+
const style = getComputedStyle(element);
|
|
243
|
+
return style.display !== "none" && style.visibility !== "hidden" && element.offsetWidth > 0 && element.offsetHeight > 0;
|
|
244
|
+
}
|
|
245
|
+
_isInteractive(element) {
|
|
246
|
+
const component = element;
|
|
247
|
+
if (component.isUI5Element) {
|
|
248
|
+
const dom = component.getFocusDomRef();
|
|
249
|
+
return dom?.tabIndex === 0;
|
|
250
|
+
}
|
|
251
|
+
return element.tabIndex === 0;
|
|
252
|
+
}
|
|
253
|
+
_getNavigableContent() {
|
|
254
|
+
return [
|
|
255
|
+
...this.startButton,
|
|
256
|
+
...this.logo,
|
|
257
|
+
...this.shadowRoot.querySelectorAll(".ui5-shellbar-logo"),
|
|
258
|
+
...this.shadowRoot.querySelectorAll(".ui5-shellbar-logo-area"),
|
|
259
|
+
...this.shadowRoot.querySelectorAll(".ui5-shellbar-menu-button"),
|
|
260
|
+
...this.additionalContext,
|
|
261
|
+
...this._getRightChildItems(),
|
|
262
|
+
];
|
|
263
|
+
}
|
|
264
|
+
_getRightChildItems() {
|
|
265
|
+
return [
|
|
266
|
+
...this.searchField,
|
|
267
|
+
...this.shadowRoot.querySelectorAll(".ui5-shellbar-search-item-for-arrow-nav"),
|
|
268
|
+
...this.assistant,
|
|
269
|
+
...this.shadowRoot.querySelectorAll(".ui5-shellbar-items-for-arrow-nav"),
|
|
270
|
+
];
|
|
271
|
+
}
|
|
272
|
+
_getVisibleAndInteractiveItems() {
|
|
273
|
+
const items = this._getNavigableContent();
|
|
274
|
+
const visibleAndInteractiveItems = items.filter(item => {
|
|
275
|
+
return this._isVisible(item) && this._isInteractive(item);
|
|
276
|
+
});
|
|
277
|
+
return visibleAndInteractiveItems;
|
|
184
278
|
}
|
|
185
279
|
_menuItemPress(e) {
|
|
186
280
|
const shouldContinue = this.fireDecoratorEvent("menu-item-click", {
|
|
@@ -227,6 +321,16 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
227
321
|
this._logoPress();
|
|
228
322
|
}
|
|
229
323
|
}
|
|
324
|
+
_calculateCSSREMValue(styleSet, propertyName) {
|
|
325
|
+
return Number(styleSet.getPropertyValue(propertyName).replace("rem", "")) * parseInt(getComputedStyle(document.body).getPropertyValue("font-size"));
|
|
326
|
+
}
|
|
327
|
+
_parsePxValue(styleSet, propertyName) {
|
|
328
|
+
return Number(styleSet.getPropertyValue(propertyName).replace("px", ""));
|
|
329
|
+
}
|
|
330
|
+
domCalculatedValues(cssVar) {
|
|
331
|
+
const shellbarComputerStyle = getComputedStyle(this.getDomRef());
|
|
332
|
+
return this._calculateCSSREMValue(shellbarComputerStyle, getScopedVarName(cssVar)); // px
|
|
333
|
+
}
|
|
230
334
|
onBeforeRendering() {
|
|
231
335
|
this.withLogo = this.hasLogo;
|
|
232
336
|
this._hiddenIcons = this._itemsInfo.filter(info => {
|
|
@@ -237,11 +341,23 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
237
341
|
const shouldStayOnScreen = isOverflowIcon || (isImageIcon && this.hasProfile);
|
|
238
342
|
return isHidden && isSet && !shouldStayOnScreen;
|
|
239
343
|
});
|
|
240
|
-
this.
|
|
344
|
+
this._observeAdditionalContextItems();
|
|
345
|
+
this._updateSeparatorsVisibility();
|
|
346
|
+
}
|
|
347
|
+
get additionalContextSorted() {
|
|
348
|
+
return this.additionalContext.sort((a, b) => {
|
|
349
|
+
return parseInt(a.getAttribute("data-hide-order") || "0") - parseInt(b.getAttribute("data-hide-order") || "0");
|
|
350
|
+
}).map(item => this.shadowRoot.querySelector(`#${item.slot}`)).filter(item => item !== null);
|
|
351
|
+
}
|
|
352
|
+
get additionalContextContainer() {
|
|
353
|
+
return this.shadowRoot.querySelector(".ui5-shellbar-overflow-container-additional-content");
|
|
241
354
|
}
|
|
242
355
|
onAfterRendering() {
|
|
243
|
-
|
|
244
|
-
|
|
356
|
+
requestAnimationFrame(() => {
|
|
357
|
+
this._lastOffsetWidth = this.offsetWidth;
|
|
358
|
+
this._overflowActions();
|
|
359
|
+
});
|
|
360
|
+
this._searchBarAutoOpen = this._searchBarAutoClosed || (this.showSearchField && !this._searchIconPressed);
|
|
245
361
|
}
|
|
246
362
|
/**
|
|
247
363
|
* Closes the overflow area.
|
|
@@ -261,68 +377,109 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
261
377
|
if (this.breakpointSize !== mappedSize) {
|
|
262
378
|
this.breakpointSize = mappedSize;
|
|
263
379
|
}
|
|
264
|
-
this._isXXLBreakpoint = this.breakpointSize === "XXL";
|
|
265
|
-
return mappedSize;
|
|
266
380
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
381
|
+
_hideOverflowItems(hiddenItems, items) {
|
|
382
|
+
for (let i = 0; hiddenItems > 0 && i < items.length; i++) {
|
|
383
|
+
// start from last item
|
|
384
|
+
const item = items[items.length - 1 - i];
|
|
385
|
+
if (item.classes.indexOf("ui5-shellbar-no-overflow-button") === -1) {
|
|
386
|
+
item.classes = `${item.classes} ui5-shellbar-hidden-button`;
|
|
387
|
+
hiddenItems--;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// assistant is a slot, still described in the itemsInfo for the purpose of the overflow
|
|
391
|
+
// so if marked as hidden, it should be hidden separately
|
|
392
|
+
this._updateAssistantIconVisibility(items);
|
|
393
|
+
return hiddenItems;
|
|
394
|
+
}
|
|
395
|
+
_hideAdditionalContext() {
|
|
396
|
+
const container = this.additionalContextContainer;
|
|
397
|
+
const totalWidth = container?.offsetWidth || 0;
|
|
398
|
+
const additionalContextSorted = this.additionalContextSorted.toReversed();
|
|
399
|
+
let usedWidth = 0;
|
|
400
|
+
for (let i = 0; i < additionalContextSorted.length; i++) {
|
|
401
|
+
const item = additionalContextSorted[i];
|
|
402
|
+
item.classList.remove("ui5-shellbar-hidden-button");
|
|
403
|
+
const itemWidth = item.offsetWidth + parseInt(getComputedStyle(item).getPropertyValue("margin-inline-start"));
|
|
404
|
+
usedWidth += itemWidth;
|
|
405
|
+
if (usedWidth > totalWidth) {
|
|
406
|
+
item.classList.add("ui5-shellbar-hidden-button");
|
|
407
|
+
}
|
|
408
|
+
}
|
|
282
409
|
}
|
|
283
410
|
_handleActionsOverflow() {
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
if (
|
|
302
|
-
|
|
411
|
+
const itemsToOverflow = this.itemsToOverflow;
|
|
412
|
+
const container = this.shadowRoot.querySelector(".ui5-shellbar-overflow-container-right");
|
|
413
|
+
const searchFieldWidth = this.searchField[0] ? this.searchField[0].offsetWidth : 0;
|
|
414
|
+
const nonDisappearingItems = Array.from(container.querySelectorAll(".ui5-shellbar-no-overflow-button"));
|
|
415
|
+
const nonDisappearingItemsWidth = nonDisappearingItems.reduce((acc, el) => acc + el.offsetWidth + this.domCalculatedValues("--_ui5-shellbar-overflow-button-margin"), 0);
|
|
416
|
+
let totalWidth = container.offsetWidth - nonDisappearingItemsWidth - this.separatorsWidth;
|
|
417
|
+
if (this.additionalContext.length === 0) {
|
|
418
|
+
totalWidth -= searchFieldWidth;
|
|
419
|
+
}
|
|
420
|
+
let usedWidth = 0;
|
|
421
|
+
let hiddenItems = 0;
|
|
422
|
+
let restoreVisibility = false;
|
|
423
|
+
// first check how many items can fit without overflowing
|
|
424
|
+
for (let i = 0; i < itemsToOverflow.length; i++) {
|
|
425
|
+
// reset item visibility before calculating
|
|
426
|
+
const item = itemsToOverflow[i];
|
|
427
|
+
const isAdditionalContext = this.additionalContextSorted.includes(item);
|
|
428
|
+
if (item.classList.contains("ui5-shellbar-hidden-button")) {
|
|
429
|
+
item.classList.remove("ui5-shellbar-hidden-button");
|
|
430
|
+
restoreVisibility = true;
|
|
303
431
|
}
|
|
304
|
-
if
|
|
305
|
-
|
|
432
|
+
// exlcude the gap if an item is in the additional context as the wrapped element's width is already including the gap
|
|
433
|
+
const gap = isAdditionalContext ? 0 : parseInt(getComputedStyle(item).getPropertyValue("margin-inline-start"));
|
|
434
|
+
const itemWidth = item.offsetWidth + gap;
|
|
435
|
+
if (restoreVisibility) {
|
|
436
|
+
item.classList.add("ui5-shellbar-hidden-button");
|
|
437
|
+
restoreVisibility = false;
|
|
306
438
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
order: -1,
|
|
314
|
-
};
|
|
439
|
+
usedWidth += itemWidth;
|
|
440
|
+
if (usedWidth > totalWidth) {
|
|
441
|
+
// as soon as we find an item that doesn't fit, we stop
|
|
442
|
+
// and sum the rest of the items as hidden
|
|
443
|
+
hiddenItems = itemsToOverflow.length - i;
|
|
444
|
+
break;
|
|
315
445
|
}
|
|
316
446
|
}
|
|
317
|
-
|
|
447
|
+
// never show only one item in the overflow
|
|
448
|
+
if (hiddenItems === 1) {
|
|
449
|
+
hiddenItems++;
|
|
450
|
+
}
|
|
451
|
+
const showOverflowButton = hiddenItems > 0;
|
|
452
|
+
const items = this._getAllItems(showOverflowButton, hiddenItems === itemsToOverflow.length).filter(item => item.show && item.classes.indexOf("ui5-shellbar-no-overflow-button") === -1);
|
|
453
|
+
// start hiding the actions on the right (overflow actions) first
|
|
454
|
+
this._hideOverflowItems(hiddenItems, items);
|
|
455
|
+
// last, start hiding the items that are in the additional context
|
|
456
|
+
this._hideAdditionalContext();
|
|
457
|
+
if (JSON.stringify(this.additionalContextHidden) !== JSON.stringify(this._cachedHiddenContent)) {
|
|
458
|
+
this.fireDecoratorEvent("content-item-visibility-change", { items: this.additionalContextHidden });
|
|
459
|
+
}
|
|
460
|
+
this._cachedHiddenContent = this.additionalContextHidden;
|
|
461
|
+
return items;
|
|
318
462
|
}
|
|
319
463
|
_overflowActions() {
|
|
320
|
-
|
|
321
|
-
if (size === "S") {
|
|
322
|
-
return this._handleSizeS();
|
|
323
|
-
}
|
|
464
|
+
this._handleBarBreakpoints();
|
|
324
465
|
const newItems = this._handleActionsOverflow();
|
|
466
|
+
this._updateSeparatorsVisibility();
|
|
325
467
|
this._updateItemsInfo(newItems);
|
|
468
|
+
this._updateOverflowNotifications();
|
|
469
|
+
}
|
|
470
|
+
_updateAssistantIconVisibility(items) {
|
|
471
|
+
if (this.assistant.length) {
|
|
472
|
+
const assistantWrapper = this.shadowRoot.getElementById("assistant");
|
|
473
|
+
const assistantInfo = items.find(item => item.text === "Assistant");
|
|
474
|
+
assistantWrapper && assistantWrapper.classList.remove("ui5-shellbar-hidden-button");
|
|
475
|
+
if (assistantInfo && assistantInfo.classes.indexOf("ui5-shellbar-hidden-button") > 0) {
|
|
476
|
+
assistantWrapper && assistantWrapper.classList.add("ui5-shellbar-hidden-button");
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
_updateSeparatorsVisibility() {
|
|
481
|
+
this.hasVisibleStartContent = this._hasVisibleStartContent;
|
|
482
|
+
this.hasVisibleEndContent = this._hasVisibleEndContent;
|
|
326
483
|
}
|
|
327
484
|
_toggleActionPopover() {
|
|
328
485
|
const overflowButton = this.shadowRoot.querySelector(".ui5-shellbar-overflow-button");
|
|
@@ -335,12 +492,14 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
335
492
|
if (isDesktop()) {
|
|
336
493
|
this.setAttribute("desktop", "");
|
|
337
494
|
}
|
|
495
|
+
if (this._searchBarAutoOpen) {
|
|
496
|
+
setTimeout(() => this._searchBarInitialState(), 100);
|
|
497
|
+
}
|
|
338
498
|
}
|
|
339
499
|
onExitDOM() {
|
|
340
|
-
this.
|
|
500
|
+
this.additionalContextObserver.disconnect();
|
|
501
|
+
this._observableContent = [];
|
|
341
502
|
ResizeHandler.deregister(this, this._handleResize);
|
|
342
|
-
clearTimeout(this._debounceInterval);
|
|
343
|
-
this._debounceInterval = null;
|
|
344
503
|
}
|
|
345
504
|
_handleSearchIconPress() {
|
|
346
505
|
const searchButtonRef = this.shadowRoot.querySelector(".ui5-shellbar-search-button");
|
|
@@ -348,10 +507,12 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
348
507
|
targetRef: searchButtonRef,
|
|
349
508
|
searchFieldVisible: this.showSearchField,
|
|
350
509
|
});
|
|
510
|
+
this._searchIconPressed = true;
|
|
351
511
|
if (defaultPrevented) {
|
|
352
512
|
return;
|
|
353
513
|
}
|
|
354
514
|
this.showSearchField = !this.showSearchField;
|
|
515
|
+
this._searchBarAutoOpen = this.showSearchField;
|
|
355
516
|
if (!this.showSearchField) {
|
|
356
517
|
return;
|
|
357
518
|
}
|
|
@@ -459,24 +620,50 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
459
620
|
* Returns all items that will be placed in the right of the bar as icons / dom elements.
|
|
460
621
|
* @param showOverflowButton Determines if overflow button should be visible (not overflowing)
|
|
461
622
|
*/
|
|
462
|
-
_getAllItems(showOverflowButton) {
|
|
623
|
+
_getAllItems(showOverflowButton, showSearchButton = true) {
|
|
463
624
|
let domOrder = -1;
|
|
464
|
-
const search = {
|
|
465
|
-
icon: "search",
|
|
466
|
-
text: this._searchText,
|
|
467
|
-
classes: `${this.searchField.length ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-search-button ui5-shellbar-button`,
|
|
468
|
-
priority: 4,
|
|
469
|
-
domOrder: this.searchField.length ? (++domOrder) : -1,
|
|
470
|
-
styles: {
|
|
471
|
-
order: this.searchField.length ? 1 : -10,
|
|
472
|
-
},
|
|
473
|
-
id: `${this._id}-item-${1}`,
|
|
474
|
-
press: this._handleSearchIconPress.bind(this),
|
|
475
|
-
show: !!this.searchField.length,
|
|
476
|
-
};
|
|
477
625
|
const items = [
|
|
478
|
-
|
|
626
|
+
{
|
|
627
|
+
icon: search,
|
|
628
|
+
text: this._searchText,
|
|
629
|
+
classes: `${this.searchField.length ? "" : "ui5-shellbar-invisible-button"} ${showSearchButton ? "" : "ui5-shellbar-no-overflow-button"} ui5-shellbar-search-button ui5-shellbar-button`,
|
|
630
|
+
domOrder: this.searchField.length ? (++domOrder) : -1,
|
|
631
|
+
id: `${this._id}-item-${1}`,
|
|
632
|
+
press: this._handleSearchIconPress.bind(this),
|
|
633
|
+
show: !!this.searchField.length,
|
|
634
|
+
tooltip: this._searchText,
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
icon: da,
|
|
638
|
+
text: "Assistant",
|
|
639
|
+
classes: `${this.assistant.length ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-button`,
|
|
640
|
+
id: `${this._id}-item-${4}`,
|
|
641
|
+
show: !!this.assistant.length,
|
|
642
|
+
domOrder: this.assistant.length ? (++domOrder) : -1,
|
|
643
|
+
press: () => { },
|
|
644
|
+
tooltip: this.assistant.length ? (this.assistant[0].getAttribute("text") || this.assistant[0].getAttribute("title") || undefined) : undefined,
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
icon: bell,
|
|
648
|
+
title: this._notificationsText,
|
|
649
|
+
text: ShellBar_1.i18nBundle.getText(SHELLBAR_NOTIFICATIONS_NO_COUNT),
|
|
650
|
+
count: this.notificationsCount,
|
|
651
|
+
classes: `${this.showNotifications ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-bell-button ui5-shellbar-button`,
|
|
652
|
+
id: `${this._id}-item-${2}`,
|
|
653
|
+
show: this.showNotifications,
|
|
654
|
+
domOrder: this.showNotifications ? (++domOrder) : -1,
|
|
655
|
+
press: this._handleNotificationsPress.bind(this),
|
|
656
|
+
tooltip: this._notificationsText,
|
|
657
|
+
},
|
|
658
|
+
// sort feedback and help to always be last
|
|
659
|
+
...this.items.sort((a, b) => {
|
|
660
|
+
const aIndex = PREDEFINED_PLACE_ACTIONS.indexOf(a.icon || "");
|
|
661
|
+
const bIndex = PREDEFINED_PLACE_ACTIONS.indexOf(b.icon || "");
|
|
662
|
+
return aIndex - bIndex;
|
|
663
|
+
}).map((item) => {
|
|
479
664
|
item._getRealDomRef = () => this.getDomRef().querySelector(`*[data-ui5-stable=${item.stableDomRef}]`);
|
|
665
|
+
// check if included for lean mode
|
|
666
|
+
const show = !!item.icon || false;
|
|
480
667
|
return {
|
|
481
668
|
icon: item.icon,
|
|
482
669
|
id: item._id,
|
|
@@ -484,75 +671,46 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
484
671
|
refItemid: item._id,
|
|
485
672
|
text: item.text,
|
|
486
673
|
classes: "ui5-shellbar-custom-item ui5-shellbar-button",
|
|
487
|
-
priority: 1,
|
|
488
674
|
domOrder: (++domOrder),
|
|
489
|
-
|
|
490
|
-
order: 2,
|
|
491
|
-
},
|
|
492
|
-
show: true,
|
|
675
|
+
show,
|
|
493
676
|
press: this._handleCustomActionPress.bind(this),
|
|
494
677
|
custom: true,
|
|
495
678
|
title: item.title,
|
|
496
679
|
stableDomRef: item.stableDomRef,
|
|
680
|
+
tooltip: item.title || item.text,
|
|
497
681
|
};
|
|
498
682
|
}),
|
|
499
683
|
{
|
|
500
|
-
icon:
|
|
501
|
-
text: this._notificationsText,
|
|
502
|
-
classes: `${this.showNotifications ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-bell-button ui5-shellbar-button`,
|
|
503
|
-
priority: 3,
|
|
504
|
-
styles: {
|
|
505
|
-
order: this.showNotifications ? 3 : -10,
|
|
506
|
-
},
|
|
507
|
-
id: `${this._id}-item-${2}`,
|
|
508
|
-
show: this.showNotifications,
|
|
509
|
-
domOrder: this.showNotifications ? (++domOrder) : -1,
|
|
510
|
-
press: this._handleNotificationsPress.bind(this),
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
icon: "overflow",
|
|
684
|
+
icon: overflow,
|
|
514
685
|
text: "Overflow",
|
|
515
|
-
classes: `${showOverflowButton ? "" : "ui5-shellbar-hidden-button"} ui5-shellbar-overflow-button
|
|
516
|
-
priority: 5,
|
|
517
|
-
order: 4,
|
|
518
|
-
styles: {
|
|
519
|
-
order: showOverflowButton ? 4 : -1,
|
|
520
|
-
},
|
|
686
|
+
classes: `${showOverflowButton ? "" : "ui5-shellbar-hidden-button"} ui5-shellbar-no-overflow-button ui5-shellbar-overflow-button ui5-shellbar-button`,
|
|
521
687
|
domOrder: showOverflowButton ? (++domOrder) : -1,
|
|
522
688
|
id: `${this.id}-item-${5}`,
|
|
523
689
|
press: this._handleOverflowPress.bind(this),
|
|
524
690
|
show: true,
|
|
691
|
+
tooltip: this._overflowText,
|
|
525
692
|
},
|
|
526
693
|
{
|
|
527
694
|
text: "Person",
|
|
528
|
-
classes: `${this.hasProfile ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-image-button ui5-shellbar-button`,
|
|
529
|
-
priority: 4,
|
|
530
|
-
styles: {
|
|
531
|
-
order: this.hasProfile ? 5 : -10,
|
|
532
|
-
},
|
|
695
|
+
classes: `${this.hasProfile ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-no-overflow-button ui5-shellbar-image-button ui5-shellbar-button`,
|
|
533
696
|
profile: true,
|
|
534
697
|
id: `${this._id}-item-${3}`,
|
|
535
698
|
domOrder: this.hasProfile ? (++domOrder) : -1,
|
|
536
699
|
show: this.hasProfile,
|
|
537
700
|
press: this._handleProfilePress.bind(this),
|
|
701
|
+
tooltip: this._profileText,
|
|
538
702
|
},
|
|
539
703
|
{
|
|
540
|
-
icon:
|
|
704
|
+
icon: grid,
|
|
541
705
|
text: this._productsText,
|
|
542
|
-
classes: `${this.showProductSwitch ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-button ui5-shellbar-button-product-switch`,
|
|
543
|
-
priority: 2,
|
|
544
|
-
styles: {
|
|
545
|
-
order: this.showProductSwitch ? 6 : -10,
|
|
546
|
-
},
|
|
706
|
+
classes: `${this.showProductSwitch ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-no-overflow-button ui5-shellbar-button ui5-shellbar-image-button ui5-shellbar-button-product-switch`,
|
|
547
707
|
id: `${this._id}-item-${4}`,
|
|
548
708
|
show: this.showProductSwitch,
|
|
549
709
|
domOrder: this.showProductSwitch ? (++domOrder) : -1,
|
|
550
710
|
press: this._handleProductSwitchPress.bind(this),
|
|
711
|
+
tooltip: this._productsText,
|
|
551
712
|
},
|
|
552
713
|
];
|
|
553
|
-
if (this.midContent.length < 1 && items[0].text !== this._searchText) {
|
|
554
|
-
items.unshift(search);
|
|
555
|
-
}
|
|
556
714
|
return items;
|
|
557
715
|
}
|
|
558
716
|
_updateItemsInfo(newItems) {
|
|
@@ -561,25 +719,41 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
561
719
|
this._itemsInfo = newItems;
|
|
562
720
|
}
|
|
563
721
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
this._menuPopoverItems.push(clonedItem);
|
|
722
|
+
_updateOverflowNotifications() {
|
|
723
|
+
const notificationsArr = [];
|
|
724
|
+
let overflowNotifications = null;
|
|
725
|
+
this._itemsInfo.forEach(item => {
|
|
726
|
+
if (item.count && this.isIconHidden(item.icon)) {
|
|
727
|
+
notificationsArr.push(item.count);
|
|
728
|
+
}
|
|
572
729
|
});
|
|
730
|
+
if (notificationsArr.length === 1) {
|
|
731
|
+
overflowNotifications = notificationsArr[0];
|
|
732
|
+
}
|
|
733
|
+
else if (notificationsArr.length > 1) {
|
|
734
|
+
overflowNotifications = " ";
|
|
735
|
+
}
|
|
736
|
+
this._overflowNotifications = overflowNotifications;
|
|
573
737
|
}
|
|
574
|
-
|
|
575
|
-
this.
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
738
|
+
_updateAdditionalContextItems() {
|
|
739
|
+
this._handleActionsOverflow();
|
|
740
|
+
}
|
|
741
|
+
_observeAdditionalContextItems() {
|
|
742
|
+
if (JSON.stringify(this.additionalContext) === JSON.stringify(this._observableContent)) {
|
|
743
|
+
return false;
|
|
744
|
+
}
|
|
745
|
+
this.additionalContext.forEach(item => {
|
|
746
|
+
if (!this._observableContent.includes(item)) {
|
|
747
|
+
this.additionalContextObserver.observe(item, {
|
|
748
|
+
characterData: false,
|
|
749
|
+
childList: false,
|
|
750
|
+
subtree: false,
|
|
751
|
+
attributes: true,
|
|
752
|
+
attributeFilter: ["data-hide-order"],
|
|
753
|
+
});
|
|
754
|
+
}
|
|
582
755
|
});
|
|
756
|
+
this._observableContent = this.additionalContext;
|
|
583
757
|
}
|
|
584
758
|
_getOverflowPopover() {
|
|
585
759
|
return this.shadowRoot.querySelector(".ui5-shellbar-overflow-popover");
|
|
@@ -599,46 +773,43 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
599
773
|
wrapper: {
|
|
600
774
|
"ui5-shellbar-root": true,
|
|
601
775
|
"ui5-shellbar-with-searchfield": this.hasSearchField,
|
|
776
|
+
"ui5-shellbar-with-full-searchfield": this.hasSearchField && this.showSearchField && this._showFullWidthSearch,
|
|
602
777
|
},
|
|
603
778
|
button: {
|
|
604
779
|
"ui5-shellbar-menu-button--interactive": this.hasMenuItems,
|
|
605
|
-
"ui5-shellbar-menu-button": true,
|
|
606
780
|
},
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
},
|
|
781
|
+
notification: {
|
|
782
|
+
"ui5-shellbar-hidden-button": this.isIconHidden("bell"),
|
|
783
|
+
},
|
|
784
|
+
search: {
|
|
785
|
+
"ui5-shellbar-hidden-button": this.isIconHidden("search"),
|
|
786
|
+
"ui5-shellbar-no-overflow-button": this.breakpointSize !== "S",
|
|
787
|
+
},
|
|
788
|
+
overflow: {
|
|
789
|
+
"ui5-shellbar-hidden-button": this._hiddenIcons.length === 0,
|
|
790
|
+
},
|
|
791
|
+
assistant: {
|
|
792
|
+
"ui5-shellbar-hidden-button": this.isIconHidden("assistant"),
|
|
620
793
|
},
|
|
621
794
|
};
|
|
622
795
|
}
|
|
623
796
|
get styles() {
|
|
624
797
|
return {
|
|
625
|
-
items: {
|
|
626
|
-
notification: {
|
|
627
|
-
"order": this.isIconHidden("bell") ? "-1" : "3",
|
|
628
|
-
},
|
|
629
|
-
overflow: {
|
|
630
|
-
"order": this.isIconHidden("overflow") ? "-1" : "4",
|
|
631
|
-
},
|
|
632
|
-
profile: {
|
|
633
|
-
"order": this.hasProfile ? "5" : "-1",
|
|
634
|
-
},
|
|
635
|
-
product: {
|
|
636
|
-
"order": this.isIconHidden("grid") ? "-1" : "6",
|
|
637
|
-
},
|
|
638
|
-
},
|
|
639
798
|
searchField: {
|
|
640
799
|
"display": this.correctSearchFieldStyles,
|
|
641
800
|
},
|
|
801
|
+
additionalContext: {
|
|
802
|
+
start: {
|
|
803
|
+
separator: {
|
|
804
|
+
"visibility": this.hasVisibleStartContent ? "" : "hidden",
|
|
805
|
+
},
|
|
806
|
+
},
|
|
807
|
+
end: {
|
|
808
|
+
separator: {
|
|
809
|
+
"visibility": this.hasVisibleEndContent ? "" : "hidden",
|
|
810
|
+
},
|
|
811
|
+
},
|
|
812
|
+
},
|
|
642
813
|
};
|
|
643
814
|
}
|
|
644
815
|
get correctSearchFieldStyles() {
|
|
@@ -654,7 +825,7 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
654
825
|
return !!this.logo.length;
|
|
655
826
|
}
|
|
656
827
|
get showLogoInMenuButton() {
|
|
657
|
-
return this.hasLogo && this.breakpointSize === "S";
|
|
828
|
+
return this.hasLogo && (this.breakpointSize === "S");
|
|
658
829
|
}
|
|
659
830
|
get showTitleInMenuButton() {
|
|
660
831
|
return this.primaryTitle && !(this.showLogoInMenuButton);
|
|
@@ -680,6 +851,9 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
680
851
|
get hasMenuItems() {
|
|
681
852
|
return this.menuItems.length > 0;
|
|
682
853
|
}
|
|
854
|
+
get imageBtnText() {
|
|
855
|
+
return getEffectiveAriaLabelText(this);
|
|
856
|
+
}
|
|
683
857
|
get _shellbarText() {
|
|
684
858
|
return ShellBar_1.i18nBundle.getText(SHELLBAR_LABEL);
|
|
685
859
|
}
|
|
@@ -692,10 +866,82 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
692
866
|
get _cancelBtnText() {
|
|
693
867
|
return ShellBar_1.i18nBundle.getText(SHELLBAR_CANCEL);
|
|
694
868
|
}
|
|
869
|
+
get _logoAreaText() {
|
|
870
|
+
const primaryTitle = this.primaryTitle ?? "";
|
|
871
|
+
const secondaryTitle = this.secondaryTitle ?? "";
|
|
872
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_LOGO_AREA, primaryTitle, secondaryTitle);
|
|
873
|
+
}
|
|
874
|
+
get _additionalContextText() {
|
|
875
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_ADDITIONAL_CONTEXT);
|
|
876
|
+
}
|
|
877
|
+
get _searchFieldDescription() {
|
|
878
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCHFIELD_DESCRIPTION);
|
|
879
|
+
}
|
|
880
|
+
get _additionalContextRole() {
|
|
881
|
+
if (this.additionalContext.length === 1) {
|
|
882
|
+
return;
|
|
883
|
+
}
|
|
884
|
+
return "group";
|
|
885
|
+
}
|
|
886
|
+
get additionalContext() {
|
|
887
|
+
return [...this.startContent, ...this.endContent];
|
|
888
|
+
}
|
|
889
|
+
get startContent() {
|
|
890
|
+
// return all items before the ui5-shellbar-spacer
|
|
891
|
+
const startContent = [];
|
|
892
|
+
for (let i = 0; i < this.content.length; i++) {
|
|
893
|
+
const child = this.content[i];
|
|
894
|
+
if (child.hasAttribute("ui5-shellbar-spacer")) {
|
|
895
|
+
break;
|
|
896
|
+
}
|
|
897
|
+
startContent.push(child);
|
|
898
|
+
}
|
|
899
|
+
return startContent;
|
|
900
|
+
}
|
|
901
|
+
get endContent() {
|
|
902
|
+
// return all items after the ui5-shellbar-spacer
|
|
903
|
+
const endContent = [];
|
|
904
|
+
let spacerFound = false;
|
|
905
|
+
for (let i = 0; i < this.content.length; i++) {
|
|
906
|
+
const child = this.content[i];
|
|
907
|
+
if (spacerFound) {
|
|
908
|
+
endContent.push(child);
|
|
909
|
+
}
|
|
910
|
+
if (child.hasAttribute("ui5-shellbar-spacer")) {
|
|
911
|
+
spacerFound = true;
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
return endContent;
|
|
915
|
+
}
|
|
916
|
+
get _rightChildRole() {
|
|
917
|
+
const items = this._getRightChildItems();
|
|
918
|
+
const visibleItems = items.filter(item => {
|
|
919
|
+
return this._isVisible(item);
|
|
920
|
+
});
|
|
921
|
+
if (visibleItems.length === 1) {
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
924
|
+
return "toolbar";
|
|
925
|
+
}
|
|
926
|
+
get _searchFieldExpanded() {
|
|
927
|
+
return this.showSearchField;
|
|
928
|
+
}
|
|
929
|
+
get _searchFieldText() {
|
|
930
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCH_FIELD);
|
|
931
|
+
}
|
|
932
|
+
get _searchBtnOpen() {
|
|
933
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCH_BTN_OPEN);
|
|
934
|
+
}
|
|
935
|
+
get _productSwitchBtnText() {
|
|
936
|
+
return ShellBar_1.i18nBundle.getText(SHELLBAR_PRODUCT_SWITCH_BTN);
|
|
937
|
+
}
|
|
695
938
|
get _showFullWidthSearch() {
|
|
696
|
-
const size = this.
|
|
939
|
+
const size = this.breakpointSize;
|
|
697
940
|
const searchBtnHidden = !!this.shadowRoot.querySelector(".ui5-shellbar-search-button.ui5-shellbar-hidden-button");
|
|
698
|
-
return
|
|
941
|
+
return size === "S" || searchBtnHidden || this._lessSearchSpace;
|
|
942
|
+
}
|
|
943
|
+
get isSearchFieldVisible() {
|
|
944
|
+
return this.searchField[0]?.offsetWidth || 0;
|
|
699
945
|
}
|
|
700
946
|
get _profileText() {
|
|
701
947
|
return this.accessibilityAttributes.profile?.name || ShellBar_1.i18nBundle.getText(SHELLBAR_PROFILE);
|
|
@@ -709,6 +955,41 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
709
955
|
get _overflowText() {
|
|
710
956
|
return ShellBar_1.i18nBundle.getText(SHELLBAR_OVERFLOW);
|
|
711
957
|
}
|
|
958
|
+
get hasAdditionalContext() {
|
|
959
|
+
return this.additionalContext.length > 0;
|
|
960
|
+
}
|
|
961
|
+
get _hasVisibleStartContent() {
|
|
962
|
+
return this.startContent.some(item => this.shadowRoot.getElementById(item.slot) && !this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
|
|
963
|
+
}
|
|
964
|
+
get _hasVisibleEndContent() {
|
|
965
|
+
return this.endContent.some(item => this.shadowRoot.getElementById(item.slot) && !this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
|
|
966
|
+
}
|
|
967
|
+
get itemsToOverflow() {
|
|
968
|
+
const overflowActions = Array.from(this.shadowRoot.querySelectorAll(".ui5-shellbar-button:not(.ui5-shellbar-overflow-button):not(.ui5-shellbar-invisible-button):not(.ui5-shellbar-cancel-button):not(.ui5-shellbar-no-overflow-button)"));
|
|
969
|
+
return [...this.additionalContextSorted.toReversed(), this.assistant[0], ...overflowActions.toReversed()].filter(Boolean);
|
|
970
|
+
}
|
|
971
|
+
get separatorsWidth() {
|
|
972
|
+
const separatorsWidth = this.separators.reduce((acc, el) => acc + (el?.offsetWidth + this.domCalculatedValues("--_ui5-shellbar-content-margin-start")) || 0, 0);
|
|
973
|
+
return separatorsWidth;
|
|
974
|
+
}
|
|
975
|
+
get searchFieldActualWidth() {
|
|
976
|
+
return this.shadowRoot.querySelector("[ui5-input]")?.offsetWidth || 0;
|
|
977
|
+
}
|
|
978
|
+
get separators() {
|
|
979
|
+
const start = this.shadowRoot.querySelector(".ui5-shellbar-separator-start");
|
|
980
|
+
const end = this.shadowRoot.querySelector(".ui5-shellbar-separator-end");
|
|
981
|
+
return [start, end];
|
|
982
|
+
}
|
|
983
|
+
get additionalContextHidden() {
|
|
984
|
+
return [...this.endContent, ...this.startContent].filter(item => this.shadowRoot.getElementById(item.slot) && this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
|
|
985
|
+
}
|
|
986
|
+
get _lessSearchSpace() {
|
|
987
|
+
const targetContainer = this.shadowRoot.querySelector(".ui5-shellbar-spacer");
|
|
988
|
+
const targetWidth = targetContainer?.offsetWidth || 0;
|
|
989
|
+
const searchFieldWidth = this.domCalculatedValues("--_ui5_shellbar_search_field_width");
|
|
990
|
+
const isFullSearchOpen = this.classList.contains("ui5-shellbar-with-full-searchfield");
|
|
991
|
+
return this.breakpointSize === "M" && ((this.hasAdditionalContext && targetWidth <= 0) || (!isFullSearchOpen && targetWidth <= searchFieldWidth));
|
|
992
|
+
}
|
|
712
993
|
get accInfo() {
|
|
713
994
|
const overflowExpanded = this.accessibilityAttributes.overflow?.expanded;
|
|
714
995
|
return {
|
|
@@ -749,7 +1030,10 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
|
|
|
749
1030
|
};
|
|
750
1031
|
}
|
|
751
1032
|
get accLogoRole() {
|
|
752
|
-
return this.accessibilityAttributes.logo?.role || "
|
|
1033
|
+
return this.accessibilityAttributes.logo?.role || "link";
|
|
1034
|
+
}
|
|
1035
|
+
get isSBreakPoint() {
|
|
1036
|
+
return this.breakpointSize === "S";
|
|
753
1037
|
}
|
|
754
1038
|
};
|
|
755
1039
|
__decorate([
|
|
@@ -782,9 +1066,6 @@ __decorate([
|
|
|
782
1066
|
__decorate([
|
|
783
1067
|
property({ type: Object })
|
|
784
1068
|
], ShellBar.prototype, "_itemsInfo", void 0);
|
|
785
|
-
__decorate([
|
|
786
|
-
property({ type: Array, noAttribute: true })
|
|
787
|
-
], ShellBar.prototype, "_menuPopoverItems", void 0);
|
|
788
1069
|
__decorate([
|
|
789
1070
|
property({ type: Boolean, noAttribute: true })
|
|
790
1071
|
], ShellBar.prototype, "_menuPopoverExpanded", void 0);
|
|
@@ -793,10 +1074,10 @@ __decorate([
|
|
|
793
1074
|
], ShellBar.prototype, "_overflowPopoverExpanded", void 0);
|
|
794
1075
|
__decorate([
|
|
795
1076
|
property({ type: Boolean, noAttribute: true })
|
|
796
|
-
], ShellBar.prototype, "
|
|
1077
|
+
], ShellBar.prototype, "hasVisibleStartContent", void 0);
|
|
797
1078
|
__decorate([
|
|
798
1079
|
property({ type: Boolean, noAttribute: true })
|
|
799
|
-
], ShellBar.prototype, "
|
|
1080
|
+
], ShellBar.prototype, "hasVisibleEndContent", void 0);
|
|
800
1081
|
__decorate([
|
|
801
1082
|
slot()
|
|
802
1083
|
], ShellBar.prototype, "assistant", void 0);
|
|
@@ -821,6 +1102,9 @@ __decorate([
|
|
|
821
1102
|
__decorate([
|
|
822
1103
|
slot()
|
|
823
1104
|
], ShellBar.prototype, "midContent", void 0);
|
|
1105
|
+
__decorate([
|
|
1106
|
+
slot({ type: HTMLElement, individualSlots: true })
|
|
1107
|
+
], ShellBar.prototype, "content", void 0);
|
|
824
1108
|
__decorate([
|
|
825
1109
|
i18n("@ui5/webcomponents-fiori")
|
|
826
1110
|
], ShellBar, "i18nBundle", void 0);
|
|
@@ -829,7 +1113,7 @@ ShellBar = ShellBar_1 = __decorate([
|
|
|
829
1113
|
tag: "ui5-shellbar",
|
|
830
1114
|
fastNavigation: true,
|
|
831
1115
|
languageAware: true,
|
|
832
|
-
renderer:
|
|
1116
|
+
renderer: jsxRenderer,
|
|
833
1117
|
template: ShellBarTemplate,
|
|
834
1118
|
styles: [shellBarStyles, ShellBarPopoverCss],
|
|
835
1119
|
dependencies: [
|
|
@@ -838,6 +1122,7 @@ ShellBar = ShellBar_1 = __decorate([
|
|
|
838
1122
|
List,
|
|
839
1123
|
Popover,
|
|
840
1124
|
ListItemStandard,
|
|
1125
|
+
Menu,
|
|
841
1126
|
],
|
|
842
1127
|
})
|
|
843
1128
|
/**
|
|
@@ -908,6 +1193,18 @@ ShellBar = ShellBar_1 = __decorate([
|
|
|
908
1193
|
cancelable: true,
|
|
909
1194
|
bubbles: true,
|
|
910
1195
|
})
|
|
1196
|
+
/**
|
|
1197
|
+
* Fired, when an item from the startContent or endContent slots is hidden or shown.
|
|
1198
|
+
* **Note:** The `content-item-visibility-change` event is in an experimental state and is a subject to change.
|
|
1199
|
+
*
|
|
1200
|
+
* @param {Array<HTMLElement>} array of all the items that are hidden
|
|
1201
|
+
* @public
|
|
1202
|
+
* @since 2.7.0
|
|
1203
|
+
*/
|
|
1204
|
+
,
|
|
1205
|
+
event("content-item-visibility-change", {
|
|
1206
|
+
bubbles: true,
|
|
1207
|
+
})
|
|
911
1208
|
], ShellBar);
|
|
912
1209
|
ShellBar.define();
|
|
913
1210
|
export default ShellBar;
|