@sapudex/web-components 2.59.0 → 2.61.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/Carousel.cy.tsx +46 -0
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +52 -3
- package/cypress/specs/SelectBox.cy.tsx +390 -252
- package/cypress/specs/SideNavigation.cy.tsx +509 -0
- package/cypress/specs/Table.cy.tsx +90 -0
- package/cypress/support/component-imports.instrumented.ts +6 -0
- package/cypress/support/component-imports.src.ts +6 -0
- package/dist/Carousel.d.ts +1 -0
- package/dist/Carousel.js +16 -1
- package/dist/Carousel.js.map +1 -1
- package/dist/ListGroupHeaderBase.js +9 -0
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListGroupHeaderTemplate.js +15 -1
- package/dist/ListGroupHeaderTemplate.js.map +1 -1
- package/dist/MastheadCountrySelectorTemplate.js +1 -1
- package/dist/MastheadCountrySelectorTemplate.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/SearchableListBaseTemplate.js +0 -1
- 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 +7 -2
- package/dist/SelectBase.js +27 -39
- package/dist/SelectBase.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 +67 -0
- package/dist/SideNavigationItem.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 +103 -0
- package/dist/SideNavigationSubItem.js.map +1 -1
- package/dist/SideNavigationSubItemTemplate.d.ts +2 -0
- package/dist/SideNavigationSubItemTemplate.js +10 -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/UploadItem.js +3 -4
- package/dist/UploadItem.js.map +1 -1
- package/dist/assets/{InputSuggestions-CloTVyrf.js → InputSuggestions-1OnUn6pM.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-DpquSMb2.js → ListItemStandardExpandableTextTemplate-CoBAMp_v.js} +1 -1
- package/dist/assets/{bundle.esm-Cyz8a5IX.js → bundle.esm-BqaVWFKf.js} +233 -233
- 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/FeedItem.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/Pagination.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/SideNavigationMobileDropdown.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 +155 -12
- package/dist/custom-elements.json +144 -19
- 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/FeedItem.css.d.ts +1 -1
- package/dist/generated/themes/FeedItem.css.js +1 -1
- package/dist/generated/themes/FeedItem.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/Pagination.css.d.ts +1 -1
- package/dist/generated/themes/Pagination.css.js +1 -1
- package/dist/generated/themes/Pagination.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/SideNavigationMobileDropdown.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.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/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 +44 -3
- package/dist/web-types.json +80 -6
- package/package.json +1 -1
- package/run-cypress.js +8 -1
- package/src/Carousel.ts +17 -1
- package/src/ListGroupHeaderBase.ts +9 -0
- package/src/ListGroupHeaderTemplate.tsx +15 -3
- package/src/MastheadCountrySelectorTemplate.tsx +3 -2
- package/src/Pagination.ts +2 -3
- package/src/SearchableListBaseTemplate.tsx +0 -1
- package/src/SecondaryNavigation.ts +2 -1
- package/src/SecondaryNavigationItem.ts +14 -6
- package/src/SecondaryNavigationTemplate.tsx +4 -6
- package/src/SelectBase.ts +30 -47
- package/src/SideNavigation.ts +35 -0
- package/src/SideNavigationItem.ts +75 -0
- package/src/SideNavigationMobileTemplate.tsx +2 -1
- package/src/SideNavigationSubItem.ts +117 -1
- package/src/SideNavigationSubItemTemplate.tsx +56 -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/UploadItem.ts +3 -5
- 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/FeedItem.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/Pagination.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/SideNavigationMobileDropdown.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/themes/AccordionSpotlight.css +4 -1
- package/src/themes/Contact.css +1 -1
- package/src/themes/EventRibbon.css +4 -4
- package/src/themes/Feed.css +2 -2
- package/src/themes/FeedItem.css +2 -1
- 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 +6 -4
- 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/Pagination.css +14 -5
- 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 +46 -18
- package/src/themes/SideNavigationMobile.css +6 -7
- package/src/themes/SideNavigationMobileDropdown.css +10 -3
- package/src/themes/SideNavigationSubItem.css +73 -17
- package/src/themes/TabNavigation.css +2 -2
- package/src/themes/Table.css +1 -1
- 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
|
@@ -3312,7 +3312,14 @@
|
|
|
3312
3312
|
{
|
|
3313
3313
|
"name": "max-dropdown-height",
|
|
3314
3314
|
"description": "Defines the height of the dropdown opened on mobile screen.",
|
|
3315
|
-
"values": [
|
|
3315
|
+
"values": [
|
|
3316
|
+
{ "name": "`${number}px`" },
|
|
3317
|
+
{ "name": "`${number}vh`" },
|
|
3318
|
+
{ "name": "`${number}vw`" },
|
|
3319
|
+
{ "name": "`${number}rem`" },
|
|
3320
|
+
{ "name": "`${number}em`" },
|
|
3321
|
+
{ "name": "`${number}%`" }
|
|
3322
|
+
]
|
|
3316
3323
|
},
|
|
3317
3324
|
{
|
|
3318
3325
|
"name": "mobile-menu-opener-aria-label",
|
|
@@ -3947,6 +3954,16 @@
|
|
|
3947
3954
|
"name": "is-fixed-in-place",
|
|
3948
3955
|
"description": "Defines if Side Navigation is fixed in place or scrollable with the content.",
|
|
3949
3956
|
"values": []
|
|
3957
|
+
},
|
|
3958
|
+
{
|
|
3959
|
+
"name": "placement",
|
|
3960
|
+
"description": "Defines which side the navigation panel is on.",
|
|
3961
|
+
"values": [{ "name": "Left" }, { "name": "Right" }]
|
|
3962
|
+
},
|
|
3963
|
+
{
|
|
3964
|
+
"name": "variant",
|
|
3965
|
+
"description": "Defines the variant of the component.",
|
|
3966
|
+
"values": [{ "name": "Full" }, { "name": "Content" }]
|
|
3950
3967
|
}
|
|
3951
3968
|
],
|
|
3952
3969
|
"references": []
|
|
@@ -3971,8 +3988,14 @@
|
|
|
3971
3988
|
},
|
|
3972
3989
|
{
|
|
3973
3990
|
"name": "udex-side-navigation-sub-item",
|
|
3974
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-side-navigation-sub-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/SideNavigationSubItem.js\";</code>\n---\n",
|
|
3975
|
-
"attributes": [
|
|
3991
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-side-navigation-sub-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/SideNavigationSubItem.js\";</code>\n---\n\n\n### **Slots:**\n - **default** - Defines the level-3 sub-items slotted inside this sub-item.",
|
|
3992
|
+
"attributes": [
|
|
3993
|
+
{
|
|
3994
|
+
"name": "expanded",
|
|
3995
|
+
"description": "Defines whether the sub-item is expanded (shows level-3 children).",
|
|
3996
|
+
"values": []
|
|
3997
|
+
}
|
|
3998
|
+
],
|
|
3976
3999
|
"references": []
|
|
3977
4000
|
},
|
|
3978
4001
|
{
|
|
@@ -4409,6 +4432,15 @@
|
|
|
4409
4432
|
"name": "icon",
|
|
4410
4433
|
"description": "Defines the name of the UI5 Icon, that will be displayed at the beginning of the content.",
|
|
4411
4434
|
"values": []
|
|
4435
|
+
},
|
|
4436
|
+
{
|
|
4437
|
+
"name": "vertical-align",
|
|
4438
|
+
"description": "Determines the vertical alignment of the cell content.",
|
|
4439
|
+
"values": [
|
|
4440
|
+
{ "name": "Top" },
|
|
4441
|
+
{ "name": "Center" },
|
|
4442
|
+
{ "name": "Bottom" }
|
|
4443
|
+
]
|
|
4412
4444
|
}
|
|
4413
4445
|
],
|
|
4414
4446
|
"references": []
|
|
@@ -4487,6 +4519,15 @@
|
|
|
4487
4519
|
"name": "interactive",
|
|
4488
4520
|
"description": "Defines the interactive state of the row.",
|
|
4489
4521
|
"values": []
|
|
4522
|
+
},
|
|
4523
|
+
{
|
|
4524
|
+
"name": "vertical-align",
|
|
4525
|
+
"description": "Determines the vertical alignment of all cells in the row.\nApplies to every cell that does not define its own verticalAlign.",
|
|
4526
|
+
"values": [
|
|
4527
|
+
{ "name": "Top" },
|
|
4528
|
+
{ "name": "Center" },
|
|
4529
|
+
{ "name": "Bottom" }
|
|
4530
|
+
]
|
|
4490
4531
|
}
|
|
4491
4532
|
],
|
|
4492
4533
|
"references": []
|
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@sapudex/web-components",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.61.0",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -7687,7 +7687,9 @@
|
|
|
7687
7687
|
{
|
|
7688
7688
|
"name": "max-dropdown-height",
|
|
7689
7689
|
"description": "Defines the height of the dropdown opened on mobile screen.",
|
|
7690
|
-
"value": {
|
|
7690
|
+
"value": {
|
|
7691
|
+
"type": "`${number}px` | `${number}vh` | `${number}vw` | `${number}rem` | `${number}em` | `${number}%`"
|
|
7692
|
+
}
|
|
7691
7693
|
},
|
|
7692
7694
|
{
|
|
7693
7695
|
"name": "mobile-menu-opener-aria-label",
|
|
@@ -7733,7 +7735,9 @@
|
|
|
7733
7735
|
{
|
|
7734
7736
|
"name": "max-dropdown-height",
|
|
7735
7737
|
"description": "Defines the height of the dropdown opened on mobile screen.",
|
|
7736
|
-
"value": {
|
|
7738
|
+
"value": {
|
|
7739
|
+
"type": "`${number}px` | `${number}vh` | `${number}vw` | `${number}rem` | `${number}em` | `${number}%`"
|
|
7740
|
+
}
|
|
7737
7741
|
},
|
|
7738
7742
|
{
|
|
7739
7743
|
"name": "mobile-menu-opener-aria-label",
|
|
@@ -9133,6 +9137,19 @@
|
|
|
9133
9137
|
"name": "is-fixed-in-place",
|
|
9134
9138
|
"description": "Defines if Side Navigation is fixed in place or scrollable with the content.",
|
|
9135
9139
|
"value": { "type": "boolean", "default": "false" }
|
|
9140
|
+
},
|
|
9141
|
+
{
|
|
9142
|
+
"name": "placement",
|
|
9143
|
+
"description": "Defines which side the navigation panel is on.",
|
|
9144
|
+
"value": { "type": "\"Left\" | \"Right\"", "default": "\"Left\"" }
|
|
9145
|
+
},
|
|
9146
|
+
{
|
|
9147
|
+
"name": "variant",
|
|
9148
|
+
"description": "Defines the variant of the component.",
|
|
9149
|
+
"value": {
|
|
9150
|
+
"type": "\"Full\" | \"Content\"",
|
|
9151
|
+
"default": "\"Full\""
|
|
9152
|
+
}
|
|
9136
9153
|
}
|
|
9137
9154
|
],
|
|
9138
9155
|
"events": [],
|
|
@@ -9142,6 +9159,16 @@
|
|
|
9142
9159
|
"name": "is-fixed-in-place",
|
|
9143
9160
|
"description": "Defines if Side Navigation is fixed in place or scrollable with the content.",
|
|
9144
9161
|
"value": { "type": "boolean" }
|
|
9162
|
+
},
|
|
9163
|
+
{
|
|
9164
|
+
"name": "placement",
|
|
9165
|
+
"description": "Defines which side the navigation panel is on.",
|
|
9166
|
+
"value": { "type": "\"Left\" | \"Right\"" }
|
|
9167
|
+
},
|
|
9168
|
+
{
|
|
9169
|
+
"name": "variant",
|
|
9170
|
+
"description": "Defines the variant of the component.",
|
|
9171
|
+
"value": { "type": "\"Full\" | \"Content\"" }
|
|
9145
9172
|
}
|
|
9146
9173
|
],
|
|
9147
9174
|
"events": []
|
|
@@ -9183,11 +9210,32 @@
|
|
|
9183
9210
|
},
|
|
9184
9211
|
{
|
|
9185
9212
|
"name": "udex-side-navigation-sub-item",
|
|
9186
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-side-navigation-sub-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/SideNavigationSubItem.js\";</code>\n---\n",
|
|
9213
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-side-navigation-sub-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/SideNavigationSubItem.js\";</code>\n---\n\n\n### **Slots:**\n - **default** - Defines the level-3 sub-items slotted inside this sub-item.",
|
|
9187
9214
|
"doc-url": "",
|
|
9188
|
-
"attributes": [
|
|
9215
|
+
"attributes": [
|
|
9216
|
+
{
|
|
9217
|
+
"name": "expanded",
|
|
9218
|
+
"description": "Defines whether the sub-item is expanded (shows level-3 children).",
|
|
9219
|
+
"value": { "type": "boolean", "default": "false" }
|
|
9220
|
+
}
|
|
9221
|
+
],
|
|
9222
|
+
"slots": [
|
|
9223
|
+
{
|
|
9224
|
+
"name": "default",
|
|
9225
|
+
"description": "Defines the level-3 sub-items slotted inside this sub-item."
|
|
9226
|
+
}
|
|
9227
|
+
],
|
|
9189
9228
|
"events": [],
|
|
9190
|
-
"js": {
|
|
9229
|
+
"js": {
|
|
9230
|
+
"properties": [
|
|
9231
|
+
{
|
|
9232
|
+
"name": "expanded",
|
|
9233
|
+
"description": "Defines whether the sub-item is expanded (shows level-3 children).",
|
|
9234
|
+
"value": { "type": "boolean" }
|
|
9235
|
+
}
|
|
9236
|
+
],
|
|
9237
|
+
"events": []
|
|
9238
|
+
}
|
|
9191
9239
|
},
|
|
9192
9240
|
{
|
|
9193
9241
|
"name": "udex-slider",
|
|
@@ -10088,6 +10136,14 @@
|
|
|
10088
10136
|
"name": "icon",
|
|
10089
10137
|
"description": "Defines the name of the UI5 Icon, that will be displayed at the beginning of the content.",
|
|
10090
10138
|
"value": { "type": "string | undefined", "default": "undefined" }
|
|
10139
|
+
},
|
|
10140
|
+
{
|
|
10141
|
+
"name": "vertical-align",
|
|
10142
|
+
"description": "Determines the vertical alignment of the cell content.",
|
|
10143
|
+
"value": {
|
|
10144
|
+
"type": "\"Top\" | \"Center\" | \"Bottom\"",
|
|
10145
|
+
"default": "\"Center\""
|
|
10146
|
+
}
|
|
10091
10147
|
}
|
|
10092
10148
|
],
|
|
10093
10149
|
"slots": [
|
|
@@ -10110,6 +10166,11 @@
|
|
|
10110
10166
|
"name": "icon",
|
|
10111
10167
|
"description": "Defines the name of the UI5 Icon, that will be displayed at the beginning of the content.",
|
|
10112
10168
|
"value": { "type": "string | undefined" }
|
|
10169
|
+
},
|
|
10170
|
+
{
|
|
10171
|
+
"name": "vertical-align",
|
|
10172
|
+
"description": "Determines the vertical alignment of the cell content.",
|
|
10173
|
+
"value": { "type": "\"Top\" | \"Center\" | \"Bottom\"" }
|
|
10113
10174
|
}
|
|
10114
10175
|
],
|
|
10115
10176
|
"events": []
|
|
@@ -10256,6 +10317,14 @@
|
|
|
10256
10317
|
"name": "interactive",
|
|
10257
10318
|
"description": "Defines the interactive state of the row.",
|
|
10258
10319
|
"value": { "type": "boolean | undefined", "default": "false" }
|
|
10320
|
+
},
|
|
10321
|
+
{
|
|
10322
|
+
"name": "vertical-align",
|
|
10323
|
+
"description": "Determines the vertical alignment of all cells in the row.\nApplies to every cell that does not define its own verticalAlign.",
|
|
10324
|
+
"value": {
|
|
10325
|
+
"type": "\"Top\" | \"Center\" | \"Bottom\"",
|
|
10326
|
+
"default": "\"Center\""
|
|
10327
|
+
}
|
|
10259
10328
|
}
|
|
10260
10329
|
],
|
|
10261
10330
|
"slots": [
|
|
@@ -10276,6 +10345,11 @@
|
|
|
10276
10345
|
"name": "interactive",
|
|
10277
10346
|
"description": "Defines the interactive state of the row.",
|
|
10278
10347
|
"value": { "type": "boolean | undefined" }
|
|
10348
|
+
},
|
|
10349
|
+
{
|
|
10350
|
+
"name": "vertical-align",
|
|
10351
|
+
"description": "Determines the vertical alignment of all cells in the row.\nApplies to every cell that does not define its own verticalAlign.",
|
|
10352
|
+
"value": { "type": "\"Top\" | \"Center\" | \"Bottom\"" }
|
|
10279
10353
|
}
|
|
10280
10354
|
],
|
|
10281
10355
|
"events": []
|
package/package.json
CHANGED
package/run-cypress.js
CHANGED
|
@@ -9,4 +9,11 @@ const specArg = inputSpec
|
|
|
9
9
|
|
|
10
10
|
const command = `npx cypress run --component --browser chrome ${specArg}`;
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// ELECTRON_RUN_AS_NODE is set by VS Code / Claude Code and causes the Cypress
|
|
13
|
+
// Electron binary to start as a plain Node process instead of an Electron app,
|
|
14
|
+
// breaking its internal path resolution. Remove it so Cypress starts correctly
|
|
15
|
+
// regardless of whether this script is invoked from an IDE terminal or a shell.
|
|
16
|
+
const env = { ...process.env };
|
|
17
|
+
delete env.ELECTRON_RUN_AS_NODE;
|
|
18
|
+
|
|
19
|
+
execSync(command, { stdio: "inherit", env });
|
package/src/Carousel.ts
CHANGED
|
@@ -219,6 +219,7 @@ class UDExCarousel extends UI5Element {
|
|
|
219
219
|
_autoplayMinTimeBetweenToggle = 250;
|
|
220
220
|
_autoplayManualStop = false;
|
|
221
221
|
_resizeHandler: ResizeObserverCallback;
|
|
222
|
+
_resizeRafHandle: number | null = null;
|
|
222
223
|
|
|
223
224
|
constructor() {
|
|
224
225
|
super();
|
|
@@ -238,6 +239,11 @@ class UDExCarousel extends UI5Element {
|
|
|
238
239
|
onExitDOM(): void {
|
|
239
240
|
ResizeHandler.deregister(this, this._resizeHandler);
|
|
240
241
|
|
|
242
|
+
if (this._resizeRafHandle !== null) {
|
|
243
|
+
cancelAnimationFrame(this._resizeRafHandle);
|
|
244
|
+
this._resizeRafHandle = null;
|
|
245
|
+
}
|
|
246
|
+
|
|
241
247
|
if (this._autoplayInterval) {
|
|
242
248
|
clearInterval(this._autoplayInterval);
|
|
243
249
|
}
|
|
@@ -248,7 +254,17 @@ class UDExCarousel extends UI5Element {
|
|
|
248
254
|
}
|
|
249
255
|
|
|
250
256
|
_onResize(): void {
|
|
251
|
-
this.
|
|
257
|
+
if (this._resizeRafHandle !== null) {
|
|
258
|
+
cancelAnimationFrame(this._resizeRafHandle);
|
|
259
|
+
}
|
|
260
|
+
// Defer until after the inner UI5 carousel has processed its own resize
|
|
261
|
+
// (outer element's ResizeObserver fires before inner element's, so the inner
|
|
262
|
+
// carousel's effectiveItemsPerPage and _currentPageIndex are still stale here)
|
|
263
|
+
this._resizeRafHandle = requestAnimationFrame(() => {
|
|
264
|
+
this._resizeRafHandle = null;
|
|
265
|
+
this._hasManyPages = this._carousel?.hasManyPages ?? false;
|
|
266
|
+
this._calculateDisabledButtonsState();
|
|
267
|
+
});
|
|
252
268
|
}
|
|
253
269
|
|
|
254
270
|
_autoplayLoop = () => {
|
|
@@ -233,6 +233,15 @@ class UDExListGroupHeaderBase extends UDExListItemBase {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
get singleCollapsibleHeaderRole(): string {
|
|
236
|
+
// In aria-activedescendant mode (SelectBox/CountrySelector) the HOST element
|
|
237
|
+
// carries the treeitem role + state (set via SearchableListBaseTemplate's
|
|
238
|
+
// hostAriaAttrs). The inner focusable div must then be presentational, otherwise
|
|
239
|
+
// it is a second treeitem nested inside the host treeitem with no owning
|
|
240
|
+
// tree/group — the "role not inside the required context" axe/SiteImprove error.
|
|
241
|
+
// Mirrors UDExListItem.roleItem, which is presentational under _useHostAriaRole.
|
|
242
|
+
if (this._useHostAriaRole) {
|
|
243
|
+
return "presentation";
|
|
244
|
+
}
|
|
236
245
|
return this._treeMode ? "treeitem" : "button";
|
|
237
246
|
}
|
|
238
247
|
|
|
@@ -85,6 +85,20 @@ function SingleGroupHeaderCollapsible(this: UDExListGroupHeader) {
|
|
|
85
85
|
// (aria-activedescendant, _useHostAriaRole) and non-tree modes, which keep the flat
|
|
86
86
|
// structure with the content region emitted as a sibling by the template body.
|
|
87
87
|
const nested = this.isTreeAccessibleRole && !this._useHostAriaRole;
|
|
88
|
+
// In aria-activedescendant mode (SelectBox) the HOST element is the treeitem and
|
|
89
|
+
// already carries aria-expanded + the accessible name. This inner div must then be
|
|
90
|
+
// presentational (singleCollapsibleHeaderRole) and must NOT duplicate those states,
|
|
91
|
+
// otherwise it is a second treeitem nested inside the host treeitem with no owning
|
|
92
|
+
// tree/group (axe/SiteImprove aria-required-parent). It stays focusable, though:
|
|
93
|
+
// clicking the collapsible-header body relies on it receiving DOM focus to redirect
|
|
94
|
+
// focus back to the combobox input — the same focusable, role="presentation" shape
|
|
95
|
+
// the list-item [part=item] divs already use. The real-focus (FilterMenu) path keeps
|
|
96
|
+
// the treeitem semantics plus controls/labelling on this div.
|
|
97
|
+
const headerAriaAttrs = this._useHostAriaRole ? {} : {
|
|
98
|
+
"aria-expanded": this.expanded,
|
|
99
|
+
"aria-controls": this.ariaControlsId,
|
|
100
|
+
"aria-labelledby": this.collapsibleHeaderLabelledBy,
|
|
101
|
+
};
|
|
88
102
|
return (
|
|
89
103
|
<div
|
|
90
104
|
class={`udex-list__group-content ${nested ? "udex-list__group-content--nested " : ""}udex-list__group-header-wrap ${this.sizeClass}`}
|
|
@@ -93,9 +107,7 @@ function SingleGroupHeaderCollapsible(this: UDExListGroupHeader) {
|
|
|
93
107
|
role={this.singleCollapsibleHeaderRole as AriaRole}
|
|
94
108
|
tabIndex={0}
|
|
95
109
|
onKeyDown={this.handleKeyDown}
|
|
96
|
-
|
|
97
|
-
aria-controls={this.ariaControlsId}
|
|
98
|
-
aria-labelledby={this.collapsibleHeaderLabelledBy}
|
|
110
|
+
{...headerAriaAttrs}
|
|
99
111
|
_tab-index={Number(this._effectiveTabIndex)}>
|
|
100
112
|
{nested ? (
|
|
101
113
|
<>
|
|
@@ -45,12 +45,13 @@ function activeRegionView(this: UDExMastheadCountrySelector) {
|
|
|
45
45
|
)}
|
|
46
46
|
<div class="udex-masthead-country-selector__list-container">
|
|
47
47
|
<div class="udex-masthead-country-selector__list-wrap" onScroll={this.handleCountryListShadowVisible}>
|
|
48
|
-
<ul class="udex-masthead-country-selector__list udex-masthead-country-selector__list_countries"
|
|
48
|
+
<ul class="udex-masthead-country-selector__list udex-masthead-country-selector__list_countries">
|
|
49
49
|
{this._activeCountries.map((country, index) => (
|
|
50
|
-
<li
|
|
50
|
+
<li key={index}>
|
|
51
51
|
<UDExMastheadMenuItem
|
|
52
52
|
class="udex-masthead-country-selector__item udex-masthead-country-selector__item_countries"
|
|
53
53
|
onClick={this.handleCountryClick as any}
|
|
54
|
+
accessible-role="link"
|
|
54
55
|
url={country.url}
|
|
55
56
|
label={country.displayTitle}
|
|
56
57
|
index={index}
|
package/src/Pagination.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from "./generated/i18n/i18n-defaults.js";
|
|
19
19
|
import Button from "./Button.js";
|
|
20
20
|
import translate from "./utils/translate.js";
|
|
21
|
+
import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
21
22
|
|
|
22
23
|
// Template
|
|
23
24
|
import PaginationTemplate from "./PaginationTemplate.js";
|
|
@@ -149,8 +150,6 @@ class UDExPagination extends UI5Element {
|
|
|
149
150
|
@i18n("@sapudex/web-components")
|
|
150
151
|
static i18nBundle: I18nBundle;
|
|
151
152
|
|
|
152
|
-
static readonly AUTO_DISPLAY_BREAKPOINT = 980;
|
|
153
|
-
|
|
154
153
|
_pages: Page[];
|
|
155
154
|
_visiblePages: Page[];
|
|
156
155
|
|
|
@@ -200,7 +199,7 @@ class UDExPagination extends UI5Element {
|
|
|
200
199
|
}
|
|
201
200
|
|
|
202
201
|
get _displayType(): `${UDExDisplayType}` {
|
|
203
|
-
return
|
|
202
|
+
return BreakpointUtils.isAbove("M")
|
|
204
203
|
? UDExDisplayType.desktop
|
|
205
204
|
: UDExDisplayType.mobile;
|
|
206
205
|
}
|
|
@@ -179,7 +179,6 @@ function renderListItem(
|
|
|
179
179
|
const effectiveRole = accessibleRole ?? (role !== "none" ? role : undefined) ?? "option";
|
|
180
180
|
const hostRole = activeDescendantMode ? (effectiveRole as AriaRole) : (role as AriaRole);
|
|
181
181
|
const hostAriaAttrs = activeDescendantMode ? {
|
|
182
|
-
"aria-label": "test",
|
|
183
182
|
// option role (listbox): always aria-selected; treeitem + MultiSelect: aria-checked only
|
|
184
183
|
"aria-selected": (effectiveRole !== "treeitem" || !modeMultiSelect) ? (item.selected ? "true" : "false") as string : undefined,
|
|
185
184
|
"aria-checked": (effectiveRole === "treeitem" && !!modeMultiSelect) ? (item.indeterminate ? "mixed" : (item.selected ? "true" : "false")) as string : undefined,
|
|
@@ -21,6 +21,7 @@ import { BreakpointUtils } from "./utils/Breakpoints.js";
|
|
|
21
21
|
import parseArrayFromString from "./utils/parseArrayFromString.js";
|
|
22
22
|
import AnalyticsName from "./types/AnalyticsName.js";
|
|
23
23
|
import translate from "./utils/translate.js";
|
|
24
|
+
import type { RelativeValue } from "./utils/parseRelativeUnits.js";
|
|
24
25
|
|
|
25
26
|
// Styles
|
|
26
27
|
import SecondaryNavigationCss from "./generated/themes/SecondaryNavigation.css.js";
|
|
@@ -180,7 +181,7 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
180
181
|
* @public
|
|
181
182
|
*/
|
|
182
183
|
@property({ type: String })
|
|
183
|
-
maxDropdownHeight!:
|
|
184
|
+
maxDropdownHeight!: RelativeValue;
|
|
184
185
|
|
|
185
186
|
@property({ type: Boolean, noAttribute: true })
|
|
186
187
|
_selectedMore!: boolean;
|
|
@@ -32,6 +32,11 @@ type UDExSecondaryNavigationItemSubItemClickEventDetail = {
|
|
|
32
32
|
originalEvent: PointerEvent | KeyboardEvent
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
const DROPDOWN_MAX_HEIGHT_VAR = {
|
|
36
|
+
desktop: "--udex-secondary-navigation-item-dropdown-desktop-max-height",
|
|
37
|
+
mobile: "--udex-secondary-navigation-item-dropdown-mobile-max-height",
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
35
40
|
/**
|
|
36
41
|
* @class
|
|
37
42
|
*
|
|
@@ -394,24 +399,27 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
394
399
|
setDesktopDropdownMaxHeight(): void {
|
|
395
400
|
const { top } = this.dropdown.getBoundingClientRect();
|
|
396
401
|
const maxHeight = window.innerHeight - top - DESKTOP_DROPDOWN_BOTTOM_GAP;
|
|
397
|
-
this.style.setProperty(
|
|
402
|
+
this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.desktop, `${maxHeight}px`);
|
|
398
403
|
}
|
|
399
404
|
|
|
400
405
|
setMobileDropdownMaxHeight(): void {
|
|
401
406
|
if (!this._maxHeight || this._dropdownMaxHeightExceeds || !this.heightSatisfiesType) {
|
|
402
|
-
const
|
|
403
|
-
const
|
|
404
|
-
|
|
407
|
+
const { clientHeight } = this.shadowRoot!.querySelector(".udex-secondary-navigation__item")!;
|
|
408
|
+
const { top } = this.getBoundingClientRect();
|
|
409
|
+
const maxDropdownHeight = window.innerHeight - top - clientHeight;
|
|
410
|
+
|
|
411
|
+
this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${maxDropdownHeight}px`);
|
|
405
412
|
return;
|
|
406
413
|
}
|
|
407
414
|
|
|
408
|
-
this.style.setProperty(
|
|
415
|
+
this.style.setProperty(DROPDOWN_MAX_HEIGHT_VAR.mobile, `${this._maxHeight}`);
|
|
409
416
|
}
|
|
410
417
|
|
|
411
418
|
get _dropdownMaxHeightExceeds(): boolean {
|
|
412
419
|
const normalizedHeight = parseRelativeUnits(this._maxHeight, this.dropdown);
|
|
420
|
+
const { top } = this.getBoundingClientRect();
|
|
413
421
|
const secondaryNavigationMobileTriggerHeight = this.shadowRoot!.querySelector(".udex-secondary-navigation__item")!.clientHeight;
|
|
414
|
-
return normalizedHeight >= window.innerHeight - secondaryNavigationMobileTriggerHeight;
|
|
422
|
+
return normalizedHeight >= window.innerHeight - top - secondaryNavigationMobileTriggerHeight;
|
|
415
423
|
}
|
|
416
424
|
|
|
417
425
|
get heightSatisfiesType(): boolean {
|
|
@@ -41,7 +41,7 @@ export default function SecondaryNavigationTemplate(this: UDExSecondaryNavigatio
|
|
|
41
41
|
subItems={item.items ?? []}
|
|
42
42
|
onui5-sub-item-click={this.handleSubItemClick}
|
|
43
43
|
onui5-nav-item-click={this.handleItemClick}
|
|
44
|
-
{
|
|
44
|
+
_navItemsLength={this.visibleItems.length}>
|
|
45
45
|
</UDExSecondaryNavigationItem>
|
|
46
46
|
</li>
|
|
47
47
|
))}
|
|
@@ -53,7 +53,7 @@ export default function SecondaryNavigationTemplate(this: UDExSecondaryNavigatio
|
|
|
53
53
|
onui5-nav-item-click={this.handleItemClick}
|
|
54
54
|
label={this.moreButtonText}
|
|
55
55
|
subItems={this._overflowItems}
|
|
56
|
-
{
|
|
56
|
+
_navItemsLength={this.visibleItems.length}>
|
|
57
57
|
</UDExSecondaryNavigationItem>
|
|
58
58
|
</li>
|
|
59
59
|
)}
|
|
@@ -75,10 +75,8 @@ export default function SecondaryNavigationTemplate(this: UDExSecondaryNavigatio
|
|
|
75
75
|
onui5-sub-item-click={this.handleSubItemClick}
|
|
76
76
|
onKeyDown={this.handleKeyDown}
|
|
77
77
|
subItems={this.parsedItems}
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
"_max-height": this.maxDropdownHeight
|
|
81
|
-
}}>
|
|
78
|
+
_maxHeight={this.maxDropdownHeight}
|
|
79
|
+
_is-mobile-menu-opener={true}>
|
|
82
80
|
{this.hasMobileButtonsSlot && (
|
|
83
81
|
<div className="udex-secondary-navigation__buttons" onClick={this.handleMobileButtonsClick}>
|
|
84
82
|
<slot name="buttons"></slot>
|
package/src/SelectBase.ts
CHANGED
|
@@ -353,6 +353,31 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
353
353
|
this._setActiveDescendant(items[firstIndex], false);
|
|
354
354
|
}
|
|
355
355
|
|
|
356
|
+
/**
|
|
357
|
+
* Establishes the initial aria-activedescendant when the dropdown opens, without moving
|
|
358
|
+
* DOM focus. In SingleSelect mode the currently selected item is activated so reopening
|
|
359
|
+
* restores focus to it; when nothing is selected (or in other modes) the first navigable
|
|
360
|
+
* item is activated instead.
|
|
361
|
+
*/
|
|
362
|
+
_activateSelectedOrFirstItem(): void {
|
|
363
|
+
const items = this._list?.getKeyboardNavigationItems();
|
|
364
|
+
if (!items?.length) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;
|
|
369
|
+
const selectedIndex = this.modeSingleSelect
|
|
370
|
+
? items.findIndex(item => item.selected && !item.isGroup)
|
|
371
|
+
: -1;
|
|
372
|
+
const targetIndex = selectedIndex >= 0 ? selectedIndex : firstIndex;
|
|
373
|
+
|
|
374
|
+
this._list.setTabIndexByIndex(items, targetIndex);
|
|
375
|
+
this._setActiveDescendant(items[targetIndex], false);
|
|
376
|
+
if (this.showImageFlags) {
|
|
377
|
+
this.handleImagePosition(items, targetIndex);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
356
381
|
/**
|
|
357
382
|
* Navigates to the item at the given index, updating aria-activedescendant and _selectedOption.
|
|
358
383
|
*/
|
|
@@ -490,48 +515,6 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
490
515
|
this._navigateToIndex(items, firstIndex);
|
|
491
516
|
}
|
|
492
517
|
|
|
493
|
-
handleDownKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {
|
|
494
|
-
const nextIndex = currentSelectedIndex + 1;
|
|
495
|
-
const nextSelectIndex = nextIndex > lastItemIndex ? 0 : nextIndex;
|
|
496
|
-
const isNonInteractive = items[nextSelectIndex].nonInteractive && !items[nextSelectIndex].collapsible;
|
|
497
|
-
|
|
498
|
-
if (isNonInteractive) {
|
|
499
|
-
const skipIndex = nextSelectIndex + 1 > lastItemIndex ? 0 : nextSelectIndex + 1;
|
|
500
|
-
this._selectedOption = items[skipIndex].label;
|
|
501
|
-
if (this.showImageFlags) {
|
|
502
|
-
this.handleImagePosition(items, skipIndex);
|
|
503
|
-
}
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
this._selectedOption = items[nextSelectIndex].label;
|
|
508
|
-
|
|
509
|
-
if (this.showImageFlags) {
|
|
510
|
-
this.handleImagePosition(items, nextSelectIndex);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
handleUpKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {
|
|
515
|
-
const prevIndex = currentSelectedIndex - 1;
|
|
516
|
-
const previousSelectIndex = prevIndex < 0 ? lastItemIndex : prevIndex;
|
|
517
|
-
const isNonInteractive = items[previousSelectIndex].nonInteractive && !items[previousSelectIndex].collapsible;
|
|
518
|
-
|
|
519
|
-
if (isNonInteractive) {
|
|
520
|
-
const skipIndex = previousSelectIndex === 0 ? lastItemIndex : previousSelectIndex - 1;
|
|
521
|
-
this._selectedOption = items[skipIndex].label;
|
|
522
|
-
if (this.showImageFlags) {
|
|
523
|
-
this.handleImagePosition(items, skipIndex);
|
|
524
|
-
}
|
|
525
|
-
return;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
this._selectedOption = items[previousSelectIndex].label;
|
|
529
|
-
|
|
530
|
-
if (this.showImageFlags) {
|
|
531
|
-
this.handleImagePosition(items, previousSelectIndex);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
|
|
535
518
|
handleLetterKeyPress(e: KeyboardEvent) {
|
|
536
519
|
e.stopPropagation();
|
|
537
520
|
e.preventDefault();
|
|
@@ -638,10 +621,7 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
638
621
|
if (isDownAndPopoverClosed) {
|
|
639
622
|
e.preventDefault();
|
|
640
623
|
this.openDropdown();
|
|
641
|
-
this.
|
|
642
|
-
if (this.showImageFlags) {
|
|
643
|
-
this.handleImagePosition(items, firstIndex);
|
|
644
|
-
}
|
|
624
|
+
this._activateSelectedOrFirstItem();
|
|
645
625
|
return;
|
|
646
626
|
}
|
|
647
627
|
|
|
@@ -740,7 +720,7 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
740
720
|
}
|
|
741
721
|
|
|
742
722
|
// Sync _selectedOption display for the first item (used when popover just opened via click).
|
|
743
|
-
if (!this._activeDescendantItem && hasItems) {
|
|
723
|
+
if (popoverOpened && !this._activeDescendantItem && hasItems) {
|
|
744
724
|
this._selectedOption = items[firstIndex].label;
|
|
745
725
|
}
|
|
746
726
|
}
|
|
@@ -799,6 +779,9 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
799
779
|
this._expandCollapsedGroupsWithSelection();
|
|
800
780
|
return renderFinished();
|
|
801
781
|
}).then(() => {
|
|
782
|
+
if (!this._activeDescendantItem) {
|
|
783
|
+
this._activateSelectedOrFirstItem();
|
|
784
|
+
}
|
|
802
785
|
this._handleDropdownScroll();
|
|
803
786
|
this._announceCurrentOrFirst();
|
|
804
787
|
}).catch(() => {});
|
package/src/SideNavigation.ts
CHANGED
|
@@ -6,6 +6,16 @@ import SideNavigation from "@ui5/webcomponents-fiori/dist/SideNavigation.js";
|
|
|
6
6
|
// Styles
|
|
7
7
|
import SideNavigationCss from "./generated/themes/SideNavigation.css.js";
|
|
8
8
|
|
|
9
|
+
export enum UDExSideNavigationVariant {
|
|
10
|
+
Full = "Full",
|
|
11
|
+
Content = "Content",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export enum UDExSideNavigationPlacement {
|
|
15
|
+
Left = "Left",
|
|
16
|
+
Right = "Right",
|
|
17
|
+
}
|
|
18
|
+
|
|
9
19
|
/**
|
|
10
20
|
* @class
|
|
11
21
|
*
|
|
@@ -38,6 +48,31 @@ class UDExSideNavigation extends SideNavigation {
|
|
|
38
48
|
*/
|
|
39
49
|
@property({ type: Boolean })
|
|
40
50
|
isFixedInPlace!: boolean;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Defines the variant of the component.
|
|
54
|
+
*
|
|
55
|
+
* @default "Full"
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
@property()
|
|
59
|
+
variant: `${UDExSideNavigationVariant}` = UDExSideNavigationVariant.Full;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Defines which side the navigation panel is on.
|
|
63
|
+
*
|
|
64
|
+
* @default "Left"
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
@property()
|
|
68
|
+
placement: `${UDExSideNavigationPlacement}` = UDExSideNavigationPlacement.Left;
|
|
69
|
+
|
|
70
|
+
onBeforeRendering() {
|
|
71
|
+
super.onBeforeRendering();
|
|
72
|
+
this.querySelectorAll("[udex-side-navigation-item], [udex-side-navigation-sub-item]").forEach(item => {
|
|
73
|
+
item.setAttribute("variant", this.variant);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
41
76
|
}
|
|
42
77
|
|
|
43
78
|
UDExSideNavigation.define();
|