@sapudex/web-components 2.56.0 → 2.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +258 -0
- package/cypress/specs/FilterMenu.cy.tsx +209 -19
- package/cypress/specs/List.cy.tsx +67 -4
- package/cypress/specs/ListItem.cy.tsx +35 -9
- package/cypress/specs/SelectBox.cy.tsx +100 -0
- package/cypress/specs/TabNavigation.cy.tsx +297 -21
- package/cypress/specs/TagGroup.cy.tsx +35 -0
- package/dist/Carousel.d.ts +9 -3
- package/dist/Carousel.js +35 -6
- package/dist/Carousel.js.map +1 -1
- package/dist/CarouselTemplate.js +3 -3
- package/dist/CarouselTemplate.js.map +1 -1
- package/dist/List.d.ts +15 -1
- package/dist/List.js +23 -2
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +13 -0
- package/dist/ListGroupHeaderBase.js +43 -2
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListGroupHeaderTemplate.js +26 -7
- package/dist/ListGroupHeaderTemplate.js.map +1 -1
- package/dist/ListItem.d.ts +0 -3
- package/dist/ListItem.js +18 -12
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +17 -0
- package/dist/ListItemBase.js +15 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListItemTemplate.js +2 -2
- package/dist/ListItemTemplate.js.map +1 -1
- package/dist/MastheadCountrySelector.js +5 -5
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
- package/dist/MastheadCountrySelectorTemplate.js +15 -0
- package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
- package/dist/MastheadItem.d.ts +0 -3
- package/dist/MastheadItem.js +3 -6
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadItemTemplate.d.ts +2 -0
- package/dist/MastheadItemTemplate.js +41 -0
- package/dist/MastheadItemTemplate.js.map +1 -0
- package/dist/MastheadMenu.d.ts +1 -0
- package/dist/MastheadMenu.js +4 -6
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +0 -3
- package/dist/MastheadMenuItem.js +3 -6
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMenuItemTemplate.d.ts +2 -0
- package/dist/MastheadMenuItemTemplate.js +36 -0
- package/dist/MastheadMenuItemTemplate.js.map +1 -0
- package/dist/MastheadMenuTemplate.d.ts +2 -0
- package/dist/MastheadMenuTemplate.js +13 -0
- package/dist/MastheadMenuTemplate.js.map +1 -0
- package/dist/MastheadMobileMenu.js +3 -3
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
- package/dist/MastheadMobileMenuTemplate.js +33 -0
- package/dist/MastheadMobileMenuTemplate.js.map +1 -0
- package/dist/MastheadProfileMenu.d.ts +2 -4
- package/dist/MastheadProfileMenu.js +5 -20
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
- package/dist/MastheadProfileMenuTemplate.js +24 -0
- package/dist/MastheadProfileMenuTemplate.js.map +1 -0
- package/dist/MastheadShell.js +3 -5
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MastheadShellTemplate.d.ts +2 -0
- package/dist/MastheadShellTemplate.js +20 -0
- package/dist/MastheadShellTemplate.js.map +1 -0
- package/dist/SearchableListBase.d.ts +10 -0
- package/dist/SearchableListBase.js +34 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +35 -4
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +1 -0
- package/dist/SecondaryNavigation.js +20 -6
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SelectBase.js +8 -3
- package/dist/SelectBase.js.map +1 -1
- package/dist/Tab.d.ts +0 -7
- package/dist/Tab.js +4 -19
- package/dist/Tab.js.map +1 -1
- package/dist/TabHeaderTemplate.d.ts +2 -0
- package/dist/TabHeaderTemplate.js +15 -0
- package/dist/TabHeaderTemplate.js.map +1 -0
- package/dist/TabInOverflowTemplate.d.ts +2 -0
- package/dist/TabInOverflowTemplate.js +7 -0
- package/dist/TabInOverflowTemplate.js.map +1 -0
- package/dist/TabNavigation.d.ts +6 -6
- package/dist/TabNavigation.js +56 -42
- package/dist/TabNavigation.js.map +1 -1
- package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
- package/dist/TabNavigationPopoverTemplate.js +9 -0
- package/dist/TabNavigationPopoverTemplate.js.map +1 -0
- package/dist/TabNavigationTemplate.d.ts +2 -0
- package/dist/TabNavigationTemplate.js +10 -0
- package/dist/TabNavigationTemplate.js.map +1 -0
- package/dist/TabTemplate.d.ts +2 -0
- package/dist/TabTemplate.js +5 -0
- package/dist/TabTemplate.js.map +1 -0
- package/dist/Tag.d.ts +1 -0
- package/dist/Tag.js +6 -0
- package/dist/Tag.js.map +1 -1
- package/dist/TagGroup.js +4 -2
- package/dist/TagGroup.js.map +1 -1
- package/dist/assets/{InputSuggestions-ChhTxYh4.js → InputSuggestions-CMYjJsHw.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-Bh1HxZfH.js → ListItemStandardExpandableTextTemplate-D2i8wWuR.js} +1 -1
- package/dist/assets/{bundle.esm-DCX_ohoZ.js → bundle.esm-BjN47C_y.js} +242 -242
- package/dist/assets/messagebundle_ar-BvIvqOKJ.js +1 -0
- package/dist/assets/messagebundle_bg-CbE9TJP3.js +1 -0
- package/dist/assets/messagebundle_cs-D7sDCnrw.js +1 -0
- package/dist/assets/messagebundle_da-BKcG2gb3.js +1 -0
- package/dist/assets/messagebundle_de-CqojOAqG.js +1 -0
- package/dist/assets/messagebundle_el-DLfp0_Vm.js +1 -0
- package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
- package/dist/assets/messagebundle_es-dcaagZn0.js +1 -0
- package/dist/assets/messagebundle_et-XYXhCdvm.js +1 -0
- package/dist/assets/messagebundle_fi-Dffg0zEq.js +1 -0
- package/dist/assets/messagebundle_fr-CW8ENL86.js +1 -0
- package/dist/assets/messagebundle_hr-onMgZwRd.js +1 -0
- package/dist/assets/messagebundle_hu-BPDuHAe0.js +1 -0
- package/dist/assets/messagebundle_it-BcfXVW1A.js +1 -0
- package/dist/assets/messagebundle_ja-EWp-Nkd9.js +1 -0
- package/dist/assets/messagebundle_ko-BKQ27UJW.js +1 -0
- package/dist/assets/messagebundle_lt-A-f2EeMY.js +1 -0
- package/dist/assets/messagebundle_lv-CHVU_rnx.js +1 -0
- package/dist/assets/messagebundle_nl-gmf1np1i.js +1 -0
- package/dist/assets/messagebundle_no-CazfcIRA.js +1 -0
- package/dist/assets/messagebundle_pl-iv_zMkL4.js +1 -0
- package/dist/assets/messagebundle_pt-usY49ESJ.js +1 -0
- package/dist/assets/messagebundle_pt_PT-DTLEUiTC.js +1 -0
- package/dist/assets/messagebundle_ro-BHeGIHaV.js +1 -0
- package/dist/assets/messagebundle_ru-DJB1z_R0.js +1 -0
- package/dist/assets/messagebundle_sk-DlNIpzr3.js +1 -0
- package/dist/assets/messagebundle_sl-Day075Cf.js +1 -0
- package/dist/assets/messagebundle_sr-iI_TwIHf.js +1 -0
- package/dist/assets/messagebundle_sv-BPj73b5X.js +1 -0
- package/dist/assets/messagebundle_tr-DpdBqQtI.js +1 -0
- package/dist/assets/messagebundle_uk-CT4EqEBF.js +1 -0
- package/dist/assets/messagebundle_zh_CN-B_42cWcu.js +1 -0
- package/dist/assets/messagebundle_zh_TW-D25iNCcy.js +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/Carousel.css +1 -1
- package/dist/css/themes/ListGroupHeader.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/Tooltip.css +1 -1
- package/dist/custom-elements-internal.json +12 -12
- package/dist/custom-elements.json +12 -12
- 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_cs.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_es.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_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_ja.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_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_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_tr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_uk.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/i18n/i18n-defaults.d.ts +3 -9
- package/dist/generated/i18n/i18n-defaults.js +3 -9
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/Carousel.css.d.ts +1 -1
- package/dist/generated/themes/Carousel.css.js +1 -1
- package/dist/generated/themes/Carousel.css.js.map +1 -1
- package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/PromoTile.css.d.ts +1 -1
- package/dist/generated/themes/PromoTile.css.js +1 -1
- package/dist/generated/themes/PromoTile.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.css.js.map +1 -1
- package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
- package/dist/generated/themes/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/generated/themes/Tooltip.css.d.ts +1 -1
- package/dist/generated/themes/Tooltip.css.js +1 -1
- package/dist/generated/themes/Tooltip.css.js.map +1 -1
- package/dist/messagebundle.properties +4 -10
- package/dist/messagebundle_ar.properties +0 -6
- package/dist/messagebundle_bg.properties +0 -8
- package/dist/messagebundle_cs.properties +0 -8
- package/dist/messagebundle_da.properties +0 -8
- package/dist/messagebundle_de.properties +0 -8
- package/dist/messagebundle_el.properties +0 -8
- package/dist/messagebundle_en.properties +2 -8
- package/dist/messagebundle_es.properties +0 -8
- package/dist/messagebundle_et.properties +0 -8
- package/dist/messagebundle_fi.properties +0 -8
- package/dist/messagebundle_fr.properties +0 -8
- package/dist/messagebundle_hr.properties +0 -8
- package/dist/messagebundle_hu.properties +0 -8
- package/dist/messagebundle_it.properties +0 -8
- package/dist/messagebundle_ja.properties +0 -8
- package/dist/messagebundle_ko.properties +0 -8
- package/dist/messagebundle_lt.properties +0 -8
- package/dist/messagebundle_lv.properties +0 -8
- package/dist/messagebundle_nl.properties +0 -8
- package/dist/messagebundle_no.properties +0 -8
- package/dist/messagebundle_pl.properties +0 -8
- package/dist/messagebundle_pt.properties +0 -8
- package/dist/messagebundle_pt_PT.properties +0 -8
- package/dist/messagebundle_ro.properties +0 -8
- package/dist/messagebundle_ru.properties +0 -8
- package/dist/messagebundle_sk.properties +0 -8
- package/dist/messagebundle_sl.properties +0 -7
- package/dist/messagebundle_sr.properties +0 -8
- package/dist/messagebundle_sv.properties +0 -8
- package/dist/messagebundle_tr.properties +0 -8
- package/dist/messagebundle_uk.properties +0 -8
- package/dist/messagebundle_zh_CN.properties +0 -8
- package/dist/messagebundle_zh_TW.properties +0 -8
- package/dist/vscode.html-custom-data.json +10 -2
- package/dist/web-types.json +6 -6
- package/package.json +1 -1
- package/src/Carousel.ts +51 -8
- package/src/CarouselTemplate.tsx +7 -7
- package/src/List.ts +24 -2
- package/src/ListGroupHeaderBase.ts +44 -2
- package/src/ListGroupHeaderTemplate.tsx +74 -23
- package/src/ListItem.ts +18 -15
- package/src/ListItemBase.ts +30 -0
- package/src/ListItemTemplate.tsx +4 -4
- package/src/MastheadCountrySelector.ts +5 -5
- package/src/MastheadCountrySelectorTemplate.tsx +98 -0
- package/src/MastheadItem.ts +3 -6
- package/src/MastheadItemTemplate.tsx +178 -0
- package/src/MastheadMenu.ts +5 -6
- package/src/MastheadMenuItem.ts +3 -7
- package/src/MastheadMenuItemTemplate.tsx +123 -0
- package/src/MastheadMenuTemplate.tsx +142 -0
- package/src/MastheadMobileMenu.ts +3 -3
- package/src/MastheadMobileMenuTemplate.tsx +274 -0
- package/src/MastheadProfileMenu.ts +10 -23
- package/src/MastheadProfileMenuTemplate.tsx +143 -0
- package/src/MastheadShell.ts +3 -5
- package/src/MastheadShellTemplate.tsx +228 -0
- package/src/SearchableListBase.ts +37 -1
- package/src/SearchableListBaseTemplate.tsx +38 -2
- package/src/SecondaryNavigation.ts +21 -6
- package/src/SelectBase.ts +8 -3
- package/src/Tab.ts +4 -24
- package/src/TabHeaderTemplate.tsx +153 -0
- package/src/TabInOverflowTemplate.tsx +68 -0
- package/src/TabNavigation.ts +64 -46
- package/src/TabNavigationPopoverTemplate.tsx +27 -0
- package/src/TabNavigationTemplate.tsx +98 -0
- package/src/TabTemplate.tsx +7 -0
- package/src/Tag.ts +7 -0
- package/src/TagGroup.ts +4 -2
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/Carousel.css.ts +1 -1
- package/src/generated/themes/ListGroupHeader.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +1 -1
- package/src/generated/themes/Switch.css.ts +1 -1
- package/src/generated/themes/TabInOverflow.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/Tooltip.css.ts +1 -1
- package/src/i18n/messagebundle.properties +4 -10
- package/src/i18n/messagebundle_ar.properties +0 -6
- package/src/i18n/messagebundle_bg.properties +0 -8
- package/src/i18n/messagebundle_cs.properties +0 -8
- package/src/i18n/messagebundle_da.properties +0 -8
- package/src/i18n/messagebundle_de.properties +0 -8
- package/src/i18n/messagebundle_el.properties +0 -8
- package/src/i18n/messagebundle_en.properties +2 -8
- package/src/i18n/messagebundle_es.properties +0 -8
- package/src/i18n/messagebundle_et.properties +0 -8
- package/src/i18n/messagebundle_fi.properties +0 -8
- package/src/i18n/messagebundle_fr.properties +0 -8
- package/src/i18n/messagebundle_hr.properties +0 -8
- package/src/i18n/messagebundle_hu.properties +0 -8
- package/src/i18n/messagebundle_it.properties +0 -8
- package/src/i18n/messagebundle_ja.properties +0 -8
- package/src/i18n/messagebundle_ko.properties +0 -8
- package/src/i18n/messagebundle_lt.properties +0 -8
- package/src/i18n/messagebundle_lv.properties +0 -8
- package/src/i18n/messagebundle_nl.properties +0 -8
- package/src/i18n/messagebundle_no.properties +0 -8
- package/src/i18n/messagebundle_pl.properties +0 -8
- package/src/i18n/messagebundle_pt.properties +0 -8
- package/src/i18n/messagebundle_pt_PT.properties +0 -8
- package/src/i18n/messagebundle_ro.properties +0 -8
- package/src/i18n/messagebundle_ru.properties +0 -8
- package/src/i18n/messagebundle_sk.properties +0 -8
- package/src/i18n/messagebundle_sl.properties +0 -7
- package/src/i18n/messagebundle_sr.properties +0 -8
- package/src/i18n/messagebundle_sv.properties +0 -8
- package/src/i18n/messagebundle_tr.properties +0 -8
- package/src/i18n/messagebundle_uk.properties +0 -8
- package/src/i18n/messagebundle_zh_CN.properties +0 -8
- package/src/i18n/messagebundle_zh_TW.properties +0 -8
- package/src/themes/Button.css +2 -1
- package/src/themes/Carousel.css +17 -10
- package/src/themes/ListGroupHeader.css +50 -7
- package/src/themes/PromoTile.css +1 -0
- package/src/themes/Switch.css +2 -2
- package/src/themes/TabInOverflow.css +9 -4
- package/src/themes/TabNavigation.css +1 -0
- package/src/themes/Tooltip.css +5 -4
- package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +0 -1
- package/dist/assets/messagebundle_bg-4ainC3nj.js +0 -1
- package/dist/assets/messagebundle_cs-CFtmLavu.js +0 -1
- package/dist/assets/messagebundle_da-BHL-qTPd.js +0 -1
- package/dist/assets/messagebundle_de-SMiMT-ST.js +0 -1
- package/dist/assets/messagebundle_el-ChAszJ4A.js +0 -1
- package/dist/assets/messagebundle_en-B0P3kkb6.js +0 -1
- package/dist/assets/messagebundle_es-LGmRBKqB.js +0 -1
- package/dist/assets/messagebundle_et-yYsmBPXN.js +0 -1
- package/dist/assets/messagebundle_fi-DeMNrHC9.js +0 -1
- package/dist/assets/messagebundle_fr-qEm5Eykz.js +0 -1
- package/dist/assets/messagebundle_hr-NBdiYo-T.js +0 -1
- package/dist/assets/messagebundle_hu-CBV3ISbF.js +0 -1
- package/dist/assets/messagebundle_it-BML2SC0W.js +0 -1
- package/dist/assets/messagebundle_ja-zyFfZHcj.js +0 -1
- package/dist/assets/messagebundle_ko-BCPaSqNp.js +0 -1
- package/dist/assets/messagebundle_lt-DB4b6FVx.js +0 -1
- package/dist/assets/messagebundle_lv-tAOia5tU.js +0 -1
- package/dist/assets/messagebundle_nl-BKUpVV-D.js +0 -1
- package/dist/assets/messagebundle_no-BZQfeWxT.js +0 -1
- package/dist/assets/messagebundle_pl-CsXeN1y6.js +0 -1
- package/dist/assets/messagebundle_pt-D9rap3lj.js +0 -1
- package/dist/assets/messagebundle_pt_PT-CQ5YAsmx.js +0 -1
- package/dist/assets/messagebundle_ro-BTNJ9YdP.js +0 -1
- package/dist/assets/messagebundle_ru-BTDmH8CB.js +0 -1
- package/dist/assets/messagebundle_sk-Lb4jvtpc.js +0 -1
- package/dist/assets/messagebundle_sl-BZi2bKSy.js +0 -1
- package/dist/assets/messagebundle_sr-B9TYgxO1.js +0 -1
- package/dist/assets/messagebundle_sv-DWlY9RTQ.js +0 -1
- package/dist/assets/messagebundle_tr-DOeCmUdx.js +0 -1
- package/dist/assets/messagebundle_uk-CCv57GhV.js +0 -1
- package/dist/assets/messagebundle_zh_CN-CHwH3F3-.js +0 -1
- package/dist/assets/messagebundle_zh_TW-FO0BCkub.js +0 -1
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
- package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabTemplate.lit.js +0 -7
- package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
- package/src/MastheadCountrySelector.hbs +0 -76
- package/src/MastheadItem.hbs +0 -136
- package/src/MastheadMenu.hbs +0 -131
- package/src/MastheadMenuItem.hbs +0 -102
- package/src/MastheadMobileMenu.hbs +0 -253
- package/src/MastheadProfileMenu.hbs +0 -121
- package/src/MastheadShell.hbs +0 -223
- package/src/Tab.hbs +0 -1
- package/src/TabHeader.hbs +0 -141
- package/src/TabInOverflow.hbs +0 -59
- package/src/TabNavigation.hbs +0 -86
- package/src/TabNavigationPopover.hbs +0 -18
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
- package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
- package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
- package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
- package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
- package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
- package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
- package/src/generated/templates/TabTemplate.lit.ts +0 -11
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type UDExTab from "./Tab.js";
|
|
2
|
+
import type { ITab } from "./Tab.js";
|
|
3
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
4
|
+
import UDExBadge from "./Badge.js";
|
|
5
|
+
import { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from "./types/BadgeDesign.js";
|
|
6
|
+
|
|
7
|
+
export default function TabHeaderTemplate(this: UDExTab) {
|
|
8
|
+
const tab = this as unknown as ITab;
|
|
9
|
+
|
|
10
|
+
if (this.hasBodyTextOrLink) {
|
|
11
|
+
return (
|
|
12
|
+
<div
|
|
13
|
+
class="udex-tab-navigation__tab-wrapper"
|
|
14
|
+
role="presentation"
|
|
15
|
+
style={this.widthStyle || undefined}>
|
|
16
|
+
{this.hasNotHref ? (
|
|
17
|
+
<button
|
|
18
|
+
id={this._id}
|
|
19
|
+
type="button"
|
|
20
|
+
role="tab"
|
|
21
|
+
class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}
|
|
22
|
+
tabindex={Number(this._tabIndex)}
|
|
23
|
+
aria-posinset={tab._posinset}
|
|
24
|
+
aria-setsize={tab._setsize}
|
|
25
|
+
aria-controls={tab._contentId}
|
|
26
|
+
aria-selected={this.effectiveSelected}
|
|
27
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}>
|
|
28
|
+
{tabContent.call(this)}
|
|
29
|
+
{this.ariaDescribedByBodyText && (
|
|
30
|
+
<span class="visually-hidden">{this.bodyText}</span>
|
|
31
|
+
)}
|
|
32
|
+
</button>
|
|
33
|
+
) : (
|
|
34
|
+
<a
|
|
35
|
+
id={this._id}
|
|
36
|
+
role="tab"
|
|
37
|
+
class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}
|
|
38
|
+
href={this.href}
|
|
39
|
+
target={this.target}
|
|
40
|
+
tabindex={Number(this.linkTabIndex)}
|
|
41
|
+
aria-posinset={tab._posinset}
|
|
42
|
+
aria-setsize={tab._setsize}
|
|
43
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}>
|
|
44
|
+
{tabContent.call(this)}
|
|
45
|
+
{this.ariaDescribedByBodyText && (
|
|
46
|
+
<span class="visually-hidden">{this.bodyText}</span>
|
|
47
|
+
)}
|
|
48
|
+
</a>
|
|
49
|
+
)}
|
|
50
|
+
{this.hasBodyText && (
|
|
51
|
+
<p class="udex-tab-navigation__button-body-text">{this.bodyText}</p>
|
|
52
|
+
)}
|
|
53
|
+
{this.hasLinkSlot && (
|
|
54
|
+
<div class="udex-tab-navigation__button-links" {...({ innerHTML: this.linkSlotHtml } as object)}></div>
|
|
55
|
+
)}
|
|
56
|
+
</div>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return this.hasNotHref ? (
|
|
61
|
+
<button
|
|
62
|
+
id={this._id}
|
|
63
|
+
type="button"
|
|
64
|
+
role="tab"
|
|
65
|
+
class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}
|
|
66
|
+
tabindex={Number(this._tabIndex)}
|
|
67
|
+
aria-describedby={`udex-tab-navigation__${this._id}__accessible-name`}
|
|
68
|
+
aria-posinset={tab._posinset}
|
|
69
|
+
aria-setsize={tab._setsize}
|
|
70
|
+
aria-controls={tab._contentId}
|
|
71
|
+
aria-selected={this.effectiveSelected}
|
|
72
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}
|
|
73
|
+
style={this.widthStyle || undefined}>
|
|
74
|
+
{tabContent.call(this)}
|
|
75
|
+
</button>
|
|
76
|
+
) : (
|
|
77
|
+
<a
|
|
78
|
+
id={this._id}
|
|
79
|
+
role="tab"
|
|
80
|
+
class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}
|
|
81
|
+
tabindex={Number(this.linkTabIndex)}
|
|
82
|
+
aria-posinset={tab._posinset}
|
|
83
|
+
aria-setsize={tab._setsize}
|
|
84
|
+
href={this.href}
|
|
85
|
+
target={this.target}
|
|
86
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}
|
|
87
|
+
style={this.widthStyle || undefined}>
|
|
88
|
+
{tabContent.call(this)}
|
|
89
|
+
</a>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function tabContent(this: UDExTab) {
|
|
94
|
+
return (
|
|
95
|
+
<>
|
|
96
|
+
{this.hasIcon && (
|
|
97
|
+
<span
|
|
98
|
+
class="udex-tab-navigation__button-icon-outer"
|
|
99
|
+
role="presentation"
|
|
100
|
+
aria-hidden="true">
|
|
101
|
+
<Icon
|
|
102
|
+
class="udex-tab-navigation__button-icon"
|
|
103
|
+
name={this.icon}>
|
|
104
|
+
</Icon>
|
|
105
|
+
{this.showAttentionBadge && (
|
|
106
|
+
<span class="udex-tab-navigation__button-badge"></span>
|
|
107
|
+
)}
|
|
108
|
+
</span>
|
|
109
|
+
)}
|
|
110
|
+
{this._isProcessTab ? (
|
|
111
|
+
<span class="udex-tab-navigation__button-text-block">
|
|
112
|
+
<span class="udex-tab-navigation__button-item-count">{this.effectiveItemCountText}</span>
|
|
113
|
+
<p class={`udex-tab-navigation__button-text ${this.classWithIcon}`}>
|
|
114
|
+
{this.text}
|
|
115
|
+
{this.numberBadge && (
|
|
116
|
+
<UDExBadge
|
|
117
|
+
class="udex-tab-navigation__badge"
|
|
118
|
+
type={UDExTypeBadgeDesign.Number}
|
|
119
|
+
number-design={UDExNumberBadgeDesign.Blue}
|
|
120
|
+
size={UDExSizeBadgeDesign.Medium}>
|
|
121
|
+
{this.numberBadge}
|
|
122
|
+
</UDExBadge>
|
|
123
|
+
)}
|
|
124
|
+
{this.hasNotIcon && (
|
|
125
|
+
<span class="udex-tab-navigation__button-badge"></span>
|
|
126
|
+
)}
|
|
127
|
+
</p>
|
|
128
|
+
</span>
|
|
129
|
+
) : (
|
|
130
|
+
<p class={`udex-tab-navigation__button-text ${this.classWithIcon}`}>
|
|
131
|
+
{this.text}
|
|
132
|
+
{this.numberBadge && (
|
|
133
|
+
<UDExBadge
|
|
134
|
+
class="udex-tab-navigation__badge"
|
|
135
|
+
type={UDExTypeBadgeDesign.Number}
|
|
136
|
+
number-design={UDExNumberBadgeDesign.Blue}
|
|
137
|
+
size={UDExSizeBadgeDesign.Medium}>
|
|
138
|
+
{this.numberBadge}
|
|
139
|
+
</UDExBadge>
|
|
140
|
+
)}
|
|
141
|
+
{this.hasNotIcon && (
|
|
142
|
+
<span class="udex-tab-navigation__button-badge"></span>
|
|
143
|
+
)}
|
|
144
|
+
</p>
|
|
145
|
+
)}
|
|
146
|
+
<span
|
|
147
|
+
class="visually-hidden"
|
|
148
|
+
id={`udex-tab-navigation__${this._id}__accessible-name`}>
|
|
149
|
+
{this.accessibleNameText}
|
|
150
|
+
</span>
|
|
151
|
+
</>
|
|
152
|
+
);
|
|
153
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type UDExTab from "./Tab.js";
|
|
2
|
+
import type { ITab } from "./Tab.js";
|
|
3
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
4
|
+
|
|
5
|
+
export default function TabInOverflowTemplate(this: UDExTab) {
|
|
6
|
+
const tab = this as unknown as ITab;
|
|
7
|
+
|
|
8
|
+
return this.hasNotHref ? (
|
|
9
|
+
<button
|
|
10
|
+
id={this._id}
|
|
11
|
+
class="udex-tab-overflow__button"
|
|
12
|
+
role="tab"
|
|
13
|
+
aria-selected={this.effectiveSelected}
|
|
14
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}
|
|
15
|
+
disabled={!!this.ariaDisabled}
|
|
16
|
+
tabindex={Number(tab._tabIndex)}>
|
|
17
|
+
{this.hasIcon && (
|
|
18
|
+
<span
|
|
19
|
+
class="udex-tab-overflow__button-icon"
|
|
20
|
+
role="presentation"
|
|
21
|
+
aria-hidden="true">
|
|
22
|
+
<Icon name={this.icon}></Icon>
|
|
23
|
+
{this.showAttentionBadge && (
|
|
24
|
+
<span class="udex-tab-overflow__button-badge"></span>
|
|
25
|
+
)}
|
|
26
|
+
</span>
|
|
27
|
+
)}
|
|
28
|
+
{this.text}
|
|
29
|
+
{this.hasNotIcon && (
|
|
30
|
+
<span
|
|
31
|
+
class="udex-tab-overflow__button-badge"
|
|
32
|
+
role="presentation"
|
|
33
|
+
aria-hidden="true">
|
|
34
|
+
</span>
|
|
35
|
+
)}
|
|
36
|
+
</button>
|
|
37
|
+
) : (
|
|
38
|
+
<a
|
|
39
|
+
id={this._id}
|
|
40
|
+
href={this.ariaDisabled ? undefined : this.href}
|
|
41
|
+
target={this.target}
|
|
42
|
+
class="udex-tab-overflow__button"
|
|
43
|
+
role="tab"
|
|
44
|
+
aria-selected={this.effectiveSelected}
|
|
45
|
+
aria-disabled={this.ariaDisabled ? "true" : undefined}
|
|
46
|
+
tabindex={Number(tab._tabIndex)}>
|
|
47
|
+
{this.hasIcon && (
|
|
48
|
+
<span
|
|
49
|
+
class="udex-tab-overflow__button-icon"
|
|
50
|
+
role="presentation"
|
|
51
|
+
aria-hidden="true">
|
|
52
|
+
<Icon name={this.icon}></Icon>
|
|
53
|
+
{this.showAttentionBadge && (
|
|
54
|
+
<span class="udex-tab-overflow__button-badge"></span>
|
|
55
|
+
)}
|
|
56
|
+
</span>
|
|
57
|
+
)}
|
|
58
|
+
{this.text}
|
|
59
|
+
{this.hasNotIcon && (
|
|
60
|
+
<span
|
|
61
|
+
class="udex-tab-overflow__button-badge"
|
|
62
|
+
role="presentation"
|
|
63
|
+
aria-hidden="true">
|
|
64
|
+
</span>
|
|
65
|
+
)}
|
|
66
|
+
</a>
|
|
67
|
+
);
|
|
68
|
+
}
|
package/src/TabNavigation.ts
CHANGED
|
@@ -5,10 +5,9 @@ import type { StyleData } from "@ui5/webcomponents-base/dist/types.js";
|
|
|
5
5
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
6
6
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
7
7
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
8
|
-
import
|
|
8
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
9
9
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
10
10
|
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
11
|
-
import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
|
|
12
11
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
13
12
|
import {
|
|
14
13
|
isUp, isDown, isRight, isLeft, isEnter, isSpace, isEscape, isHome, isEnd, isTabNext, isTabPrevious,
|
|
@@ -25,15 +24,15 @@ import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
|
25
24
|
import "@ui5/webcomponents-icons/dist/play.js";
|
|
26
25
|
import "@ui5/webcomponents-icons/dist/pause.js";
|
|
27
26
|
import UDExButton from "./Button.js";
|
|
27
|
+
import UDExButtonSize from "./types/ButtonSize.js";
|
|
28
|
+
import translate from "./utils/translate.js";
|
|
28
29
|
|
|
29
30
|
// Templates
|
|
30
|
-
import TabNavigationTemplate from "./
|
|
31
|
-
import TabNavigationPopoverTemplate from "./generated/templates/TabNavigationPopoverTemplate.lit.js";
|
|
31
|
+
import TabNavigationTemplate from "./TabNavigationTemplate.js";
|
|
32
32
|
|
|
33
33
|
// Styles
|
|
34
34
|
import TabNavigationCss from "./generated/themes/TabNavigation.css.js";
|
|
35
35
|
import TabInOverflowCss from "./generated/themes/TabInOverflow.css.js";
|
|
36
|
-
import translate from "./utils/translate.js";
|
|
37
36
|
|
|
38
37
|
const staticAreaTabStyles: Array<StyleData> = [];
|
|
39
38
|
|
|
@@ -91,7 +90,7 @@ type UDExTabContainerTabSelectEventDetail = {
|
|
|
91
90
|
*/
|
|
92
91
|
@customElement({
|
|
93
92
|
tag: "udex-tab-navigation",
|
|
94
|
-
renderer:
|
|
93
|
+
renderer: jsxRenderer,
|
|
95
94
|
styles: [TabNavigationCss, TabInOverflowCss],
|
|
96
95
|
template: TabNavigationTemplate,
|
|
97
96
|
dependencies: [Popover, Icon, UDExButton],
|
|
@@ -122,10 +121,10 @@ class UDExTabNavigation extends UI5Element {
|
|
|
122
121
|
* Defines the size of the "More" button.
|
|
123
122
|
*
|
|
124
123
|
* @public
|
|
125
|
-
* @default "
|
|
124
|
+
* @default "Medium"
|
|
126
125
|
*/
|
|
127
126
|
@property()
|
|
128
|
-
sizeMoreButton: `${
|
|
127
|
+
sizeMoreButton: `${UDExButtonSize}` = UDExButtonSize.Medium;
|
|
129
128
|
|
|
130
129
|
/**
|
|
131
130
|
* Defines the mode of the component.
|
|
@@ -279,6 +278,7 @@ class UDExTabNavigation extends UI5Element {
|
|
|
279
278
|
_maxTitleLength: number = 25;
|
|
280
279
|
_maxTitleLengthInSecondLines: number = this._maxTitleLength * 2;
|
|
281
280
|
_autoPlayTimer?: number;
|
|
281
|
+
_focusSelectedTabAfterRender: boolean = false;
|
|
282
282
|
|
|
283
283
|
constructor() {
|
|
284
284
|
super();
|
|
@@ -296,6 +296,11 @@ class UDExTabNavigation extends UI5Element {
|
|
|
296
296
|
}
|
|
297
297
|
this.initOutsideClick();
|
|
298
298
|
this.applyTabWidthToVerticalTabs();
|
|
299
|
+
|
|
300
|
+
if (this._focusSelectedTabAfterRender) {
|
|
301
|
+
this._focusSelectedTabAfterRender = false;
|
|
302
|
+
this._selectedTab?.getTabInHeaderDomRef()?.focus();
|
|
303
|
+
}
|
|
299
304
|
}
|
|
300
305
|
|
|
301
306
|
onEnterDOM(): void {
|
|
@@ -666,10 +671,6 @@ class UDExTabNavigation extends UI5Element {
|
|
|
666
671
|
.filter(tab => !tab.disabled)
|
|
667
672
|
.map(tab => tab.getTabInHeaderDomRef()!)
|
|
668
673
|
.filter(tab => !tab.hasAttribute("hidden"));
|
|
669
|
-
|
|
670
|
-
if (!this.getMoreButton().hasAttribute("hidden")) {
|
|
671
|
-
this._visibleTabs.push(this.getMoreButton());
|
|
672
|
-
}
|
|
673
674
|
}
|
|
674
675
|
|
|
675
676
|
applyTabIndex() {
|
|
@@ -688,15 +689,32 @@ class UDExTabNavigation extends UI5Element {
|
|
|
688
689
|
}
|
|
689
690
|
|
|
690
691
|
handleOverflowItemClick(e: Event) {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
}
|
|
692
|
+
const target = e.target as HTMLElement;
|
|
693
|
+
const { localName } = target;
|
|
694
|
+
|
|
695
|
+
if (localName !== "button" && localName !== "a") {
|
|
696
|
+
this.handleClosePopover();
|
|
697
|
+
return;
|
|
698
698
|
}
|
|
699
|
+
|
|
700
|
+
const targetId = target.id;
|
|
701
|
+
const [targetTab] = this.items.filter(item => item.__id === targetId);
|
|
702
|
+
|
|
703
|
+
if (targetTab?.disabled) {
|
|
704
|
+
e.preventDefault();
|
|
705
|
+
e.stopPropagation();
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
if (localName === "button") {
|
|
710
|
+
e.preventDefault();
|
|
711
|
+
this.onItemSelect(targetId);
|
|
712
|
+
}
|
|
713
|
+
|
|
699
714
|
this.handleClosePopover();
|
|
715
|
+
if (localName === "button") {
|
|
716
|
+
this._focusSelectedTabAfterRender = true;
|
|
717
|
+
}
|
|
700
718
|
}
|
|
701
719
|
|
|
702
720
|
onItemSelect(selectedId: string) {
|
|
@@ -856,7 +874,6 @@ class UDExTabNavigation extends UI5Element {
|
|
|
856
874
|
}
|
|
857
875
|
|
|
858
876
|
handleFocusMoreButton(e: KeyboardEvent) {
|
|
859
|
-
this.handleDownMoreButton(e);
|
|
860
877
|
this.handleHomeKeyMoreButton(e);
|
|
861
878
|
this.handleEnterKeyMoreButton(e);
|
|
862
879
|
}
|
|
@@ -878,20 +895,12 @@ class UDExTabNavigation extends UI5Element {
|
|
|
878
895
|
}
|
|
879
896
|
}
|
|
880
897
|
|
|
881
|
-
handleDownMoreButton(e: KeyboardEvent) {
|
|
882
|
-
if (isDown(e) || isEnter(e)) {
|
|
883
|
-
this._popover = this.getResponsePopover();
|
|
884
|
-
this.handleOpenPopover();
|
|
885
|
-
this.updateOverflowItems();
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
|
|
889
898
|
onFocusFirstItemPopover() {
|
|
890
899
|
if (this._popover?.open) {
|
|
891
900
|
const popoverItems = this.getItemsFromPopover();
|
|
892
|
-
const
|
|
893
|
-
|
|
894
|
-
|
|
901
|
+
const firstActiveItem = popoverItems.find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[0];
|
|
902
|
+
firstActiveItem.setAttribute("tabindex", "0");
|
|
903
|
+
firstActiveItem.focus();
|
|
895
904
|
}
|
|
896
905
|
}
|
|
897
906
|
|
|
@@ -921,8 +930,7 @@ class UDExTabNavigation extends UI5Element {
|
|
|
921
930
|
onPreviousItemInPopover(target: HTMLElement) {
|
|
922
931
|
const popoverItems = this.getItemsFromPopover();
|
|
923
932
|
const currentSelectedTabIndex = this.getPopoverTabIndexById(popoverItems, target.id);
|
|
924
|
-
const
|
|
925
|
-
const prevItem = popoverItems[previousSelectIndex];
|
|
933
|
+
const prevItem = this.findNextEnabledPopoverItem(popoverItems, currentSelectedTabIndex, -1);
|
|
926
934
|
|
|
927
935
|
this.resetTabIndexItem(popoverItems[currentSelectedTabIndex]);
|
|
928
936
|
prevItem.setAttribute("tabIndex", "0");
|
|
@@ -932,14 +940,29 @@ class UDExTabNavigation extends UI5Element {
|
|
|
932
940
|
onNextItemInPopover(target: HTMLElement) {
|
|
933
941
|
const popoverItems = this.getItemsFromPopover();
|
|
934
942
|
const currentSelectedTabIndex = this.getPopoverTabIndexById(popoverItems, target.id);
|
|
935
|
-
const
|
|
936
|
-
const nextItem = popoverItems[nextSelectIndex];
|
|
943
|
+
const nextItem = this.findNextEnabledPopoverItem(popoverItems, currentSelectedTabIndex, 1);
|
|
937
944
|
|
|
938
945
|
this.resetTabIndexItem(popoverItems[currentSelectedTabIndex]);
|
|
939
946
|
nextItem.setAttribute("tabIndex", "0");
|
|
940
947
|
nextItem.focus();
|
|
941
948
|
}
|
|
942
949
|
|
|
950
|
+
private isPopoverItemDisabled(item: HTMLElement): boolean {
|
|
951
|
+
return item.getAttribute("aria-disabled") === "true";
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
private findNextEnabledPopoverItem(items: HTMLElement[], currentIndex: number, direction: 1 | -1): HTMLElement {
|
|
955
|
+
const len = items.length;
|
|
956
|
+
let index = (currentIndex + direction + len) % len;
|
|
957
|
+
while (index !== currentIndex) {
|
|
958
|
+
if (!this.isPopoverItemDisabled(items[index])) {
|
|
959
|
+
return items[index];
|
|
960
|
+
}
|
|
961
|
+
index = (index + direction + len) % len;
|
|
962
|
+
}
|
|
963
|
+
return items[currentIndex];
|
|
964
|
+
}
|
|
965
|
+
|
|
943
966
|
resetTabIndexItem(item: HTMLElement): void {
|
|
944
967
|
item.setAttribute("tabIndex", "-1");
|
|
945
968
|
}
|
|
@@ -968,6 +991,7 @@ class UDExTabNavigation extends UI5Element {
|
|
|
968
991
|
if (!targetTab?.disabled) {
|
|
969
992
|
this.onItemSelect(targetId);
|
|
970
993
|
this.handleClosePopover();
|
|
994
|
+
this._focusSelectedTabAfterRender = true;
|
|
971
995
|
}
|
|
972
996
|
}
|
|
973
997
|
}
|
|
@@ -976,7 +1000,7 @@ class UDExTabNavigation extends UI5Element {
|
|
|
976
1000
|
if (isEscape(e)) {
|
|
977
1001
|
e.preventDefault();
|
|
978
1002
|
this.handleClosePopover();
|
|
979
|
-
this.
|
|
1003
|
+
this.getMoreButton().focus();
|
|
980
1004
|
}
|
|
981
1005
|
}
|
|
982
1006
|
|
|
@@ -984,7 +1008,8 @@ class UDExTabNavigation extends UI5Element {
|
|
|
984
1008
|
if (isHome(e)) {
|
|
985
1009
|
e.preventDefault();
|
|
986
1010
|
const popoverItems = this.getItemsFromPopover();
|
|
987
|
-
popoverItems[0]
|
|
1011
|
+
const firstActiveItem = popoverItems.find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[0];
|
|
1012
|
+
firstActiveItem.focus();
|
|
988
1013
|
}
|
|
989
1014
|
}
|
|
990
1015
|
|
|
@@ -993,7 +1018,8 @@ class UDExTabNavigation extends UI5Element {
|
|
|
993
1018
|
e.preventDefault();
|
|
994
1019
|
e.stopPropagation();
|
|
995
1020
|
const popoverItems = this.getItemsFromPopover();
|
|
996
|
-
popoverItems[popoverItems.length - 1]
|
|
1021
|
+
const lastActiveItem = [...popoverItems].reverse().find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[popoverItems.length - 1];
|
|
1022
|
+
lastActiveItem.focus();
|
|
997
1023
|
}
|
|
998
1024
|
}
|
|
999
1025
|
|
|
@@ -1025,14 +1051,6 @@ class UDExTabNavigation extends UI5Element {
|
|
|
1025
1051
|
staticAreaTabStyles.push(styles);
|
|
1026
1052
|
}
|
|
1027
1053
|
|
|
1028
|
-
static get tabNavigationPopoverTemplate() {
|
|
1029
|
-
return TabNavigationPopoverTemplate;
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
get tabNavigationPopover() {
|
|
1033
|
-
return executeTemplate(UDExTabNavigation.tabNavigationPopoverTemplate, this);
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
1054
|
applyTabWidthToVerticalTabs(): void {
|
|
1037
1055
|
if (this.isVertical && this.tabWidth && this.tabWidth !== "auto") {
|
|
1038
1056
|
this.style.setProperty("--udex-tab-header-width", this.tabWidth);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type UDExTabNavigation from "./TabNavigation.js";
|
|
2
|
+
import type UDExTab from "./Tab.js";
|
|
3
|
+
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
4
|
+
import UI5PopoverHAlign from "@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js";
|
|
5
|
+
import UI5PopoverPlacement from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
|
|
6
|
+
import TabInOverflowTemplate from "./TabInOverflowTemplate.js";
|
|
7
|
+
|
|
8
|
+
export default function TabNavigationPopoverTemplate(this: UDExTabNavigation) {
|
|
9
|
+
return (
|
|
10
|
+
<Popover
|
|
11
|
+
id={`${this._id}-overflow-popover`}
|
|
12
|
+
aria-orientation="vertical"
|
|
13
|
+
horizontal-align={UI5PopoverHAlign.End}
|
|
14
|
+
placement={UI5PopoverPlacement.Bottom}
|
|
15
|
+
onui5-open={this.onFocusFirstItemPopover}
|
|
16
|
+
hide-arrow
|
|
17
|
+
{...({ _hideHeader: true } as object)}>
|
|
18
|
+
<div
|
|
19
|
+
class="tab-navigation-popover"
|
|
20
|
+
onClick={this.handleOverflowItemClick}
|
|
21
|
+
onKeyDown={this.handleFocusPopover}
|
|
22
|
+
role="tablist">
|
|
23
|
+
{this._overflowItems.map(item => TabInOverflowTemplate.call(item as unknown as UDExTab))}
|
|
24
|
+
</div>
|
|
25
|
+
</Popover>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type UDExTabNavigation from "./TabNavigation.js";
|
|
2
|
+
import type UDExTab from "./Tab.js";
|
|
3
|
+
import UDExButton from "./Button.js";
|
|
4
|
+
import UDExButtonSize from "./types/ButtonSize.js";
|
|
5
|
+
import UDExButtonDesign from "./types/ButtonDesign.js";
|
|
6
|
+
import TabNavigationPopoverTemplate from "./TabNavigationPopoverTemplate.js";
|
|
7
|
+
import TabHeaderTemplate from "./TabHeaderTemplate.js";
|
|
8
|
+
|
|
9
|
+
export default function TabNavigationTemplate(this: UDExTabNavigation) {
|
|
10
|
+
return (
|
|
11
|
+
<div className="udex-tab-navigation__root">
|
|
12
|
+
<div
|
|
13
|
+
id={`${this._id}-header`}
|
|
14
|
+
className="udex-tab-navigation__header"
|
|
15
|
+
part="tab-navigation-header">
|
|
16
|
+
{this.showPlayButton && (
|
|
17
|
+
<UDExButton
|
|
18
|
+
class="udex-tab-navigation__play-button"
|
|
19
|
+
design={UDExButtonDesign.Tertiary}
|
|
20
|
+
size={UDExButtonSize.Large}
|
|
21
|
+
icon={this.playBtnIcon}
|
|
22
|
+
tooltip={this.playBtnTooltipText}
|
|
23
|
+
onClick={this.onPlayButtonClick}>
|
|
24
|
+
</UDExButton>
|
|
25
|
+
)}
|
|
26
|
+
<div
|
|
27
|
+
id={`${this._id}-header-tabs`}
|
|
28
|
+
className="udex-tab-navigation__header-tabs"
|
|
29
|
+
role="tablist"
|
|
30
|
+
aria-labelledby={`tablist-${this._id}`}
|
|
31
|
+
aria-orientation={this.ariaOrientationValue as "horizontal" | "vertical"}
|
|
32
|
+
part="tab-navigation-header-tabs"
|
|
33
|
+
onClick={this.onTabClick}
|
|
34
|
+
onKeyDown={this.handleKeyDown}>
|
|
35
|
+
{this.items.map(item => (
|
|
36
|
+
<>
|
|
37
|
+
{TabHeaderTemplate.call(item as unknown as UDExTab)}
|
|
38
|
+
{(item as unknown as UDExTab).isMobileVertical && item.selected && (
|
|
39
|
+
<div
|
|
40
|
+
className="udex-tab-navigation__content"
|
|
41
|
+
part="tab-navigation-content">
|
|
42
|
+
<div
|
|
43
|
+
className="udex-tab-navigation__content-item"
|
|
44
|
+
id={`${item._contentId}-mobile`}
|
|
45
|
+
role="tabpanel"
|
|
46
|
+
aria-labelledby={item._id}>
|
|
47
|
+
<slot name={item._slotName}></slot>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
)}
|
|
51
|
+
</>
|
|
52
|
+
))}
|
|
53
|
+
</div>
|
|
54
|
+
<UDExButton
|
|
55
|
+
class="udex-tab-navigation__button-more"
|
|
56
|
+
end-icon="navigation-down-arrow"
|
|
57
|
+
aria-haspopup="menu"
|
|
58
|
+
design={UDExButtonDesign.Tertiary}
|
|
59
|
+
size={this.sizeMoreButton}
|
|
60
|
+
onClick={this.handleMoreButton}
|
|
61
|
+
onKeyDown={this.handleFocusMoreButton}
|
|
62
|
+
aria-expanded={this._isExpanded}
|
|
63
|
+
hidden>
|
|
64
|
+
{this.moreButtonText}
|
|
65
|
+
</UDExButton>
|
|
66
|
+
{!!this._overflowItems.length && TabNavigationPopoverTemplate.call(this)}
|
|
67
|
+
{this.showFooterSlot && (
|
|
68
|
+
<div className="udex-tab-navigation__footer" part="tab-navigation-footer">
|
|
69
|
+
<slot name="footer"></slot>
|
|
70
|
+
</div>
|
|
71
|
+
)}
|
|
72
|
+
</div>
|
|
73
|
+
<div
|
|
74
|
+
className="udex-tab-navigation__content"
|
|
75
|
+
id={`udex-${this._id}-content`}
|
|
76
|
+
part="tab-navigation-content">
|
|
77
|
+
{this.items.map(item => (
|
|
78
|
+
item.selected ? (
|
|
79
|
+
<div
|
|
80
|
+
className="udex-tab-navigation__content-item"
|
|
81
|
+
id={item._contentId}
|
|
82
|
+
aria-hidden={item.isMobile}
|
|
83
|
+
role="tabpanel"
|
|
84
|
+
aria-labelledby={item._id}>
|
|
85
|
+
<slot name={item._slotName}></slot>
|
|
86
|
+
</div>
|
|
87
|
+
) : (
|
|
88
|
+
<div
|
|
89
|
+
className="udex-tab-navigation__content-item"
|
|
90
|
+
id={item._contentId}>
|
|
91
|
+
<slot name={item._slotName}></slot>
|
|
92
|
+
</div>
|
|
93
|
+
)
|
|
94
|
+
))}
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
);
|
|
98
|
+
}
|
package/src/Tag.ts
CHANGED
|
@@ -289,6 +289,13 @@ class UDExTag extends UI5Element {
|
|
|
289
289
|
this.focused = !this.focused;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
+
override getFocusDomRef(): HTMLElement | undefined {
|
|
293
|
+
if (this.nonSelectable) {
|
|
294
|
+
return this.getDomRef()?.querySelector<HTMLElement>("button") ?? undefined;
|
|
295
|
+
}
|
|
296
|
+
return super.getFocusDomRef();
|
|
297
|
+
}
|
|
298
|
+
|
|
292
299
|
get tagClasses(): string {
|
|
293
300
|
const hasIconClass = this.hasIcon ? "udex-tag--has-icon" : "";
|
|
294
301
|
const readOnlyClass = this.readOnly ? "udex-tag--readonly" : "";
|
package/src/TagGroup.ts
CHANGED
|
@@ -251,9 +251,11 @@ class UDExTagGroup extends UI5Element {
|
|
|
251
251
|
const active = getActiveElement();
|
|
252
252
|
const moreLink = this._tokenizer.moreLink;
|
|
253
253
|
if (active === moreLink) {
|
|
254
|
-
e.preventDefault();
|
|
255
254
|
const focusDomRef = this._lastVisibleTag?.getFocusDomRef();
|
|
256
|
-
focusDomRef
|
|
255
|
+
if (focusDomRef) {
|
|
256
|
+
e.preventDefault();
|
|
257
|
+
focusDomRef.focus();
|
|
258
|
+
}
|
|
257
259
|
}
|
|
258
260
|
}
|
|
259
261
|
}
|