@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
|
@@ -222,6 +222,56 @@ describe("ListItem", () => {
|
|
|
222
222
|
});
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
+
describe("Standalone rated MultiSelect preservation", () => {
|
|
226
|
+
it("keeps real focus and selection on the inner option while retaining the standalone checkbox and rating names", () => {
|
|
227
|
+
cy.mount(
|
|
228
|
+
<div>
|
|
229
|
+
<button id="before-rated-list-item">Previous</button>
|
|
230
|
+
<UDExListItem id="standalone-rated-item" mode={UDExListMode.MultiSelect}
|
|
231
|
+
label="Rated choice" rating="4" ratingCount="4.0" totalCount="20"></UDExListItem>
|
|
232
|
+
</div>
|
|
233
|
+
);
|
|
234
|
+
const UDExItem = () => cy.get("#standalone-rated-item");
|
|
235
|
+
const UDExRow = () => UDExItem().shadow().find('[part="item"]');
|
|
236
|
+
const UDExAssertStandaloneState = (UDExSelected: boolean) => {
|
|
237
|
+
UDExRow().should("be.focused").should($row => {
|
|
238
|
+
expect($row).to.have.attr("role", "option");
|
|
239
|
+
expect($row).to.have.attr("tabindex", "0");
|
|
240
|
+
expect($row).to.have.attr("aria-selected", String(UDExSelected));
|
|
241
|
+
expect($row).not.to.have.attr("aria-checked");
|
|
242
|
+
});
|
|
243
|
+
UDExItem().should($host => {
|
|
244
|
+
expect($host[0]).to.have.property("_useHostAriaRole", false);
|
|
245
|
+
expect($host).not.to.have.attr("aria-selected");
|
|
246
|
+
expect($host[0]).to.have.property("selected", UDExSelected);
|
|
247
|
+
});
|
|
248
|
+
UDExItem().shadow().find("[udex-checkbox]").should($checkbox => {
|
|
249
|
+
expect($checkbox).to.have.attr("aria-hidden", "true");
|
|
250
|
+
expect($checkbox).to.have.attr("tabindex", "-1");
|
|
251
|
+
expect($checkbox[0]).to.have.property("checked", UDExSelected);
|
|
252
|
+
// Standalone real-focus items retain the existing name, including its trailing space.
|
|
253
|
+
const UDExName = `checkbox ${UDExSelected ? "Selected" : "Unselected"} `;
|
|
254
|
+
expect($checkbox[0]).to.have.property("accessibleName", UDExName);
|
|
255
|
+
expect($checkbox).to.have.attr("accessible-name", UDExName);
|
|
256
|
+
});
|
|
257
|
+
UDExItem().shadow().find(".udex-list__content-wrap").should("have.attr", "aria-label", "Rated choice");
|
|
258
|
+
UDExItem().shadow().find("[udex-rating-indicator]").should($rating => {
|
|
259
|
+
expect($rating).to.have.attr("aria-label", "Rating 4.0, Total 20, Rating Indicator 4 of 5");
|
|
260
|
+
expect($rating).to.have.attr("disabled");
|
|
261
|
+
expect($rating).to.have.attr("readonly");
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
cy.get("#before-rated-list-item").realClick();
|
|
266
|
+
cy.realPress("Tab");
|
|
267
|
+
UDExAssertStandaloneState(false);
|
|
268
|
+
cy.realPress("Enter");
|
|
269
|
+
UDExAssertStandaloneState(true);
|
|
270
|
+
cy.realPress("Space");
|
|
271
|
+
UDExAssertStandaloneState(false);
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
|
|
225
275
|
// Added: unit-level coverage for the WCAG 4.1.2 Treeview Checkbox pattern getter
|
|
226
276
|
// (ariaCheckedValue). It only activates when the item's accessible-role ===
|
|
227
277
|
// "treeitem" (set by SearchableListBase in the tree pattern). The inner checkbox
|
|
@@ -26,9 +26,34 @@ const secondaryNavigationWithoutBreadcrumbs = <UDExSecondaryNavigation
|
|
|
26
26
|
</UDExSecondaryNavigation>
|
|
27
27
|
|
|
28
28
|
describe("Desktop", () => {
|
|
29
|
-
|
|
29
|
+
// The overflow split (which items are visible vs. moved under "More") is computed by
|
|
30
|
+
// measuring item-label widths against the rendered web font ('72 Brand Variable') in
|
|
31
|
+
// reflowItems(). If reflowItems() runs before that font has finished loading, it measures
|
|
32
|
+
// with fallback metrics and produces a different split — making index-based selectors
|
|
33
|
+
// (eq(5), eq(6)) and ".udex-secondary-navigation__list-item" counts nondeterministic.
|
|
34
|
+
// Wait for the font to finish loading, then re-run reflowItems() directly so the split is
|
|
35
|
+
// recomputed with the final metrics. We call the method rather than resizing the viewport
|
|
36
|
+
// because a resize fires the component's ResizeObserver asynchronously, and that callback
|
|
37
|
+
// (via _handleResize) can land after a test opens a dropdown and close it mid-test.
|
|
38
|
+
const waitForDeterministicReflow = () => {
|
|
39
|
+
cy.document().then(doc => doc.fonts.ready);
|
|
40
|
+
cy.get("#secondary-nav").then($nav => {
|
|
41
|
+
($nav[0] as unknown as { reflowItems: () => void }).reflowItems();
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// The dropdown auto-focuses its first sub-item asynchronously in onAfterRendering.
|
|
46
|
+
// Keyboard tests that press a key immediately after opening must wait for that focus to
|
|
47
|
+
// land, otherwise the key is dispatched to whatever element happens to be active.
|
|
48
|
+
const firstSubItemFocused = () =>
|
|
49
|
+
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first()
|
|
50
|
+
.shadow().find("udex-secondary-navigation-sub-item").first()
|
|
51
|
+
.shadow().find(".udex-secondary-navigation__dropdown-item").should("be.focused");
|
|
52
|
+
|
|
53
|
+
beforeEach(() => {
|
|
30
54
|
cy.viewport(1920, 1080)
|
|
31
55
|
cy.mount(defaultSecondaryNavigation)
|
|
56
|
+
waitForDeterministicReflow();
|
|
32
57
|
const itemClickHandler = cy.stub().as("itemClickHandler");
|
|
33
58
|
cy.get("#secondary-nav").then($navigation => {
|
|
34
59
|
$navigation[0].addEventListener("item-click", itemClickHandler)
|
|
@@ -217,6 +242,9 @@ describe("Desktop", () => {
|
|
|
217
242
|
cy.get("udex-secondary-navigation").shadow().find("udex-secondary-navigation-item").first()
|
|
218
243
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
219
244
|
|
|
245
|
+
// Wait for auto-focus to land on the first sub-item before driving the keyboard.
|
|
246
|
+
firstSubItemFocused();
|
|
247
|
+
|
|
220
248
|
cy.realPress(["Shift", "Tab"]); // closes dropdown, returns focus to trigger button
|
|
221
249
|
cy.realPress(["Shift", "Tab"]); // moves focus to heading title
|
|
222
250
|
|
|
@@ -234,7 +262,10 @@ describe("Desktop", () => {
|
|
|
234
262
|
it("moves focus to next item on `More option`", () => {
|
|
235
263
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").eq(6)
|
|
236
264
|
.shadow().find(".udex-secondary-navigation__item").click().realPress("Enter").realPress("Tab").realPress("Enter")
|
|
237
|
-
|
|
265
|
+
// Use .should (retried) instead of .then (evaluated once): the focus-ring style is
|
|
266
|
+
// applied after the keyboard navigation settles, so a single read can observe a
|
|
267
|
+
// transient state.
|
|
268
|
+
cy.get("#secondary-nav").find("udex-button").should($button => {
|
|
238
269
|
const { borderColor: buttonBorder } = window.getComputedStyle($button[0], "::after")
|
|
239
270
|
expect(buttonBorder).to.eq('rgb(0, 100, 217)');
|
|
240
271
|
})
|
|
@@ -299,6 +330,9 @@ describe("Desktop", () => {
|
|
|
299
330
|
.find(".udex-secondary-navigation__dropdown")
|
|
300
331
|
.should("be.visible");
|
|
301
332
|
|
|
333
|
+
// Wait for the auto-focus to land on the first sub-item before pressing Tab.
|
|
334
|
+
firstSubItemFocused();
|
|
335
|
+
|
|
302
336
|
// Tab through all 3 sub-items; Tab on the last one (index 2) triggers closeDropdown().
|
|
303
337
|
// No preventDefault() is called, so the browser moves focus to the next nav item (eq(1)).
|
|
304
338
|
cy.realPress("Tab").realPress("Tab").realPress("Tab");
|
|
@@ -334,7 +368,7 @@ describe("Desktop", () => {
|
|
|
334
368
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
335
369
|
|
|
336
370
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first()
|
|
337
|
-
.
|
|
371
|
+
.should($item => {
|
|
338
372
|
const item = $item[0] as HTMLElement;
|
|
339
373
|
const dropdown = item.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown")!;
|
|
340
374
|
const { top } = dropdown.getBoundingClientRect();
|
|
@@ -364,6 +398,8 @@ describe("Desktop", () => {
|
|
|
364
398
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click()
|
|
365
399
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
366
400
|
|
|
401
|
+
firstSubItemFocused();
|
|
402
|
+
|
|
367
403
|
cy.realPress("Tab");
|
|
368
404
|
|
|
369
405
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first()
|
|
@@ -375,6 +411,8 @@ describe("Desktop", () => {
|
|
|
375
411
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click()
|
|
376
412
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
377
413
|
|
|
414
|
+
firstSubItemFocused();
|
|
415
|
+
|
|
378
416
|
cy.realPress("Escape");
|
|
379
417
|
|
|
380
418
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first()
|
|
@@ -389,6 +427,7 @@ describe("Desktop", () => {
|
|
|
389
427
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
390
428
|
|
|
391
429
|
// Two ArrowDown presses advance from index 0 to index 2 (secondary nested 3 — the last sub-item).
|
|
430
|
+
firstSubItemFocused();
|
|
392
431
|
cy.realPress("{downarrow}").realPress("{downarrow}");
|
|
393
432
|
|
|
394
433
|
// Tab on the last sub-item triggers closeDropdown() in the keydown handler.
|
|
@@ -410,6 +449,7 @@ describe("Desktop", () => {
|
|
|
410
449
|
// Shift+Tab on index 0 triggers closeDropdown() in the keydown handler.
|
|
411
450
|
// No preventDefault() is called, so the browser completes Shift+Tab and returns focus to the
|
|
412
451
|
// trigger button that opened the dropdown.
|
|
452
|
+
firstSubItemFocused();
|
|
413
453
|
cy.realPress(["Shift", "Tab"]);
|
|
414
454
|
|
|
415
455
|
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first()
|
|
@@ -425,6 +465,7 @@ describe("Desktop", () => {
|
|
|
425
465
|
|
|
426
466
|
// Dropdown opens with focus on first sub-item (secondary nested 1, index 0).
|
|
427
467
|
// Two ArrowDown presses move focus to secondary nested 3 (index 2).
|
|
468
|
+
firstSubItemFocused();
|
|
428
469
|
cy.realPress("{downarrow}").realPress("{downarrow}").realPress("Enter");
|
|
429
470
|
|
|
430
471
|
cy.get("@itemClickHandler").should("have.been.called")
|
|
@@ -438,6 +479,7 @@ describe("Desktop", () => {
|
|
|
438
479
|
|
|
439
480
|
// Two ArrowDown presses reach secondary nested 3 (index 2),
|
|
440
481
|
// one ArrowUp moves back to secondary nested 2 (index 1).
|
|
482
|
+
firstSubItemFocused();
|
|
441
483
|
cy.realPress("{downarrow}").realPress("{downarrow}").realPress("{uparrow}").realPress("Enter");
|
|
442
484
|
|
|
443
485
|
cy.get("@itemClickHandler").should("have.been.called")
|
|
@@ -450,6 +492,7 @@ describe("Desktop", () => {
|
|
|
450
492
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
451
493
|
|
|
452
494
|
// ArrowDown moves off the first item, then End jumps to the last sub-item (secondary nested 3).
|
|
495
|
+
firstSubItemFocused();
|
|
453
496
|
cy.realPress("{downarrow}").realPress("End").realPress("Enter");
|
|
454
497
|
|
|
455
498
|
cy.get("@itemClickHandler").should("have.been.called")
|
|
@@ -466,6 +509,7 @@ describe("Desktop", () => {
|
|
|
466
509
|
|
|
467
510
|
// Two ArrowDown presses move focus away from the first item,
|
|
468
511
|
// then Home jumps back to secondary nested 1 (index 0).
|
|
512
|
+
firstSubItemFocused();
|
|
469
513
|
cy.realPress("{downarrow}").realPress("{downarrow}").realPress("Home").realPress("Enter");
|
|
470
514
|
|
|
471
515
|
cy.get("@itemClickHandler").should("have.been.called")
|
|
@@ -485,6 +529,7 @@ describe("Desktop", () => {
|
|
|
485
529
|
|
|
486
530
|
// Focus starts on secondary nested 1 (index 0), which has nested items.
|
|
487
531
|
// ArrowRight drills into its nested level without firing sub-item-click.
|
|
532
|
+
firstSubItemFocused();
|
|
488
533
|
cy.realPress("{rightarrow}");
|
|
489
534
|
|
|
490
535
|
// The nested level is displayed: back button (index 0) + nested children.
|
|
@@ -502,6 +547,7 @@ describe("Desktop", () => {
|
|
|
502
547
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
503
548
|
|
|
504
549
|
// Reset after the click that opened the dropdown, so we only capture ArrowRight side-effects.
|
|
550
|
+
firstSubItemFocused();
|
|
505
551
|
cy.get("@itemClickHandler").invoke("reset");
|
|
506
552
|
|
|
507
553
|
cy.realPress("{rightarrow}");
|
|
@@ -525,6 +571,7 @@ describe("Desktop", () => {
|
|
|
525
571
|
|
|
526
572
|
// Focus is on first sub-item (secondary nested 1, index 0, has nested items).
|
|
527
573
|
// Press Enter to navigate into its nested level via handleEnterAndSpace → handleSubItemClick.
|
|
574
|
+
firstSubItemFocused();
|
|
528
575
|
cy.realPress("Enter");
|
|
529
576
|
|
|
530
577
|
// The nested level is displayed: back button (index 0) + nested children.
|
|
@@ -542,6 +589,7 @@ describe("Desktop", () => {
|
|
|
542
589
|
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
543
590
|
|
|
544
591
|
// Press Enter on first sub-item (secondary nested 1, index 0, has nested items).
|
|
592
|
+
firstSubItemFocused();
|
|
545
593
|
cy.realPress("Enter");
|
|
546
594
|
|
|
547
595
|
cy.get("@itemClickHandler").should("have.been.called")
|
|
@@ -556,6 +604,7 @@ describe("Desktop", () => {
|
|
|
556
604
|
// ArrowRight from secondary nested 1 drills into its nested level (no event, just navigation).
|
|
557
605
|
// ArrowLeft on the back button restores the previous level and focuses secondary nested 1.
|
|
558
606
|
// Enter then activates secondary nested 1, firing item-click.
|
|
607
|
+
firstSubItemFocused();
|
|
559
608
|
cy.realPress("{rightarrow}").realPress("{leftarrow}").realPress("Enter");
|
|
560
609
|
|
|
561
610
|
cy.get("@itemClickHandler").should("have.been.called")
|