@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
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
2
2
|
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
3
3
|
import SideNavigationItem from "@ui5/webcomponents-fiori/dist/SideNavigationItem.js";
|
|
4
|
+
import type SideNavigationItemBase from "@ui5/webcomponents-fiori/dist/SideNavigationItemBase.js";
|
|
5
|
+
import type SideNavigationSelectableItemBase from "@ui5/webcomponents-fiori/dist/SideNavigationSelectableItemBase.js";
|
|
6
|
+
import type UDExSideNavigationSubItem from "./SideNavigationSubItem.js";
|
|
7
|
+
import SideNavigationItemTemplate from "./SideNavigationItemTemplate.js";
|
|
4
8
|
|
|
5
9
|
// Styles
|
|
6
10
|
import SideNavigationItemCss from "./generated/themes/SideNavigationItem.css.js";
|
|
@@ -26,10 +30,83 @@ import { isDesktop } from "@ui5/webcomponents-base";
|
|
|
26
30
|
@customElement({
|
|
27
31
|
tag: "udex-side-navigation-item",
|
|
28
32
|
renderer: jsxRenderer,
|
|
33
|
+
template: SideNavigationItemTemplate,
|
|
29
34
|
styles: [SideNavigationItem.styles, SideNavigationItemCss],
|
|
30
35
|
})
|
|
31
36
|
|
|
32
37
|
class UDExSideNavigationItem extends SideNavigationItem {
|
|
38
|
+
get _selected() {
|
|
39
|
+
if (this.sideNavCollapsed) {
|
|
40
|
+
return this.selected || this.items.some(item => item.selected);
|
|
41
|
+
}
|
|
42
|
+
return this.selected;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get focusableItems(): Array<SideNavigationItemBase> {
|
|
46
|
+
// Recurse one level into expanded level-2 sub-items so their level-3 children join
|
|
47
|
+
// the Side Navigation's keyboard focus set (UI5's base getter is flat). Only one level
|
|
48
|
+
// of recursion is needed because the component supports at most three nesting levels.
|
|
49
|
+
if (!this.sideNavCollapsed && this.expanded) {
|
|
50
|
+
return [this, ...this.items.reduce((result, item) => {
|
|
51
|
+
return result.concat((item as UDExSideNavigationSubItem).focusableItems || [item]);
|
|
52
|
+
}, new Array<SideNavigationItemBase>())];
|
|
53
|
+
}
|
|
54
|
+
return super.focusableItems;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get selectableItems(): Array<SideNavigationSelectableItemBase> {
|
|
58
|
+
// Recurse one level into level-2 sub-items so their level-3 children are part of the
|
|
59
|
+
// Side Navigation's selection registry (UI5's base getter is flat). Without this the
|
|
60
|
+
// selection sweep in SideNavigation._selectItem never reaches level 3, so selecting a
|
|
61
|
+
// level-3 item would not deselect items at other levels, and vice versa.
|
|
62
|
+
return this.items.reduce((result, item) => {
|
|
63
|
+
return result.concat((item as UDExSideNavigationSubItem).selectableItems || [item]);
|
|
64
|
+
}, new Array<SideNavigationSelectableItemBase>(this));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
get allItems(): Array<SideNavigationItemBase> {
|
|
68
|
+
// Recurse one level into level-2 sub-items so level-3 children are enumerated by
|
|
69
|
+
// SideNavigation._getAllItems. That loop wires `sideNavigation` (and collapsed state)
|
|
70
|
+
// onto every item; without this, level-3 items never get `sideNavigation` set and
|
|
71
|
+
// their click handler cannot reach SideNavigation._handleItemClick to fire selection-change.
|
|
72
|
+
return this.items.reduce((result, item) => {
|
|
73
|
+
return result.concat((item as UDExSideNavigationSubItem).allItems || [item]);
|
|
74
|
+
}, new Array<SideNavigationItemBase>(this));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
_initialExpandDone = false;
|
|
78
|
+
|
|
79
|
+
onBeforeRendering() {
|
|
80
|
+
super.onBeforeRendering();
|
|
81
|
+
// Open the group once on initial render if it contains a selected child, so the
|
|
82
|
+
// selection is visible. Do not re-apply on later renders — that would prevent the
|
|
83
|
+
// user from collapsing a group while one of its children stays selected.
|
|
84
|
+
if (!this._initialExpandDone) {
|
|
85
|
+
this._initialExpandDone = true;
|
|
86
|
+
if (!this.sideNavCollapsed && !this.expanded && this.items.some(item => item.selected)) {
|
|
87
|
+
this.expanded = true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
_onclick(e: MouseEvent) {
|
|
93
|
+
// A grouping item (one with sub-items) toggles expand/collapse on click and
|
|
94
|
+
// never navigates — a parent with children must not have an href. Only leaf
|
|
95
|
+
// items navigate, so they fall through to the base handler.
|
|
96
|
+
if (this.hasSubItems && !this.sideNavCollapsed) {
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
e.stopPropagation();
|
|
99
|
+
this.expanded = !this.expanded;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
super._onclick(e);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
_onToggleClick(e: CustomEvent) {
|
|
106
|
+
e.preventDefault();
|
|
107
|
+
super._onToggleClick(e);
|
|
108
|
+
}
|
|
109
|
+
|
|
33
110
|
onEnterDOM() {
|
|
34
111
|
this.setAttribute("id", this._id);
|
|
35
112
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
2
|
+
import navRightArrow from "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
3
|
+
import arrowRight from "@ui5/webcomponents-icons/dist/arrow-right.js";
|
|
4
|
+
import type UDExSideNavigationItem from "./SideNavigationItem.js";
|
|
5
|
+
|
|
6
|
+
export default function SideNavigationItemTemplate(this: UDExSideNavigationItem) {
|
|
7
|
+
if (this.sideNavCollapsed) {
|
|
8
|
+
return ItemTemplate.call(this);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<li id={this._id} class="ui5-sn-list-li" role="none">
|
|
13
|
+
{ItemTemplate.call(this)}
|
|
14
|
+
</li>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function ItemTemplate(this: UDExSideNavigationItem) {
|
|
19
|
+
const EffectiveTag = this._effectiveTag;
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<>
|
|
23
|
+
<EffectiveTag
|
|
24
|
+
id={this._id}
|
|
25
|
+
data-sap-focus-ref
|
|
26
|
+
class={`ui5-sn-item ui5-sn-item-level1 ${this._classes}`}
|
|
27
|
+
role={this.ariaRole}
|
|
28
|
+
onKeyDown={this._onkeydown}
|
|
29
|
+
onKeyUp={this._onkeyup}
|
|
30
|
+
onClick={this._onclick}
|
|
31
|
+
onFocusIn={this._onfocusin}
|
|
32
|
+
tabIndex={this.effectiveTabIndex}
|
|
33
|
+
aria-current={this._ariaCurrent}
|
|
34
|
+
aria-selected={this._ariaSelected}
|
|
35
|
+
title={this._tooltip}
|
|
36
|
+
aria-disabled={this.effectiveDisabled}
|
|
37
|
+
href={this._href}
|
|
38
|
+
target={this._target}
|
|
39
|
+
aria-haspopup={this._ariaHasPopup}
|
|
40
|
+
onFocusOut={this._onfocusout}
|
|
41
|
+
onMouseEnter={this._onmouseenter}
|
|
42
|
+
onMouseLeave={this._onmouseleave}
|
|
43
|
+
aria-checked={this._ariaChecked}
|
|
44
|
+
aria-owns={this._groupId}
|
|
45
|
+
aria-label={this._ariaLabel}
|
|
46
|
+
aria-expanded={this._expanded}
|
|
47
|
+
aria-labelledby={this._textId}
|
|
48
|
+
aria-describedby={this._describedBy}>
|
|
49
|
+
{this.sideNavCollapsed ? (
|
|
50
|
+
<Icon class="ui5-sn-item-icon" name={this.icon} />
|
|
51
|
+
) : (
|
|
52
|
+
this.icon && <Icon class="ui5-sn-item-icon" name={this.icon} />
|
|
53
|
+
)}
|
|
54
|
+
<div class="ui5-sn-item-text" id={this._textId}>{this.text}</div>
|
|
55
|
+
{this.hasTag && (
|
|
56
|
+
<div id={this._tagId} class="ui5-sn-item-tag-slot">
|
|
57
|
+
<slot name="tag" />
|
|
58
|
+
</div>
|
|
59
|
+
)}
|
|
60
|
+
{this.sideNavCollapsed ? (
|
|
61
|
+
!!this.items.length && (
|
|
62
|
+
<div class="ui5-sn-item-toggle-icon-wrap">
|
|
63
|
+
<Icon class="ui5-sn-item-toggle-icon" name={navRightArrow} />
|
|
64
|
+
</div>
|
|
65
|
+
)
|
|
66
|
+
) : (
|
|
67
|
+
!!this.items.length && (
|
|
68
|
+
<div class="ui5-sn-item-toggle-icon-wrap">
|
|
69
|
+
<Icon
|
|
70
|
+
class="ui5-sn-item-toggle-icon"
|
|
71
|
+
name={navRightArrow}
|
|
72
|
+
accessibleName={this._arrowTooltip}
|
|
73
|
+
showTooltip={true}
|
|
74
|
+
onClick={this._onToggleClick}
|
|
75
|
+
/>
|
|
76
|
+
</div>
|
|
77
|
+
)
|
|
78
|
+
)}
|
|
79
|
+
{this.isExternalLink && (
|
|
80
|
+
<Icon class="ui5-sn-item-external-link-icon" name={arrowRight} />
|
|
81
|
+
)}
|
|
82
|
+
</EffectiveTag>
|
|
83
|
+
{!this.sideNavCollapsed && !!this.items.length && (
|
|
84
|
+
<ul
|
|
85
|
+
id={this._groupId}
|
|
86
|
+
class="ui5-sn-item-ul"
|
|
87
|
+
aria-label={this.accessibleName || this.text}
|
|
88
|
+
role="group">
|
|
89
|
+
<slot />
|
|
90
|
+
</ul>
|
|
91
|
+
)}
|
|
92
|
+
{this._selectableItemDescriptionText && (
|
|
93
|
+
<span id={this._selectableItemDescriptionId} class="ui5-hidden-text">{this._selectableItemDescriptionText}</span>
|
|
94
|
+
)}
|
|
95
|
+
</>
|
|
96
|
+
);
|
|
97
|
+
}
|
|
@@ -12,7 +12,6 @@ import type UDExSideNavigationGroup from "./SideNavigationGroup.js";
|
|
|
12
12
|
|
|
13
13
|
// Styles
|
|
14
14
|
import SideNavigationMobileCss from "./generated/themes/SideNavigationMobile.css.js";
|
|
15
|
-
import SideNavigationMobileDropdownCss from "./generated/themes/SideNavigationMobileDropdown.css.js";
|
|
16
15
|
|
|
17
16
|
export type SelectedItem = UDExSideNavigationItem | UDExSideNavigationSubItem | null;
|
|
18
17
|
|
|
@@ -37,7 +36,7 @@ export type SelectedItem = UDExSideNavigationItem | UDExSideNavigationSubItem |
|
|
|
37
36
|
tag: "udex-side-navigation-mobile",
|
|
38
37
|
renderer: jsxRenderer,
|
|
39
38
|
template: SideNavigationMobileTemplate,
|
|
40
|
-
styles: [SideNavigationMobileCss
|
|
39
|
+
styles: [SideNavigationMobileCss],
|
|
41
40
|
})
|
|
42
41
|
|
|
43
42
|
class UDExSideNavigationMobile extends UI5Element {
|
|
@@ -51,7 +51,8 @@ export default function SideNavigationMobileTemplate(this: UDExSideNavigationMob
|
|
|
51
51
|
}}>
|
|
52
52
|
<UDExSideNavigation
|
|
53
53
|
ref={this._setNavItems}
|
|
54
|
-
onSelectionChange={this._handleSelectionChanged as any}
|
|
54
|
+
onSelectionChange={this._handleSelectionChanged as any}
|
|
55
|
+
{...{ "in-mobile": "" }}>
|
|
55
56
|
</UDExSideNavigation>
|
|
56
57
|
</UDExDropdown>
|
|
57
58
|
</>
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
2
2
|
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
3
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
4
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
5
|
+
import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
6
|
+
import {
|
|
7
|
+
isLeft,
|
|
8
|
+
isRight,
|
|
9
|
+
isMinus,
|
|
10
|
+
isPlus,
|
|
11
|
+
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
3
12
|
import SideNavigationSubItem from "@ui5/webcomponents-fiori/dist/SideNavigationSubItem.js";
|
|
13
|
+
import SideNavigationSubItemTemplate from "./SideNavigationSubItemTemplate.js";
|
|
4
14
|
|
|
5
15
|
// Styles
|
|
6
16
|
import SideNavigationSubItemCss from "./generated/themes/SideNavigationSubItem.css.js";
|
|
17
|
+
import SideNavigationItemCss from "./generated/themes/SideNavigationItem.css.js";
|
|
7
18
|
|
|
8
19
|
/**
|
|
9
20
|
* @class
|
|
@@ -25,10 +36,116 @@ import SideNavigationSubItemCss from "./generated/themes/SideNavigationSubItem.c
|
|
|
25
36
|
@customElement({
|
|
26
37
|
tag: "udex-side-navigation-sub-item",
|
|
27
38
|
renderer: jsxRenderer,
|
|
28
|
-
|
|
39
|
+
template: SideNavigationSubItemTemplate,
|
|
40
|
+
styles: [SideNavigationSubItem.styles, SideNavigationItemCss, SideNavigationSubItemCss],
|
|
41
|
+
dependencies: [UDExSideNavigationSubItem],
|
|
29
42
|
})
|
|
30
43
|
|
|
31
|
-
class UDExSideNavigationSubItem extends SideNavigationSubItem {
|
|
44
|
+
class UDExSideNavigationSubItem extends SideNavigationSubItem {
|
|
45
|
+
/**
|
|
46
|
+
* Defines whether the sub-item is expanded (shows level-3 children).
|
|
47
|
+
*
|
|
48
|
+
* @default false
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
@property({ type: Boolean })
|
|
52
|
+
expanded = false;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Defines the level-3 sub-items slotted inside this sub-item.
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
@slot({ type: HTMLElement, invalidateOnChildChange: true, "default": true })
|
|
59
|
+
subItems!: DefaultSlot<UDExSideNavigationSubItem>;
|
|
60
|
+
|
|
61
|
+
get hasSubItems() {
|
|
62
|
+
return this.subItems.length > 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get focusableItems(): Array<UDExSideNavigationSubItem> {
|
|
66
|
+
if (this.hasSubItems && this.expanded) {
|
|
67
|
+
return [this, ...this.subItems];
|
|
68
|
+
}
|
|
69
|
+
return [this];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
get selectableItems(): Array<UDExSideNavigationSubItem> {
|
|
73
|
+
// Expose this level-2 sub-item plus its level-3 children so the Side Navigation's
|
|
74
|
+
// selection registry (built by UDExSideNavigationItem.selectableItems) reaches level 3.
|
|
75
|
+
return this.hasSubItems ? [this, ...this.subItems] : [this];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
get allItems(): Array<UDExSideNavigationSubItem> {
|
|
79
|
+
// Expose this sub-item plus its level-3 children so SideNavigation._getAllItems wires
|
|
80
|
+
// `sideNavigation` and collapsed state onto level-3 items. Without it, a level-3 leaf's
|
|
81
|
+
// click handler has no `sideNavigation` reference and cannot fire selection-change.
|
|
82
|
+
return this.hasSubItems ? [this, ...this.subItems] : [this];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
onBeforeRendering() {
|
|
86
|
+
super.onBeforeRendering();
|
|
87
|
+
this.subItems.forEach(subItem => {
|
|
88
|
+
if (!subItem.hasAttribute("nested")) { subItem.setAttribute("nested", ""); }
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
get _subGroupId(): string | undefined {
|
|
93
|
+
return this.hasSubItems ? `${this._id}-group` : undefined;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
get _subExpanded(): boolean | undefined {
|
|
97
|
+
return this.hasSubItems ? this.expanded : undefined;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
_onToggleClick(e: Event) {
|
|
101
|
+
e.stopPropagation();
|
|
102
|
+
e.preventDefault();
|
|
103
|
+
this.expanded = !this.expanded;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
_onkeydown(e: KeyboardEvent) {
|
|
107
|
+
if (this.hasSubItems && !this.sideNavCollapsed) {
|
|
108
|
+
const isRTL = this.effectiveDir === "rtl";
|
|
109
|
+
if (isLeft(e)) {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
this.expanded = isRTL;
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (isRight(e)) {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
this.expanded = !isRTL;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (isMinus(e)) {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
this.expanded = false;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (isPlus(e)) {
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
this.expanded = true;
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Level-3 leaves fall through to the base, which activates on Enter and fires
|
|
131
|
+
// selection-change — the same behaviour as level-1 and level-2 leaves.
|
|
132
|
+
super._onkeydown(e);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
_onclick(e: MouseEvent) {
|
|
136
|
+
// A group sub-item (one with sub-items) toggles expand/collapse and never navigates —
|
|
137
|
+
// a parent with children must not have an href. A leaf (including a level-3 leaf) falls
|
|
138
|
+
// through to the base handler, which fires selection-change and navigates via its href,
|
|
139
|
+
// exactly like level-1 and level-2 leaves.
|
|
140
|
+
if (this.hasSubItems) {
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
e.stopPropagation();
|
|
143
|
+
this.expanded = !this.expanded;
|
|
144
|
+
} else {
|
|
145
|
+
super._onclick(e);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
32
149
|
|
|
33
150
|
UDExSideNavigationSubItem.define();
|
|
34
151
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
2
|
+
import arrowRight from "@ui5/webcomponents-icons/dist/arrow-right.js";
|
|
3
|
+
import navRightArrow from "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
4
|
+
import type UDExSideNavigationSubItem from "./SideNavigationSubItem.js";
|
|
5
|
+
|
|
6
|
+
export default function SideNavigationSubItemTemplate(this: UDExSideNavigationSubItem) {
|
|
7
|
+
const EffectiveTag = this._effectiveTag;
|
|
8
|
+
return (
|
|
9
|
+
<li id={this._id} class="ui5-sn-list-li" role="none">
|
|
10
|
+
<EffectiveTag
|
|
11
|
+
id={this._id}
|
|
12
|
+
data-sap-focus-ref
|
|
13
|
+
class={`ui5-sn-item ui5-sn-item-level2 ${this._classes}`}
|
|
14
|
+
role={this.ariaRole}
|
|
15
|
+
onKeyDown={this._onkeydown}
|
|
16
|
+
onKeyUp={this._onkeyup}
|
|
17
|
+
onClick={this._onclick}
|
|
18
|
+
onFocusIn={this._onfocusin}
|
|
19
|
+
tabIndex={this.effectiveTabIndex}
|
|
20
|
+
aria-current={this._ariaCurrent}
|
|
21
|
+
aria-selected={this._ariaSelected}
|
|
22
|
+
aria-label={this.accessibleName || undefined}
|
|
23
|
+
title={this._tooltip}
|
|
24
|
+
aria-disabled={this.effectiveDisabled}
|
|
25
|
+
href={this._href}
|
|
26
|
+
target={this._target}
|
|
27
|
+
aria-haspopup={this._ariaHasPopup}
|
|
28
|
+
aria-describedby={this._describedBy}
|
|
29
|
+
aria-expanded={this._subExpanded}
|
|
30
|
+
aria-owns={this._subGroupId}
|
|
31
|
+
>
|
|
32
|
+
{this.icon && <Icon class="ui5-sn-item-icon" name={this.icon} />}
|
|
33
|
+
<div class="ui5-sn-item-text" id={this._textId}>{this.text}</div>
|
|
34
|
+
{this.hasTag && (
|
|
35
|
+
<div id={this._tagId} class="ui5-sn-item-tag-slot">
|
|
36
|
+
<slot name="tag" />
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
39
|
+
{this.hasSubItems && (
|
|
40
|
+
<div class="ui5-sn-item-toggle-icon-wrap">
|
|
41
|
+
<Icon
|
|
42
|
+
class="ui5-sn-item-toggle-icon"
|
|
43
|
+
name={navRightArrow}
|
|
44
|
+
onClick={(e: Event) => this._onToggleClick(e)}
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
47
|
+
)}
|
|
48
|
+
{this.isExternalLink && <Icon class="ui5-sn-item-external-link-icon" name={arrowRight} />}
|
|
49
|
+
</EffectiveTag>
|
|
50
|
+
{this.hasSubItems && (
|
|
51
|
+
<ul id={this._subGroupId} class="ui5-sn-item-ul" role="group">
|
|
52
|
+
<slot />
|
|
53
|
+
</ul>
|
|
54
|
+
)}
|
|
55
|
+
</li>
|
|
56
|
+
);
|
|
57
|
+
}
|
package/src/Table.ts
CHANGED
|
@@ -15,11 +15,10 @@ import { TABLE_NO_DATA_FOUND } from "./generated/i18n/i18n-defaults.js";
|
|
|
15
15
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
16
16
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
17
17
|
import TableTemplate from "./TableTemplate.js";
|
|
18
|
-
|
|
18
|
+
import translate from "./utils/translate.js";
|
|
19
19
|
// Styles
|
|
20
20
|
import TableCss from "./generated/themes/Table.css.js";
|
|
21
21
|
import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
|
|
22
|
-
import translate from "./utils/translate.js";
|
|
23
22
|
|
|
24
23
|
export type TableBaseRow = UDExTableHeaderRow | UDExTableRow;
|
|
25
24
|
|
package/src/TableCell.ts
CHANGED
|
@@ -3,6 +3,7 @@ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
|
3
3
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
4
4
|
import UDExTableCellBase from "./TableCellBase.js";
|
|
5
5
|
import TableCellTemplate from "./TableCellTemplate.js";
|
|
6
|
+
import { UDExTableCellVerticalAlign } from "./types/Table.js";
|
|
6
7
|
|
|
7
8
|
// Styles
|
|
8
9
|
import TableCellCss from "./generated/themes/TableCell.css.js";
|
|
@@ -50,18 +51,14 @@ class UDExTableCell extends UDExTableCellBase {
|
|
|
50
51
|
@property({ type: Boolean })
|
|
51
52
|
_highlighted?: boolean;
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
} else {
|
|
62
|
-
this.style.justifyContent = `var(--horizontal-align-${(this)._individualSlot})`;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
54
|
+
/**
|
|
55
|
+
* Determines the vertical alignment of the cell content.
|
|
56
|
+
*
|
|
57
|
+
* @default "Center"
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
@property()
|
|
61
|
+
verticalAlign: `${UDExTableCellVerticalAlign}` = UDExTableCellVerticalAlign.Center;
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
UDExTableCell.define();
|
package/src/TableCellBase.ts
CHANGED
|
@@ -4,7 +4,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
|
|
|
4
4
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
5
5
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
6
6
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
7
|
-
import type UDExTableCellHorizontalAlign from "./types/Table.js";
|
|
7
|
+
import type { UDExTableCellHorizontalAlign } from "./types/Table.js";
|
|
8
8
|
|
|
9
9
|
// Styles
|
|
10
10
|
import TableCellBaseCss from "./generated/themes/TableCellBase.css.js";
|
|
@@ -62,6 +62,15 @@ abstract class UDExTableCellBase extends UI5Element {
|
|
|
62
62
|
|
|
63
63
|
onBeforeRendering() {
|
|
64
64
|
this.setAttribute("role", this.ariaRole);
|
|
65
|
+
this.setJustifyContent();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
setJustifyContent(): void {
|
|
69
|
+
if (this.horizontalAlign) {
|
|
70
|
+
this.style.justifyContent = this.horizontalAlign;
|
|
71
|
+
} else {
|
|
72
|
+
this.style.justifyContent = `var(--horizontal-align-${this._individualSlot})`;
|
|
73
|
+
}
|
|
65
74
|
}
|
|
66
75
|
}
|
|
67
76
|
|
package/src/TableHeaderCell.ts
CHANGED
|
@@ -61,11 +61,6 @@ class UDExTableHeaderCell extends UDExTableCellBase {
|
|
|
61
61
|
|
|
62
62
|
protected ariaRole: string = "columnheader";
|
|
63
63
|
|
|
64
|
-
onBeforeRendering() {
|
|
65
|
-
super.onBeforeRendering();
|
|
66
|
-
this.style.justifyContent = `var(--horizontal-align-${this._individualSlot})`;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
64
|
get _hasIcons(): boolean {
|
|
70
65
|
return this.iconStart.length > 0 || this.iconEnd.length > 0;
|
|
71
66
|
}
|
package/src/TableRow.ts
CHANGED
|
@@ -4,6 +4,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
|
4
4
|
import UDExTableRowBase from "./TableRowBase.js";
|
|
5
5
|
import type UDExTableCell from "./TableCell.js";
|
|
6
6
|
import TableRowTemplate from "./TableRowTemplate.js";
|
|
7
|
+
import { UDExTableCellVerticalAlign } from "./types/Table.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @class
|
|
@@ -48,10 +49,21 @@ class UDExTableRow extends UDExTableRowBase {
|
|
|
48
49
|
@property({ type: Boolean })
|
|
49
50
|
highlighted?: boolean;
|
|
50
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Determines the vertical alignment of all cells in the row.
|
|
54
|
+
* Applies to every cell that does not define its own verticalAlign.
|
|
55
|
+
*
|
|
56
|
+
* @default "Center"
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
@property()
|
|
60
|
+
verticalAlign: `${UDExTableCellVerticalAlign}` = UDExTableCellVerticalAlign.Center;
|
|
61
|
+
|
|
51
62
|
onBeforeRendering(): void {
|
|
52
63
|
if (this.highlighted) {
|
|
53
64
|
this._setHighlightToCells();
|
|
54
65
|
}
|
|
66
|
+
this._setVerticalAlignToCells();
|
|
55
67
|
}
|
|
56
68
|
|
|
57
69
|
_setHighlightToCells(): void {
|
|
@@ -60,6 +72,14 @@ class UDExTableRow extends UDExTableRowBase {
|
|
|
60
72
|
});
|
|
61
73
|
}
|
|
62
74
|
|
|
75
|
+
_setVerticalAlignToCells(): void {
|
|
76
|
+
this.cellsInRow.forEach(cell => {
|
|
77
|
+
if (cell.verticalAlign === UDExTableCellVerticalAlign.Center) {
|
|
78
|
+
cell.verticalAlign = this.verticalAlign;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
63
83
|
get isGroup(): boolean {
|
|
64
84
|
return false;
|
|
65
85
|
}
|
package/src/TagGroup.ts
CHANGED
|
@@ -188,6 +188,7 @@ class UDExTagGroup extends UI5Element {
|
|
|
188
188
|
_nMoreBtn!: HTMLElement | null;
|
|
189
189
|
_resizeHandler: () => void;
|
|
190
190
|
_keydownCaptureHandler: (e: KeyboardEvent) => void;
|
|
191
|
+
_observedTokenizer?: Tokenizer;
|
|
191
192
|
|
|
192
193
|
constructor() {
|
|
193
194
|
super();
|
|
@@ -204,10 +205,18 @@ class UDExTagGroup extends UI5Element {
|
|
|
204
205
|
ResizeHandler.deregister(this, this._resizeHandler);
|
|
205
206
|
this.removeEventListener("keydown", this._keydownCaptureHandler, true);
|
|
206
207
|
this._nMoreBtn?.removeEventListener("keydown", this._nMoreKeyDownHandler);
|
|
208
|
+
this._observedTokenizer?.detachComponentStateFinalized(this._syncTokenizerAriaAfterRendering);
|
|
209
|
+
this._observedTokenizer = undefined;
|
|
207
210
|
}
|
|
208
211
|
|
|
209
212
|
onAfterRendering(): void {
|
|
210
213
|
this._tokenizer = this.tokenizer;
|
|
214
|
+
if (this._observedTokenizer !== this._tokenizer) {
|
|
215
|
+
this._observedTokenizer?.detachComponentStateFinalized(this._syncTokenizerAriaAfterRendering);
|
|
216
|
+
this._observedTokenizer = this._tokenizer;
|
|
217
|
+
this._observedTokenizer.attachComponentStateFinalized(this._syncTokenizerAriaAfterRendering);
|
|
218
|
+
}
|
|
219
|
+
this._syncTokenizerAriaAfterRendering();
|
|
211
220
|
const prevMoreBtn = this._nMoreBtn;
|
|
212
221
|
this._nMoreBtn = this._tokenizer.moreLink || null;
|
|
213
222
|
|
|
@@ -231,6 +240,29 @@ class UDExTagGroup extends UI5Element {
|
|
|
231
240
|
}
|
|
232
241
|
}
|
|
233
242
|
|
|
243
|
+
/** @private UI5 exposes an empty listbox when all tokens have overflowed. */
|
|
244
|
+
_syncTokenizerAriaAfterRendering = (): void => {
|
|
245
|
+
const tokenizer = this._observedTokenizer;
|
|
246
|
+
renderFinished().then(() => {
|
|
247
|
+
if (!this.isConnected || !tokenizer || this._observedTokenizer !== tokenizer) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const list = tokenizer.shadowRoot?.querySelector<HTMLElement>(".ui5-tokenizer--list");
|
|
251
|
+
if (!list) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const hasVisibleTokens = tokenizer._tokens.some(token => !token.overflows);
|
|
255
|
+
// Do not hide the tokenizer: its sibling "n more" button must stay
|
|
256
|
+
// accessible. Only the list with no exposed options is presentational.
|
|
257
|
+
list.setAttribute("role", hasVisibleTokens ? "listbox" : "presentation");
|
|
258
|
+
if (hasVisibleTokens) {
|
|
259
|
+
list.setAttribute("aria-label", tokenizer.tokenizerLabel);
|
|
260
|
+
} else {
|
|
261
|
+
["aria-label", "aria-description", "aria-disabled", "aria-readonly"].forEach(attribute => list.removeAttribute(attribute));
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
|
|
234
266
|
_nMoreKeyDownHandler = (e: KeyboardEvent) => {
|
|
235
267
|
if (isSpace(e) || isEnter(e)) {
|
|
236
268
|
this.showMoreItems();
|
package/src/TagGroupTemplate.tsx
CHANGED
|
@@ -53,7 +53,7 @@ function tag(this: UDExTagGroup, rootClass: string, item: any, index: number) {
|
|
|
53
53
|
key={index}
|
|
54
54
|
accessibleRole="option"
|
|
55
55
|
class={`${rootClass}__tag`}
|
|
56
|
-
data-id={
|
|
56
|
+
data-id={item.getAttribute("data-id") ?? item.id}
|
|
57
57
|
part={`token-${index}`}
|
|
58
58
|
read-only={this.isReadOrDisplayOnly}
|
|
59
59
|
id={`${this._id}-tag-group-tag`}
|
package/src/UploadItem.ts
CHANGED
|
@@ -16,15 +16,13 @@ import type UDExLink from "./Link.js";
|
|
|
16
16
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
17
17
|
import UploadItemTemplate from "./UploadItemTemplate.js";
|
|
18
18
|
import translate from "./utils/translate.js";
|
|
19
|
+
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
19
20
|
|
|
20
21
|
// Styles
|
|
21
22
|
import UploadItemCss from "./generated/themes/UploadItem.css.js";
|
|
22
23
|
import UDExFileUploadState from "./types/FileUploadState.js";
|
|
23
24
|
import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
24
25
|
|
|
25
|
-
const BreakpointSizeS: number = 979;
|
|
26
|
-
const BreakpointSizeM: number = 1279;
|
|
27
|
-
|
|
28
26
|
/**
|
|
29
27
|
* @class
|
|
30
28
|
*
|
|
@@ -182,8 +180,8 @@ class UDExUploadItem extends UDExListItem {
|
|
|
182
180
|
}
|
|
183
181
|
|
|
184
182
|
_handleResize() {
|
|
185
|
-
this._buttonSize =
|
|
186
|
-
this._breakpointL =
|
|
183
|
+
this._buttonSize = BreakpointUtils.isAtMost("S") ? UDExButtonSize.Medium : UDExButtonSize.Large;
|
|
184
|
+
this._breakpointL = BreakpointUtils.isAtLeast("L");
|
|
187
185
|
this._breakpointM = !this._breakpointL ? true : !this._breakpointL && this.uploadState === UDExFileUploadState.Uploaded;
|
|
188
186
|
}
|
|
189
187
|
|