@sapudex/web-components 2.60.0 → 2.62.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/cypress/specs/AccordionSpotlight.cy.tsx +43 -2
- package/cypress/specs/Carousel.cy.tsx +134 -0
- package/cypress/specs/CountrySelector.cy.tsx +233 -6
- package/cypress/specs/FilterMenu.cy.tsx +39 -45
- package/cypress/specs/List.cy.tsx +624 -10
- package/cypress/specs/ListItem.cy.tsx +50 -0
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +52 -3
- package/cypress/specs/SelectBox.cy.tsx +276 -136
- package/cypress/specs/SelectBoxAccessibility.cy.tsx +3109 -0
- package/cypress/specs/SideNavigation.cy.tsx +509 -0
- package/cypress/specs/Table.cy.tsx +90 -0
- package/cypress/specs/TagGroup.cy.tsx +168 -0
- package/cypress/support/component-imports.instrumented.ts +6 -0
- package/cypress/support/component-imports.src.ts +6 -0
- package/dist/AccordionSpotlight.d.ts +7 -2
- package/dist/AccordionSpotlight.js +31 -6
- package/dist/AccordionSpotlight.js.map +1 -1
- package/dist/AccordionSpotlightItem.d.ts +3 -1
- package/dist/AccordionSpotlightItem.js +3 -1
- package/dist/AccordionSpotlightItem.js.map +1 -1
- package/dist/Carousel.d.ts +2 -0
- package/dist/Carousel.js +35 -4
- package/dist/Carousel.js.map +1 -1
- package/dist/CountrySelector.js +1 -3
- package/dist/CountrySelector.js.map +1 -1
- package/dist/List.d.ts +2 -0
- package/dist/List.js +22 -4
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.js +5 -1
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +2 -0
- package/dist/ListGroupHeaderBase.js +15 -2
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListGroupHeaderTemplate.js +14 -22
- package/dist/ListGroupHeaderTemplate.js.map +1 -1
- package/dist/ListItem.d.ts +1 -2
- package/dist/ListItem.js +14 -12
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +5 -0
- package/dist/ListItemBase.js +11 -1
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListItemTemplate.js +1 -1
- package/dist/ListItemTemplate.js.map +1 -1
- package/dist/ListSelectAllTemplate.js +1 -1
- package/dist/ListSelectAllTemplate.js.map +1 -1
- package/dist/ListTemplate.js +2 -1
- package/dist/ListTemplate.js.map +1 -1
- package/dist/Pagination.d.ts +0 -1
- package/dist/Pagination.js +2 -2
- package/dist/Pagination.js.map +1 -1
- package/dist/Search.d.ts +13 -3
- package/dist/Search.js +36 -11
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +2 -0
- package/dist/SearchableListBase.js +13 -3
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +42 -34
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +2 -1
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +12 -6
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationTemplate.js +1 -2
- package/dist/SecondaryNavigationTemplate.js.map +1 -1
- package/dist/SelectBase.d.ts +18 -33
- package/dist/SelectBase.js +125 -140
- package/dist/SelectBase.js.map +1 -1
- package/dist/SelectBox.d.ts +3 -0
- package/dist/SelectBox.js +19 -7
- package/dist/SelectBox.js.map +1 -1
- package/dist/SelectBoxTemplate.js +3 -3
- package/dist/SelectBoxTemplate.js.map +1 -1
- package/dist/SideNavigation.d.ts +23 -0
- package/dist/SideNavigation.js +39 -0
- package/dist/SideNavigation.js.map +1 -1
- package/dist/SideNavigationItem.d.ts +10 -0
- package/dist/SideNavigationItem.js +69 -0
- package/dist/SideNavigationItem.js.map +1 -1
- package/dist/SideNavigationItemTemplate.d.ts +2 -0
- package/dist/SideNavigationItemTemplate.js +15 -0
- package/dist/SideNavigationItemTemplate.js.map +1 -0
- package/dist/SideNavigationMobile.js +1 -2
- package/dist/SideNavigationMobile.js.map +1 -1
- package/dist/SideNavigationMobileTemplate.js +1 -1
- package/dist/SideNavigationMobileTemplate.js.map +1 -1
- package/dist/SideNavigationSubItem.d.ts +23 -0
- package/dist/SideNavigationSubItem.js +105 -1
- package/dist/SideNavigationSubItem.js.map +1 -1
- package/dist/SideNavigationSubItemTemplate.d.ts +2 -0
- package/dist/SideNavigationSubItemTemplate.js +9 -0
- package/dist/SideNavigationSubItemTemplate.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/Table.js.map +1 -1
- package/dist/TableCell.d.ts +8 -2
- package/dist/TableCell.js +13 -11
- package/dist/TableCell.js.map +1 -1
- package/dist/TableCellBase.d.ts +2 -1
- package/dist/TableCellBase.js +9 -0
- package/dist/TableCellBase.js.map +1 -1
- package/dist/TableHeaderCell.d.ts +0 -1
- package/dist/TableHeaderCell.js +0 -4
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableRow.d.ts +10 -0
- package/dist/TableRow.js +23 -0
- package/dist/TableRow.js.map +1 -1
- package/dist/TagGroup.d.ts +3 -0
- package/dist/TagGroup.js +31 -0
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroupTemplate.js +1 -1
- package/dist/TagGroupTemplate.js.map +1 -1
- package/dist/UploadItem.js +3 -4
- package/dist/UploadItem.js.map +1 -1
- package/dist/assets/{InputSuggestions-DyNcKgip.js → InputSuggestions-BPKrPqPb.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-qdKPzaOQ.js → ListItemStandardExpandableTextTemplate-DkdOcCxC.js} +1 -1
- package/dist/assets/{bundle.esm-sUYwSJOp.js → bundle.esm-17Yt5gDr.js} +234 -235
- package/dist/css/themes/AccordionSpotlight.css +1 -1
- package/dist/css/themes/Contact.css +1 -1
- package/dist/css/themes/EventRibbon.css +1 -1
- package/dist/css/themes/Feed.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/ImageGridCloud.css +1 -1
- package/dist/css/themes/ImageGridTicker.css +1 -1
- package/dist/css/themes/ImageGridTickerItem.css +1 -1
- package/dist/css/themes/LinkList.css +1 -1
- package/dist/css/themes/ListGroupHeader.css +1 -1
- package/dist/css/themes/MastheadCountrySelector.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/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/Modal.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -1
- package/dist/css/themes/Quote.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/SecondaryNavigation.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -1
- package/dist/css/themes/SideNavigation.css +1 -1
- package/dist/css/themes/SideNavigationItem.css +1 -1
- package/dist/css/themes/SideNavigationMobile.css +1 -1
- package/dist/css/themes/SideNavigationSubItem.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/Table.css +1 -1
- package/dist/css/themes/TableCellBase.css +1 -1
- package/dist/css/themes/Upload.css +1 -1
- package/dist/css/themes/UploadItem.css +1 -1
- package/dist/custom-elements-internal.json +162 -19
- package/dist/custom-elements.json +151 -26
- package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
- package/dist/generated/themes/Contact.css.d.ts +1 -1
- package/dist/generated/themes/Contact.css.js +1 -1
- package/dist/generated/themes/Contact.css.js.map +1 -1
- package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
- package/dist/generated/themes/EventRibbon.css.js +1 -1
- package/dist/generated/themes/EventRibbon.css.js.map +1 -1
- package/dist/generated/themes/Feed.css.d.ts +1 -1
- package/dist/generated/themes/Feed.css.js +1 -1
- package/dist/generated/themes/Feed.css.js.map +1 -1
- package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
- package/dist/generated/themes/HeroBanner.css.js +1 -1
- package/dist/generated/themes/HeroBanner.css.js.map +1 -1
- package/dist/generated/themes/ImageGridCloud.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridCloud.css.js +1 -1
- package/dist/generated/themes/ImageGridCloud.css.js.map +1 -1
- package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridTicker.css.js +1 -1
- package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.js +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.js.map +1 -1
- package/dist/generated/themes/LinkList.css.d.ts +1 -1
- package/dist/generated/themes/LinkList.css.js +1 -1
- package/dist/generated/themes/LinkList.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/MastheadCountrySelector.css.d.ts +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
- package/dist/generated/themes/MastheadItem.css.d.ts +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.d.ts +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.d.ts +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/MastheadMobileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.d.ts +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/MessageStrip.css.d.ts +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js.map +1 -1
- package/dist/generated/themes/Modal.css.d.ts +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/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/Quote.css.d.ts +1 -1
- package/dist/generated/themes/Quote.css.js +1 -1
- package/dist/generated/themes/Quote.css.js.map +1 -1
- package/dist/generated/themes/Review.css.d.ts +1 -1
- package/dist/generated/themes/Review.css.js +1 -1
- package/dist/generated/themes/Review.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SelectBase.css.d.ts +1 -1
- package/dist/generated/themes/SelectBase.css.js +1 -1
- package/dist/generated/themes/SelectBase.css.js.map +1 -1
- package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigation.css.js +1 -1
- package/dist/generated/themes/SideNavigation.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationMobile.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationMobile.css.js +1 -1
- package/dist/generated/themes/SideNavigationMobile.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
- package/dist/generated/themes/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/Table.css.d.ts +1 -1
- package/dist/generated/themes/Table.css.js +1 -1
- package/dist/generated/themes/Table.css.js.map +1 -1
- package/dist/generated/themes/TableCellBase.css.d.ts +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/Upload.css.d.ts +1 -1
- package/dist/generated/themes/Upload.css.js +1 -1
- package/dist/generated/themes/Upload.css.js.map +1 -1
- package/dist/generated/themes/UploadItem.css.d.ts +1 -1
- package/dist/generated/themes/UploadItem.css.js +1 -1
- package/dist/generated/themes/UploadItem.css.js.map +1 -1
- package/dist/messagebundle.properties +3 -0
- package/dist/types/Table.d.ts +6 -2
- package/dist/types/Table.js +7 -2
- package/dist/types/Table.js.map +1 -1
- package/dist/vscode.html-custom-data.json +48 -7
- package/dist/web-types.json +88 -14
- package/package.json +1 -1
- package/run-cypress.js +8 -1
- package/src/AccordionSpotlight.ts +35 -6
- package/src/AccordionSpotlightItem.ts +3 -1
- package/src/Carousel.ts +39 -4
- package/src/CountrySelector.ts +1 -3
- package/src/List.ts +21 -4
- package/src/ListGroupHeader.ts +5 -1
- package/src/ListGroupHeaderBase.ts +16 -2
- package/src/ListGroupHeaderTemplate.tsx +29 -47
- package/src/ListItem.ts +14 -13
- package/src/ListItemBase.ts +14 -1
- package/src/ListItemTemplate.tsx +4 -4
- package/src/ListSelectAllTemplate.tsx +10 -8
- package/src/ListTemplate.tsx +14 -10
- package/src/Pagination.ts +2 -3
- package/src/Search.ts +48 -13
- package/src/SearchableListBase.ts +15 -3
- package/src/SearchableListBaseTemplate.tsx +51 -37
- package/src/SecondaryNavigation.ts +2 -1
- package/src/SecondaryNavigationItem.ts +14 -6
- package/src/SecondaryNavigationTemplate.tsx +4 -6
- package/src/SelectBase.ts +131 -145
- package/src/SelectBox.ts +21 -7
- package/src/SelectBoxTemplate.tsx +10 -9
- package/src/SideNavigation.ts +35 -0
- package/src/SideNavigationItem.ts +77 -0
- package/src/SideNavigationItemTemplate.tsx +97 -0
- package/src/SideNavigationMobile.ts +1 -2
- package/src/SideNavigationMobileTemplate.tsx +2 -1
- package/src/SideNavigationSubItem.ts +119 -2
- package/src/SideNavigationSubItemTemplate.tsx +57 -0
- package/src/Table.ts +1 -2
- package/src/TableCell.ts +9 -12
- package/src/TableCellBase.ts +10 -1
- package/src/TableHeaderCell.ts +0 -5
- package/src/TableRow.ts +20 -0
- package/src/TagGroup.ts +32 -0
- package/src/TagGroupTemplate.tsx +1 -1
- package/src/UploadItem.ts +3 -5
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
- package/src/generated/themes/Contact.css.ts +1 -1
- package/src/generated/themes/EventRibbon.css.ts +1 -1
- package/src/generated/themes/Feed.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/ImageGridCloud.css.ts +1 -1
- package/src/generated/themes/ImageGridTicker.css.ts +1 -1
- package/src/generated/themes/ImageGridTickerItem.css.ts +1 -1
- package/src/generated/themes/LinkList.css.ts +1 -1
- package/src/generated/themes/ListGroupHeader.css.ts +1 -1
- package/src/generated/themes/MastheadCountrySelector.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/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MessageStrip.css.ts +1 -1
- package/src/generated/themes/Modal.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +1 -1
- package/src/generated/themes/Quote.css.ts +1 -1
- package/src/generated/themes/Review.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +1 -1
- package/src/generated/themes/SideNavigation.css.ts +1 -1
- package/src/generated/themes/SideNavigationItem.css.ts +1 -1
- package/src/generated/themes/SideNavigationMobile.css.ts +1 -1
- package/src/generated/themes/SideNavigationSubItem.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/Table.css.ts +1 -1
- package/src/generated/themes/TableCellBase.css.ts +1 -1
- package/src/generated/themes/Upload.css.ts +1 -1
- package/src/generated/themes/UploadItem.css.ts +1 -1
- package/src/i18n/messagebundle.properties +3 -0
- package/src/themes/AccordionSpotlight.css +11 -8
- package/src/themes/Contact.css +1 -1
- package/src/themes/EventRibbon.css +4 -4
- package/src/themes/Feed.css +2 -2
- package/src/themes/HeroBanner.css +3 -3
- package/src/themes/ImageGridCloud.css +1 -1
- package/src/themes/ImageGridTicker.css +1 -1
- package/src/themes/ImageGridTickerItem.css +1 -1
- package/src/themes/LinkList.css +4 -4
- package/src/themes/ListGroupHeader.css +2 -43
- package/src/themes/MastheadCountrySelector.css +1 -1
- package/src/themes/MastheadItem.css +4 -4
- package/src/themes/MastheadMenu.css +1 -1
- package/src/themes/MastheadMenuItem.css +1 -1
- package/src/themes/MastheadMobileMenu.css +2 -2
- package/src/themes/MastheadProfileMenu.css +1 -1
- package/src/themes/MastheadShell.css +4 -4
- package/src/themes/MessageStrip.css +7 -2
- package/src/themes/Modal.css +1 -1
- package/src/themes/PromoTile.css +4 -3
- package/src/themes/Quote.css +2 -2
- package/src/themes/Review.css +2 -2
- package/src/themes/ReviewItem.css +2 -2
- package/src/themes/SecondaryNavigation.css +1 -2
- package/src/themes/SecondaryNavigationItem.css +3 -6
- package/src/themes/SelectBase.css +1 -1
- package/src/themes/SideNavigation.css +31 -8
- package/src/themes/SideNavigationItem.css +100 -22
- package/src/themes/SideNavigationMobile.css +65 -20
- package/src/themes/SideNavigationSubItem.css +15 -54
- package/src/themes/TabNavigation.css +2 -2
- package/src/themes/Table.css +7 -2
- package/src/themes/TableCellBase.css +8 -0
- package/src/themes/Upload.css +1 -1
- package/src/themes/UploadItem.css +1 -1
- package/src/types/Table.ts +6 -2
- package/dist/css/themes/SideNavigationMobileDropdown.css +0 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.css.d.ts +0 -2
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js +0 -8
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +0 -1
- package/src/generated/themes/SideNavigationMobileDropdown.css.ts +0 -9
- package/src/themes/SideNavigationMobileDropdown.css +0 -29
package/dist/SelectBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBase.js","sourceRoot":"","sources":["../src/SelectBase.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport type { ChangeInfo, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport {\n isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious, isLeft, isRight, isEnter, isSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getAllAccessibleNameRefTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExSearch from \"./Search.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport {\n COUNTRY_SELECT, STARS, SELECTED, UNSELECTED, INDETERMINATE, DISABLED, EXPANDED, COLLAPSED,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport CountrySelectorTemplate from \"./CountrySelectorTemplate.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport UDExValueState from \"./types/common.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport Tokenizer, { getTokensCountText } from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport translate from \"./utils/translate.js\";\nimport type { AriaAutoComplete, AriaHasPopup } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\n\ntype UDExSelectBaseEvents = {\n \"open\": void,\n \"close\": void,\n \"before-close\": void,\n \"before-open\": void,\n} & UDExSearchableListBaseEvents;\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExCountrySelector</code> and <code>UDExSelectBox</code> classes.\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @public\n */\n\nclass UDExSelectBase extends UDExSearchableListBase {\n eventDetails!: UDExSelectBaseEvents;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines label text for field container.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default undefined\n * @public\n */\n @property()\n accessibleNameRef?: string;\n\n /**\n * Defines whether the component is read-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the value state of the trigger container.\n *\n * @default \"Standard\"\n * @public\n */\n @property()\n valueState: `${UDExValueState}` = UDExValueState.Standard;\n\n /**\n * Defines supporting text under the trigger container.\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n supportingText?: string;\n\n /**\n * @private\n */\n @property({ type: String, noAttribute: true })\n _direction?: string;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _focused!: boolean;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Defines selected option for Single Select Mode.\n *\n * @default undefined\n * @private\n */\n @property()\n _selectedOption!: string;\n\n /**\n * Defines if the component should reset.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n /**\n * True while keyboard list navigation is active (aria-activedescendant set).\n * Used in CSS to suppress the input focus ring and show the active item ring.\n *\n * @private\n */\n @property({ type: Boolean })\n _navigating: boolean = false;\n\n /**\n * Text read by screen readers when the active item changes.\n * Announced via an aria-live=\"assertive\" region in the template.\n * This works regardless of shadow DOM / popover teleportation because\n * the live region lives inside SelectBox's own shadow root.\n *\n * @private\n */\n @property({ type: String, noAttribute: true })\n _liveRegionText: string = \"\";\n\n /**\n * Defines the footer content for the component dropdown.\n * Place any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\n * use the <code>close</code> method if needed.\n *\n * @public\n */\n @slot({ type: HTMLElement })\n footer!: Slot<HTMLElement>;\n\n _paneWidthVariableName = \"--udex-dropdown-pane-width\";\n _labelBaseClass = \"udex-text-field__label\";\n _dropdownClass = \"udex-select-box__dropdown\";\n _listBoxRole: AriaHasPopup = \"listbox\";\n _rootClass = \"udex-select-box__root\";\n _stickyClass = \"udex-list__sticky\";\n _ariaAutoComplete: AriaAutoComplete = \"list\";\n _trigger!: HTMLElement;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _list!: UDExList;\n _inputValue: string = \"\";\n _lastSelectedItemId: string = \"\";\n _handleResizeBound: ResizeObserverCallback;\n _handleListKeyDownBound: (e: KeyboardEvent) => void;\n _listKeyDownListenerAdded: boolean = false;\n _activeDescendantItem: UDExListItemBase | null = null;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n this._handleListKeyDownBound = this._handleListKeyDownCapture.bind(this);\n }\n\n onEnterDOM() {\n ResizeHandler.register(this, this._handleResizeBound);\n if (this.modeSingleSelect && this.hasSelectedItems) {\n this.setSelectOption();\n }\n }\n\n onExitDOM() {\n ResizeHandler.deregister(this, this._handleResizeBound);\n if (this._list && this._listKeyDownListenerAdded) {\n this._list.removeEventListener(\"keydown\", this._handleListKeyDownBound, { capture: true });\n this._listKeyDownListenerAdded = false;\n }\n }\n\n onInvalidation({ name }: ChangeInfo): void {\n if (name === \"default\" && this.modeSingleSelect && !this._inputValue) {\n this.setSelectOption();\n }\n }\n\n onAfterRendering() {\n super.onAfterRendering();\n this._popover = this.getPopover();\n this._search = this.getSearch();\n this._list = this.getList();\n this._trigger = this.trigger;\n this.handleDirection();\n\n if (this._list) {\n this._list._scrollIntoView = \"Nearest\";\n // Set a stable HTML id on the udex-list host so aria-controls can reference it.\n if (!this._list.id) {\n this._list.id = `${this._id}-list`;\n }\n }\n\n if (this._requestRender) {\n this._requestRender = false;\n }\n\n if (!this._listKeyDownListenerAdded && this._list) {\n this._list.addEventListener(\"keydown\", this._handleListKeyDownBound, { capture: true });\n this._listKeyDownListenerAdded = true;\n }\n }\n\n _handleResize() {\n this.updatePopoverWidth();\n }\n\n /**\n * Given a candidate index, skips over a non-interactive non-collapsible header if needed.\n * Returns the effective target index.\n */\n _skipNonInteractive(items: UDExListItemBase[], raw: number, lastIndex: number, direction: \"down\" | \"up\"): number {\n if (!items[raw]?.nonInteractive || items[raw].collapsible) {\n return raw;\n }\n if (direction === \"down\") {\n return raw + 1 > lastIndex ? 0 : raw + 1;\n }\n return raw === 0 ? lastIndex : raw - 1;\n }\n\n /**\n * Sets or clears the aria-activedescendant on the combobox input and updates\n * the aria-live region so JAWS/VoiceOver announce the item name and position.\n * The live region is the primary announcement mechanism because aria-activedescendant\n * across a UI5 Popover (which teleports content to document.body) is unreliable —\n * screen readers cannot follow the ID reference across shadow root boundaries.\n */\n _setActiveDescendant(item: UDExListItemBase | null, scroll = true): void {\n this._activeDescendantItem = item;\n\n // Query the SelectBox's OWN shadow DOM for all elements bearing the class —\n // this reaches the rendered udex-list-group-header / udex-list-item elements\n // regardless of whether they are the current or a previously stale instance.\n this.shadowRoot?.querySelectorAll<HTMLElement>(\"._udex-active-descendant\")\n .forEach(el => {\n el.classList.remove(\"_udex-active-descendant\");\n el.removeAttribute(\"_active-descendant\");\n });\n\n if (!item) {\n (this._search as HTMLElement).removeAttribute(\"aria-activedescendant\");\n this._liveRegionText = \"\";\n return;\n }\n\n item.classList.add(\"_udex-active-descendant\");\n item.setAttribute(\"_active-descendant\", \"\");\n (this._search as HTMLElement).setAttribute(\"aria-activedescendant\", item._id);\n\n // Update the live region with tree-aware position and state so JAWS/VoiceOver\n // announce the active item regardless of whether the popover is teleported to document.body.\n if (this._list) {\n const label = cleanLabel(item.label ?? \"\");\n const supporting = item.supportingText ? cleanLabel(item.supportingText) : \"\";\n const stateParts = this._itemStateLabels(item);\n const posText = this._treePositionText(item);\n this._liveRegionText = [label, supporting, posText, ...stateParts].filter(Boolean).join(\", \");\n }\n\n if (scroll && this._list?._scrollIntoView) {\n // Only scroll if the item is not already fully visible in the dropdown.\n const popoverContent = this._popover?.shadowRoot?.querySelector<HTMLElement>(\"[part=content]\");\n if (popoverContent) {\n const itemRect = item.getBoundingClientRect();\n const containerRect = popoverContent.getBoundingClientRect();\n const isVisible = itemRect.top >= containerRect.top && itemRect.bottom <= containerRect.bottom;\n if (!isVisible) {\n this._list.scrollToItem(item);\n }\n } else {\n this._list.scrollToItem(item);\n }\n }\n }\n\n /**\n * Activates the first navigable item as the aria-activedescendant without moving DOM focus.\n */\n _activateFirstItem(): void {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) { return; }\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._list.setTabIndexByIndex(items, firstIndex);\n this._setActiveDescendant(items[firstIndex], false);\n }\n\n /**\n * Establishes the initial aria-activedescendant when the dropdown opens, without moving\n * DOM focus. In SingleSelect mode the currently selected item is activated so reopening\n * restores focus to it; when nothing is selected (or in other modes) the first navigable\n * item is activated instead.\n */\n _activateSelectedOrFirstItem(): void {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) {\n return;\n }\n\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n const selectedIndex = this.modeSingleSelect\n ? items.findIndex(item => item.selected && !item.isGroup)\n : -1;\n const targetIndex = selectedIndex >= 0 ? selectedIndex : firstIndex;\n\n this._list.setTabIndexByIndex(items, targetIndex);\n this._setActiveDescendant(items[targetIndex], false);\n if (this.showImageFlags) {\n this.handleImagePosition(items, targetIndex);\n }\n }\n\n /**\n * Navigates to the item at the given index, updating aria-activedescendant and _selectedOption.\n */\n _navigateToIndex(items: UDExListItemBase[], nextIndex: number): void {\n const currentIndex = this._activeDescendantItem\n ? this._list.getCurrentIndex(items, this._activeDescendantItem)\n : -1;\n if (currentIndex >= 0) {\n this._list.unsetTabIndexByIndex(items, currentIndex);\n }\n this._list.setTabIndexByIndex(items, nextIndex);\n this._selectedOption = items[nextIndex].label;\n if (this.showImageFlags) {\n this.handleImagePosition(items, nextIndex);\n }\n this._setActiveDescendant(items[nextIndex]);\n }\n\n handleKeyDownDropdown(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n\n if (isLetterKey(e.key)) {\n this.handleLetterKeyPress(e);\n return;\n }\n\n if (this.hasFooter) {\n const isInFooter = (e.target as HTMLElement).closest?.(\"[slot=\\\"footer\\\"]\");\n if (isInFooter) {\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n if (isTabNext(e)) {\n e.preventDefault();\n this.closeDropdown();\n this._moveFocusAfterComponent();\n return;\n }\n if (isTabPrevious(e)) {\n e.preventDefault();\n this._focusLastListItem();\n return;\n }\n return;\n }\n\n if (isTabNext(e)) {\n e.preventDefault();\n (this._firstFocusableIn(this.footer[0]) ?? this.footer[0])?.focus();\n return;\n }\n }\n\n if (isTabPrevious(e)) {\n e.preventDefault();\n this._search.focus();\n return;\n }\n\n if (isTabNext(e)) {\n e.preventDefault();\n this.closeDropdown();\n this._moveFocusAfterComponent();\n return;\n }\n\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n\n if (!items) {\n return;\n }\n\n if (isRight(e) || isLeft(e)) {\n e.preventDefault();\n // Resolve the collapsible group header from the active descendant (not e.target,\n // since DOM focus stays on the input and e.target is the input element).\n const activeHeader = this._activeDescendantItem\n ? this._resolveCollapsibleGroupHeader(this._activeDescendantItem as unknown as HTMLElement)\n : null;\n if (activeHeader && this._handleGroupHeaderCollapse(activeHeader as unknown as HTMLElement, isLeft(e))) {\n return;\n }\n // Fall through to icon-row navigation when focus is on an icon button\n if (isRight(e)) {\n this._handleArrowRightInRow(e.target as HTMLElement);\n } else {\n this._handleArrowLeftInRow(e.target as HTMLElement);\n }\n return;\n }\n\n if (isDown(e) || isUp(e)) {\n e.preventDefault();\n const lastIndex = items.length - 1;\n const currentItem = this._activeDescendantItem;\n const currentIndex = currentItem ? this._list.getCurrentIndex(items, currentItem) : -1;\n\n let nextIndex: number;\n if (isDown(e)) {\n const raw = currentIndex + 1 > lastIndex ? 0 : currentIndex + 1;\n nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"down\");\n } else {\n const raw = currentIndex - 1 < 0 ? lastIndex : currentIndex - 1;\n nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"up\");\n }\n this._navigateToIndex(items, nextIndex);\n return;\n }\n\n if (isHome(e)) {\n e.preventDefault();\n this.handleHomeKeyPress(items);\n return;\n }\n\n if (isEnd(e)) {\n e.preventDefault();\n this.handleEndKeyPress(items, items.length - 1);\n }\n\n // Icon-button slot: Up/Down while an icon button is focused (handled by capture listener).\n // _handleListKeyDownCapture fires first via capture; nothing else needed here.\n }\n\n handleEndKeyPress(items: UDExListItemBase[], lastItemIndex: number) {\n this._navigateToIndex(items, lastItemIndex);\n }\n\n handleHomeKeyPress(items: UDExListItemBase[]) {\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._navigateToIndex(items, firstIndex);\n }\n\n handleLetterKeyPress(e: KeyboardEvent) {\n e.stopPropagation();\n e.preventDefault();\n this._selectedOption = \"\";\n this._inputValue = e.key;\n this._search.value = e.key;\n this._search.focus();\n this.onSearch(this._search.value);\n }\n\n handleEscKeyPress(e: KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this._setActiveDescendant(null);\n this.closeDropdown();\n this._search.focus();\n this._selectedOption = \"\";\n }\n\n handleItemSelection(e:CustomEvent) {\n this.onItemPress(e);\n const item = e.detail.item as UDExListItemBase;\n this._lastSelectedItemId = this.getDataTokenId(item);\n this.resetSearchState();\n\n if (this.modeSingleSelect) {\n // SingleSelect closes the dropdown — clear active descendant.\n this._setActiveDescendant(null);\n this._search.focus();\n this.closeDropdown();\n return;\n }\n\n // MultiSelect: ensure active descendant tracks the interacted item so there\n // is only one ring. Find the rendered item in the navigation list by matching\n // data-token-id (the source item's _id set by the template) since e.detail.item\n // is the source element, not the rendered udex-list-item.\n const tokenId = this.getDataTokenId(item);\n const navItems = this._list?.getKeyboardNavigationItems();\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem && renderedItem !== this._activeDescendantItem) {\n this._setActiveDescendant(renderedItem);\n }\n\n // Return DOM focus to the input so the clicked item loses its :focus ring.\n // Without this, the browser keeps focus on the item (from the click) and a\n // second ring appears when arrow keys move _activeDescendantItem elsewhere.\n (this._search as HTMLElement).focus();\n\n // Re-announce with the updated checked/unchecked state. The rendered item's\n // `selected` prop is updated on the next render cycle (template re-render),\n // so we wait for it before re-reading state labels.\n renderFinished().then(() => this._announceCurrentOrFirst()).catch(() => {});\n }\n\n onKeyDownSearch(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n const hasItems = items && items.length > 0;\n const popoverOpened = this._popover.open;\n if (!isEscape(e) || popoverOpened) {\n e.stopPropagation();\n }\n const isEscAndPopoverOpened = isEscape(e) && popoverOpened;\n const isDownAndPopoverClosed = isDown(e) && !popoverOpened;\n const isDownAndPopoverOpened = isDown(e) && popoverOpened;\n const isUpAndPopoverOpened = isUp(e) && popoverOpened;\n\n // Tab while popup is open: move focus to the first footer element if one exists,\n // otherwise close the dropdown and move past the component.\n if (popoverOpened && isTabNext(e)) {\n e.preventDefault();\n if (this.hasFooter) {\n this._setActiveDescendant(null);\n (this._firstFocusableIn(this.footer[0]) ?? this.footer[0])?.focus();\n } else {\n this.closeDropdown();\n this._moveFocusAfterComponent();\n }\n return;\n }\n\n // Shift+Tab while popup is open: close the dropdown.\n // DOM focus stays on the search input throughout (our aria-activedescendant model\n // never moves focus away from the input), so no explicit re-focus is needed.\n if (popoverOpened && isTabPrevious(e)) {\n e.preventDefault();\n this._setActiveDescendant(null);\n this.closeDropdown();\n return;\n }\n\n if (!hasItems) {\n return;\n }\n\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n\n if (isEscAndPopoverOpened) {\n return this.closeDropdown();\n }\n\n if (isDownAndPopoverClosed) {\n e.preventDefault();\n this.openDropdown();\n this._activateSelectedOrFirstItem();\n return;\n }\n\n if (isDownAndPopoverOpened) {\n e.preventDefault();\n if (this._activeDescendantItem) {\n const lastIndex = items.length - 1;\n const currentIndex = this._list.getCurrentIndex(items, this._activeDescendantItem);\n const raw = currentIndex + 1 > lastIndex ? 0 : currentIndex + 1;\n const nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"down\");\n this._navigateToIndex(items, nextIndex);\n } else {\n this._activateFirstItem();\n // Also update _selectedOption so the input reflects the active item.\n const activeIdx = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._selectedOption = items[activeIdx].label;\n if (this.showImageFlags) {\n this.handleImagePosition(items, activeIdx);\n }\n }\n return;\n }\n\n if (isUpAndPopoverOpened) {\n e.preventDefault();\n if (this._activeDescendantItem) {\n const lastIndex = items.length - 1;\n const currentIndex = this._list.getCurrentIndex(items, this._activeDescendantItem);\n const raw = currentIndex - 1 < 0 ? lastIndex : currentIndex - 1;\n const nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"up\");\n this._navigateToIndex(items, nextIndex);\n } else {\n this._navigateToIndex(items, items.length - 1);\n }\n return;\n }\n\n if (popoverOpened && isHome(e)) {\n e.preventDefault();\n const homeIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._navigateToIndex(items, homeIndex);\n return;\n }\n\n if (popoverOpened && isEnd(e)) {\n e.preventDefault();\n this._navigateToIndex(items, items.length - 1);\n return;\n }\n\n // Enter/Space: select the active descendant item (or toggle for MultiSelect).\n if (popoverOpened && this._activeDescendantItem && (isEnter(e) || isSpace(e))) {\n e.preventDefault();\n const activeItem = this._activeDescendantItem;\n if (activeItem.isGroup) {\n // Group-header selection is \"select all\" — only meaningful in MultiSelect.\n // In SingleSelect (and RadioGroup) a group header is not a selectable option,\n // so Enter/Space must do nothing (collapse/expand stays on Left/Right + chevron).\n if (!this.modeMultiSelect) {\n return;\n }\n // Group header: fire header-press (same event the click handler fires) so\n // handleHeaderPress → onHeaderPress → handleGroupHeaderSelection runs.\n activeItem.fireDecoratorEvent(\"header-press\", { item: activeItem });\n } else {\n // Leaf item: fire item-press so the list handles selection consistently.\n // Do NOT toggle .selected directly — handleItemClick (called via onItemPress)\n // handles the toggle, and double-toggling would be a no-op.\n activeItem.fireDecoratorEvent(\"item-press\", {\n selected: activeItem.selected,\n item: activeItem,\n });\n }\n return;\n }\n\n // Left/Right: collapse/expand the active group header when popup is open.\n if (popoverOpened && (isLeft(e) || isRight(e))) {\n e.preventDefault();\n const activeHeader = this._activeDescendantItem\n ? this._resolveCollapsibleGroupHeader(this._activeDescendantItem as unknown as HTMLElement)\n : null;\n if (activeHeader) {\n this._handleGroupHeaderCollapse(activeHeader as unknown as HTMLElement, isLeft(e));\n return;\n }\n // Fall through to icon-row navigation when the active item has icon slots.\n if (this._activeDescendantItem) {\n if (isRight(e)) {\n this._handleArrowRightInRow(this._activeDescendantItem as unknown as HTMLElement);\n } else {\n this._handleArrowLeftInRow(this._activeDescendantItem as unknown as HTMLElement);\n }\n }\n return;\n }\n\n // Sync _selectedOption display for the first item (used when popover just opened via click).\n if (!this._activeDescendantItem && hasItems) {\n this._selectedOption = items[firstIndex].label;\n }\n }\n\n handleSearchChange(e: InputEvent) {\n const inputValue = (e.target as HTMLInputElement)?.value || \"\";\n this._inputValue = inputValue;\n\n if (inputValue) {\n this._selectedOption = \"\";\n }\n\n this.onSearch(inputValue);\n\n if (!this._popover.open) {\n this.openDropdown();\n }\n }\n\n override onSearch(value: string): void {\n super.onSearch(value);\n // Route search result count into the shared live region so SelectBox\n // only needs one aria-live span (no separate polite span in the template).\n if (this._accSearchResultInfo) {\n this._liveRegionText = this._accSearchResultInfo;\n }\n }\n\n handleDirection() {\n const directionStyles = window.getComputedStyle(this).getPropertyValue(\"direction\");\n this._direction = directionStyles || \"ltr\";\n }\n\n handleDropdownBeforeClose() {\n this._handleDropdownScroll();\n this.fireEventDropdownBeforeOClose();\n }\n\n dropdownBeforeOpen() {\n if (this.height) {\n this._setContentHeight();\n }\n this.fireEventDropdownBeforeOpen();\n }\n\n handleDropdownOpen() {\n // Clear first so the live-region mutation fires even if text is unchanged.\n this._liveRegionText = \"\";\n // Defer scroll and announcement until rendering settles.\n // Calling _handleDropdownScroll synchronously causes getBoundingClientRect\n // to read mid-transition positions (e.g. the max-height animation on\n // collapsible group headers), producing an incorrect scroll offset.\n // The expand step modifies reactive properties that trigger a new render,\n // so a second renderFinished is needed before measuring scroll positions.\n renderFinished().then(() => {\n this._expandCollapsedGroupsWithSelection();\n return renderFinished();\n }).then(() => {\n if (!this._activeDescendantItem) {\n this._activateSelectedOrFirstItem();\n }\n this._handleDropdownScroll();\n this._announceCurrentOrFirst();\n }).catch(() => {});\n\n this.fireEventDropdownOpen();\n }\n\n /**\n * Announces the currently active descendant item (if set), or the first\n * navigable item as a fallback. Used on open and after state changes.\n */\n _announceCurrentOrFirst(): void {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) { return; }\n const item = this._activeDescendantItem ?? items.find(i => !i.nonInteractive || i.collapsible) ?? items[0];\n if (!item) { return; }\n const label = cleanLabel(item.label ?? \"\");\n const stateParts = this._itemStateLabels(item);\n const posText = this._treePositionText(item);\n this._liveRegionText = [label, posText, ...stateParts].filter(Boolean).join(\", \");\n }\n\n /**\n * Returns the positional announcement text for an item, tree-aware when the\n * list has groups. Matches the JAWS reading pattern of FilterMenu:\n * group header → \"level 0, X of Y\" (Y = total navigable groups)\n * group child → \"level 1, X of Y\" (Y = siblings in that group)\n * flat item → \"X of Y\" (Y = total items, no level prefix)\n */\n _treePositionText(item: UDExListItemBase): string {\n if (!this.isTreeStructure) {\n const items = this._list?.getKeyboardNavigationItems() ?? [];\n const pos = items.indexOf(item);\n return pos >= 0 ? `${pos + 1} of ${items.length}` : \"\";\n }\n\n if (item.isGroup) {\n // Position among navigable group headers.\n const groups = (this._list?.getKeyboardNavigationItems() ?? []).filter(i => i.isGroup);\n const pos = groups.indexOf(item);\n return pos >= 0 ? `level 0, ${pos + 1} of ${groups.length}` : \"level 0\";\n }\n\n // Child item — find parent group and count siblings visible in navigation.\n const parentGroup = item.parentElement as UDExListItemBase | null;\n if (parentGroup?.isGroup) {\n const navItems = this._list?.getKeyboardNavigationItems() ?? [];\n const siblings = navItems.filter(i => !i.isGroup && i.parentElement === parentGroup);\n const pos = siblings.indexOf(item);\n return pos >= 0 ? `level 1, ${pos + 1} of ${siblings.length}` : \"level 1\";\n }\n\n // Fallback: flat position.\n const all = this._list?.getKeyboardNavigationItems() ?? [];\n const pos = all.indexOf(item);\n return pos >= 0 ? `${pos + 1} of ${all.length}` : \"\";\n }\n\n fireEventDropdownBeforeOClose() {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n fireEventDropdownBeforeOpen() {\n this.fireDecoratorEvent(\"before-open\");\n }\n\n fireEventDropdownOpen() {\n this.fireDecoratorEvent(\"open\");\n }\n\n fireEventDropdownClose() {\n this.fireDecoratorEvent(\"close\");\n }\n\n handleButtonClick() {\n if (!this.isDisabled) {\n this._search.focus();\n\n if (this._popover.open) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n handleInputClick() {\n if (!this.isDisabled) {\n this._search.focus();\n this.openDropdown();\n }\n }\n\n openDropdown() {\n this._popover.opener = this._trigger;\n this._popover.open = true;\n this._open = true;\n this._navigating = true;\n this._focused = false;\n }\n\n closeDropdown() {\n if (this._popover.open) {\n this._open = false;\n this._popover.open = false;\n this._navigating = false;\n }\n }\n\n inputFocusIn() {\n if (!this.isDisabled) {\n this._focused = true;\n }\n }\n\n resetSearchState() {\n this._inputValue = \"\";\n setTimeout(() => this.resetSearch(), 0);\n\n if (this.modeSingleSelect) {\n this.setSelectOption();\n }\n }\n\n setSelectOption() {\n if (!this.selectedItems[0]) {\n this._selectedOption = \"\";\n return;\n }\n\n const label = this.selectedItems[0].label;\n const ratingLabel = this.selectedItems[0].ratingCount !== undefined\n ? `${this.selectedItems[0].ratingCount} ${translate(UDExSearchableListBase, STARS)}`\n : \"\";\n this._selectedOption = label || ratingLabel;\n }\n\n updatePopoverWidth() {\n this._popover.style.setProperty(this._paneWidthVariableName, `${this._trigger.offsetWidth}px`);\n }\n\n handleImagePosition(items: UDExListItemBase[], index: number) {\n const image = items[index].querySelector<HTMLElement>(\".udex-text-field__image\");\n const imagePlaceholder = this.shadowRoot!.querySelector<HTMLElement>(\".udex-text-field__input > .udex-text-field__image\");\n\n if (imagePlaceholder) {\n imagePlaceholder.style.backgroundPosition = image?.style?.backgroundPosition || \"\";\n }\n }\n\n get hasFooter(): boolean {\n return this.footer.length > 0;\n }\n\n _getIconButtonSlot(el: HTMLElement): string | null {\n const iconSlot = el.getAttribute?.(\"slot\");\n return (iconSlot === \"firstIcon\" || iconSlot === \"secondIcon\") ? iconSlot : null;\n }\n\n /**\n * Collapses (Left) or expands (Right) a collapsible group header when the arrow key\n * is pressed while focus is on that header. Mirrors List.handleArrowLeft/Right, but is\n * needed here because SelectBox intercepts Left/Right at the popover level (for icon-row\n * navigation) before the event would reach the List's own handler.\n *\n * Returns true when a collapse/expand was handled, so the caller skips icon-row handling.\n */\n _handleGroupHeaderCollapse(target: HTMLElement, collapse: boolean): boolean {\n const header = this._resolveCollapsibleGroupHeader(target);\n if (!header) { return false; }\n\n // Left only collapses an expanded group; Right only expands a collapsed one.\n if (collapse && !header.collapsed) {\n header.collapsed = true;\n this._list.setCollapsedItems(true, header);\n renderFinished().then(() => this._announceCurrentOrFirst()).catch(() => {});\n return true;\n }\n if (!collapse && header.collapsed) {\n header.collapsed = false;\n this._list.setCollapsedItems(false, header);\n renderFinished().then(() => this._announceCurrentOrFirst()).catch(() => {});\n return true;\n }\n // Target is a collapsible header but already in the requested state — still consume\n // the key so it does not fall through to icon-row navigation.\n return header.isGroup;\n }\n\n /**\n * Resolves the collapsible group-header host from a keydown target, walking up through\n * shadow host boundaries (the focused element can be the header's inner wrapper/list-item).\n */\n _resolveCollapsibleGroupHeader(target: HTMLElement): UDExListItemBase | null {\n let node: Node | null = target;\n while (node) {\n const el = node as UDExListItemBase;\n if (el.isGroup && typeof el.hasAttribute === \"function\" && el.hasAttribute(\"collapsible\")) {\n return el;\n }\n const root = node.getRootNode() as ShadowRoot | Document;\n node = (root as ShadowRoot).host ?? null;\n }\n return null;\n }\n\n _handleArrowRightInRow(target: HTMLElement): void {\n const iconSlot = this._getIconButtonSlot(target);\n if (!iconSlot) {\n const firstIcon = target.querySelector<HTMLElement>(\"[slot=\\\"firstIcon\\\"]\");\n if (firstIcon) {\n // Entering icon row: clear the active descendant ring so the list item\n // doesn't show two simultaneous outlines alongside the icon's :focus ring.\n this._setActiveDescendant(null);\n firstIcon.focus();\n }\n return;\n }\n if (iconSlot === \"firstIcon\") {\n const parentItem = target.parentElement;\n if (parentItem) {\n const secondIcon = parentItem.querySelector<HTMLElement>(\"[slot=\\\"secondIcon\\\"]\");\n secondIcon?.focus();\n }\n }\n }\n\n _handleArrowLeftInRow(target: HTMLElement): void {\n const iconSlot = this._getIconButtonSlot(target);\n if (!iconSlot) { return; }\n const parentItem = target.parentElement;\n if (!parentItem) { return; }\n if (iconSlot === \"secondIcon\") {\n const firstIcon = parentItem.querySelector<HTMLElement>(\"[slot=\\\"firstIcon\\\"]\");\n firstIcon?.focus();\n } else if (iconSlot === \"firstIcon\") {\n // Return to the list item: restore the active descendant ring and return\n // DOM focus to the input so the icon's :focus ring is cleared.\n const navItems = this._list?.getKeyboardNavigationItems();\n const tokenId = this.getDataTokenId(parentItem as UDExListItemBase);\n const renderedItem = navItems?.find(i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId);\n if (renderedItem) {\n this._setActiveDescendant(renderedItem);\n } else {\n this._list.focusItem(parentItem as UDExListItemBase);\n }\n (this._search as HTMLElement).focus();\n }\n }\n\n _handleListKeyDownCapture(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!this._getIconButtonSlot(target)) { return; }\n if (!isDown(e) && !isUp(e)) { return; }\n\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) { return; }\n\n e.stopImmediatePropagation();\n e.preventDefault();\n\n const parentItem = target.parentElement as UDExListItemBase | null;\n if (!parentItem) { return; }\n\n const currentIndex = this._list.getCurrentIndex(items, parentItem);\n if (currentIndex < 0) { return; }\n\n const lastItemIndex = items.length - 1;\n let targetIndex: number;\n\n if (isDown(e)) {\n const nextIndex = currentIndex + 1 > lastItemIndex ? 0 : currentIndex + 1;\n const isNonInteractive = items[nextIndex].nonInteractive && !items[nextIndex].collapsible;\n const wrappedNext = nextIndex + 1 > lastItemIndex ? 0 : nextIndex + 1;\n targetIndex = isNonInteractive ? wrappedNext : nextIndex;\n } else {\n const prevIndex = currentIndex - 1 < 0 ? lastItemIndex : currentIndex - 1;\n const isNonInteractive = items[prevIndex].nonInteractive && !items[prevIndex].collapsible;\n const wrappedPrev = prevIndex === 0 ? lastItemIndex : prevIndex - 1;\n targetIndex = isNonInteractive ? wrappedPrev : prevIndex;\n }\n\n this._list.unsetTabIndexByIndex(items, currentIndex);\n this._list.setTabIndexByIndex(items, targetIndex);\n this._setActiveDescendant(items[targetIndex]);\n this._selectedOption = items[targetIndex].label;\n }\n\n _focusLastListItem() {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items || items.length === 0) {\n (this._search as HTMLElement).focus();\n return;\n }\n const lastIndex = items.length - 1;\n this._list.setTabIndexByIndex(items, lastIndex);\n this._selectedOption = items[lastIndex].label;\n this._setActiveDescendant(items[lastIndex]);\n // Return DOM focus to the search input (aria-activedescendant model).\n (this._search as HTMLElement).focus();\n }\n\n _firstFocusableIn(el: Element | undefined): HTMLElement | null {\n if (!(el instanceof HTMLElement)) { return null; }\n if (el.tabIndex >= 0 && !el.hidden && !(el as HTMLElement & { disabled?: boolean }).disabled && (!!el.offsetParent || el.matches(\"body\"))) {\n return el;\n }\n return Array.from(el.children).reduce<HTMLElement | null>(\n (found, child) => found ?? this._firstFocusableIn(child), null,\n );\n }\n\n _moveFocusAfterComponent() {\n const findAndFocus = (from: Element) => {\n let node: Element | null = from;\n while (node && node !== document.documentElement) {\n let sibling = node.nextElementSibling;\n while (sibling) {\n const focusable = this._firstFocusableIn(sibling);\n if (focusable) {\n focusable.focus();\n return;\n }\n sibling = sibling.nextElementSibling;\n }\n node = node.parentElement;\n }\n };\n\n findAndFocus(this);\n }\n\n /**\n * Builds the state portion of the live region announcement for a navigation item.\n * Returns an array of state strings (e.g. [\"collapsed\", \"Checked\"]) to be joined\n * with the label and position. Handles:\n * - collapsible group headers: expanded / collapsed\n * - MultiSelect: Checked / Unchecked / Indeterminate\n * - SingleSelect (tree): Selected / Unselected\n * - disabled: Disabled\n */\n _itemStateLabels(item: UDExListItemBase): string[] {\n const parts: string[] = [];\n\n if (item.collapsible) {\n parts.push(translate(UDExSearchableListBase, item.expanded ? EXPANDED : COLLAPSED));\n }\n\n if (item.disabled) {\n parts.push(translate(UDExSearchableListBase, DISABLED));\n } else if (item.modeMultiSelect || (item.isGroup && this.modeMultiSelect)) {\n if (item.indeterminate) {\n parts.push(translate(UDExSearchableListBase, INDETERMINATE));\n } else {\n parts.push(translate(UDExSearchableListBase, item.selected ? SELECTED : UNSELECTED));\n }\n } else if (this.isTreeStructure && item.selected) {\n // SingleSelect tree: only announce \"Selected\" when the item is actually selected.\n parts.push(translate(UDExSearchableListBase, SELECTED));\n }\n\n return parts;\n }\n\n get ariaDescribedbyText(): string {\n if (this.modeSingleSelect) {\n return this._navigating ? \"\" : this._selectedOption;\n }\n const tags = this.selectedItems.filter(item => !item.isGroup);\n // Tokenizer.i18nBundle may not be loaded yet on direct page load.\n // Return empty string until the bundle is available; the component re-renders\n // once i18n is ready and will pick up the correct text.\n if (!Tokenizer.i18nBundle) {\n return \"\";\n }\n return getTokensCountText(tags.length);\n }\n\n get trigger(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-text-field__wrap\")!;\n }\n\n get isDisabled(): boolean {\n return this.readonly || this.displayonly || this.disabled;\n }\n\n get labelClass(): string {\n const baseClass = this._labelBaseClass;\n const isActive = [\n this._inputValue,\n this._focused,\n this._open,\n this._selectedOption,\n this.hasSelectedItems,\n ].some(Boolean);\n return isActive ? `${baseClass} ${baseClass}_active` : baseClass;\n }\n\n get isReadOrDisplayOnly(): boolean {\n return this.readonly || this.displayonly;\n }\n\n get hasSelectedItems(): boolean {\n return this.selectedItems.length > 0;\n }\n\n get additionalClassName(): string {\n return this._stickyClass;\n }\n\n get accInfo(): { ariaLabel: string } {\n return {\n \"ariaLabel\": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || translate(UDExSelectBase, COUNTRY_SELECT),\n };\n }\n\n get popoverId(): string {\n return `${this._id}_${this._dropdownClass}`;\n }\n\n get listboxRole(): AriaHasPopup {\n return this.isTreeStructure ? \"tree\" : this._listBoxRole;\n }\n\n get listAriaControlsId(): string {\n return this._list?.id || this.popoverId;\n }\n\n override get _activeDescendantMode(): boolean {\n return true;\n }\n\n override get isTreeStructure(): boolean {\n return this._filteredItems.some(e => e.isGroup);\n }\n\n get hideDropdownSearch(): boolean {\n return true;\n }\n\n get showImageFlags(): boolean {\n return false;\n }\n\n get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return executeTemplate(UDExSelectBase.searchableListBaseTemplate, this);\n }\n\n get countryFlag() {\n return executeTemplate(UDExSelectBase.countryFlagTemplate, this);\n }\n\n static get countryFlagTemplate() {\n return CountrySelectorTemplate;\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n}\n\nexport default UDExSelectBase;\nexport type { UDExSelectBaseEvents };\n"]}
|
|
1
|
+
{"version":3,"file":"SelectBase.js","sourceRoot":"","sources":["../src/SelectBase.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport type { ChangeInfo, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport {\n isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious, isLeft, isRight, isEnter, isSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getAllAccessibleNameRefTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExListSelectAll from \"./ListSelectAll.js\";\nimport type UDExSearch from \"./Search.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport {\n COUNTRY_SELECT, STARS, SELECTED, UNSELECTED, INDETERMINATE, EXPANDED,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport CountrySelectorTemplate from \"./CountrySelectorTemplate.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport UDExValueState from \"./types/common.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport Tokenizer, { getTokensCountText } from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport translate from \"./utils/translate.js\";\nimport type { AriaAutoComplete, AriaHasPopup } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\n\ntype UDExSelectBaseEvents = {\n \"open\": void,\n \"close\": void,\n \"before-close\": void,\n \"before-open\": void,\n} & UDExSearchableListBaseEvents;\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExCountrySelector</code> and <code>UDExSelectBox</code> classes.\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @public\n */\n\nclass UDExSelectBase extends UDExSearchableListBase {\n eventDetails!: UDExSelectBaseEvents;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines label text for field container.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default undefined\n * @public\n */\n @property()\n accessibleNameRef?: string;\n\n /**\n * Defines whether the component is read-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the value state of the trigger container.\n *\n * @default \"Standard\"\n * @public\n */\n @property()\n valueState: `${UDExValueState}` = UDExValueState.Standard;\n\n /**\n * Defines supporting text under the trigger container.\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n supportingText?: string;\n\n /**\n * @private\n */\n @property({ type: String, noAttribute: true })\n _direction?: string;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _focused!: boolean;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Defines selected option for Single Select Mode.\n *\n * @default undefined\n * @private\n */\n @property()\n _selectedOption!: string;\n\n /**\n * Defines if the component should reset.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n /**\n * True while keyboard list navigation is active (aria-activedescendant set).\n * Used in CSS to suppress the input focus ring and show the active item ring.\n *\n * @private\n */\n @property({ type: Boolean })\n _navigating: boolean = false;\n\n /**\n * Supplemental status announced by the polite live region.\n * Navigation uses native host semantics only. Opening and explicit selection\n * changes retain feedback without repeating the hierarchy or input token count.\n *\n * @private\n */\n @property({ type: String, noAttribute: true })\n _liveRegionText: string = \"\";\n\n /**\n * Defines the footer content for the component dropdown.\n * Place any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\n * use the <code>close</code> method if needed.\n *\n * @public\n */\n @slot({ type: HTMLElement })\n footer!: Slot<HTMLElement>;\n\n _paneWidthVariableName = \"--udex-dropdown-pane-width\";\n _labelBaseClass = \"udex-text-field__label\";\n _dropdownClass = \"udex-select-box__dropdown\";\n _listBoxRole: AriaHasPopup = \"listbox\";\n _rootClass = \"udex-select-box__root\";\n _stickyClass = \"udex-list__sticky\";\n _ariaAutoComplete: AriaAutoComplete = \"list\";\n _trigger!: HTMLElement;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _list!: UDExList;\n _inputValue: string = \"\";\n _lastSelectedItemId: string = \"\";\n _handleResizeBound: ResizeObserverCallback;\n _handleListKeyDownBound: (e: KeyboardEvent) => void;\n _listKeyDownListenerAdded: boolean = false;\n _activeDescendantItem: UDExListItemBase | null = null;\n _pendingSelectionAnnouncement = \"\";\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n this._handleListKeyDownBound = this._handleListKeyDownCapture.bind(this);\n }\n\n onEnterDOM() {\n ResizeHandler.register(this, this._handleResizeBound);\n if (this.modeSingleSelect && this.hasSelectedItems) {\n this.setSelectOption();\n }\n }\n\n onExitDOM() {\n ResizeHandler.deregister(this, this._handleResizeBound);\n if (this._list && this._listKeyDownListenerAdded) {\n this._list.removeEventListener(\"keydown\", this._handleListKeyDownBound, { capture: true });\n this._listKeyDownListenerAdded = false;\n }\n }\n\n onInvalidation({ name }: ChangeInfo): void {\n if (name === \"default\" && this.modeSingleSelect && !this._inputValue) {\n this.setSelectOption();\n }\n }\n\n onAfterRendering() {\n super.onAfterRendering();\n this._popover = this.getPopover();\n this._search = this.getSearch();\n this._list = this.getList();\n this._trigger = this.trigger;\n this.handleDirection();\n\n if (this._list) {\n this._list._scrollIntoView = \"Nearest\";\n // Set a stable HTML id on the udex-list host so aria-controls can reference it.\n if (!this._list.id) {\n this._list.id = `${this._id}-list`;\n }\n }\n\n if (this._requestRender) {\n this._requestRender = false;\n }\n\n if (!this._listKeyDownListenerAdded && this._list) {\n this._list.addEventListener(\"keydown\", this._handleListKeyDownBound, { capture: true });\n this._listKeyDownListenerAdded = true;\n }\n }\n\n _handleResize() {\n this.updatePopoverWidth();\n }\n\n /**\n * Given a candidate index, skips over a non-interactive non-collapsible header if needed.\n * Returns the effective target index.\n */\n _skipNonInteractive(items: UDExListItemBase[], raw: number, lastIndex: number, direction: \"down\" | \"up\"): number {\n if (!items[raw]?.nonInteractive || items[raw].collapsible) {\n return raw;\n }\n if (direction === \"down\") {\n return raw + 1 > lastIndex ? 0 : raw + 1;\n }\n return raw === 0 ? lastIndex : raw - 1;\n }\n\n /**\n * Sets or clears the aria-activedescendant on the combobox input.\n * The referenced host owns its name, hierarchy and state; do not repeat these\n * in the live region on navigation.\n */\n _setActiveDescendant(item: UDExListItemBase | null, scroll = true): void {\n this._activeDescendantItem = item;\n this._navigating = !!item;\n this._liveRegionText = \"\";\n\n // Query the SelectBox's OWN shadow DOM for all elements bearing the class —\n // this reaches the rendered udex-list-group-header / udex-list-item elements\n // regardless of whether they are the current or a previously stale instance.\n this.shadowRoot?.querySelectorAll<HTMLElement>(\"._udex-active-descendant\")\n .forEach(el => {\n el.classList.remove(\"_udex-active-descendant\");\n el.removeAttribute(\"_active-descendant\");\n });\n\n if (!item) {\n (this._search as HTMLElement).removeAttribute(\"aria-activedescendant\");\n return;\n }\n\n item.classList.add(\"_udex-active-descendant\");\n item.setAttribute(\"_active-descendant\", \"\");\n (this._search as HTMLElement).setAttribute(\"aria-activedescendant\", item.id);\n\n if (scroll && this._list?._scrollIntoView) {\n // Only scroll if the item is not already fully visible in the dropdown.\n const popoverContent = this._popover?.shadowRoot?.querySelector<HTMLElement>(\"[part=content]\");\n if (popoverContent) {\n const itemRect = item.getBoundingClientRect();\n const containerRect = popoverContent.getBoundingClientRect();\n const isVisible = itemRect.top >= containerRect.top && itemRect.bottom <= containerRect.bottom;\n if (!isVisible) {\n this._list.scrollToItem(item);\n }\n } else {\n this._list.scrollToItem(item);\n }\n }\n }\n\n /** Announce explicit selection after the rendered host has caught up with source changes. @private */\n _announceSelectionChange(): void {\n const item = this._activeDescendantItem;\n this._liveRegionText = \"\";\n renderFinished().then(() => {\n if (this._open && item && this._activeDescendantItem === item) {\n this._liveRegionText = this._selectionAnnouncement(item);\n }\n }).catch(() => {});\n }\n\n /** Explicit activation feedback is distinct from native navigation announcements. @private */\n _selectionAnnouncement(item: Pick<UDExListItemBase, \"label\" | \"supportingText\" | \"getAttribute\" | \"selected\" | \"indeterminate\" | \"hasRating\" | \"ratingAriaLabel\">): string {\n // CountrySelector sources are data objects, not DOM elements.\n const name = item.getAttribute?.(\"aria-label\") || [item.label, item.supportingText, item.getAttribute?.(\"additional-text\"), item.hasRating ? item.ratingAriaLabel : undefined]\n .filter(Boolean).map(text => cleanLabel(text!)).join(\" \");\n const selectionState = item.selected ? SELECTED : UNSELECTED;\n const state = translate(UDExSelectBase, item.indeterminate ? INDETERMINATE : selectionState);\n return [name, state].filter(Boolean).join(\", \");\n }\n\n /** Close feedback must survive clearing the active descendant. @private */\n _finishDropdownClose(): void {\n this._setActiveDescendant(null);\n this._open = false;\n this._liveRegionText = this._pendingSelectionAnnouncement;\n this._pendingSelectionAnnouncement = \"\";\n this.fireEventDropdownClose();\n }\n\n override handleAccordionIconClick(e: CustomEvent<{ collapsed: boolean }>): void {\n super.handleAccordionIconClick(e);\n // The host's aria-expanded owns this feedback; discard stale selection status.\n this._liveRegionText = \"\";\n }\n\n /**\n * Activates the first navigable item as the aria-activedescendant without moving DOM focus.\n */\n _activateFirstItem(): void {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) { return; }\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._list.setTabIndexByIndex(items, firstIndex);\n this._setActiveDescendant(items[firstIndex], false);\n }\n\n /**\n * Establishes the initial aria-activedescendant when the dropdown opens, without moving\n * DOM focus. In SingleSelect mode the currently selected item is activated so reopening\n * restores focus to it; when nothing is selected (or in other modes) the first navigable\n * item is activated instead.\n */\n _activateSelectedOrFirstItem(): UDExListItemBase | undefined {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) {\n return;\n }\n\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n const selectedIndex = this.modeSingleSelect\n ? items.findIndex(item => item.selected && !item.isGroup)\n : -1;\n const targetIndex = selectedIndex >= 0 ? selectedIndex : firstIndex;\n\n this._list.setTabIndexByIndex(items, targetIndex);\n this._setActiveDescendant(items[targetIndex], false);\n if (this.showImageFlags) {\n this.handleImagePosition(items, targetIndex);\n }\n return items[targetIndex];\n }\n\n /**\n * Navigates to the item at the given index, updating aria-activedescendant and _selectedOption.\n */\n _navigateToIndex(items: UDExListItemBase[], nextIndex: number): void {\n const currentIndex = this._activeDescendantItem\n ? this._list.getCurrentIndex(items, this._activeDescendantItem)\n : -1;\n if (currentIndex >= 0) {\n this._list.unsetTabIndexByIndex(items, currentIndex);\n }\n this._list.setTabIndexByIndex(items, nextIndex);\n this._selectedOption = items[nextIndex].label;\n if (this.showImageFlags) {\n this.handleImagePosition(items, nextIndex);\n }\n this._setActiveDescendant(items[nextIndex]);\n }\n\n handleKeyDownDropdown(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n\n if (isLetterKey(e.key)) {\n this.handleLetterKeyPress(e);\n return;\n }\n\n if (this.hasFooter) {\n const isInFooter = (e.target as HTMLElement).closest?.(\"[slot=\\\"footer\\\"]\");\n if (isInFooter) {\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n if (isTabNext(e)) {\n e.preventDefault();\n this.closeDropdown();\n this._moveFocusAfterComponent();\n return;\n }\n if (isTabPrevious(e)) {\n e.preventDefault();\n this._focusLastListItem();\n return;\n }\n return;\n }\n\n if (isTabNext(e)) {\n e.preventDefault();\n (this._firstFocusableIn(this.footer[0]) ?? this.footer[0])?.focus();\n return;\n }\n }\n\n if (isTabPrevious(e)) {\n e.preventDefault();\n this._search.focus();\n return;\n }\n\n if (isTabNext(e)) {\n e.preventDefault();\n this.closeDropdown();\n this._moveFocusAfterComponent();\n return;\n }\n\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n\n if (!items) {\n return;\n }\n\n if (isRight(e) || isLeft(e)) {\n e.preventDefault();\n // Resolve the collapsible group header from the active descendant (not e.target,\n // since DOM focus stays on the input and e.target is the input element).\n const activeHeader = this._activeDescendantItem\n ? this._resolveCollapsibleGroupHeader(this._activeDescendantItem as unknown as HTMLElement)\n : null;\n if (activeHeader && this._handleGroupHeaderCollapse(activeHeader as unknown as HTMLElement, isLeft(e))) {\n return;\n }\n // Fall through to icon-row navigation when focus is on an icon button\n if (isRight(e)) {\n this._handleArrowRightInRow(e.target as HTMLElement);\n } else {\n this._handleArrowLeftInRow(e.target as HTMLElement);\n }\n return;\n }\n\n if (isDown(e) || isUp(e)) {\n e.preventDefault();\n const lastIndex = items.length - 1;\n const currentItem = this._activeDescendantItem;\n const currentIndex = currentItem ? this._list.getCurrentIndex(items, currentItem) : -1;\n\n let nextIndex: number;\n if (isDown(e)) {\n const raw = currentIndex + 1 > lastIndex ? 0 : currentIndex + 1;\n nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"down\");\n } else {\n const raw = currentIndex - 1 < 0 ? lastIndex : currentIndex - 1;\n nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"up\");\n }\n this._navigateToIndex(items, nextIndex);\n return;\n }\n\n if (isHome(e)) {\n e.preventDefault();\n this.handleHomeKeyPress(items);\n return;\n }\n\n if (isEnd(e)) {\n e.preventDefault();\n this.handleEndKeyPress(items, items.length - 1);\n }\n\n // Icon-button slot: Up/Down while an icon button is focused (handled by capture listener).\n // _handleListKeyDownCapture fires first via capture; nothing else needed here.\n }\n\n handleEndKeyPress(items: UDExListItemBase[], lastItemIndex: number) {\n this._navigateToIndex(items, lastItemIndex);\n }\n\n handleHomeKeyPress(items: UDExListItemBase[]) {\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._navigateToIndex(items, firstIndex);\n }\n\n handleLetterKeyPress(e: KeyboardEvent) {\n e.stopPropagation();\n e.preventDefault();\n this._selectedOption = \"\";\n this._inputValue = e.key;\n this._search.value = e.key;\n this._search.focus();\n this.onSearch(this._search.value);\n }\n\n handleEscKeyPress(e: KeyboardEvent) {\n e.preventDefault();\n e.stopPropagation();\n this._setActiveDescendant(null);\n this.closeDropdown();\n this._search.focus();\n this._selectedOption = \"\";\n }\n\n handleItemSelection(e:CustomEvent) {\n this.onItemPress(e);\n const item = e.detail.item as UDExListItemBase;\n this._lastSelectedItemId = this.getDataTokenId(item);\n this.resetSearchState();\n\n if (this.modeSingleSelect) {\n // SingleSelect closes the dropdown — clear active descendant.\n const selectedItem = this.getItemFromList(this.getDataTokenId(item));\n if (selectedItem) {\n this._pendingSelectionAnnouncement = this._selectionAnnouncement(selectedItem);\n }\n this._setActiveDescendant(null);\n if (this.shadowRoot?.activeElement !== this._search) {\n this._search.focus();\n }\n this.closeDropdown();\n return;\n }\n\n // MultiSelect: ensure active descendant tracks the interacted item so there\n // is only one ring. Find the rendered item in the navigation list by matching\n // data-token-id (the source item's _id set by the template) since e.detail.item\n // is the source element, not the rendered udex-list-item.\n const tokenId = this.getDataTokenId(item);\n const navItems = this._list?.getKeyboardNavigationItems();\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem && renderedItem !== this._activeDescendantItem) {\n this._setActiveDescendant(renderedItem);\n }\n\n // Return DOM focus to the input so the clicked item loses its :focus ring.\n // Without this, the browser keeps focus on the item (from the click) and a\n // second ring appears when arrow keys move _activeDescendantItem elsewhere.\n if (this.shadowRoot?.activeElement !== this._search) {\n (this._search as HTMLElement).focus();\n }\n this._announceSelectionChange();\n }\n\n onKeyDownSearch(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n const hasItems = items && items.length > 0;\n const popoverOpened = this._popover.open;\n if (!isEscape(e) || popoverOpened) {\n e.stopPropagation();\n }\n const isEscAndPopoverOpened = isEscape(e) && popoverOpened;\n const isDownAndPopoverClosed = isDown(e) && !popoverOpened;\n const isDownAndPopoverOpened = isDown(e) && popoverOpened;\n const isUpAndPopoverOpened = isUp(e) && popoverOpened;\n\n // Tab while popup is open: move focus to the first footer element if one exists,\n // otherwise close the dropdown and move past the component.\n if (popoverOpened && isTabNext(e)) {\n e.preventDefault();\n if (this.hasFooter) {\n this._setActiveDescendant(null);\n (this._firstFocusableIn(this.footer[0]) ?? this.footer[0])?.focus();\n } else {\n this.closeDropdown();\n this._moveFocusAfterComponent();\n }\n return;\n }\n\n // Shift+Tab while popup is open: close the dropdown.\n // DOM focus stays on the search input throughout (our aria-activedescendant model\n // never moves focus away from the input), so no explicit re-focus is needed.\n if (popoverOpened && isTabPrevious(e)) {\n e.preventDefault();\n this._setActiveDescendant(null);\n this.closeDropdown();\n return;\n }\n\n if (!hasItems) {\n return;\n }\n\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n\n if (isEscAndPopoverOpened) {\n return this.closeDropdown();\n }\n\n if (isDownAndPopoverClosed) {\n e.preventDefault();\n // Opening establishes the active descendant and its visual highlight;\n // DOM focus remains on the input for the combobox interaction pattern.\n this.openDropdown();\n return;\n }\n\n if (isDownAndPopoverOpened) {\n e.preventDefault();\n if (this._activeDescendantItem) {\n const lastIndex = items.length - 1;\n const currentIndex = this._list.getCurrentIndex(items, this._activeDescendantItem);\n const raw = currentIndex + 1 > lastIndex ? 0 : currentIndex + 1;\n const nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"down\");\n this._navigateToIndex(items, nextIndex);\n } else {\n this._activateSelectedOrFirstItem();\n // Also update _selectedOption so the input reflects the active item.\n const activeIdx = this._activeDescendantItem ? items.indexOf(this._activeDescendantItem) : firstIndex;\n this._selectedOption = items[activeIdx].label;\n if (this.showImageFlags) {\n this.handleImagePosition(items, activeIdx);\n }\n }\n return;\n }\n\n if (isUpAndPopoverOpened) {\n e.preventDefault();\n if (this._activeDescendantItem) {\n const lastIndex = items.length - 1;\n const currentIndex = this._list.getCurrentIndex(items, this._activeDescendantItem);\n const raw = currentIndex - 1 < 0 ? lastIndex : currentIndex - 1;\n const nextIndex = this._skipNonInteractive(items, raw, lastIndex, \"up\");\n this._navigateToIndex(items, nextIndex);\n } else {\n this._navigateToIndex(items, items.length - 1);\n }\n return;\n }\n\n if (popoverOpened && isHome(e)) {\n e.preventDefault();\n const homeIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n this._navigateToIndex(items, homeIndex);\n return;\n }\n\n if (popoverOpened && isEnd(e)) {\n e.preventDefault();\n this._navigateToIndex(items, items.length - 1);\n return;\n }\n\n // Enter/Space: select the active descendant item (or toggle for MultiSelect).\n if (popoverOpened && this._activeDescendantItem && (isEnter(e) || isSpace(e))) {\n e.preventDefault();\n const activeItem = this._activeDescendantItem;\n if (activeItem.isGroup) {\n // Group-header selection is \"select all\" — only meaningful in MultiSelect.\n // In SingleSelect (and RadioGroup) a group header is not a selectable option,\n // so Enter/Space must do nothing (collapse/expand stays on Left/Right + chevron).\n if (!this.modeMultiSelect) {\n return;\n }\n // Group header: fire header-press (same event the click handler fires) so\n // handleHeaderPress → onHeaderPress → handleGroupHeaderSelection runs.\n // List's legacy intersection type omits SelectAll although it is a\n // navigable group. Narrow using its explicit discriminator.\n const selectAllItem = activeItem as unknown as UDExListSelectAll;\n if (selectAllItem.isSelectAllHeader) {\n selectAllItem.fireDecoratorEvent(\"select-all\", { item: activeItem });\n } else {\n activeItem.fireDecoratorEvent(\"header-press\", { item: activeItem });\n }\n } else {\n // Leaf item: fire item-press so the list handles selection consistently.\n // Do NOT toggle .selected directly — handleItemClick (called via onItemPress)\n // handles the toggle, and double-toggling would be a no-op.\n activeItem.fireDecoratorEvent(\"item-press\", {\n selected: activeItem.selected,\n item: activeItem,\n });\n }\n return;\n }\n\n // Left/Right: collapse/expand the active group header when popup is open.\n if (popoverOpened && (isLeft(e) || isRight(e))) {\n e.preventDefault();\n const activeHeader = this._activeDescendantItem\n ? this._resolveCollapsibleGroupHeader(this._activeDescendantItem as unknown as HTMLElement)\n : null;\n if (activeHeader) {\n this._handleGroupHeaderCollapse(activeHeader as unknown as HTMLElement, isLeft(e));\n return;\n }\n // Fall through to icon-row navigation when the active item has icon slots.\n if (this._activeDescendantItem) {\n if (isRight(e)) {\n this._handleArrowRightInRow(this._activeDescendantItem as unknown as HTMLElement);\n } else {\n this._handleArrowLeftInRow(this._activeDescendantItem as unknown as HTMLElement);\n }\n }\n return;\n }\n\n // Sync _selectedOption display for the first item (used when popover just opened via click).\n if (popoverOpened && !this._activeDescendantItem && hasItems) {\n this._selectedOption = items[firstIndex].label;\n }\n }\n\n handleSearchChange(e: InputEvent) {\n const inputValue = (e.target as HTMLInputElement)?.value || \"\";\n this._inputValue = inputValue;\n\n if (inputValue) {\n this._selectedOption = \"\";\n }\n\n this.onSearch(inputValue);\n\n if (!this._popover.open) {\n this.openDropdown();\n }\n }\n\n override onSearch(value: string): void {\n super.onSearch(value);\n // Filtering may remove the active item. Announce only the result count until\n // the user navigates to an item in the updated list.\n this._setActiveDescendant(null);\n this._liveRegionText = this._accSearchResultInfo ?? \"\";\n }\n\n handleDirection() {\n const directionStyles = window.getComputedStyle(this).getPropertyValue(\"direction\");\n this._direction = directionStyles || \"ltr\";\n }\n\n handleDropdownBeforeClose() {\n this._handleDropdownScroll();\n this.fireEventDropdownBeforeOClose();\n }\n\n dropdownBeforeOpen() {\n if (this.height) {\n this._setContentHeight();\n }\n this.fireEventDropdownBeforeOpen();\n }\n\n handleDropdownOpen() {\n // Defer scrolling until rendering settles.\n // Calling _handleDropdownScroll synchronously causes getBoundingClientRect\n // to read mid-transition positions (e.g. the max-height animation on\n // collapsible group headers), producing an incorrect scroll offset.\n // The expand step modifies reactive properties that trigger a new render,\n // so a second renderFinished is needed before measuring scroll positions.\n renderFinished().then(() => {\n this._expandCollapsedGroupsWithSelection();\n return renderFinished();\n }).then(() => {\n // The popup may have closed while its opening render was pending.\n if (!this._open) {\n return;\n }\n if (!this._activeDescendantItem && !this._shouldFilterItems) {\n const activeItem = this._activateSelectedOrFirstItem();\n // JAWS can miss the input's native expanded change when opening also\n // establishes an active descendant. Retain the popup fallback unless an\n // expanded group already supplies native \"open\"/\"expanded\" feedback.\n // Never repeat the host's hierarchy or state after the native usage hint.\n this._liveRegionText = activeItem?.getAttribute(\"aria-expanded\") === \"true\"\n ? \"\" : translate(UDExSelectBase, EXPANDED);\n }\n this._handleDropdownScroll();\n }).catch(() => {});\n\n this.fireEventDropdownOpen();\n }\n\n fireEventDropdownBeforeOClose() {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n fireEventDropdownBeforeOpen() {\n this.fireDecoratorEvent(\"before-open\");\n }\n\n fireEventDropdownOpen() {\n this.fireDecoratorEvent(\"open\");\n }\n\n fireEventDropdownClose() {\n this.fireDecoratorEvent(\"close\");\n }\n\n handleButtonClick() {\n if (!this.isDisabled) {\n this._search.focus();\n\n if (this._popover.open) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n handleInputClick() {\n if (!this.isDisabled) {\n this._search.focus();\n this.openDropdown();\n }\n }\n\n openDropdown() {\n if (this._popover.open) {\n return;\n }\n this._pendingSelectionAnnouncement = \"\";\n // Typing computes its result count before opening; preserve that status.\n if (!this._shouldFilterItems) {\n this._liveRegionText = \"\";\n }\n this._popover.opener = this._trigger;\n this._open = true;\n this._navigating = false;\n // Expose native state immediately. handleDropdownOpen supplements it after\n // rendering because JAWS may miss this change on the first opening.\n (this._search as HTMLElement).setAttribute(\"aria-expanded\", \"true\");\n this._popover.open = true;\n this._focused = false;\n }\n\n closeDropdown() {\n if (this._popover.open) {\n this._open = false;\n this._popover.open = false;\n this._navigating = false;\n (this._search as HTMLElement).setAttribute(\"aria-expanded\", \"false\");\n }\n }\n\n inputFocusIn() {\n if (!this.isDisabled) {\n this._focused = true;\n }\n }\n\n resetSearchState() {\n this._inputValue = \"\";\n setTimeout(() => this.resetSearch(), 0);\n\n if (this.modeSingleSelect) {\n this.setSelectOption();\n }\n }\n\n setSelectOption() {\n if (!this.selectedItems[0]) {\n this._selectedOption = \"\";\n return;\n }\n\n const label = this.selectedItems[0].label;\n const ratingLabel = this.selectedItems[0].ratingCount !== undefined\n ? `${this.selectedItems[0].ratingCount} ${translate(UDExSearchableListBase, STARS)}`\n : \"\";\n this._selectedOption = label || ratingLabel;\n }\n\n updatePopoverWidth() {\n this._popover.style.setProperty(this._paneWidthVariableName, `${this._trigger.offsetWidth}px`);\n }\n\n handleImagePosition(items: UDExListItemBase[], index: number) {\n const image = items[index].querySelector<HTMLElement>(\".udex-text-field__image\");\n const imagePlaceholder = this.shadowRoot!.querySelector<HTMLElement>(\".udex-text-field__input > .udex-text-field__image\");\n\n if (imagePlaceholder) {\n imagePlaceholder.style.backgroundPosition = image?.style?.backgroundPosition || \"\";\n }\n }\n\n get hasFooter(): boolean {\n return this.footer.length > 0;\n }\n\n _getIconButtonSlot(el: HTMLElement): string | null {\n const iconSlot = el.getAttribute?.(\"slot\");\n return (iconSlot === \"firstIcon\" || iconSlot === \"secondIcon\") ? iconSlot : null;\n }\n\n /**\n * Collapses (Left) or expands (Right) a collapsible group header when the arrow key\n * is pressed while focus is on that header. Mirrors List.handleArrowLeft/Right, but is\n * needed here because SelectBox intercepts Left/Right at the popover level (for icon-row\n * navigation) before the event would reach the List's own handler.\n *\n * Returns true when a collapse/expand was handled, so the caller skips icon-row handling.\n */\n _handleGroupHeaderCollapse(target: HTMLElement, collapse: boolean): boolean {\n const header = this._resolveCollapsibleGroupHeader(target);\n if (!header) { return false; }\n\n // Left only collapses an expanded group; Right only expands a collapsed one.\n if (header.collapsed !== collapse) {\n header.collapsed = collapse;\n this._list.setCollapsedItems(collapse, header);\n // Synchronize the slotted source header just like a chevron click;\n // UI5 template listeners subscribe to the prefixed decorator event.\n header.fireDecoratorEvent(\"accordion-icon-click\", { collapsed: collapse });\n return true;\n }\n // Target is a collapsible header but already in the requested state — still consume\n // the key so it does not fall through to icon-row navigation.\n return header.isGroup;\n }\n\n /**\n * Resolves the collapsible group-header host from a keydown target, walking up through\n * shadow host boundaries (the focused element can be the header's inner wrapper/list-item).\n */\n _resolveCollapsibleGroupHeader(target: HTMLElement): UDExListItemBase | null {\n let node: Node | null = target;\n while (node) {\n const el = node as UDExListItemBase;\n if (el.isGroup && typeof el.hasAttribute === \"function\" && el.hasAttribute(\"collapsible\")) {\n return el;\n }\n const root = node.getRootNode() as ShadowRoot | Document;\n node = (root as ShadowRoot).host ?? null;\n }\n return null;\n }\n\n _handleArrowRightInRow(target: HTMLElement): void {\n const iconSlot = this._getIconButtonSlot(target);\n if (!iconSlot) {\n const firstIcon = target.querySelector<HTMLElement>(\"[slot=\\\"firstIcon\\\"]\");\n if (firstIcon) {\n // Entering icon row: clear the active descendant ring so the list item\n // doesn't show two simultaneous outlines alongside the icon's :focus ring.\n this._setActiveDescendant(null);\n firstIcon.focus();\n }\n return;\n }\n if (iconSlot === \"firstIcon\") {\n const parentItem = target.parentElement;\n if (parentItem) {\n const secondIcon = parentItem.querySelector<HTMLElement>(\"[slot=\\\"secondIcon\\\"]\");\n secondIcon?.focus();\n }\n }\n }\n\n _handleArrowLeftInRow(target: HTMLElement): void {\n const iconSlot = this._getIconButtonSlot(target);\n if (!iconSlot) { return; }\n const parentItem = target.parentElement;\n if (!parentItem) { return; }\n if (iconSlot === \"secondIcon\") {\n const firstIcon = parentItem.querySelector<HTMLElement>(\"[slot=\\\"firstIcon\\\"]\");\n firstIcon?.focus();\n } else if (iconSlot === \"firstIcon\") {\n // Return to the list item: restore the active descendant ring and return\n // DOM focus to the input so the icon's :focus ring is cleared.\n const navItems = this._list?.getKeyboardNavigationItems();\n const tokenId = this.getDataTokenId(parentItem as UDExListItemBase);\n const renderedItem = navItems?.find(i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId);\n if (renderedItem) {\n this._setActiveDescendant(renderedItem);\n } else {\n this._list.focusItem(parentItem as UDExListItemBase);\n }\n (this._search as HTMLElement).focus();\n }\n }\n\n _handleListKeyDownCapture(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!this._getIconButtonSlot(target)) { return; }\n if (!isDown(e) && !isUp(e)) { return; }\n\n const items = this._list?.getKeyboardNavigationItems();\n if (!items?.length) { return; }\n\n e.stopImmediatePropagation();\n e.preventDefault();\n\n const parentItem = target.parentElement as UDExListItemBase | null;\n if (!parentItem) { return; }\n\n const currentIndex = this._list.getCurrentIndex(items, parentItem);\n if (currentIndex < 0) { return; }\n\n const lastItemIndex = items.length - 1;\n let targetIndex: number;\n\n if (isDown(e)) {\n const nextIndex = currentIndex + 1 > lastItemIndex ? 0 : currentIndex + 1;\n const isNonInteractive = items[nextIndex].nonInteractive && !items[nextIndex].collapsible;\n const wrappedNext = nextIndex + 1 > lastItemIndex ? 0 : nextIndex + 1;\n targetIndex = isNonInteractive ? wrappedNext : nextIndex;\n } else {\n const prevIndex = currentIndex - 1 < 0 ? lastItemIndex : currentIndex - 1;\n const isNonInteractive = items[prevIndex].nonInteractive && !items[prevIndex].collapsible;\n const wrappedPrev = prevIndex === 0 ? lastItemIndex : prevIndex - 1;\n targetIndex = isNonInteractive ? wrappedPrev : prevIndex;\n }\n\n this._list.unsetTabIndexByIndex(items, currentIndex);\n this._list.setTabIndexByIndex(items, targetIndex);\n this._setActiveDescendant(items[targetIndex]);\n this._selectedOption = items[targetIndex].label;\n }\n\n _focusLastListItem() {\n const items = this._list?.getKeyboardNavigationItems();\n if (!items || items.length === 0) {\n (this._search as HTMLElement).focus();\n return;\n }\n const lastIndex = items.length - 1;\n this._list.setTabIndexByIndex(items, lastIndex);\n this._selectedOption = items[lastIndex].label;\n this._setActiveDescendant(items[lastIndex]);\n // Return DOM focus to the search input (aria-activedescendant model).\n (this._search as HTMLElement).focus();\n }\n\n _firstFocusableIn(el: Element | undefined): HTMLElement | null {\n if (!(el instanceof HTMLElement)) { return null; }\n if (el.tabIndex >= 0 && !el.hidden && !(el as HTMLElement & { disabled?: boolean }).disabled && (!!el.offsetParent || el.matches(\"body\"))) {\n return el;\n }\n return Array.from(el.children).reduce<HTMLElement | null>(\n (found, child) => found ?? this._firstFocusableIn(child), null,\n );\n }\n\n _moveFocusAfterComponent() {\n const findAndFocus = (from: Element) => {\n let node: Element | null = from;\n while (node && node !== document.documentElement) {\n let sibling = node.nextElementSibling;\n while (sibling) {\n const focusable = this._firstFocusableIn(sibling);\n if (focusable) {\n focusable.focus();\n return;\n }\n sibling = sibling.nextElementSibling;\n }\n node = node.parentElement;\n }\n };\n\n findAndFocus(this);\n }\n\n get ariaDescribedbyText(): string {\n const descriptions = [this.supportingText];\n // Updating the token-count description while an item is active makes JAWS\n // reread the input instead of the item whose selection just changed.\n if (this._navigating) {\n return descriptions.filter(Boolean).join(\" \");\n }\n if (this.modeSingleSelect) {\n descriptions.push(this._selectedOption);\n return descriptions.filter(Boolean).join(\" \");\n }\n const tags = this.selectedItems.filter(item => !item.isGroup);\n // Tokenizer.i18nBundle may not be loaded yet on direct page load.\n // Return empty string until the bundle is available; the component re-renders\n // once i18n is ready and will pick up the correct text.\n if (!Tokenizer.i18nBundle) {\n return descriptions.filter(Boolean).join(\" \");\n }\n descriptions.push(getTokensCountText(tags.length));\n return descriptions.filter(Boolean).join(\" \");\n }\n\n get trigger(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-text-field__wrap\")!;\n }\n\n get isDisabled(): boolean {\n return this.readonly || this.displayonly || this.disabled;\n }\n\n get labelClass(): string {\n const baseClass = this._labelBaseClass;\n const isActive = [\n this._inputValue,\n this._focused,\n this._open,\n this._selectedOption,\n this.hasSelectedItems,\n ].some(Boolean);\n return isActive ? `${baseClass} ${baseClass}_active` : baseClass;\n }\n\n get isReadOrDisplayOnly(): boolean {\n return this.readonly || this.displayonly;\n }\n\n get hasSelectedItems(): boolean {\n return this.selectedItems.length > 0;\n }\n\n get additionalClassName(): string {\n return this._stickyClass;\n }\n\n get accInfo(): { ariaLabel: string } {\n return {\n \"ariaLabel\": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || translate(UDExSelectBase, COUNTRY_SELECT),\n };\n }\n\n override get listAccessibleName(): string {\n return this.accInfo.ariaLabel;\n }\n\n get popoverId(): string {\n return `${this._id}_${this._dropdownClass}`;\n }\n\n get listboxRole(): AriaHasPopup {\n return this.isTreeStructure ? \"tree\" : this._listBoxRole;\n }\n\n get listAriaControlsId(): string {\n return this._list?.id || this.popoverId;\n }\n\n override get _activeDescendantMode(): boolean {\n return true;\n }\n\n override get isTreeStructure(): boolean {\n // Options flatten their descendants in the accessibility tree. Action\n // buttons therefore need treeitems even in an otherwise flat popup, so\n // their own names, roles and keyboard interaction remain available.\n return this._filteredItems.some(({ isGroup, item }) => isGroup\n || !!item.querySelector?.(\"[slot='firstIcon'], [slot='secondIcon']\"));\n }\n\n get hideDropdownSearch(): boolean {\n return true;\n }\n\n get showImageFlags(): boolean {\n return false;\n }\n\n get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return executeTemplate(UDExSelectBase.searchableListBaseTemplate, this);\n }\n\n get countryFlag() {\n return executeTemplate(UDExSelectBase.countryFlagTemplate, this);\n }\n\n static get countryFlagTemplate() {\n return CountrySelectorTemplate;\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n}\n\nexport default UDExSelectBase;\nexport type { UDExSelectBaseEvents };\n"]}
|
package/dist/SelectBox.d.ts
CHANGED
|
@@ -72,7 +72,10 @@ declare class UDExSelectBox extends UDExSelectBase {
|
|
|
72
72
|
handleResizeTokenizer(): void;
|
|
73
73
|
handleSelectAll(e: CustomEvent): void;
|
|
74
74
|
handleHeaderPress(e: CustomEvent): void;
|
|
75
|
+
/** Keep selection feedback attached to the header, without refocusing the input. @private */
|
|
76
|
+
_activatePressedHeader(e: CustomEvent): void;
|
|
75
77
|
handleItemPress(e: CustomEvent): void;
|
|
78
|
+
handleDropdownClick(e: MouseEvent): void;
|
|
76
79
|
handlerShowMoreItems(e: CustomEvent): void;
|
|
77
80
|
handleInputFocusIn(): void;
|
|
78
81
|
handleInputFocusOut(e: FocusEvent): void;
|
package/dist/SelectBox.js
CHANGED
|
@@ -91,25 +91,39 @@ let UDExSelectBox = class UDExSelectBox extends UDExSelectBase {
|
|
|
91
91
|
}
|
|
92
92
|
handleSelectAll(e) {
|
|
93
93
|
this.onSelectAllHeaderPress(e);
|
|
94
|
+
this._activatePressedHeader(e);
|
|
94
95
|
}
|
|
95
96
|
handleHeaderPress(e) {
|
|
96
97
|
this.onHeaderPress(e);
|
|
98
|
+
this._activatePressedHeader(e);
|
|
99
|
+
}
|
|
100
|
+
/** Keep selection feedback attached to the header, without refocusing the input. @private */
|
|
101
|
+
_activatePressedHeader(e) {
|
|
97
102
|
// After the click, find the rendered nav item for this header and set it as
|
|
98
103
|
// the active descendant so the outline ring is visible. Then return DOM focus
|
|
99
104
|
// to the input to prevent a double ring if the user navigates with arrows.
|
|
100
105
|
const tokenId = this.getDataTokenId(e.detail.item);
|
|
101
106
|
const navItems = this._list?.getKeyboardNavigationItems();
|
|
102
107
|
const renderedItem = navItems?.find(i => (i.getAttribute("data-token-id") ?? i._id) === tokenId);
|
|
103
|
-
if (renderedItem) {
|
|
108
|
+
if (renderedItem && renderedItem !== this._activeDescendantItem) {
|
|
104
109
|
this._setActiveDescendant(renderedItem);
|
|
105
110
|
}
|
|
106
|
-
this._search
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
if (this.shadowRoot?.activeElement !== this._search) {
|
|
112
|
+
this._search.focus();
|
|
113
|
+
}
|
|
114
|
+
this._announceSelectionChange();
|
|
109
115
|
}
|
|
110
116
|
handleItemPress(e) {
|
|
111
117
|
this.handleItemSelection(e);
|
|
112
118
|
}
|
|
119
|
+
handleDropdownClick(e) {
|
|
120
|
+
const header = e.target;
|
|
121
|
+
// Host-ARIA header rows are not focusable, so activate them directly
|
|
122
|
+
// instead of relying on the input's focusout handler.
|
|
123
|
+
if (header.isGroup && header.collapsible && !header.modeMultiSelect && !header.disabled) {
|
|
124
|
+
this._setActiveDescendant(header);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
113
127
|
handlerShowMoreItems(e) {
|
|
114
128
|
if (!this.displayonly) {
|
|
115
129
|
this.showMoreItems(e);
|
|
@@ -193,9 +207,7 @@ let UDExSelectBox = class UDExSelectBox extends UDExSelectBase {
|
|
|
193
207
|
this.handleUnselectTruncatableTag();
|
|
194
208
|
this._selectedOption = "";
|
|
195
209
|
}
|
|
196
|
-
this.
|
|
197
|
-
this._open = false;
|
|
198
|
-
this.fireEventDropdownClose();
|
|
210
|
+
this._finishDropdownClose();
|
|
199
211
|
}
|
|
200
212
|
async handleRemoveTag(e, tag) {
|
|
201
213
|
tag = tag ?? e?.detail.tag;
|
package/dist/SelectBox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBox.js","sourceRoot":"","sources":["../src/SelectBox.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport {\n isEnter, isSpace, isDelete, isTabPrevious, isTabNext, isLeft, isRight, isDown, isUp, isBackSpace, isShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { UDExItemFromList } from \"./SearchableListBase.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport { UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { Placement } from \"./types/Dropdown.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport Tokenizer from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport \"@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js\";\nimport Token from \"@ui5/webcomponents/dist/Token.js\";\nimport Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport UDExSelectBoxItem from \"./SelectBoxItem.js\";\nimport UDExSelectBoxGroupHeader from \"./SelectBoxGroupHeader.js\";\nimport UDExTag from \"./Tag.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExTagGroup from \"./TagGroup.js\";\nimport UDExSelectBase from \"./SelectBase.js\";\nimport SelectBoxTemplate from \"./SelectBoxTemplate.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\nimport type { UDExSelectBaseEvents } from \"./SelectBase.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\n\n// Styles\nimport TextFieldCss from \"./generated/themes/TextField.css.js\";\nimport SearchableListCss from \"./generated/themes/SearchableList.css.js\";\nimport SelectBoxCss from \"./generated/themes/SelectBox.css.js\";\nimport SelectBaseCss from \"./generated/themes/SelectBase.css.js\";\n\nexport type SelectBoxAccessibilityAttributes = {\n controls?: string,\n expanded?: \"true\" | \"false\" | boolean,\n hasPopup?: string,\n ariaLabel?: string,\n}\n\ntype UDExSelectBoxRemoveEventDetail = {\n item: UDExItemFromList,\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-select-box</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n *\n * @constructor\n * @extends UDExSelectBase\n * @tagname udex-select-box\n * @public\n */\n@customElement({\n tag: \"udex-select-box\",\n renderer: jsxRenderer,\n styles: [\n TextFieldCss,\n SelectBoxCss,\n SelectBaseCss,\n SearchableListCss,\n getEffectiveScrollbarStyle(),\n ],\n template: SelectBoxTemplate,\n dependencies: [\n UDExSelectBoxGroupHeader,\n UDExListGroupHeader,\n UDExListSelectAll,\n UDExSelectBoxItem,\n UDExStatusMessage,\n UDExBusyIndicator,\n UDExTagGroup,\n UDExListItem,\n UDExList,\n UDExTag,\n IllustratedMessage,\n Tokenizer,\n Popover,\n Token,\n Icon,\n ],\n})\n\n/**\n * Fired event when the user remove tag.\n *\n * @public\n * @param {UDExItemFromList} item The removed item\n */\n@event(\"remove\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the More button.\n *\n * @public\n */\n@event(\"show-more\", { bubbles: true })\n\nclass UDExSelectBox extends UDExSelectBase {\n eventDetails!: {\n \"remove\": UDExSelectBoxRemoveEventDetail,\n \"show-more\": void,\n } & UDExSelectBaseEvents;\n\n /**\n * Determines if there is no enough space, the component can be placed\n * over the target.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disableTargetOverlap?: boolean;\n\n /**\n * Determines on which side of the component the Tooltip is displayed.\n *\n * @default \"Bottom\"\n * @public\n */\n @property()\n tooltipPlacement: `${Placement}` = Placement.Bottom;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _showTagsDropdownContent!: boolean;\n\n _truncatableTag!: UDExTag;\n _inactiveTabIndex: number = -1;\n _handleResizeTokenizerBound: ResizeObserverCallback;\n\n constructor() {\n super();\n this._handleResizeTokenizerBound = this.handleResizeTokenizer.bind(this);\n }\n\n onEnterDOM() {\n super.onEnterDOM();\n ResizeHandler.register(this, this._handleResizeTokenizerBound);\n }\n\n onExitDOM() {\n super.onExitDOM();\n ResizeHandler.deregister(this, this._handleResizeTokenizerBound);\n }\n\n onAfterRendering() {\n super.onAfterRendering();\n this.handleSelectBoxOutsideClick();\n if (this.tagGroup) {\n this.configureTokenizer();\n }\n }\n\n handleResizeTokenizer() {\n this.resizeTokenizer();\n }\n\n handleSelectAll(e:CustomEvent) {\n this.onSelectAllHeaderPress(e);\n }\n\n handleHeaderPress(e:CustomEvent) {\n this.onHeaderPress(e);\n // After the click, find the rendered nav item for this header and set it as\n // the active descendant so the outline ring is visible. Then return DOM focus\n // to the input to prevent a double ring if the user navigates with arrows.\n const tokenId = this.getDataTokenId(e.detail.item as UDExListItemBase);\n const navItems = this._list?.getKeyboardNavigationItems();\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem) {\n this._setActiveDescendant(renderedItem);\n }\n (this._search as HTMLElement).focus();\n // Re-announce with updated checked/indeterminate state after the render cycle.\n renderFinished().then(() => this._announceCurrentOrFirst()).catch(() => {});\n }\n\n handleItemPress(e:CustomEvent) {\n this.handleItemSelection(e);\n }\n\n handlerShowMoreItems(e: CustomEvent) {\n if (!this.displayonly) {\n this.showMoreItems(e);\n this.handleUnselectTruncatableTag();\n this.openDropdown();\n }\n this.fireDecoratorEvent(\"show-more\");\n }\n\n handleInputFocusIn() {\n this.inputFocusIn();\n\n if (this.tokenizer) {\n this.tokenizer.expanded = true;\n this._requestRender = true;\n }\n }\n\n handleInputFocusOut(e: FocusEvent) {\n const relatedTarget = e.relatedTarget as HTMLElement;\n const isInsideComponent = relatedTarget?.closest(`.${this._rootClass}`);\n const isFooterElement = this.hasFooter && !!relatedTarget && this.footer.some(el => el === relatedTarget || el.contains(relatedTarget));\n const isIconButton = !!relatedTarget?.closest(\"[slot='firstIcon'],[slot='secondIcon']\");\n const isSearchInput = relatedTarget === this._search;\n const hasTags = this.tokenizer?.tokens.length > 0;\n\n // When focus moves to the body div of a collapsible single-select group header\n // (which is focusable via tabindex=\"0\" but has no click→header-press wiring),\n // set it as the active descendant and redirect DOM focus back to the input so\n // the combobox pattern is preserved and subsequent arrow navigation works.\n //\n // The focusout handler sits on div.udex-text-field__input (SelectBox's shadow DOM).\n // Shadow DOM retargeting means relatedTarget is either:\n // (a) the body div itself (.udex-list__group-content) — if caught at a lower boundary\n // (b) the UDExListGroupHeader HOST — the common case when the event bubbles to this div\n const rtAsItem = relatedTarget as UDExListItemBase | null;\n const isGroupHeaderBodyDiv = this._popover?.open\n && !!relatedTarget?.classList.contains(\"udex-list__group-content\");\n const isGroupHeaderHost = this._popover?.open\n && !!rtAsItem?.isGroup\n && !!rtAsItem?.collapsible\n && !rtAsItem?.modeMultiSelect;\n if (isGroupHeaderBodyDiv || isGroupHeaderHost) {\n const groupHeaderHost: UDExListItemBase | null = isGroupHeaderBodyDiv\n ? ((relatedTarget.getRootNode() as ShadowRoot | null)?.host as UDExListItemBase | null)\n : rtAsItem;\n if (groupHeaderHost?.isGroup) {\n const navItems = this._list?.getKeyboardNavigationItems();\n const tokenId = this.getDataTokenId(groupHeaderHost);\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem) {\n this._setActiveDescendant(renderedItem);\n }\n }\n (this._search as HTMLElement).focus();\n return;\n }\n\n if (!isInsideComponent && !isFooterElement && !isIconButton && !isSearchInput) {\n this.closeDropdown();\n this.resetSearchState();\n\n if (hasTags) {\n this.collapseTokenizer();\n }\n }\n\n // Clear the keyboard-navigation ring whenever focus leaves the input for a real\n // outside element (tag, outside click). Keep the ring when navigating to icon\n // buttons (they are inside the list row and part of keyboard navigation) or when\n // focus is moving to/from the search input itself.\n if (!isIconButton && !isSearchInput) {\n this._setActiveDescendant(null);\n }\n this._focused = false;\n }\n\n handleDropdownBeforeOpen() {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"addEventListener\");\n }\n\n this.dropdownBeforeOpen();\n }\n\n handleDropdownClose() {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"removeEventListener\");\n }\n\n if (this.modeMultiSelect) {\n this.handleUnselectTruncatableTag();\n this._selectedOption = \"\";\n }\n\n this._setActiveDescendant(null);\n this._open = false;\n this.fireEventDropdownClose();\n }\n\n async handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {\n tag = tag ?? (e?.detail.tag as UI5Element);\n const tagId: string = tag.getAttribute(\"data-id\")!;\n this.tokenizer.deleteToken(tag as Token);\n this.handleDropdownItemPress(tagId);\n this.fireDecoratorEventRemove(tagId);\n await renderFinished();\n this._focused = true;\n this._search.focus();\n }\n\n handleRemoveTruncatableTag() {\n const tagId: string = this._truncatableTag.getAttribute(\"data-id\")!;\n this.handleDropdownItemPress(tagId);\n this.closeDropdown();\n this.fireDecoratorEventRemove(tagId);\n }\n\n handleTagClick(e: CustomEvent) {\n const tag = e.detail.tag as UDExTag;\n\n if (!tag.isTruncatable) {\n this._showTagsDropdownContent = false;\n tag.selected = false;\n }\n\n if (tag.isTruncatable && !this._open) {\n this.toggleTruncatedPopover(tag);\n }\n }\n\n handleUnselectTruncatableTag() {\n if (this._truncatableTag?.selected) {\n this._truncatableTag.selected = false;\n this._showTagsDropdownContent = false;\n }\n }\n\n handleKeyDownTag(e: CustomEvent) {\n if (this.isDisabled) { return; }\n const originalEvent: KeyboardEvent = e.detail.originalEvent;\n const tag = originalEvent.target as UDExTag;\n const token = originalEvent.target as Token;\n this.tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && this.tokenizer.tokens.length > 0;\n\n if (isTabNext(originalEvent)) {\n originalEvent.preventDefault();\n this._search.focus();\n return;\n }\n\n if ((isDown(originalEvent) || isUp(originalEvent))) {\n this._search.focus();\n this.openDropdown();\n }\n\n if (isSpace(originalEvent) || isShift(originalEvent) || isEnter(originalEvent)) {\n originalEvent.preventDefault();\n originalEvent.stopPropagation();\n tag.selected = false;\n }\n\n if (isLeft(originalEvent) || isRight(originalEvent)) {\n const nextTokenIndex = this.tokenizer._calcNextTokenIndex(token, this.tokenizer.tokens, isRight(originalEvent));\n this.focusTagByIndex(nextTokenIndex);\n this.tokenizer._scrollToToken(this.tokenizer.tokens[nextTokenIndex]);\n return;\n }\n\n if (tag.isTruncatable && this.validTruncatableKey(originalEvent)) {\n this.toggleTruncatedPopover(tag);\n } else {\n this._showTagsDropdownContent = false;\n }\n\n if (isDelete(originalEvent) || isBackSpace(originalEvent)) {\n this.handleRemoveTag(null, tag);\n if (this.tokenizer.tokens.length === 1) {\n this._search.focus();\n } else {\n this.tokenizer.deleteToken(token, true);\n }\n }\n }\n\n handleKeyDownSearch(e: KeyboardEvent) {\n const tokenizer = this.tokenizer;\n const hasTags = tokenizer?.tokens.length > 0;\n const lastTagIndex = tokenizer?.tokens.length - 1;\n\n if (isTabPrevious(e)) {\n this.resetTagsTabIndexes();\n return;\n }\n\n if (isLeft(e) && hasTags && !this._activeDescendantItem) {\n e.preventDefault();\n this.focusTagByIndex(lastTagIndex);\n return;\n }\n\n if (isBackSpace(e) && this._inputValue === \"\" && hasTags) {\n this.focusTagByIndex(lastTagIndex);\n return;\n }\n\n this.onKeyDownSearch(e);\n }\n\n handleSelectBoxOutsideClick() {\n document.addEventListener(\"click\", (e: Event) => {\n if (e.target !== this) {\n this._open = this._popover.open;\n if (this.tokenizer?.tokens.length > 0) {\n this.collapseTokenizer();\n }\n }\n });\n }\n\n focusTagByIndex(index: number) {\n const token = this.tokenizer.tokens[index];\n if (token) {\n token.focus();\n token.forcedTabIndex = \"0\";\n }\n }\n\n fireDecoratorEventRemove(id: string) {\n this.fireDecoratorEvent(\"remove\", {\n item: this.getItemFromList(id),\n });\n }\n\n collapseTokenizer() {\n this.tokenizer.expanded = false;\n this._selectedOption = \"\";\n }\n\n showMoreItems(e: CustomEvent) {\n e.preventDefault();\n this._focused = true;\n this._search.focus();\n this._showTagsDropdownContent = false;\n }\n\n toggleTruncatedPopover(tag: UDExTag) {\n this._truncatableTag = tag;\n this._truncatableTag.selected = true;\n this._showTagsDropdownContent = true;\n this.openDropdown();\n }\n\n configureTokenizer() {\n this.tagGroup._scrollToEnd = true;\n this.resetTagsTabIndexes();\n }\n\n resetTagsTabIndexes() {\n this.tags.forEach(tag => {\n this.getTagContent(tag).tabIndex = this._inactiveTabIndex;\n });\n }\n\n resizeTokenizer() {\n if (this.tokenizer) {\n this.tokenizer._handleResize();\n }\n }\n\n validTruncatableKey(e: KeyboardEvent): boolean {\n return isSpace(e) || isEnter(e);\n }\n\n getTagContent(tag: UDExTag): HTMLElement {\n return tag.shadowRoot!.querySelector(\".udex-tag\")!;\n }\n\n /**\n * Close the dropdown.\n * @public\n */\n close(): void {\n this.closeDropdown();\n }\n\n /**\n * Focuses the inner search input.\n * @public\n */\n async focus(): Promise<void> {\n await renderFinished();\n this._search?.focus();\n return Promise.resolve();\n }\n\n get tokenizer(): Tokenizer {\n return this.tagGroup?.tokenizer;\n }\n\n get tagGroup(): UDExTagGroup {\n return this.shadowRoot!.querySelector<UDExTagGroup>(\"[udex-tag-group]\")!;\n }\n\n get tags(): Array<UDExTag> {\n return this.tagGroup ? Array.from(this.tagGroup.shadowRoot!.querySelectorAll<UDExTag>(\"[udex-tag]\")) : [];\n }\n\n get truncatableTagLabel(): string {\n return this._truncatableTag.text.replace(/<\\/?b>/gi, \"\");\n }\n\n get showMultiSelectedOptions(): boolean {\n return this.hasSelectedItems && this.modeMultiSelect;\n }\n\n get allowTargetOverlap(): boolean {\n return !this.disableTargetOverlap;\n }\n\n get tokenizerExpanded(): boolean {\n if (this._showTagsDropdownContent && this._truncatableTag) {\n return false;\n }\n\n const isCurrentlyExpanded = this.tokenizer?.expanded;\n\n return this._focused || this._open || isCurrentlyExpanded;\n }\n\n override get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return SearchableListBaseTemplate.call(this);\n }\n\n static override get searchableListBaseTemplate(): any {\n return SearchableListBaseTemplate;\n }\n}\n\nUDExSelectBox.define();\n\nexport default UDExSelectBox;\nexport type { UDExSelectBoxRemoveEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"SelectBox.js","sourceRoot":"","sources":["../src/SelectBox.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport {\n isEnter, isSpace, isDelete, isTabPrevious, isTabNext, isLeft, isRight, isDown, isUp, isBackSpace, isShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { UDExItemFromList } from \"./SearchableListBase.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport { UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { Placement } from \"./types/Dropdown.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport Tokenizer from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport \"@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js\";\nimport Token from \"@ui5/webcomponents/dist/Token.js\";\nimport Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport UDExSelectBoxItem from \"./SelectBoxItem.js\";\nimport UDExSelectBoxGroupHeader from \"./SelectBoxGroupHeader.js\";\nimport UDExTag from \"./Tag.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExTagGroup from \"./TagGroup.js\";\nimport UDExSelectBase from \"./SelectBase.js\";\nimport SelectBoxTemplate from \"./SelectBoxTemplate.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\nimport type { UDExSelectBaseEvents } from \"./SelectBase.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\n\n// Styles\nimport TextFieldCss from \"./generated/themes/TextField.css.js\";\nimport SearchableListCss from \"./generated/themes/SearchableList.css.js\";\nimport SelectBoxCss from \"./generated/themes/SelectBox.css.js\";\nimport SelectBaseCss from \"./generated/themes/SelectBase.css.js\";\n\nexport type SelectBoxAccessibilityAttributes = {\n controls?: string,\n expanded?: \"true\" | \"false\" | boolean,\n hasPopup?: string,\n ariaLabel?: string,\n}\n\ntype UDExSelectBoxRemoveEventDetail = {\n item: UDExItemFromList,\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-select-box</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n *\n * @constructor\n * @extends UDExSelectBase\n * @tagname udex-select-box\n * @public\n */\n@customElement({\n tag: \"udex-select-box\",\n renderer: jsxRenderer,\n styles: [\n TextFieldCss,\n SelectBoxCss,\n SelectBaseCss,\n SearchableListCss,\n getEffectiveScrollbarStyle(),\n ],\n template: SelectBoxTemplate,\n dependencies: [\n UDExSelectBoxGroupHeader,\n UDExListGroupHeader,\n UDExListSelectAll,\n UDExSelectBoxItem,\n UDExStatusMessage,\n UDExBusyIndicator,\n UDExTagGroup,\n UDExListItem,\n UDExList,\n UDExTag,\n IllustratedMessage,\n Tokenizer,\n Popover,\n Token,\n Icon,\n ],\n})\n\n/**\n * Fired event when the user remove tag.\n *\n * @public\n * @param {UDExItemFromList} item The removed item\n */\n@event(\"remove\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the More button.\n *\n * @public\n */\n@event(\"show-more\", { bubbles: true })\n\nclass UDExSelectBox extends UDExSelectBase {\n eventDetails!: {\n \"remove\": UDExSelectBoxRemoveEventDetail,\n \"show-more\": void,\n } & UDExSelectBaseEvents;\n\n /**\n * Determines if there is no enough space, the component can be placed\n * over the target.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disableTargetOverlap?: boolean;\n\n /**\n * Determines on which side of the component the Tooltip is displayed.\n *\n * @default \"Bottom\"\n * @public\n */\n @property()\n tooltipPlacement: `${Placement}` = Placement.Bottom;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _showTagsDropdownContent!: boolean;\n\n _truncatableTag!: UDExTag;\n _inactiveTabIndex: number = -1;\n _handleResizeTokenizerBound: ResizeObserverCallback;\n\n constructor() {\n super();\n this._handleResizeTokenizerBound = this.handleResizeTokenizer.bind(this);\n }\n\n onEnterDOM() {\n super.onEnterDOM();\n ResizeHandler.register(this, this._handleResizeTokenizerBound);\n }\n\n onExitDOM() {\n super.onExitDOM();\n ResizeHandler.deregister(this, this._handleResizeTokenizerBound);\n }\n\n onAfterRendering() {\n super.onAfterRendering();\n this.handleSelectBoxOutsideClick();\n if (this.tagGroup) {\n this.configureTokenizer();\n }\n }\n\n handleResizeTokenizer() {\n this.resizeTokenizer();\n }\n\n handleSelectAll(e:CustomEvent) {\n this.onSelectAllHeaderPress(e);\n this._activatePressedHeader(e);\n }\n\n handleHeaderPress(e:CustomEvent) {\n this.onHeaderPress(e);\n this._activatePressedHeader(e);\n }\n\n /** Keep selection feedback attached to the header, without refocusing the input. @private */\n _activatePressedHeader(e: CustomEvent): void {\n // After the click, find the rendered nav item for this header and set it as\n // the active descendant so the outline ring is visible. Then return DOM focus\n // to the input to prevent a double ring if the user navigates with arrows.\n const tokenId = this.getDataTokenId(e.detail.item as UDExListItemBase);\n const navItems = this._list?.getKeyboardNavigationItems();\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem && renderedItem !== this._activeDescendantItem) {\n this._setActiveDescendant(renderedItem);\n }\n if (this.shadowRoot?.activeElement !== this._search) {\n (this._search as HTMLElement).focus();\n }\n this._announceSelectionChange();\n }\n\n handleItemPress(e:CustomEvent) {\n this.handleItemSelection(e);\n }\n\n handleDropdownClick(e: MouseEvent) {\n const header = e.target as UDExListItemBase;\n // Host-ARIA header rows are not focusable, so activate them directly\n // instead of relying on the input's focusout handler.\n if (header.isGroup && header.collapsible && !header.modeMultiSelect && !header.disabled) {\n this._setActiveDescendant(header);\n }\n }\n\n handlerShowMoreItems(e: CustomEvent) {\n if (!this.displayonly) {\n this.showMoreItems(e);\n this.handleUnselectTruncatableTag();\n this.openDropdown();\n }\n this.fireDecoratorEvent(\"show-more\");\n }\n\n handleInputFocusIn() {\n this.inputFocusIn();\n\n if (this.tokenizer) {\n this.tokenizer.expanded = true;\n this._requestRender = true;\n }\n }\n\n handleInputFocusOut(e: FocusEvent) {\n const relatedTarget = e.relatedTarget as HTMLElement;\n const isInsideComponent = relatedTarget?.closest(`.${this._rootClass}`);\n const isFooterElement = this.hasFooter && !!relatedTarget && this.footer.some(el => el === relatedTarget || el.contains(relatedTarget));\n const isIconButton = !!relatedTarget?.closest(\"[slot='firstIcon'],[slot='secondIcon']\");\n const isSearchInput = relatedTarget === this._search;\n const hasTags = this.tokenizer?.tokens.length > 0;\n\n // When focus moves to the body div of a collapsible single-select group header\n // (which is focusable via tabindex=\"0\" but has no click→header-press wiring),\n // set it as the active descendant and redirect DOM focus back to the input so\n // the combobox pattern is preserved and subsequent arrow navigation works.\n //\n // The focusout handler sits on div.udex-text-field__input (SelectBox's shadow DOM).\n // Shadow DOM retargeting means relatedTarget is either:\n // (a) the body div itself (.udex-list__group-content) — if caught at a lower boundary\n // (b) the UDExListGroupHeader HOST — the common case when the event bubbles to this div\n const rtAsItem = relatedTarget as UDExListItemBase | null;\n const isGroupHeaderBodyDiv = this._popover?.open\n && !!relatedTarget?.classList.contains(\"udex-list__group-content\");\n const isGroupHeaderHost = this._popover?.open\n && !!rtAsItem?.isGroup\n && !!rtAsItem?.collapsible\n && !rtAsItem?.modeMultiSelect;\n if (isGroupHeaderBodyDiv || isGroupHeaderHost) {\n const groupHeaderHost: UDExListItemBase | null = isGroupHeaderBodyDiv\n ? ((relatedTarget.getRootNode() as ShadowRoot | null)?.host as UDExListItemBase | null)\n : rtAsItem;\n if (groupHeaderHost?.isGroup) {\n const navItems = this._list?.getKeyboardNavigationItems();\n const tokenId = this.getDataTokenId(groupHeaderHost);\n const renderedItem = navItems?.find(\n i => (i.getAttribute(\"data-token-id\") ?? i._id) === tokenId,\n );\n if (renderedItem) {\n this._setActiveDescendant(renderedItem);\n }\n }\n (this._search as HTMLElement).focus();\n return;\n }\n\n if (!isInsideComponent && !isFooterElement && !isIconButton && !isSearchInput) {\n this.closeDropdown();\n this.resetSearchState();\n\n if (hasTags) {\n this.collapseTokenizer();\n }\n }\n\n // Clear the keyboard-navigation ring whenever focus leaves the input for a real\n // outside element (tag, outside click). Keep the ring when navigating to icon\n // buttons (they are inside the list row and part of keyboard navigation) or when\n // focus is moving to/from the search input itself.\n if (!isIconButton && !isSearchInput) {\n this._setActiveDescendant(null);\n }\n this._focused = false;\n }\n\n handleDropdownBeforeOpen() {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"addEventListener\");\n }\n\n this.dropdownBeforeOpen();\n }\n\n handleDropdownClose() {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"removeEventListener\");\n }\n\n if (this.modeMultiSelect) {\n this.handleUnselectTruncatableTag();\n this._selectedOption = \"\";\n }\n\n this._finishDropdownClose();\n }\n\n async handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {\n tag = tag ?? (e?.detail.tag as UI5Element);\n const tagId: string = tag.getAttribute(\"data-id\")!;\n this.tokenizer.deleteToken(tag as Token);\n this.handleDropdownItemPress(tagId);\n this.fireDecoratorEventRemove(tagId);\n await renderFinished();\n this._focused = true;\n this._search.focus();\n }\n\n handleRemoveTruncatableTag() {\n const tagId: string = this._truncatableTag.getAttribute(\"data-id\")!;\n this.handleDropdownItemPress(tagId);\n this.closeDropdown();\n this.fireDecoratorEventRemove(tagId);\n }\n\n handleTagClick(e: CustomEvent) {\n const tag = e.detail.tag as UDExTag;\n\n if (!tag.isTruncatable) {\n this._showTagsDropdownContent = false;\n tag.selected = false;\n }\n\n if (tag.isTruncatable && !this._open) {\n this.toggleTruncatedPopover(tag);\n }\n }\n\n handleUnselectTruncatableTag() {\n if (this._truncatableTag?.selected) {\n this._truncatableTag.selected = false;\n this._showTagsDropdownContent = false;\n }\n }\n\n handleKeyDownTag(e: CustomEvent) {\n if (this.isDisabled) { return; }\n const originalEvent: KeyboardEvent = e.detail.originalEvent;\n const tag = originalEvent.target as UDExTag;\n const token = originalEvent.target as Token;\n this.tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && this.tokenizer.tokens.length > 0;\n\n if (isTabNext(originalEvent)) {\n originalEvent.preventDefault();\n this._search.focus();\n return;\n }\n\n if ((isDown(originalEvent) || isUp(originalEvent))) {\n this._search.focus();\n this.openDropdown();\n }\n\n if (isSpace(originalEvent) || isShift(originalEvent) || isEnter(originalEvent)) {\n originalEvent.preventDefault();\n originalEvent.stopPropagation();\n tag.selected = false;\n }\n\n if (isLeft(originalEvent) || isRight(originalEvent)) {\n const nextTokenIndex = this.tokenizer._calcNextTokenIndex(token, this.tokenizer.tokens, isRight(originalEvent));\n this.focusTagByIndex(nextTokenIndex);\n this.tokenizer._scrollToToken(this.tokenizer.tokens[nextTokenIndex]);\n return;\n }\n\n if (tag.isTruncatable && this.validTruncatableKey(originalEvent)) {\n this.toggleTruncatedPopover(tag);\n } else {\n this._showTagsDropdownContent = false;\n }\n\n if (isDelete(originalEvent) || isBackSpace(originalEvent)) {\n this.handleRemoveTag(null, tag);\n if (this.tokenizer.tokens.length === 1) {\n this._search.focus();\n } else {\n this.tokenizer.deleteToken(token, true);\n }\n }\n }\n\n handleKeyDownSearch(e: KeyboardEvent) {\n const tokenizer = this.tokenizer;\n const hasTags = tokenizer?.tokens.length > 0;\n const lastTagIndex = tokenizer?.tokens.length - 1;\n\n if (isTabPrevious(e)) {\n this.resetTagsTabIndexes();\n return;\n }\n\n if (isLeft(e) && hasTags && !this._activeDescendantItem) {\n e.preventDefault();\n this.focusTagByIndex(lastTagIndex);\n return;\n }\n\n if (isBackSpace(e) && this._inputValue === \"\" && hasTags) {\n this.focusTagByIndex(lastTagIndex);\n return;\n }\n\n this.onKeyDownSearch(e);\n }\n\n handleSelectBoxOutsideClick() {\n document.addEventListener(\"click\", (e: Event) => {\n if (e.target !== this) {\n this._open = this._popover.open;\n if (this.tokenizer?.tokens.length > 0) {\n this.collapseTokenizer();\n }\n }\n });\n }\n\n focusTagByIndex(index: number) {\n const token = this.tokenizer.tokens[index];\n if (token) {\n token.focus();\n token.forcedTabIndex = \"0\";\n }\n }\n\n fireDecoratorEventRemove(id: string) {\n this.fireDecoratorEvent(\"remove\", {\n item: this.getItemFromList(id),\n });\n }\n\n collapseTokenizer() {\n this.tokenizer.expanded = false;\n this._selectedOption = \"\";\n }\n\n showMoreItems(e: CustomEvent) {\n e.preventDefault();\n this._focused = true;\n this._search.focus();\n this._showTagsDropdownContent = false;\n }\n\n toggleTruncatedPopover(tag: UDExTag) {\n this._truncatableTag = tag;\n this._truncatableTag.selected = true;\n this._showTagsDropdownContent = true;\n this.openDropdown();\n }\n\n configureTokenizer() {\n this.tagGroup._scrollToEnd = true;\n this.resetTagsTabIndexes();\n }\n\n resetTagsTabIndexes() {\n this.tags.forEach(tag => {\n this.getTagContent(tag).tabIndex = this._inactiveTabIndex;\n });\n }\n\n resizeTokenizer() {\n if (this.tokenizer) {\n this.tokenizer._handleResize();\n }\n }\n\n validTruncatableKey(e: KeyboardEvent): boolean {\n return isSpace(e) || isEnter(e);\n }\n\n getTagContent(tag: UDExTag): HTMLElement {\n return tag.shadowRoot!.querySelector(\".udex-tag\")!;\n }\n\n /**\n * Close the dropdown.\n * @public\n */\n close(): void {\n this.closeDropdown();\n }\n\n /**\n * Focuses the inner search input.\n * @public\n */\n async focus(): Promise<void> {\n await renderFinished();\n this._search?.focus();\n return Promise.resolve();\n }\n\n get tokenizer(): Tokenizer {\n return this.tagGroup?.tokenizer;\n }\n\n get tagGroup(): UDExTagGroup {\n return this.shadowRoot!.querySelector<UDExTagGroup>(\"[udex-tag-group]\")!;\n }\n\n get tags(): Array<UDExTag> {\n return this.tagGroup ? Array.from(this.tagGroup.shadowRoot!.querySelectorAll<UDExTag>(\"[udex-tag]\")) : [];\n }\n\n get truncatableTagLabel(): string {\n return this._truncatableTag.text.replace(/<\\/?b>/gi, \"\");\n }\n\n get showMultiSelectedOptions(): boolean {\n return this.hasSelectedItems && this.modeMultiSelect;\n }\n\n get allowTargetOverlap(): boolean {\n return !this.disableTargetOverlap;\n }\n\n get tokenizerExpanded(): boolean {\n if (this._showTagsDropdownContent && this._truncatableTag) {\n return false;\n }\n\n const isCurrentlyExpanded = this.tokenizer?.expanded;\n\n return this._focused || this._open || isCurrentlyExpanded;\n }\n\n override get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return SearchableListBaseTemplate.call(this);\n }\n\n static override get searchableListBaseTemplate(): any {\n return SearchableListBaseTemplate;\n }\n}\n\nUDExSelectBox.define();\n\nexport default UDExSelectBox;\nexport type { UDExSelectBoxRemoveEventDetail };\n"]}
|