@sapudex/web-components 0.147.0 → 0.172.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/.eslintignore +1 -0
- package/bundle.esm.js +9 -0
- package/dist/Badge.d.ts +21 -14
- package/dist/Badge.js +20 -26
- package/dist/Badge.js.map +1 -1
- package/dist/Breadcrumbs.d.ts +23 -21
- package/dist/Breadcrumbs.js +58 -40
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/BreadcrumbsItem.js +0 -1
- package/dist/BreadcrumbsItem.js.map +1 -1
- package/dist/Checkbox.js +0 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/CountrySelector.d.ts +2 -2
- package/dist/CountrySelector.js +20 -12
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.d.ts +2 -2
- package/dist/DatePicker.js.map +1 -1
- package/dist/Dropdown.js +0 -3
- package/dist/Dropdown.js.map +1 -1
- package/dist/Footer.d.ts +53 -10
- package/dist/Footer.js +41 -11
- package/dist/Footer.js.map +1 -1
- package/dist/Link.d.ts +2 -5
- package/dist/Link.js +4 -8
- package/dist/Link.js.map +1 -1
- package/dist/List.d.ts +16 -1
- package/dist/List.js +154 -100
- package/dist/List.js.map +1 -1
- package/dist/ListItem.d.ts +1 -0
- package/dist/ListItem.js +3 -0
- package/dist/ListItem.js.map +1 -1
- package/dist/MastheadItem.d.ts +12 -2
- package/dist/MastheadItem.js +34 -7
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +1 -0
- package/dist/MastheadMenu.js +13 -4
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +10 -0
- package/dist/MastheadMenuItem.js +24 -3
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.js +2 -2
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.js +2 -2
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +4 -0
- package/dist/MastheadShell.js +21 -5
- package/dist/MastheadShell.js.map +1 -1
- package/dist/Pagination.d.ts +13 -3
- package/dist/Pagination.js +90 -57
- package/dist/Pagination.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +3 -0
- package/dist/PhoneNumberField.js +9 -4
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/RangeSlider.js +0 -1
- package/dist/RangeSlider.js.map +1 -1
- package/dist/Search.d.ts +5 -4
- package/dist/Search.js +12 -12
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +7 -1
- package/dist/SearchableListBase.js +47 -4
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +2 -2
- package/dist/SecondaryNavigation.js +20 -10
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +6 -3
- package/dist/SecondaryNavigationItem.js +50 -26
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationSubItem.d.ts +1 -0
- package/dist/SecondaryNavigationSubItem.js +3 -0
- package/dist/SecondaryNavigationSubItem.js.map +1 -1
- package/dist/SegmentedButton.d.ts +2 -2
- package/dist/SegmentedButton.js.map +1 -1
- package/dist/SelectBox.js.map +1 -1
- package/dist/SideNavigationGroup.js +0 -1
- package/dist/SideNavigationGroup.js.map +1 -1
- package/dist/SideNavigationItem.js +0 -1
- package/dist/SideNavigationItem.js.map +1 -1
- package/dist/SideNavigationSubItem.js +0 -1
- package/dist/SideNavigationSubItem.js.map +1 -1
- package/dist/Slider.js +0 -1
- package/dist/Slider.js.map +1 -1
- package/dist/TabNavigation.js +2 -2
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Tag.d.ts +1 -4
- package/dist/Tag.js +1 -5
- package/dist/Tag.js.map +1 -1
- package/dist/Tile.d.ts +1 -1
- package/dist/Tile.js +1 -1
- package/dist/Tile.js.map +1 -1
- package/dist/Toast.d.ts +0 -1
- package/dist/Toast.js +4 -3
- package/dist/Toast.js.map +1 -1
- package/dist/Wizard.js +1 -1
- package/dist/Wizard.js.map +1 -1
- package/dist/WizardTab.js +0 -1
- package/dist/WizardTab.js.map +1 -1
- package/dist/assets/{bundle.esm-6e8e301d.js → bundle.esm-981c5cbb.js} +187 -189
- package/dist/assets/messagebundle_ar-bb470511.js +1 -0
- package/dist/assets/messagebundle_bg-a533dfab.js +1 -0
- package/dist/assets/messagebundle_cs-c70a7f36.js +1 -0
- package/dist/assets/messagebundle_da-e292cac5.js +1 -0
- package/dist/assets/messagebundle_de-5c108de6.js +1 -0
- package/dist/assets/messagebundle_el-44746e0b.js +1 -0
- package/dist/assets/messagebundle_en-4997b226.js +1 -0
- package/dist/assets/messagebundle_es-c0c1060f.js +1 -0
- package/dist/assets/messagebundle_et-a5f15d3b.js +1 -0
- package/dist/assets/messagebundle_fi-f4b8eb82.js +1 -0
- package/dist/assets/messagebundle_fr-af18ac46.js +1 -0
- package/dist/assets/messagebundle_hr-d893e46d.js +1 -0
- package/dist/assets/messagebundle_hu-230c58c9.js +1 -0
- package/dist/assets/messagebundle_it-5bf1436c.js +1 -0
- package/dist/assets/messagebundle_iw-dd60afc4.js +1 -0
- package/dist/assets/messagebundle_ko-c450bda3.js +1 -0
- package/dist/assets/messagebundle_lt-87ab0529.js +1 -0
- package/dist/assets/messagebundle_lv-fc413852.js +1 -0
- package/dist/assets/messagebundle_nl-34d7e236.js +1 -0
- package/dist/assets/messagebundle_no-f22648fb.js +1 -0
- package/dist/assets/messagebundle_pl-10303f09.js +1 -0
- package/dist/assets/messagebundle_pt-b7a40c67.js +1 -0
- package/dist/assets/messagebundle_ro-94628623.js +1 -0
- package/dist/assets/messagebundle_ru-1f6595ba.js +1 -0
- package/dist/assets/messagebundle_sk-89eabac1.js +1 -0
- package/dist/assets/messagebundle_sl-d56532f1.js +1 -0
- package/dist/assets/messagebundle_sr-cf7f3b32.js +1 -0
- package/dist/assets/messagebundle_sv-3a3b20d3.js +1 -0
- package/dist/assets/messagebundle_tr-33b16d09.js +1 -0
- package/dist/assets/messagebundle_uk-82e1f2c1.js +1 -0
- package/dist/assets/messagebundle_zh_CN-15ca05aa.js +1 -0
- package/dist/assets/messagebundle_zh_TW-ad6445e7.js +1 -0
- package/dist/css/themes/Badge.css +1 -1
- package/dist/css/themes/BreadcrumbsPopover.css +1 -1
- package/dist/css/themes/DatePickerPopover.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/Footer.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMenu.css +1 -1
- package/dist/css/themes/MastheadMenuItem.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/Modal.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TableCell.css +1 -1
- package/dist/css/themes/TableCellBase.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/custom-elements-internal.json +232 -31
- package/dist/custom-elements.json +224 -30
- package/dist/features/SearchSuggestionsPopover.d.ts +16 -0
- package/dist/features/SearchSuggestionsPopover.js +49 -0
- package/dist/features/SearchSuggestionsPopover.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_ar.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_bg.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_cs.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_da.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_el.json +1 -0
- 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 -0
- package/dist/generated/assets/i18n/messagebundle_fi.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hr.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_hu.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_it.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_iw.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_ko.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_lt.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_lv.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_nl.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_no.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_pl.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_pt.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_ro.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_ru.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_sk.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_sl.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_sr.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_sv.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_tr.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_uk.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -0
- package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
- package/dist/generated/i18n/i18n-defaults.js +7 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/json-imports/i18n-static.js +86 -2
- package/dist/generated/json-imports/i18n-static.js.map +1 -1
- package/dist/generated/json-imports/i18n.js +58 -2
- package/dist/generated/json-imports/i18n.js.map +1 -1
- package/dist/generated/templates/BadgeTemplate.lit.js +4 -4
- package/dist/generated/templates/BadgeTemplate.lit.js.map +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +3 -3
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FooterTemplate.lit.js +12 -11
- package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListTemplate.lit.js +3 -3
- package/dist/generated/templates/ListTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +17 -16
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +15 -14
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +10 -9
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js +3 -3
- package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +1 -1
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +3 -3
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +3 -3
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
- package/dist/generated/templates/StepInputTemplate.lit.js.map +1 -1
- package/dist/generated/templates/WizardTemplate.lit.js +1 -1
- package/dist/generated/templates/WizardTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Badge.css.js +1 -1
- package/dist/generated/themes/Badge.css.js.map +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/FilterMenu.css.js +1 -1
- package/dist/generated/themes/FilterMenu.css.js.map +1 -1
- package/dist/generated/themes/Footer.css.js +1 -1
- package/dist/generated/themes/Footer.css.js.map +1 -1
- package/dist/generated/themes/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.css.js.map +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
- package/dist/generated/themes/Modal.css.js +1 -1
- package/dist/generated/themes/Modal.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/TableCell.css.js +1 -1
- package/dist/generated/themes/TableCell.css.js.map +1 -1
- package/dist/generated/themes/TableCellBase.css.js +1 -1
- package/dist/generated/themes/TableCellBase.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/i18n/messagebundle.properties +10 -0
- package/dist/i18n/messagebundle_ar.properties +1 -0
- package/dist/i18n/messagebundle_bg.properties +1 -0
- package/dist/i18n/messagebundle_cs.properties +1 -0
- package/dist/i18n/messagebundle_da.properties +1 -0
- package/dist/i18n/messagebundle_de.properties +1 -0
- package/dist/i18n/messagebundle_el.properties +1 -0
- package/dist/i18n/messagebundle_en.properties +4 -0
- package/dist/i18n/messagebundle_es.properties +1 -0
- package/dist/i18n/messagebundle_et.properties +1 -0
- package/dist/i18n/messagebundle_fi.properties +1 -0
- package/dist/i18n/messagebundle_fr.properties +1 -0
- package/dist/i18n/messagebundle_hr.properties +1 -0
- package/dist/i18n/messagebundle_hu.properties +1 -0
- package/dist/i18n/messagebundle_it.properties +1 -0
- package/dist/i18n/messagebundle_iw.properties +2 -0
- package/dist/i18n/messagebundle_ko.properties +1 -0
- package/dist/i18n/messagebundle_lt.properties +1 -0
- package/dist/i18n/messagebundle_lv.properties +1 -0
- package/dist/i18n/messagebundle_nl.properties +1 -0
- package/dist/i18n/messagebundle_no.properties +1 -0
- package/dist/i18n/messagebundle_pl.properties +1 -0
- package/dist/i18n/messagebundle_pt.properties +1 -0
- package/dist/i18n/messagebundle_pt_BR.properties +1 -0
- package/dist/i18n/messagebundle_ro.properties +1 -0
- package/dist/i18n/messagebundle_ru.properties +1 -0
- package/dist/i18n/messagebundle_sk.properties +1 -0
- package/dist/i18n/messagebundle_sl.properties +1 -0
- package/dist/i18n/messagebundle_sr.properties +2 -0
- package/dist/i18n/messagebundle_sv.properties +1 -0
- package/dist/i18n/messagebundle_tr.properties +1 -0
- package/dist/i18n/messagebundle_uk.properties +1 -0
- package/dist/i18n/messagebundle_zh_CN.properties +4 -0
- package/dist/i18n/messagebundle_zh_TW.properties +1 -0
- package/dist/types/BadgeDesign.d.ts +15 -0
- package/dist/types/BadgeDesign.js +18 -0
- package/dist/types/BadgeDesign.js.map +1 -0
- package/dist/types/IconPlacement.d.ts +5 -0
- package/dist/types/IconPlacement.js +7 -0
- package/dist/types/IconPlacement.js.map +1 -0
- package/dist/types/List.d.ts +8 -0
- package/dist/types/List.js.map +1 -1
- package/dist/utils/isLetterKeyPressed.d.ts +2 -0
- package/dist/utils/isLetterKeyPressed.js +5 -0
- package/dist/utils/isLetterKeyPressed.js.map +1 -0
- package/dist/utils/listItemLabelStartsWithKeyFocus.d.ts +3 -0
- package/dist/utils/listItemLabelStartsWithKeyFocus.js +55 -0
- package/dist/utils/listItemLabelStartsWithKeyFocus.js.map +1 -0
- package/dist/utils/listItemLabelUtils.d.ts +7 -0
- package/dist/utils/listItemLabelUtils.js +36 -0
- package/dist/utils/listItemLabelUtils.js.map +1 -0
- package/dist/vscode.html-custom-data.json +63 -26
- package/dist/web-types.json +113 -38
- package/package.json +1 -1
- package/src/Badge.hbs +16 -5
- package/src/Badge.ts +36 -19
- package/src/Breadcrumbs.ts +92 -66
- package/src/BreadcrumbsItem.ts +0 -1
- package/src/BreadcrumbsPopover.hbs +11 -9
- package/src/Checkbox.ts +0 -1
- package/src/CountrySelector.hbs +0 -1
- package/src/CountrySelector.ts +30 -16
- package/src/DatePicker.ts +2 -2
- package/src/Dropdown.ts +0 -2
- package/src/Footer.hbs +52 -28
- package/src/Footer.ts +81 -22
- package/src/Link.ts +5 -9
- package/src/List.hbs +2 -2
- package/src/List.ts +182 -112
- package/src/ListItem.hbs +2 -2
- package/src/ListItem.ts +4 -0
- package/src/MastheadItem.hbs +14 -4
- package/src/MastheadItem.ts +42 -9
- package/src/MastheadMenu.hbs +4 -4
- package/src/MastheadMenu.ts +20 -8
- package/src/MastheadMenuItem.hbs +10 -2
- package/src/MastheadMenuItem.ts +28 -1
- package/src/MastheadMobileMenu.ts +2 -2
- package/src/MastheadProfileMenu.hbs +1 -0
- package/src/MastheadProfileMenu.ts +3 -2
- package/src/MastheadShell.hbs +25 -19
- package/src/MastheadShell.ts +25 -5
- package/src/Pagination.hbs +3 -2
- package/src/Pagination.ts +110 -60
- package/src/PhoneNumberField.hbs +3 -3
- package/src/PhoneNumberField.ts +16 -8
- package/src/RangeSlider.ts +0 -1
- package/src/Search.hbs +10 -10
- package/src/Search.ts +17 -17
- package/src/SearchSuggestions.hbs +1 -0
- package/src/SearchableListBase.hbs +3 -1
- package/src/SearchableListBase.ts +57 -6
- package/src/SecondaryNavigation.hbs +1 -0
- package/src/SecondaryNavigation.ts +23 -16
- package/src/SecondaryNavigationItem.hbs +10 -7
- package/src/SecondaryNavigationItem.ts +58 -28
- package/src/SecondaryNavigationSubItem.hbs +3 -0
- package/src/SecondaryNavigationSubItem.ts +3 -0
- package/src/SegmentedButton.ts +2 -2
- package/src/SelectBox.ts +1 -1
- package/src/SideNavigationGroup.ts +0 -1
- package/src/SideNavigationItem.ts +0 -1
- package/src/SideNavigationSubItem.ts +0 -1
- package/src/Slider.ts +0 -1
- package/src/StepInput.hbs +16 -16
- package/src/TabNavigation.ts +2 -2
- package/src/Tag.ts +1 -5
- package/src/Tile.ts +2 -2
- package/src/Toast.ts +4 -3
- package/src/Wizard.hbs +1 -0
- package/src/Wizard.ts +1 -1
- package/src/WizardTab.ts +0 -1
- package/src/features/SearchSuggestionsPopover.ts +67 -1
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/json-imports/i18n-static.ts +86 -2
- package/src/generated/json-imports/i18n.ts +59 -3
- package/src/generated/templates/BadgeTemplate.lit.ts +3 -3
- package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +3 -3
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
- package/src/generated/templates/FooterTemplate.lit.ts +12 -11
- package/src/generated/templates/ListItemTemplate.lit.ts +2 -2
- package/src/generated/templates/ListTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadItemTemplate.lit.ts +17 -16
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +15 -14
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadShellTemplate.lit.ts +10 -9
- package/src/generated/templates/PaginationTemplate.lit.ts +3 -3
- package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
- package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +3 -3
- package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +3 -3
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +1 -1
- package/src/generated/templates/StepInputTemplate.lit.ts +1 -1
- package/src/generated/templates/WizardTemplate.lit.ts +1 -1
- package/src/generated/themes/Badge.css.ts +1 -1
- package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
- package/src/generated/themes/DatePickerPopover.css.ts +1 -1
- package/src/generated/themes/FilterMenu.css.ts +1 -1
- package/src/generated/themes/Footer.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMenu.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/Modal.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TableCell.css.ts +1 -1
- package/src/generated/themes/TableCellBase.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/i18n/messagebundle.properties +10 -0
- package/src/i18n/messagebundle_ar.properties +1 -0
- package/src/i18n/messagebundle_bg.properties +1 -0
- package/src/i18n/messagebundle_cs.properties +1 -0
- package/src/i18n/messagebundle_da.properties +1 -0
- package/src/i18n/messagebundle_de.properties +1 -0
- package/src/i18n/messagebundle_el.properties +1 -0
- package/src/i18n/messagebundle_en.properties +4 -0
- package/src/i18n/messagebundle_es.properties +1 -0
- package/src/i18n/messagebundle_et.properties +1 -0
- package/src/i18n/messagebundle_fi.properties +1 -0
- package/src/i18n/messagebundle_fr.properties +1 -0
- package/src/i18n/messagebundle_hr.properties +1 -0
- package/src/i18n/messagebundle_hu.properties +1 -0
- package/src/i18n/messagebundle_it.properties +1 -0
- package/src/i18n/messagebundle_iw.properties +2 -0
- package/src/i18n/messagebundle_ko.properties +1 -0
- package/src/i18n/messagebundle_lt.properties +1 -0
- package/src/i18n/messagebundle_lv.properties +1 -0
- package/src/i18n/messagebundle_nl.properties +1 -0
- package/src/i18n/messagebundle_no.properties +1 -0
- package/src/i18n/messagebundle_pl.properties +1 -0
- package/src/i18n/messagebundle_pt.properties +1 -0
- package/src/i18n/messagebundle_pt_BR.properties +1 -0
- package/src/i18n/messagebundle_ro.properties +1 -0
- package/src/i18n/messagebundle_ru.properties +1 -0
- package/src/i18n/messagebundle_sk.properties +1 -0
- package/src/i18n/messagebundle_sl.properties +1 -0
- package/src/i18n/messagebundle_sr.properties +2 -0
- package/src/i18n/messagebundle_sv.properties +1 -0
- package/src/i18n/messagebundle_tr.properties +1 -0
- package/src/i18n/messagebundle_uk.properties +1 -0
- package/src/i18n/messagebundle_zh_CN.properties +4 -0
- package/src/i18n/messagebundle_zh_TW.properties +1 -0
- package/src/themes/Badge.css +48 -52
- package/src/themes/BreadcrumbsPopover.css +1 -0
- package/src/themes/DatePickerPopover.css +9 -0
- package/src/themes/FilterMenu.css +6 -6
- package/src/themes/Footer.css +22 -3
- package/src/themes/MastheadItem.css +4 -0
- package/src/themes/MastheadMenu.css +1 -1
- package/src/themes/MastheadMenuItem.css +4 -0
- package/src/themes/MastheadShell.css +5 -0
- package/src/themes/MediaPlayer.css +2 -1
- package/src/themes/Modal.css +1 -0
- package/src/themes/TableCell.css +0 -2
- package/src/themes/TableCellBase.css +1 -0
- package/src/themes/TextArea.css +1 -1
- package/src/types/BadgeDesign.ts +17 -0
- package/src/types/IconPlacement.ts +6 -0
- package/src/types/List.ts +9 -0
- package/src/utils/isLetterKeyPressed.ts +5 -0
- package/src/utils/listItemLabelStartsWithKeyFocus.ts +74 -0
- package/src/utils/listItemLabelUtils.ts +50 -0
- package/dist/assets/messagebundle_de-8158912e.js +0 -1
- package/dist/assets/messagebundle_en-c677773a.js +0 -1
- package/dist/assets/messagebundle_es-8dab6565.js +0 -1
- package/dist/assets/messagebundle_fr-669aca6d.js +0 -1
package/src/List.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
|
16
16
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
17
17
|
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
|
|
18
18
|
import UDExListItem from "./ListItem.js";
|
|
19
|
-
import { ListStyleType, ListMode } from "./types/List.js";
|
|
19
|
+
import { ListStyleType, ListMode, LetterPressedHandlerObj } from "./types/List.js";
|
|
20
20
|
import UDExListGroupHeader from "./ListGroupHeader.js";
|
|
21
21
|
import UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
|
|
22
22
|
import {
|
|
@@ -27,6 +27,8 @@ import ListTemplate from "./generated/templates/ListTemplate.lit.js";
|
|
|
27
27
|
|
|
28
28
|
// Styles
|
|
29
29
|
import ListCss from "./generated/themes/List.css.js";
|
|
30
|
+
import isLetterKey from "./utils/isLetterKeyPressed.js";
|
|
31
|
+
import listItemLabelStartsWithKeyFocus from "./utils/listItemLabelStartsWithKeyFocus.js";
|
|
30
32
|
|
|
31
33
|
export type UDExListItemBase = UDExListItem & UDExListGroupHeader;
|
|
32
34
|
/**
|
|
@@ -146,12 +148,27 @@ class UDExList extends UI5Element {
|
|
|
146
148
|
|
|
147
149
|
static i18nBundle: I18nBundle;
|
|
148
150
|
|
|
151
|
+
_pressedKey!: string;
|
|
152
|
+
_pressedCount!: number;
|
|
153
|
+
_lastFoundPosition!: number;
|
|
154
|
+
_focusableListItems!: Array<UDExListItemBase>;
|
|
155
|
+
_letterKeyHandlerObj!: LetterPressedHandlerObj;
|
|
156
|
+
|
|
149
157
|
static async onDefine(): Promise<void> {
|
|
150
158
|
UDExList.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
151
159
|
}
|
|
152
160
|
|
|
161
|
+
resetFocusLetterHandlers(): void {
|
|
162
|
+
this.setPressedCount(0);
|
|
163
|
+
this.setPressedKey("");
|
|
164
|
+
this.setLastFoundPosition(0);
|
|
165
|
+
}
|
|
166
|
+
|
|
153
167
|
onBeforeRendering(): void {
|
|
154
168
|
this.prepareListItemsMode();
|
|
169
|
+
this.resetFocusLetterHandlers();
|
|
170
|
+
this._focusableListItems = this.getItemsWithoutHeader();
|
|
171
|
+
this._letterKeyHandlerObj = this.getLetterKeyObjHandler();
|
|
155
172
|
}
|
|
156
173
|
|
|
157
174
|
handleItemPress(e: CustomEvent): void {
|
|
@@ -160,149 +177,159 @@ class UDExList extends UI5Element {
|
|
|
160
177
|
}
|
|
161
178
|
|
|
162
179
|
handleKeyDown(e: KeyboardEvent): void {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
180
|
+
if (isUp(e)) {
|
|
181
|
+
this.handleUpArrow(e);
|
|
182
|
+
}
|
|
183
|
+
if (isDown(e)) {
|
|
184
|
+
this.handleDownArrow(e);
|
|
185
|
+
}
|
|
186
|
+
if (isHome(e)) {
|
|
187
|
+
this.handleHomeKey(e);
|
|
188
|
+
}
|
|
189
|
+
if (isEnd(e)) {
|
|
190
|
+
this.handleEndKey(e);
|
|
191
|
+
}
|
|
192
|
+
if (isEnter(e) || isSpace(e)) {
|
|
193
|
+
this.handleEnterOrSpace(e);
|
|
194
|
+
}
|
|
195
|
+
if (isLetterKey(e.key)) {
|
|
196
|
+
this.handleLetterKey(e);
|
|
197
|
+
}
|
|
168
198
|
}
|
|
169
199
|
|
|
170
200
|
handleEnterOrSpace(e: KeyboardEvent): void {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
this.onItemPress(clickedItem);
|
|
175
|
-
}
|
|
201
|
+
e.preventDefault();
|
|
202
|
+
const clickedItem = e.target as UDExListItemBase;
|
|
203
|
+
this.onItemPress(clickedItem);
|
|
176
204
|
}
|
|
177
205
|
|
|
178
206
|
handleUpArrow(e: KeyboardEvent): void {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (nonInteractiveHeader) {
|
|
196
|
-
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
197
|
-
this.setTabIndexByIndex(items, previousSelectIndex - 1);
|
|
198
|
-
items[previousSelectIndex - 1].focus();
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (isHeaderItem) {
|
|
203
|
-
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
204
|
-
this.setTabIndexByIndex(items, previousSelectIndex);
|
|
205
|
-
this.focusHeader(items[previousSelectIndex]);
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
207
|
+
e.preventDefault();
|
|
208
|
+
const items = this.getKeyboardNavigationItems();
|
|
209
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
210
|
+
const lastItemIndex = items.length - 1;
|
|
211
|
+
const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;
|
|
212
|
+
const isHeaderItem = items[previousSelectIndex].isGroup;
|
|
213
|
+
const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;
|
|
214
|
+
|
|
215
|
+
if (nonInteractiveHeader && previousSelectIndex === 0) {
|
|
216
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
217
|
+
this.setTabIndexByIndex(items, lastItemIndex);
|
|
218
|
+
items[lastItemIndex].focus();
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
208
221
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
222
|
+
if (nonInteractiveHeader) {
|
|
223
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
224
|
+
this.setTabIndexByIndex(items, previousSelectIndex - 1);
|
|
225
|
+
items[previousSelectIndex - 1].focus();
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
213
228
|
|
|
229
|
+
if (isHeaderItem) {
|
|
214
230
|
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
215
231
|
this.setTabIndexByIndex(items, previousSelectIndex);
|
|
216
|
-
items[previousSelectIndex]
|
|
232
|
+
this.focusHeader(items[previousSelectIndex]);
|
|
233
|
+
return;
|
|
217
234
|
}
|
|
218
|
-
}
|
|
219
235
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
225
|
-
const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;
|
|
226
|
-
const isHeaderItem = items[nextSelectIndex].isGroup;
|
|
227
|
-
const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;
|
|
228
|
-
|
|
229
|
-
if (nonInteractiveHeader) {
|
|
230
|
-
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
231
|
-
this.setTabIndexByIndex(items, nextSelectIndex + 1);
|
|
232
|
-
items[nextSelectIndex + 1].focus();
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
236
|
+
if (this.modeRadioGroup) {
|
|
237
|
+
items[currentSelectedIndex].selected = false;
|
|
238
|
+
items[previousSelectIndex].selected = true;
|
|
239
|
+
}
|
|
235
240
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
241
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
242
|
+
this.setTabIndexByIndex(items, previousSelectIndex);
|
|
243
|
+
items[previousSelectIndex].focus();
|
|
244
|
+
}
|
|
242
245
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
246
|
+
handleDownArrow(e: KeyboardEvent): void {
|
|
247
|
+
e.preventDefault();
|
|
248
|
+
const items = this.getKeyboardNavigationItems();
|
|
249
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
250
|
+
const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;
|
|
251
|
+
const isHeaderItem = items[nextSelectIndex].isGroup;
|
|
252
|
+
const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;
|
|
253
|
+
|
|
254
|
+
if (nonInteractiveHeader) {
|
|
255
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
256
|
+
this.setTabIndexByIndex(items, nextSelectIndex + 1);
|
|
257
|
+
items[nextSelectIndex + 1].focus();
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
247
260
|
|
|
261
|
+
if (isHeaderItem) {
|
|
248
262
|
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
249
263
|
this.setTabIndexByIndex(items, nextSelectIndex);
|
|
250
|
-
items[nextSelectIndex]
|
|
264
|
+
this.focusHeader(items[nextSelectIndex]);
|
|
265
|
+
return;
|
|
251
266
|
}
|
|
252
|
-
}
|
|
253
267
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
259
|
-
const firstItem = items[0];
|
|
260
|
-
const isHeaderItem = firstItem.isGroup;
|
|
261
|
-
const nonInteractiveItem = firstItem.nonInteractive;
|
|
262
|
-
|
|
263
|
-
if (nonInteractiveItem) {
|
|
264
|
-
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
265
|
-
this.setTabIndexByIndex(items, 1);
|
|
266
|
-
items[1].focus();
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
268
|
+
if (this.modeRadioGroup) {
|
|
269
|
+
items[currentSelectedIndex].selected = false;
|
|
270
|
+
items[nextSelectIndex].selected = true;
|
|
271
|
+
}
|
|
269
272
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
273
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
274
|
+
this.setTabIndexByIndex(items, nextSelectIndex);
|
|
275
|
+
items[nextSelectIndex].focus();
|
|
276
|
+
}
|
|
276
277
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
278
|
+
handleHomeKey(e: KeyboardEvent): void {
|
|
279
|
+
e.preventDefault();
|
|
280
|
+
const items = this.getKeyboardNavigationItems();
|
|
281
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
282
|
+
const firstItem = items[0];
|
|
283
|
+
const isHeaderItem = firstItem.isGroup;
|
|
284
|
+
const nonInteractiveItem = firstItem.nonInteractive;
|
|
285
|
+
|
|
286
|
+
if (nonInteractiveItem) {
|
|
287
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
288
|
+
this.setTabIndexByIndex(items, 1);
|
|
289
|
+
items[1].focus();
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
281
292
|
|
|
293
|
+
if (isHeaderItem) {
|
|
282
294
|
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
283
295
|
this.setTabIndexByIndex(items, 0);
|
|
284
|
-
items[0]
|
|
296
|
+
this.focusHeader(items[0]);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
if (this.modeRadioGroup) {
|
|
301
|
+
items[currentSelectedIndex].selected = false;
|
|
302
|
+
items[0].selected = true;
|
|
285
303
|
}
|
|
304
|
+
|
|
305
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
306
|
+
this.setTabIndexByIndex(items, 0);
|
|
307
|
+
items[0].focus();
|
|
286
308
|
}
|
|
287
309
|
|
|
288
310
|
handleEndKey(e: KeyboardEvent): void {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
311
|
+
e.preventDefault();
|
|
312
|
+
const items = this.getKeyboardNavigationItems();
|
|
313
|
+
const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);
|
|
293
314
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
300
|
-
this.setTabIndexByIndex(items, items.length - 1);
|
|
301
|
-
items[items.length - 1].focus();
|
|
315
|
+
if (this.modeRadioGroup) {
|
|
316
|
+
items[currentSelectedIndex].selected = false;
|
|
317
|
+
items[items.length - 1].selected = true;
|
|
302
318
|
}
|
|
319
|
+
|
|
320
|
+
this.unsetTabIndexByIndex(items, currentSelectedIndex);
|
|
321
|
+
this.setTabIndexByIndex(items, items.length - 1);
|
|
322
|
+
items[items.length - 1].focus();
|
|
303
323
|
}
|
|
304
324
|
|
|
305
|
-
|
|
325
|
+
handleLetterKey(e: KeyboardEvent): void {
|
|
326
|
+
const letterKey = e.key;
|
|
327
|
+
e.stopPropagation();
|
|
328
|
+
e.preventDefault();
|
|
329
|
+
listItemLabelStartsWithKeyFocus(letterKey, this._focusableListItems, this._letterKeyHandlerObj);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
onItemPress(clickedItem: UDExListItemBase): void {
|
|
306
333
|
if (this.modeSingleSelect && !this.controlled) {
|
|
307
334
|
this.revertSelectedItems(this.getSelectedItems());
|
|
308
335
|
clickedItem.selected = true;
|
|
@@ -333,6 +360,14 @@ class UDExList extends UI5Element {
|
|
|
333
360
|
});
|
|
334
361
|
}
|
|
335
362
|
|
|
363
|
+
focusSelectedItem(): void {
|
|
364
|
+
const selectedItemIndex = this.items.findIndex(item => item.selected);
|
|
365
|
+
this.resetTabIndexes();
|
|
366
|
+
if (selectedItemIndex !== -1 && this.modeSingleSelect) {
|
|
367
|
+
this.setTabIndexByIndex(this.items, selectedItemIndex);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
336
371
|
focusHeader(item: UDExListItemBase): void {
|
|
337
372
|
const header = item.shadowRoot?.querySelector(".udex-list__group-header") as HTMLElement;
|
|
338
373
|
header.focus();
|
|
@@ -346,6 +381,41 @@ class UDExList extends UI5Element {
|
|
|
346
381
|
items[index]._tabIndex = "0";
|
|
347
382
|
}
|
|
348
383
|
|
|
384
|
+
setPressedKey(value:string): void {
|
|
385
|
+
this._pressedKey = value;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
getPressedKey(): string {
|
|
389
|
+
return this._pressedKey;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
setPressedCount(value:number): void {
|
|
393
|
+
this._pressedCount = value;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
getPressedCount() : number {
|
|
397
|
+
return this._pressedCount;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
setLastFoundPosition(value:number): void {
|
|
401
|
+
this._lastFoundPosition = value;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
getLastFoundPosition(): number {
|
|
405
|
+
return this._lastFoundPosition;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
getLetterKeyObjHandler(): LetterPressedHandlerObj {
|
|
409
|
+
return {
|
|
410
|
+
getPressedKey: () => this.getPressedKey(),
|
|
411
|
+
setPressedKey: (arg: string) => this.setPressedKey(arg),
|
|
412
|
+
getPressedCount: () => this.getPressedCount(),
|
|
413
|
+
setPressedCount: (arg: number) => this.setPressedCount(arg),
|
|
414
|
+
getLastFoundPosition: () => this.getLastFoundPosition(),
|
|
415
|
+
setLastFoundPosition: (arg: number) => this.setLastFoundPosition(arg),
|
|
416
|
+
} as LetterPressedHandlerObj;
|
|
417
|
+
}
|
|
418
|
+
|
|
349
419
|
getItems(): Array<UDExListItemBase> {
|
|
350
420
|
return this.getSlottedNodes<UDExListItemBase>("items");
|
|
351
421
|
}
|
package/src/ListItem.hbs
CHANGED
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
</li>
|
|
52
52
|
{{/if}}
|
|
53
53
|
{{#*inline "contentList"}}
|
|
54
|
-
<div class="udex-list__content-wrap" _id="{{this._id}}" aria-labelledby="{{this._id}}-invisibleText">
|
|
54
|
+
<div class="udex-list__content-wrap" _id="{{this._id}}" aria-labelledby="{{this._id}}-invisibleText" aria-label="{{accessibleListItemName}}">
|
|
55
55
|
{{#if flag}}
|
|
56
56
|
<div class="udex-list__flag-wrap">
|
|
57
57
|
<span class="udex-list__flag" style="background-position: {{flagPosition}}"></span>
|
|
@@ -120,6 +120,6 @@
|
|
|
120
120
|
{{/if}}
|
|
121
121
|
{{/if}}
|
|
122
122
|
</div>
|
|
123
|
-
<div class="hidden" id="{{this._id}}-invisibleText">{{
|
|
123
|
+
<div class="hidden" id="{{this._id}}-invisibleText">{{accessibleListItemName}}</div>
|
|
124
124
|
</div>
|
|
125
125
|
{{/inline}}
|
package/src/ListItem.ts
CHANGED
|
@@ -393,6 +393,10 @@ class UDExListItem extends UDExListItemBase {
|
|
|
393
393
|
return this.size === ListItemSize.Large;
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
+
get accessibleListItemName(): string {
|
|
397
|
+
return this.accessibleName || this.label;
|
|
398
|
+
}
|
|
399
|
+
|
|
396
400
|
get stateAccessibleName(): string {
|
|
397
401
|
if (this.indeterminate) { return UDExListItem.i18nBundle.getText(INDETERMINATE); }
|
|
398
402
|
return `${this.selected ? UDExListItem.i18nBundle.getText(SELECTED) : UDExListItem.i18nBundle.getText(UNSELECTED)} `;
|
package/src/MastheadItem.hbs
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
{{#if hasHref}}
|
|
2
|
+
{{#if isTargetBlank}}
|
|
3
|
+
<span
|
|
4
|
+
id="new-win-desc"
|
|
5
|
+
class="udex-masthead-hidden-text">
|
|
6
|
+
{{openInNewWindowText}}
|
|
7
|
+
</span>
|
|
8
|
+
{{/if}}
|
|
2
9
|
<a
|
|
3
10
|
id="{{this._id}}"
|
|
4
11
|
class="{{additionalClass}}"
|
|
@@ -6,8 +13,8 @@
|
|
|
6
13
|
role="{{accessibleRoleName}}"
|
|
7
14
|
target="{{target}}"
|
|
8
15
|
href="{{href}}"
|
|
9
|
-
aria-labelledby="{{ariaLabelledBy}}"
|
|
10
16
|
aria-label="{{accessibleLabel}}"
|
|
17
|
+
aria-describedby="{{ariaDescribedBy}}"
|
|
11
18
|
@click="{{handleNavigationItemClick}}">
|
|
12
19
|
{{> content}}
|
|
13
20
|
</a>
|
|
@@ -17,7 +24,8 @@
|
|
|
17
24
|
role="combobox"
|
|
18
25
|
class="udex-masthead-item__btn {{additionalClass}}"
|
|
19
26
|
aria-expanded="{{selected}}"
|
|
20
|
-
aria-
|
|
27
|
+
aria-describedby="{{ariaDescribedBy}}"
|
|
28
|
+
aria-controls="{{this._id}}_dropdown"
|
|
21
29
|
aria-haspopup="{{hasDropdownSlot}}"
|
|
22
30
|
aria-label="{{accessibleLabel}}"
|
|
23
31
|
@keydown="{{handleKeyDown}}"
|
|
@@ -33,7 +41,7 @@
|
|
|
33
41
|
id="{{this._id}}"
|
|
34
42
|
class="udex-masthead-item__btn {{additionalClass}}"
|
|
35
43
|
aria-expanded="{{selected}}"
|
|
36
|
-
aria-
|
|
44
|
+
aria-describedby="{{ariaDescribedBy}}"
|
|
37
45
|
aria-haspopup="{{hasDropdownSlot}}"
|
|
38
46
|
aria-label="{{accessibleLabel}}"
|
|
39
47
|
@keydown="{{handleKeyDown}}"
|
|
@@ -70,8 +78,10 @@
|
|
|
70
78
|
|
|
71
79
|
{{#*inline "dropdown"}}
|
|
72
80
|
<div
|
|
81
|
+
id="{{this._id}}_dropdown"
|
|
73
82
|
class="udex-masthead-item__dropdown"
|
|
74
|
-
@keydown="{{handleKeyDown}}"
|
|
83
|
+
@keydown="{{handleKeyDown}}"
|
|
84
|
+
@focusout="{{handleFocusout}}">
|
|
75
85
|
<div class="udex-masthead-item__dropdown-holder">
|
|
76
86
|
<slot name="dropdown"></slot>
|
|
77
87
|
</div>
|
package/src/MastheadItem.ts
CHANGED
|
@@ -10,7 +10,7 @@ import "@ui5/webcomponents-icons/dist/search.js";
|
|
|
10
10
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
11
11
|
import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
12
12
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
13
|
-
import { PROFILE } from "./generated/i18n/i18n-defaults.js";
|
|
13
|
+
import { OPENS_IN_A_NEW_WINDOW, PROFILE } from "./generated/i18n/i18n-defaults.js";
|
|
14
14
|
import UDExMastheadMenu from "./MastheadMenu.js";
|
|
15
15
|
import UDExAvatar from "./Avatar.js";
|
|
16
16
|
import MastheadShell from "./MastheadShell.js";
|
|
@@ -53,6 +53,13 @@ export type ItemClickEventDetail = {
|
|
|
53
53
|
item: UDExMastheadItem,
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
export enum Target {
|
|
57
|
+
_blank = "_blank",
|
|
58
|
+
_parent = "_parent",
|
|
59
|
+
_self = "_self",
|
|
60
|
+
_top = "_top",
|
|
61
|
+
}
|
|
62
|
+
|
|
56
63
|
/**
|
|
57
64
|
* @class
|
|
58
65
|
*
|
|
@@ -73,6 +80,7 @@ export type ItemClickEventDetail = {
|
|
|
73
80
|
@customElement({
|
|
74
81
|
tag: "udex-masthead-item",
|
|
75
82
|
renderer: litRender,
|
|
83
|
+
languageAware: true,
|
|
76
84
|
styles: MastheadItemCss,
|
|
77
85
|
template: MastheadItemTemplate,
|
|
78
86
|
dependencies: [
|
|
@@ -93,7 +101,7 @@ export type ItemClickEventDetail = {
|
|
|
93
101
|
type: HTMLElement,
|
|
94
102
|
},
|
|
95
103
|
originalEvent: {
|
|
96
|
-
type:
|
|
104
|
+
type: Event,
|
|
97
105
|
},
|
|
98
106
|
},
|
|
99
107
|
})
|
|
@@ -157,8 +165,8 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
157
165
|
* <b>Note:</b> Standard hyperlink behavior is supported.
|
|
158
166
|
* @public
|
|
159
167
|
*/
|
|
160
|
-
@property({ type:
|
|
161
|
-
target!:
|
|
168
|
+
@property({ type: Target, defaultValue: Target._self })
|
|
169
|
+
target!: Target;
|
|
162
170
|
|
|
163
171
|
/**
|
|
164
172
|
* Controls the ARIA name of the item
|
|
@@ -243,6 +251,15 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
243
251
|
}
|
|
244
252
|
}
|
|
245
253
|
|
|
254
|
+
handleFocusout(e: FocusEvent): void {
|
|
255
|
+
const eTarget = e.relatedTarget as HTMLElement;
|
|
256
|
+
const focusedAvatarItem = eTarget?.shadowRoot?.querySelector("[ui5-avatar]");
|
|
257
|
+
|
|
258
|
+
if (!this.isMobile && (!this.isProfileBtn || eTarget === null || focusedAvatarItem)) {
|
|
259
|
+
this.closeDropdown();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
246
263
|
handleKeyDown(e: KeyboardEvent): void {
|
|
247
264
|
if (isEscape(e) && this.hasDropdownSlot) {
|
|
248
265
|
if (this.isMobile) {
|
|
@@ -253,8 +270,8 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
253
270
|
}
|
|
254
271
|
}
|
|
255
272
|
|
|
256
|
-
handleKeyEscape() {
|
|
257
|
-
this.
|
|
273
|
+
handleKeyEscape(): void {
|
|
274
|
+
this.closeDropdown();
|
|
258
275
|
if (this.isProfileBtn) {
|
|
259
276
|
this._profileAvatar.focus();
|
|
260
277
|
} else {
|
|
@@ -324,6 +341,10 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
324
341
|
}
|
|
325
342
|
}
|
|
326
343
|
|
|
344
|
+
closeDropdown(): void {
|
|
345
|
+
this.selected = false;
|
|
346
|
+
}
|
|
347
|
+
|
|
327
348
|
getDomElement(selector: string): HTMLElement | undefined | null {
|
|
328
349
|
return this.shadowRoot?.querySelector(`${selector}`);
|
|
329
350
|
}
|
|
@@ -340,7 +361,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
340
361
|
const iconClass = this.icon ? "udex-masthead-item__button--icon" : "";
|
|
341
362
|
const profileClass = this.isProfileBtn ? "udex-masthead-item__button--profile" : "";
|
|
342
363
|
const exploreClass = this.isExploreBtn ? "udex-masthead-item__button--explore" : "";
|
|
343
|
-
return `udex-masthead-item ${iconClass} ${profileClass} ${exploreClass}
|
|
364
|
+
return `udex-masthead-item ${iconClass} ${profileClass} ${exploreClass}`.trim();
|
|
344
365
|
}
|
|
345
366
|
|
|
346
367
|
get profileAvatar(): UDExAvatar {
|
|
@@ -367,7 +388,7 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
367
388
|
return this.selected ? " udex-masthead-item__button--active" : "";
|
|
368
389
|
}
|
|
369
390
|
|
|
370
|
-
get
|
|
391
|
+
get ariaDescribedBy(): string {
|
|
371
392
|
const labels = [];
|
|
372
393
|
|
|
373
394
|
if (this.text) {
|
|
@@ -378,7 +399,11 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
378
399
|
labels.push(`${this.__id}-icon`);
|
|
379
400
|
}
|
|
380
401
|
|
|
381
|
-
|
|
402
|
+
if (this.isTargetBlank) {
|
|
403
|
+
labels.push(`new-win-desc`);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return labels.join(" ").trim();
|
|
382
407
|
}
|
|
383
408
|
|
|
384
409
|
get showDropdown(): boolean {
|
|
@@ -412,6 +437,14 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
|
|
|
412
437
|
get isMobile(): boolean {
|
|
413
438
|
return window.innerWidth < breakpointSizeM;
|
|
414
439
|
}
|
|
440
|
+
|
|
441
|
+
get isTargetBlank(): boolean {
|
|
442
|
+
return this.target === Target._blank;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
get openInNewWindowText(): string {
|
|
446
|
+
return UDExMastheadItem.i18nBundle.getText(OPENS_IN_A_NEW_WINDOW);
|
|
447
|
+
}
|
|
415
448
|
}
|
|
416
449
|
|
|
417
450
|
UDExMastheadItem.define();
|
package/src/MastheadMenu.hbs
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
{{#*inline "header"}}
|
|
23
23
|
<div class="udex-masthead-menu__header">
|
|
24
24
|
<udex-masthead-menu-item
|
|
25
|
+
id="category-{{categoryId}}"
|
|
25
26
|
@click="{{../../handleMenuItemClick}}"
|
|
26
27
|
url="{{this.url}}"
|
|
27
28
|
label="{{this.category}}"
|
|
@@ -33,16 +34,15 @@
|
|
|
33
34
|
{{/inline}}
|
|
34
35
|
|
|
35
36
|
{{#*inline "list"}}
|
|
36
|
-
<ul class="udex-masthead-menu__list"
|
|
37
|
+
<ul class="udex-masthead-menu__list" aria-labelledby="category-{{categoryId}}">
|
|
37
38
|
{{#each this.items}}
|
|
38
|
-
<li
|
|
39
|
+
<li>
|
|
39
40
|
<udex-masthead-menu-item
|
|
40
41
|
@click="{{../../../handleMenuItemClick}}"
|
|
41
42
|
badge="{{this.badge}}"
|
|
42
43
|
?external-link="{{this.externalLink}}"
|
|
43
44
|
url="{{this.url}}"
|
|
44
|
-
label="{{this.title}}"
|
|
45
|
-
role="menuitem" >
|
|
45
|
+
label="{{this.title}}">
|
|
46
46
|
</udex-masthead-menu-item>
|
|
47
47
|
</li>
|
|
48
48
|
{{/each}}
|