@sapudex/web-components 2.48.0 → 2.50.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/bundle.esm.js +2 -0
- package/cypress/specs/AccordionSpotlight.cy.tsx +402 -0
- package/cypress/specs/BusyIndicator.cy.tsx +15 -0
- package/cypress/specs/Carousel.cy.tsx +142 -0
- package/cypress/specs/FilterMenu.cy.tsx +968 -10
- package/cypress/specs/List.cy.tsx +106 -0
- package/cypress/specs/ListItem.cy.tsx +291 -1
- package/cypress/specs/MediaPlayer.cy.tsx +32 -0
- package/cypress/specs/SelectBox.cy.tsx +134 -3
- package/cypress/specs/TabNavigation.cy.tsx +56 -0
- package/cypress/support/component-imports.instrumented.ts +6 -0
- package/cypress/support/component-imports.src.ts +6 -0
- package/dist/AccordionSpotlight.d.ts +149 -0
- package/dist/AccordionSpotlight.js +284 -0
- package/dist/AccordionSpotlight.js.map +1 -0
- package/dist/AccordionSpotlightItem.d.ts +76 -0
- package/dist/AccordionSpotlightItem.js +115 -0
- package/dist/AccordionSpotlightItem.js.map +1 -0
- package/dist/AccordionSpotlightItemTemplate.d.ts +2 -0
- package/dist/AccordionSpotlightItemTemplate.js +5 -0
- package/dist/AccordionSpotlightItemTemplate.js.map +1 -0
- package/dist/AccordionSpotlightTemplate.d.ts +2 -0
- package/dist/AccordionSpotlightTemplate.js +10 -0
- package/dist/AccordionSpotlightTemplate.js.map +1 -0
- package/dist/BusyIndicator.d.ts +9 -0
- package/dist/BusyIndicator.js +7 -1
- package/dist/BusyIndicator.js.map +1 -1
- package/dist/Carousel.d.ts +26 -15
- package/dist/Carousel.js +71 -55
- package/dist/Carousel.js.map +1 -1
- package/dist/FilterMenu.d.ts +12 -2
- package/dist/FilterMenu.js +24 -4
- package/dist/FilterMenu.js.map +1 -1
- package/dist/FilterMenuTemplate.js +1 -1
- package/dist/FilterMenuTemplate.js.map +1 -1
- package/dist/HeroBanner.d.ts +18 -9
- package/dist/HeroBanner.js +38 -35
- package/dist/HeroBanner.js.map +1 -1
- package/dist/HeroBannerTemplate.js +2 -2
- package/dist/HeroBannerTemplate.js.map +1 -1
- package/dist/List.d.ts +1 -0
- package/dist/List.js +24 -11
- 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 +22 -0
- package/dist/ListGroupHeaderBase.js +44 -0
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListItem.d.ts +4 -0
- package/dist/ListItem.js +32 -0
- package/dist/ListItem.js.map +1 -1
- package/dist/MediaPlayer.d.ts +2 -0
- package/dist/MediaPlayer.js +12 -0
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/PromoTile.js +1 -1
- package/dist/PromoTile.js.map +1 -1
- package/dist/SearchableListBase.d.ts +10 -1
- package/dist/SearchableListBase.js +23 -7
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +3 -2
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SelectBase.d.ts +14 -0
- package/dist/SelectBase.js +56 -3
- package/dist/SelectBase.js.map +1 -1
- package/dist/SelectBoxTemplate.js +1 -1
- package/dist/SelectBoxTemplate.js.map +1 -1
- package/dist/TabNavigation.d.ts +7 -1
- package/dist/TabNavigation.js +8 -2
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Wizard.d.ts +5 -0
- package/dist/Wizard.js +11 -0
- package/dist/Wizard.js.map +1 -1
- package/dist/assets/{InputSuggestions-BcK6O4Bk.js → InputSuggestions-DZR626c7.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-u600dmHC.js → ListItemStandardExpandableTextTemplate-D_5VXMzU.js} +1 -1
- package/dist/assets/{bundle-JYo3bV8v.css → bundle-CkxyEA8c.css} +1 -1
- package/dist/assets/{bundle.esm-C6Ie2WeI.js → bundle.esm-DuQLY8Jz.js} +241 -238
- package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +1 -0
- package/dist/assets/messagebundle_no-BZQfeWxT.js +1 -0
- package/dist/css/themes/Accordion.css +1 -1
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/AccordionSpotlight.css +1 -0
- package/dist/css/themes/AccordionSpotlightItem.css +1 -0
- package/dist/css/themes/Badge.css +1 -1
- package/dist/css/themes/BusyIndicator.css +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/Divider.css +1 -1
- package/dist/css/themes/Dropdown.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/Footer.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/ImageGridTableItem.css +1 -1
- package/dist/css/themes/InputGroup.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/ProgressBar.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -1
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/SideNavigation.css +1 -1
- package/dist/css/themes/SideNavigationGroup.css +1 -1
- package/dist/css/themes/SocialMediaButton.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/TagGroup.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/css/themes/Toast.css +1 -1
- package/dist/custom-elements-internal.json +508 -42
- package/dist/custom-elements.json +407 -52
- package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +24 -21
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Accordion.css.d.ts +1 -1
- package/dist/generated/themes/Accordion.css.js +1 -1
- package/dist/generated/themes/Accordion.css.js.map +1 -1
- package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.d.ts +2 -0
- package/dist/generated/themes/AccordionSpotlight.css.js +8 -0
- package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -0
- package/dist/generated/themes/AccordionSpotlightItem.css.d.ts +2 -0
- package/dist/generated/themes/AccordionSpotlightItem.css.js +8 -0
- package/dist/generated/themes/AccordionSpotlightItem.css.js.map +1 -0
- package/dist/generated/themes/Badge.css.d.ts +1 -1
- package/dist/generated/themes/Badge.css.js +1 -1
- package/dist/generated/themes/Badge.css.js.map +1 -1
- package/dist/generated/themes/BusyIndicator.css.d.ts +2 -0
- package/dist/generated/themes/BusyIndicator.css.js +8 -0
- package/dist/generated/themes/BusyIndicator.css.js.map +1 -0
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/Divider.css.d.ts +1 -1
- package/dist/generated/themes/Divider.css.js +1 -1
- package/dist/generated/themes/Divider.css.js.map +1 -1
- package/dist/generated/themes/Dropdown.css.d.ts +1 -1
- package/dist/generated/themes/Dropdown.css.js +1 -1
- package/dist/generated/themes/Dropdown.css.js.map +1 -1
- package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
- package/dist/generated/themes/FilterMenu.css.js +1 -1
- package/dist/generated/themes/FilterMenu.css.js.map +1 -1
- package/dist/generated/themes/Footer.css.d.ts +1 -1
- package/dist/generated/themes/Footer.css.js +1 -1
- package/dist/generated/themes/Footer.css.js.map +1 -1
- package/dist/generated/themes/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/ImageGridTableItem.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridTableItem.css.js +1 -1
- package/dist/generated/themes/ImageGridTableItem.css.js.map +1 -1
- package/dist/generated/themes/InputGroup.css.d.ts +1 -1
- package/dist/generated/themes/InputGroup.css.js +1 -1
- package/dist/generated/themes/InputGroup.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/MediaPlayer.css.d.ts +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
- package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
- package/dist/generated/themes/ProgressBar.css.d.ts +1 -1
- package/dist/generated/themes/ProgressBar.css.js +1 -1
- package/dist/generated/themes/ProgressBar.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/RadioButton.css.d.ts +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RadioButton.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/Search.css.d.ts +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.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/SelectBox.css.d.ts +1 -1
- package/dist/generated/themes/SelectBox.css.js +1 -1
- package/dist/generated/themes/SelectBox.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/SideNavigationGroup.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
- package/dist/generated/themes/SocialMediaButton.css.d.ts +1 -1
- package/dist/generated/themes/SocialMediaButton.css.js +1 -1
- package/dist/generated/themes/SocialMediaButton.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.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/Tag.css.d.ts +1 -1
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/generated/themes/TagGroup.css.d.ts +1 -1
- package/dist/generated/themes/TagGroup.css.js +1 -1
- package/dist/generated/themes/TagGroup.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/generated/themes/TextField.css.d.ts +1 -1
- package/dist/generated/themes/TextField.css.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.d.ts +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/messagebundle_ar.properties +99 -0
- package/dist/messagebundle_no.properties +126 -1
- package/dist/vscode.html-custom-data.json +79 -14
- package/dist/web-types.json +211 -32
- package/package.json +1 -1
- package/src/AccordionSpotlight.ts +321 -0
- package/src/AccordionSpotlightItem.ts +117 -0
- package/src/AccordionSpotlightItemTemplate.tsx +7 -0
- package/src/AccordionSpotlightTemplate.tsx +107 -0
- package/src/BusyIndicator.ts +17 -2
- package/src/Carousel.ts +118 -80
- package/src/FilterMenu.ts +25 -4
- package/src/FilterMenuTemplate.tsx +1 -1
- package/src/HeroBanner.ts +60 -46
- package/src/HeroBannerTemplate.tsx +35 -22
- package/src/List.ts +23 -11
- package/src/ListGroupHeader.hbs +11 -10
- package/src/ListGroupHeader.ts +5 -1
- package/src/ListGroupHeaderBase.ts +48 -0
- package/src/ListItem.hbs +5 -1
- package/src/ListItem.ts +36 -0
- package/src/MediaPlayer.ts +11 -0
- package/src/PromoTile.ts +1 -1
- package/src/SearchableListBase.ts +24 -7
- package/src/SearchableListBaseTemplate.tsx +5 -2
- package/src/SelectBase.ts +58 -3
- package/src/SelectBoxTemplate.tsx +1 -0
- package/src/TabNavigation.hbs +1 -1
- package/src/TabNavigation.ts +8 -1
- package/src/Wizard.ts +15 -1
- package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +24 -21
- package/src/generated/templates/ListItemTemplate.lit.ts +2 -2
- package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
- package/src/generated/themes/Accordion.css.ts +1 -1
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/AccordionSpotlight.css.ts +9 -0
- package/src/generated/themes/AccordionSpotlightItem.css.ts +9 -0
- package/src/generated/themes/Badge.css.ts +1 -1
- package/src/generated/themes/BusyIndicator.css.ts +9 -0
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/Divider.css.ts +1 -1
- package/src/generated/themes/Dropdown.css.ts +1 -1
- package/src/generated/themes/FilterMenu.css.ts +1 -1
- package/src/generated/themes/Footer.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/ImageGridTableItem.css.ts +1 -1
- package/src/generated/themes/InputGroup.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/ProgressBar.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +1 -1
- package/src/generated/themes/RadioButton.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/Search.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +1 -1
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/SideNavigation.css.ts +1 -1
- package/src/generated/themes/SideNavigationGroup.css.ts +1 -1
- package/src/generated/themes/SocialMediaButton.css.ts +1 -1
- package/src/generated/themes/StepInput.css.ts +1 -1
- package/src/generated/themes/Switch.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/Tag.css.ts +1 -1
- package/src/generated/themes/TagGroup.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/generated/themes/Toast.css.ts +1 -1
- package/src/i18n/messagebundle_ar.properties +99 -0
- package/src/i18n/messagebundle_no.properties +126 -1
- package/src/themes/Accordion.css +1 -1
- package/src/themes/AccordionItem.css +4 -4
- package/src/themes/AccordionSpotlight.css +264 -0
- package/src/themes/AccordionSpotlightItem.css +3 -0
- package/src/themes/Badge.css +7 -7
- package/src/themes/BusyIndicator.css +24 -0
- package/src/themes/Button.css +57 -57
- package/src/themes/Divider.css +1 -1
- package/src/themes/Dropdown.css +1 -1
- package/src/themes/FilterMenu.css +2 -2
- package/src/themes/Footer.css +1 -1
- package/src/themes/HeroBanner.css +2 -0
- package/src/themes/ImageGridTableItem.css +1 -1
- package/src/themes/InputGroup.css +1 -1
- package/src/themes/MastheadShell.css +2 -2
- package/src/themes/MediaPlayer.css +5 -34
- package/src/themes/PhoneNumberField.css +6 -6
- package/src/themes/ProgressBar.css +4 -0
- package/src/themes/PromoTile.css +160 -4
- package/src/themes/RadioButton.css +2 -2
- package/src/themes/Review.css +2 -2
- package/src/themes/ReviewItem.css +2 -2
- package/src/themes/Search.css +5 -5
- package/src/themes/SelectBase.css +14 -14
- package/src/themes/SelectBox.css +1 -1
- package/src/themes/SideNavigation.css +1 -1
- package/src/themes/SideNavigationGroup.css +1 -1
- package/src/themes/SocialMediaButton.css +2 -2
- package/src/themes/StepInput.css +8 -8
- package/src/themes/Switch.css +9 -9
- package/src/themes/TabNavigation.css +1 -1
- package/src/themes/Tag.css +4 -4
- package/src/themes/TagGroup.css +1 -0
- package/src/themes/TextArea.css +4 -4
- package/src/themes/TextField.css +13 -13
- package/src/themes/Toast.css +1 -1
- package/dist/assets/messagebundle_ar-BNhVFt1-.js +0 -1
- package/dist/assets/messagebundle_no-BIUfmTWJ.js +0 -1
|
@@ -152,7 +152,7 @@ declare class UDExSearchableListBase extends UI5Element {
|
|
|
152
152
|
/**
|
|
153
153
|
* Defines the default accessible role for the list component.
|
|
154
154
|
*
|
|
155
|
-
* @default "
|
|
155
|
+
* @default "listbox"
|
|
156
156
|
* @public
|
|
157
157
|
*/
|
|
158
158
|
defaultAccessibleRole: string;
|
|
@@ -228,6 +228,15 @@ declare class UDExSearchableListBase extends UI5Element {
|
|
|
228
228
|
get modeSingleSelect(): boolean;
|
|
229
229
|
get modeRadioGroup(): boolean;
|
|
230
230
|
get isControlled(): boolean;
|
|
231
|
+
/**
|
|
232
|
+
* Whether the dropdown list should use the ARIA tree pattern
|
|
233
|
+
* (role="tree"/"treeitem" with aria-expanded / aria-selected / aria-checked).
|
|
234
|
+
*
|
|
235
|
+
* Base implementation is never a tree. Subclasses that support grouped
|
|
236
|
+
* hierarchical navigation (e.g. UDExFilterMenu) override this with their
|
|
237
|
+
* own mode/collapsible rules.
|
|
238
|
+
*/
|
|
239
|
+
get isTreeStructure(): boolean;
|
|
231
240
|
get additionalClassName(): string;
|
|
232
241
|
get groupClassName(): string;
|
|
233
242
|
get showSearch(): boolean;
|
|
@@ -76,10 +76,10 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
|
|
|
76
76
|
/**
|
|
77
77
|
* Defines the default accessible role for the list component.
|
|
78
78
|
*
|
|
79
|
-
* @default "
|
|
79
|
+
* @default "listbox"
|
|
80
80
|
* @public
|
|
81
81
|
*/
|
|
82
|
-
this.defaultAccessibleRole = "
|
|
82
|
+
this.defaultAccessibleRole = "listbox";
|
|
83
83
|
this._shouldFilterItems = false;
|
|
84
84
|
this._filteredItems = [];
|
|
85
85
|
this._groupCollapseStateBeforeSearch = new Map();
|
|
@@ -345,7 +345,7 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
|
|
|
345
345
|
list.focusHeader(firstItem);
|
|
346
346
|
}
|
|
347
347
|
else {
|
|
348
|
-
|
|
348
|
+
list.focusItem(firstItem);
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
_fireIconClickEvent(eventName, e) {
|
|
@@ -454,6 +454,17 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
|
|
|
454
454
|
const isGrouping = this.items.some(({ isGroup }) => isGroup);
|
|
455
455
|
return this.modeMultiSelect && isGrouping;
|
|
456
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* Whether the dropdown list should use the ARIA tree pattern
|
|
459
|
+
* (role="tree"/"treeitem" with aria-expanded / aria-selected / aria-checked).
|
|
460
|
+
*
|
|
461
|
+
* Base implementation is never a tree. Subclasses that support grouped
|
|
462
|
+
* hierarchical navigation (e.g. UDExFilterMenu) override this with their
|
|
463
|
+
* own mode/collapsible rules.
|
|
464
|
+
*/
|
|
465
|
+
get isTreeStructure() {
|
|
466
|
+
return false;
|
|
467
|
+
}
|
|
457
468
|
get additionalClassName() {
|
|
458
469
|
return `udex-searchable-list__header`;
|
|
459
470
|
}
|
|
@@ -472,14 +483,19 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
|
|
|
472
483
|
return this.getSlottedItems(this._validItems).filter(item => !item.isGroup);
|
|
473
484
|
}
|
|
474
485
|
get roleForGroupList() {
|
|
475
|
-
|
|
486
|
+
// Host is always transparent; the shadow-inner div carries the widget role
|
|
487
|
+
// (tree/listbox) via accessibleRoleForList.
|
|
488
|
+
return "none";
|
|
476
489
|
}
|
|
477
490
|
get accessibleRoleForList() {
|
|
478
|
-
|
|
491
|
+
if (this.isTreeStructure) {
|
|
492
|
+
return "tree";
|
|
493
|
+
}
|
|
494
|
+
return this.defaultAccessibleRole;
|
|
479
495
|
}
|
|
480
496
|
get listItemRole() {
|
|
481
|
-
if (this.
|
|
482
|
-
return "
|
|
497
|
+
if (this.isTreeStructure) {
|
|
498
|
+
return "treeitem";
|
|
483
499
|
}
|
|
484
500
|
if (this.accessibleRoleForList === "listbox") {
|
|
485
501
|
return "option";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchableListBase.js","sourceRoot":"","sources":["../src/SearchableListBase.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\nimport { UDExListMode, UDExListStyleType } from \"./types/List.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExSearch from \"./Search.js\";\nimport type UDExListItemBase from \"./ListItemBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExListItem from \"./ListItem.js\";\nimport type UDExFilterMenuItem from \"./FilterMenuItem.js\";\nimport type UDExSelectBoxItem from \"./SelectBoxItem.js\";\nimport { SHOW_SEARCH_AFTER_COUNT, UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { NO_MATCHES_FOUND, RESULT_RETURNED, STARS } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\nexport type UDExItemFromList = UDExListItemBase | UDExListGroupHeaderBase | null | undefined;\n\ntype UDExSearchableListBaseChangeSearchEventDetail = {\n value: string,\n}\n\ntype UDExSearchableListBaseSelectionChangeEventDetail = {\n selectedItems: Array<UDExListItemBase>,\n item: UDExItemFromList,\n}\ntype UDExSearchableListBaseSubmitSearchEventDetail = {\n selectedItems: Array<UDExListItemBase>\n}\n\ntype UDExSelectBoxIconClickEventDetail = {\n originalEvent: PointerEvent,\n item: UDExItemFromList,\n}\n\nexport type UDExSearchableListBaseEvents = {\n \"select-all\": void,\n \"selection-change\": UDExSearchableListBaseSelectionChangeEventDetail,\n \"submit-search\": UDExSearchableListBaseSubmitSearchEventDetail,\n \"reset-search\": void,\n \"change-search\": UDExSearchableListBaseChangeSearchEventDetail,\n \"first-icon-click\": UDExSelectBoxIconClickEventDetail,\n \"second-icon-click\": UDExSelectBoxIconClickEventDetail,\n}\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExFilterMenu</code> ,<code>UDExSelectBox</code> and <code>UDExCountrySelector</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @public\n */\n\n/**\n * Fired event when the user click on an item on the list.\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.\n * @public\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.\n *\n */\n@event(\"selection-change\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the Select All header.\n *\n * @public\n */\n@event(\"select-all\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the submitted icon in the search.\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @public\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n *\n */\n@event(\"submit-search\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the reset button in the search.\n *\n * @public\n */\n@event(\"reset-search\", { bubbles: true })\n\n/**\n * Fired event when the user submitted the value in the search.\n * @param {string} value The search value.\n * @public\n * @param {string} value The search value.\n */\n@event(\"change-search\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the first icon.\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n * @public\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n */\n@event(\"first-icon-click\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the second icon.\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n * @public\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n */\n@event(\"second-icon-click\", { bubbles: true })\n\nclass UDExSearchableListBase extends UI5Element {\n eventDetails!: UDExSearchableListBaseEvents;\n /** @deprecated Tab keyboard navigation is no longer allowed. */\n @property({ type: Boolean })\n tabNavigationEnabled?: boolean;\n\n /**\n * Allows control over the height.\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines if page scrolling should be prevented within the list of items.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n preventPageScroll = false;\n\n /**\n * Defines if the component would display a loading indicator.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n busy?: boolean;\n\n /**\n * Defines if the search input is visible.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showSearchInput!: boolean;\n\n /**\n * Defines the delay in milliseconds, after which the busy indicator will show up for this component.\n *\n * @default 1000\n * @public\n */\n @property({ type: Number })\n busyDelay: number = 1000;\n\n /**\n * Defines the \"no result\" text of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n noResultText!: string;\n\n /**\n * Defines the placeholder of the search.\n *\n * @default \"\"\n * @public\n */\n @property()\n searchPlaceholder!: string;\n\n /**\n * Defines the selectAll option of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n selectAll?: boolean;\n\n /**\n * Defines label text for select all header.\n *\n * @default \"Select All\"\n * @public\n */\n @property()\n selectAllLabel!: string;\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property()\n mode: `${UDExListMode}` = UDExListMode.SingleSelect;\n\n /**\n * Defines the list style type of the dropdown items.\n *\n * @default \"None\"\n * @public\n */\n @property()\n type: `${UDExListStyleType}` = UDExListStyleType.None;\n\n /**\n * Defines the name of the UI5 Icon displayed for each item. Use when type is Icon.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n itemIcon: string = \"\";\n\n /**\n * Slot for items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, invalidateOnChildChange: true })\n items!: DefaultSlot<UDExListItemBase | UDExListGroupHeaderBase>;\n\n /**\n * Defines the default accessible role for the list component.\n *\n * @default \"list\"\n * @public\n */\n @property({ type: String })\n defaultAccessibleRole: string = \"list\";\n\n /**\n * Defines the filtered items for the component.\n *\n * @default []\n * @private\n */\n @property({ type: Object })\n _filteredItems!: Array<UDExProcessedItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _shouldFilterItems?: boolean;\n _accSearchResultInfo?: string;\n _groupCollapseStateBeforeSearch: Map<string, boolean>;\n\n constructor() {\n super();\n this._shouldFilterItems = false;\n this._filteredItems = [];\n this._groupCollapseStateBeforeSearch = new Map();\n }\n\n onBeforeRendering() {\n if (!this._shouldFilterItems) {\n this._filteredItems = this.getProcessedItems();\n }\n }\n\n onItemPress(e:CustomEvent) {\n const dropdownItemId: string = this.getDataTokenId(e.detail.item as UDExListItemBase);\n this.handleDropdownItemPress(dropdownItemId);\n this.fireSelectionChange(dropdownItemId);\n }\n\n handleDropdownItemPress(dropdownItemId: string) {\n this.getProcessedItems().forEach(({ item, groupItems, isGroup }) => {\n if (isGroup) {\n const groupItem: UDExListItemBase = groupItems.find(({ _id }) => _id === dropdownItemId)!;\n if (groupItem) {\n this.handleItemClick(groupItem);\n this.handleGroupHeaderState(item as UDExListGroupHeaderBase);\n }\n } else if (item._id === dropdownItemId) {\n this.handleItemClick(item);\n }\n });\n\n this.syncFilteredItems();\n }\n\n handleItemClick(item: UDExListItemBase) {\n if (this.modeSingleSelect) {\n this.revertSelectedItems(this.selectedItems);\n }\n\n if (this.modeRadioGroup) {\n const groupHeader = item.parentElement as UDExListGroupHeaderBase;\n this.revertSelectedItems(groupHeader.getItems());\n }\n\n item.selected = !item.selected;\n }\n\n handleGroupHeaderState(groupHeader: UDExListGroupHeaderBase) {\n if (this.modeMultiSelect) {\n groupHeader.handleHeaderState();\n }\n }\n\n onHeaderPress(e:CustomEvent) {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.handleGroupHeaderSelection(id);\n this.syncFilteredItems();\n this.fireSelectionChange(id);\n }\n\n onSelectAllHeaderPress(e:CustomEvent) {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.handleGroupHeaderSelection(id);\n this.syncFilteredItems();\n this.fireDecoratorEvent(\"select-all\");\n }\n\n handleGroupHeaderSelection(id: string): void {\n this.getProcessedItems().forEach(({ item }) => {\n if (item._id === id) {\n (item as UDExListGroupHeaderBase).handleSelectionGroupState();\n }\n });\n }\n\n onSearch(value: string) {\n const searchValue: string = value;\n const hasSearchQuery = searchValue !== \"\";\n\n if (hasSearchQuery && !this._shouldFilterItems) {\n this.saveGroupCollapseState();\n }\n\n if (!hasSearchQuery && this._shouldFilterItems) {\n this.restoreGroupCollapseState();\n }\n\n this._shouldFilterItems = hasSearchQuery;\n this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);\n const items = this.getFlattenItemsArray(this._filteredItems);\n this._accSearchResultInfo = items.length ? `${items.length} ${this.resultReturnedText}` : this.noMatchesFoundText;\n this.fireDecoratorEvent(\"change-search\", { value: searchValue });\n }\n\n onReset() {\n this.revertSelectedItems(this.selectedItems);\n }\n\n onResetSearch() {\n this.resetSearch();\n this.fireDecoratorEvent(\"reset-search\");\n }\n\n onSubmitSearch() {\n this.fireDecoratorEvent(\"submit-search\", {\n selectedItems: this.selectedItems,\n });\n }\n\n /**\n * Reset the search value.\n * @public\n */\n resetSearch() {\n const search = this.getSearch();\n search.value = \"\";\n this._shouldFilterItems = false;\n this.restoreGroupCollapseState();\n this._filteredItems = this.filterItems(this.getProcessedItems(), \"\");\n }\n\n filterItems(items: Array<UDExProcessedItem>, str: string): Array<UDExProcessedItem> {\n const hasSearchQuery = str !== \"\";\n\n return items.filter(preparedItem => {\n const { isGroup, item } = preparedItem;\n\n if (isGroup) {\n const groupHeaderMatches = this.checkAndUpdateLabel(item, str);\n const filteredChildren = this.filterItemsForLabel(preparedItem.groupItems, str);\n\n if (groupHeaderMatches) {\n preparedItem.groupItems.forEach(child => this.checkAndUpdateLabel(child, str));\n } else {\n preparedItem.groupItems = filteredChildren;\n }\n\n if (hasSearchQuery && (groupHeaderMatches || preparedItem.groupItems.length > 0)) {\n item.collapsed = false;\n }\n\n return !hasSearchQuery || groupHeaderMatches || preparedItem.groupItems.length > 0;\n }\n\n return this.checkAndUpdateLabel(item, str);\n });\n }\n\n filterItemsForLabel(groupItems: Array<UDExListItemBase>, str: string): Array<UDExListItemBase> {\n return groupItems.filter(groupItem => this.checkAndUpdateLabel(groupItem, str));\n }\n\n checkAndUpdateLabel(item: UDExListItemBase | UDExListGroupHeaderBase, str: string): boolean {\n if (item.ratingCount) {\n return this.isIncludes(item.ratingCount, str);\n }\n\n if (!item.label) {\n console.warn(\"A label property is required for the item\");\n return false;\n }\n const cleanedLabel = cleanLabel(item.label);\n if (this.isIncludes(cleanedLabel, str)) {\n item.label = this.addSearchTermTag(cleanedLabel, str);\n return true;\n }\n\n item.label = cleanedLabel;\n return false;\n }\n\n addSearchTermTag(text: string, str: string): string {\n if (!str.length) {\n return text;\n }\n\n const regex = new RegExp(`(${str})`, \"i\");\n return text.replace(regex, \"<b>$1</b>\");\n }\n\n isIncludes(string: string, value: string): boolean {\n return string.toLowerCase().includes(value.toLowerCase());\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>) {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n syncFilteredItems() {\n const search = this.getSearch();\n if (this._shouldFilterItems) {\n this._filteredItems = this.filterItems(this.getProcessedItems(), search.value);\n } else {\n this._filteredItems = this.getProcessedItems();\n }\n }\n\n saveGroupCollapseState(): void {\n this._groupCollapseStateBeforeSearch.clear();\n\n this.items.forEach(item => {\n if (item.isGroup) {\n this._groupCollapseStateBeforeSearch.set(item._id, Boolean(item.collapsed));\n }\n });\n }\n\n restoreGroupCollapseState(): void {\n if (!this._groupCollapseStateBeforeSearch.size) {\n return;\n }\n\n this.items.forEach(item => {\n if (item.isGroup) {\n const collapsed = this._groupCollapseStateBeforeSearch.get(item._id);\n\n if (collapsed !== undefined) {\n item.collapsed = collapsed;\n }\n }\n });\n\n this._groupCollapseStateBeforeSearch.clear();\n }\n\n getSlottedItems(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<UDExListItemBase | UDExListGroupHeaderBase> {\n const arr: Array<UDExListItemBase | UDExListGroupHeaderBase> = [];\n items.forEach(item => {\n arr.push(item);\n if (item.isGroup) {\n arr.push(...(item as UDExListGroupHeaderBase).getItems());\n }\n });\n return arr;\n }\n\n getItemFromList(itemId:string): UDExItemFromList {\n let menuItem = null;\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n\n if (item.isGroup) {\n const groupItems = (item as UDExListGroupHeaderBase).getItems();\n menuItem = groupItems.find(({ _id }) => _id === itemId);\n\n if (menuItem) {\n break;\n }\n } else if (item._id === itemId) {\n menuItem = item;\n break;\n }\n }\n\n return menuItem;\n }\n\n fireSelectionChange(itemId: string) {\n this.fireDecoratorEvent(\"selection-change\", {\n selectedItems: this.selectedItems,\n item: this.getItemFromList(itemId),\n });\n }\n\n fireFirstIconClickEvent(e: CustomEvent): void {\n this._fireIconClickEvent(\"first-icon-click\", e);\n }\n\n fireSecondIconClickEvent(e: CustomEvent): void {\n this._fireIconClickEvent(\"second-icon-click\", e);\n }\n\n _dropdownScrollToTop() {\n this.getPopoverPart(UDExPopoverPart.Content)?.scrollTo({ top: 0 });\n }\n\n _dropdownScrollToSelectedItem() {\n const content = this.getPopoverPart(UDExPopoverPart.Content);\n const activeItem = this.activeItem;\n if (!content || !activeItem) { return; }\n const itemRect = activeItem.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n content.scrollTop += itemRect.top - contentRect.top + itemRect.height / 2 - content.clientHeight / 2;\n }\n\n _handleDropdownScroll() {\n if (this.modeMultiSelect) {\n this._dropdownScrollToTop();\n }\n if (this.modeSingleSelect) {\n this._dropdownScrollToSelectedItem();\n }\n }\n\n focusFirstItem(): void {\n const list = this.getList();\n const items = list.getKeyboardNavigationItems();\n if (!items.length) { return; }\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n const firstItem = items[firstIndex];\n list.setTabIndexByIndex(items, firstIndex);\n\n if (firstItem.isGroup) {\n list.focusHeader(firstItem);\n } else {\n firstItem.focus();\n }\n }\n\n private _fireIconClickEvent(eventName: \"first-icon-click\" | \"second-icon-click\", e: CustomEvent): void {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.fireDecoratorEvent(eventName, {\n originalEvent: e.detail.originalEvent,\n item: this.getItemFromList(id),\n });\n }\n\n getFlattenItemsArray(array: Array<UDExProcessedItem>): (UDExProcessedItem | UDExListItemBase)[] {\n return array.flatMap(item => {\n if (item.isGroup) {\n return [\n item,\n ...item.groupItems.filter(groupItem => !groupItem.disabled),\n ];\n }\n return item.item.disabled ? [] : [item.item];\n });\n }\n\n getCurrentIndex(item: UDExListItem): number {\n return this.getDomListItems().indexOf(item);\n }\n\n getList(): UDExList {\n return this.shadowRoot!.querySelector<UDExList>(\"[udex-list]\")!;\n }\n\n getSearch(): UDExSearch | HTMLInputElement {\n return this.shadowRoot!.querySelector<UDExSearch>(\"[udex-search]\")! || this.shadowRoot!.querySelector<HTMLInputElement>(\".udex-text-field__search\")!;\n }\n\n getPopover(): Popover {\n return this.shadowRoot!.querySelector<Popover>(\"[ui5-popover]\")!;\n }\n\n getDomListItems(): UDExListItem[] {\n const elementList = this.shadowRoot!.querySelector(\"[udex-list]\") as HTMLElement;\n return elementList ? Array.from(elementList.querySelectorAll(\"[udex-list-item]\")) : [];\n }\n\n getDataTokenId(item: UDExListItemBase): string {\n return item.getAttribute(\"data-token-id\") as string;\n }\n\n getProcessedItems(): Array<UDExProcessedItem> {\n return this._validItems.map(item => {\n const isGroup = item.isGroup;\n const groupItems = isGroup ? (item as UDExListGroupHeaderBase).getItems() : [];\n\n if (isGroup) {\n this._setItemsModeAndControl(groupItems);\n }\n\n item.mode = this.mode;\n item.controlled = this.isControlled;\n\n return { item, groupItems, isGroup };\n });\n }\n\n getPopoverPart(part: UDExPopoverPart): HTMLElement {\n return this.getPopover().shadowRoot!.querySelector<HTMLElement>(`[part=${part}]`)!;\n }\n\n _managePopupListeners(part: UDExPopoverPart, action: \"addEventListener\" | \"removeEventListener\"): void {\n const element = this.getPopoverPart(part);\n element?.[action](\"wheel\", ((e: WheelEvent) => e.preventDefault()) as EventListener);\n }\n\n _setContentHeight(): void {\n const content = this.getPopoverPart(UDExPopoverPart.Content);\n content.style.maxHeight = this.height || \"\";\n }\n\n _setItemsModeAndControl(items: Array<UDExFilterMenuItem | UDExSelectBoxItem>) {\n items.forEach(item => {\n item.mode = this.mode;\n item.controlled = this.isControlled;\n });\n }\n\n get activeItem(): UDExListItem | undefined {\n return this.getDomListItems().find(({ selected }) => selected);\n }\n\n get _validItems(): Array<UDExListItemBase | UDExListGroupHeaderBase> {\n return this.items.filter(item => !(item instanceof HTMLElement) || \"isGroup\" in item);\n }\n\n get getNoResultText(): string {\n const hasTextProperty = this.noResultText !== undefined && this.noResultText.length > 0;\n return hasTextProperty ? this.noResultText : this.noMatchesFoundText;\n }\n\n get noMatchesFoundText(): string {\n return translate(UDExSearchableListBase, NO_MATCHES_FOUND);\n }\n\n get resultReturnedText(): string {\n return translate(UDExSearchableListBase, RESULT_RETURNED);\n }\n\n get startsText(): string {\n return translate(UDExSearchableListBase, STARS);\n }\n\n get isListEmpty(): boolean {\n return this._filteredItems.length === 0;\n }\n\n get selectedItems(): Array<UDExListItemBase> {\n const selectedItems: Array<UDExListItemBase> = this.getSlottedItems(this._validItems).filter(({ selected }) => selected);\n return selectedItems;\n }\n\n get modeMultiSelect(): boolean {\n return this.mode === UDExListMode.MultiSelect;\n }\n\n get modeSingleSelect(): boolean {\n return this.mode === UDExListMode.SingleSelect;\n }\n\n get modeRadioGroup(): boolean {\n return this.mode === UDExListMode.RadioGroup;\n }\n\n get isControlled(): boolean {\n const isGrouping = this.items.some(({ isGroup }) => isGroup);\n return this.modeMultiSelect && isGrouping;\n }\n\n get additionalClassName(): string {\n return `udex-searchable-list__header`;\n }\n\n get groupClassName(): string {\n const classHeader = `udex-searchable-list__header`;\n return this.showSearch ? `${classHeader} udex-searchable-list__header_no-margin` : classHeader;\n }\n\n get showSearch(): boolean {\n const isSearchVisible = this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);\n return !this.hideDropdownSearch && isSearchVisible;\n }\n\n get isSearchActive(): boolean {\n return this.nonGroupItems.length > SHOW_SEARCH_AFTER_COUNT;\n }\n\n get nonGroupItems(): Array<UDExListItemBase> {\n return this.getSlottedItems(this._validItems).filter(item => !item.isGroup);\n }\n\n get roleForGroupList(): string {\n return this._filteredItems.some(element => element.isGroup) ? \"group\" : \"none\";\n }\n\n get accessibleRoleForList(): string {\n return this._filteredItems.some(element => element.isGroup) ? \"group\" : this.defaultAccessibleRole;\n }\n\n get listItemRole(): string {\n if (this.accessibleRoleForList === \"list\") {\n return \"listitem\";\n }\n\n if (this.accessibleRoleForList === \"listbox\") {\n return \"option\";\n }\n\n return \"none\";\n }\n\n get hideDropdownSearch(): boolean {\n return false;\n }\n}\n\nexport default UDExSearchableListBase;\nexport type {\n UDExSelectBoxIconClickEventDetail, UDExSearchableListBaseSubmitSearchEventDetail, UDExSearchableListBaseChangeSearchEventDetail, UDExSearchableListBaseSelectionChangeEventDetail,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SearchableListBase.js","sourceRoot":"","sources":["../src/SearchableListBase.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { cleanLabel } from \"./utils/listItemLabelUtils.js\";\nimport { UDExListMode, UDExListStyleType } from \"./types/List.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExSearch from \"./Search.js\";\nimport type UDExListItemBase from \"./ListItemBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExListItem from \"./ListItem.js\";\nimport type UDExFilterMenuItem from \"./FilterMenuItem.js\";\nimport type UDExSelectBoxItem from \"./SelectBoxItem.js\";\nimport { SHOW_SEARCH_AFTER_COUNT, UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { NO_MATCHES_FOUND, RESULT_RETURNED, STARS } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\nexport type UDExItemFromList = UDExListItemBase | UDExListGroupHeaderBase | null | undefined;\n\ntype UDExSearchableListBaseChangeSearchEventDetail = {\n value: string,\n}\n\ntype UDExSearchableListBaseSelectionChangeEventDetail = {\n selectedItems: Array<UDExListItemBase>,\n item: UDExItemFromList,\n}\ntype UDExSearchableListBaseSubmitSearchEventDetail = {\n selectedItems: Array<UDExListItemBase>\n}\n\ntype UDExSelectBoxIconClickEventDetail = {\n originalEvent: PointerEvent,\n item: UDExItemFromList,\n}\n\nexport type UDExSearchableListBaseEvents = {\n \"select-all\": void,\n \"selection-change\": UDExSearchableListBaseSelectionChangeEventDetail,\n \"submit-search\": UDExSearchableListBaseSubmitSearchEventDetail,\n \"reset-search\": void,\n \"change-search\": UDExSearchableListBaseChangeSearchEventDetail,\n \"first-icon-click\": UDExSelectBoxIconClickEventDetail,\n \"second-icon-click\": UDExSelectBoxIconClickEventDetail,\n}\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExFilterMenu</code> ,<code>UDExSelectBox</code> and <code>UDExCountrySelector</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @public\n */\n\n/**\n * Fired event when the user click on an item on the list.\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.\n * @public\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.\n *\n */\n@event(\"selection-change\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the Select All header.\n *\n * @public\n */\n@event(\"select-all\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the submitted icon in the search.\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n * @public\n * @param {Array<UDExListItemBase>} selectedItems The selected items.\n *\n */\n@event(\"submit-search\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the reset button in the search.\n *\n * @public\n */\n@event(\"reset-search\", { bubbles: true })\n\n/**\n * Fired event when the user submitted the value in the search.\n * @param {string} value The search value.\n * @public\n * @param {string} value The search value.\n */\n@event(\"change-search\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the first icon.\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n * @public\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n */\n@event(\"first-icon-click\", { bubbles: true })\n\n/**\n * Fired event when the user clicks on the second icon.\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n * @public\n * @param { PointerEvent } originalEvent The original event object\n * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item\n */\n@event(\"second-icon-click\", { bubbles: true })\n\nclass UDExSearchableListBase extends UI5Element {\n eventDetails!: UDExSearchableListBaseEvents;\n /** @deprecated Tab keyboard navigation is no longer allowed. */\n @property({ type: Boolean })\n tabNavigationEnabled?: boolean;\n\n /**\n * Allows control over the height.\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines if page scrolling should be prevented within the list of items.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n preventPageScroll = false;\n\n /**\n * Defines if the component would display a loading indicator.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n busy?: boolean;\n\n /**\n * Defines if the search input is visible.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showSearchInput!: boolean;\n\n /**\n * Defines the delay in milliseconds, after which the busy indicator will show up for this component.\n *\n * @default 1000\n * @public\n */\n @property({ type: Number })\n busyDelay: number = 1000;\n\n /**\n * Defines the \"no result\" text of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n noResultText!: string;\n\n /**\n * Defines the placeholder of the search.\n *\n * @default \"\"\n * @public\n */\n @property()\n searchPlaceholder!: string;\n\n /**\n * Defines the selectAll option of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n selectAll?: boolean;\n\n /**\n * Defines label text for select all header.\n *\n * @default \"Select All\"\n * @public\n */\n @property()\n selectAllLabel!: string;\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property()\n mode: `${UDExListMode}` = UDExListMode.SingleSelect;\n\n /**\n * Defines the list style type of the dropdown items.\n *\n * @default \"None\"\n * @public\n */\n @property()\n type: `${UDExListStyleType}` = UDExListStyleType.None;\n\n /**\n * Defines the name of the UI5 Icon displayed for each item. Use when type is Icon.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n itemIcon: string = \"\";\n\n /**\n * Slot for items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, invalidateOnChildChange: true })\n items!: DefaultSlot<UDExListItemBase | UDExListGroupHeaderBase>;\n\n /**\n * Defines the default accessible role for the list component.\n *\n * @default \"listbox\"\n * @public\n */\n @property({ type: String })\n defaultAccessibleRole: string = \"listbox\";\n\n /**\n * Defines the filtered items for the component.\n *\n * @default []\n * @private\n */\n @property({ type: Object })\n _filteredItems!: Array<UDExProcessedItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _shouldFilterItems?: boolean;\n _accSearchResultInfo?: string;\n _groupCollapseStateBeforeSearch: Map<string, boolean>;\n\n constructor() {\n super();\n this._shouldFilterItems = false;\n this._filteredItems = [];\n this._groupCollapseStateBeforeSearch = new Map();\n }\n\n onBeforeRendering() {\n if (!this._shouldFilterItems) {\n this._filteredItems = this.getProcessedItems();\n }\n }\n\n onItemPress(e:CustomEvent) {\n const dropdownItemId: string = this.getDataTokenId(e.detail.item as UDExListItemBase);\n this.handleDropdownItemPress(dropdownItemId);\n this.fireSelectionChange(dropdownItemId);\n }\n\n handleDropdownItemPress(dropdownItemId: string) {\n this.getProcessedItems().forEach(({ item, groupItems, isGroup }) => {\n if (isGroup) {\n const groupItem: UDExListItemBase = groupItems.find(({ _id }) => _id === dropdownItemId)!;\n if (groupItem) {\n this.handleItemClick(groupItem);\n this.handleGroupHeaderState(item as UDExListGroupHeaderBase);\n }\n } else if (item._id === dropdownItemId) {\n this.handleItemClick(item);\n }\n });\n\n this.syncFilteredItems();\n }\n\n handleItemClick(item: UDExListItemBase) {\n if (this.modeSingleSelect) {\n this.revertSelectedItems(this.selectedItems);\n }\n\n if (this.modeRadioGroup) {\n const groupHeader = item.parentElement as UDExListGroupHeaderBase;\n this.revertSelectedItems(groupHeader.getItems());\n }\n\n item.selected = !item.selected;\n }\n\n handleGroupHeaderState(groupHeader: UDExListGroupHeaderBase) {\n if (this.modeMultiSelect) {\n groupHeader.handleHeaderState();\n }\n }\n\n onHeaderPress(e:CustomEvent) {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.handleGroupHeaderSelection(id);\n this.syncFilteredItems();\n this.fireSelectionChange(id);\n }\n\n onSelectAllHeaderPress(e:CustomEvent) {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.handleGroupHeaderSelection(id);\n this.syncFilteredItems();\n this.fireDecoratorEvent(\"select-all\");\n }\n\n handleGroupHeaderSelection(id: string): void {\n this.getProcessedItems().forEach(({ item }) => {\n if (item._id === id) {\n (item as UDExListGroupHeaderBase).handleSelectionGroupState();\n }\n });\n }\n\n onSearch(value: string) {\n const searchValue: string = value;\n const hasSearchQuery = searchValue !== \"\";\n\n if (hasSearchQuery && !this._shouldFilterItems) {\n this.saveGroupCollapseState();\n }\n\n if (!hasSearchQuery && this._shouldFilterItems) {\n this.restoreGroupCollapseState();\n }\n\n this._shouldFilterItems = hasSearchQuery;\n this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);\n const items = this.getFlattenItemsArray(this._filteredItems);\n this._accSearchResultInfo = items.length ? `${items.length} ${this.resultReturnedText}` : this.noMatchesFoundText;\n this.fireDecoratorEvent(\"change-search\", { value: searchValue });\n }\n\n onReset() {\n this.revertSelectedItems(this.selectedItems);\n }\n\n onResetSearch() {\n this.resetSearch();\n this.fireDecoratorEvent(\"reset-search\");\n }\n\n onSubmitSearch() {\n this.fireDecoratorEvent(\"submit-search\", {\n selectedItems: this.selectedItems,\n });\n }\n\n /**\n * Reset the search value.\n * @public\n */\n resetSearch() {\n const search = this.getSearch();\n search.value = \"\";\n this._shouldFilterItems = false;\n this.restoreGroupCollapseState();\n this._filteredItems = this.filterItems(this.getProcessedItems(), \"\");\n }\n\n filterItems(items: Array<UDExProcessedItem>, str: string): Array<UDExProcessedItem> {\n const hasSearchQuery = str !== \"\";\n\n return items.filter(preparedItem => {\n const { isGroup, item } = preparedItem;\n\n if (isGroup) {\n const groupHeaderMatches = this.checkAndUpdateLabel(item, str);\n const filteredChildren = this.filterItemsForLabel(preparedItem.groupItems, str);\n\n if (groupHeaderMatches) {\n preparedItem.groupItems.forEach(child => this.checkAndUpdateLabel(child, str));\n } else {\n preparedItem.groupItems = filteredChildren;\n }\n\n if (hasSearchQuery && (groupHeaderMatches || preparedItem.groupItems.length > 0)) {\n item.collapsed = false;\n }\n\n return !hasSearchQuery || groupHeaderMatches || preparedItem.groupItems.length > 0;\n }\n\n return this.checkAndUpdateLabel(item, str);\n });\n }\n\n filterItemsForLabel(groupItems: Array<UDExListItemBase>, str: string): Array<UDExListItemBase> {\n return groupItems.filter(groupItem => this.checkAndUpdateLabel(groupItem, str));\n }\n\n checkAndUpdateLabel(item: UDExListItemBase | UDExListGroupHeaderBase, str: string): boolean {\n if (item.ratingCount) {\n return this.isIncludes(item.ratingCount, str);\n }\n\n if (!item.label) {\n console.warn(\"A label property is required for the item\");\n return false;\n }\n const cleanedLabel = cleanLabel(item.label);\n if (this.isIncludes(cleanedLabel, str)) {\n item.label = this.addSearchTermTag(cleanedLabel, str);\n return true;\n }\n\n item.label = cleanedLabel;\n return false;\n }\n\n addSearchTermTag(text: string, str: string): string {\n if (!str.length) {\n return text;\n }\n\n const regex = new RegExp(`(${str})`, \"i\");\n return text.replace(regex, \"<b>$1</b>\");\n }\n\n isIncludes(string: string, value: string): boolean {\n return string.toLowerCase().includes(value.toLowerCase());\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>) {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n syncFilteredItems() {\n const search = this.getSearch();\n if (this._shouldFilterItems) {\n this._filteredItems = this.filterItems(this.getProcessedItems(), search.value);\n } else {\n this._filteredItems = this.getProcessedItems();\n }\n }\n\n saveGroupCollapseState(): void {\n this._groupCollapseStateBeforeSearch.clear();\n\n this.items.forEach(item => {\n if (item.isGroup) {\n this._groupCollapseStateBeforeSearch.set(item._id, Boolean(item.collapsed));\n }\n });\n }\n\n restoreGroupCollapseState(): void {\n if (!this._groupCollapseStateBeforeSearch.size) {\n return;\n }\n\n this.items.forEach(item => {\n if (item.isGroup) {\n const collapsed = this._groupCollapseStateBeforeSearch.get(item._id);\n\n if (collapsed !== undefined) {\n item.collapsed = collapsed;\n }\n }\n });\n\n this._groupCollapseStateBeforeSearch.clear();\n }\n\n getSlottedItems(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<UDExListItemBase | UDExListGroupHeaderBase> {\n const arr: Array<UDExListItemBase | UDExListGroupHeaderBase> = [];\n items.forEach(item => {\n arr.push(item);\n if (item.isGroup) {\n arr.push(...(item as UDExListGroupHeaderBase).getItems());\n }\n });\n return arr;\n }\n\n getItemFromList(itemId:string): UDExItemFromList {\n let menuItem = null;\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n\n if (item.isGroup) {\n const groupItems = (item as UDExListGroupHeaderBase).getItems();\n menuItem = groupItems.find(({ _id }) => _id === itemId);\n\n if (menuItem) {\n break;\n }\n } else if (item._id === itemId) {\n menuItem = item;\n break;\n }\n }\n\n return menuItem;\n }\n\n fireSelectionChange(itemId: string) {\n this.fireDecoratorEvent(\"selection-change\", {\n selectedItems: this.selectedItems,\n item: this.getItemFromList(itemId),\n });\n }\n\n fireFirstIconClickEvent(e: CustomEvent): void {\n this._fireIconClickEvent(\"first-icon-click\", e);\n }\n\n fireSecondIconClickEvent(e: CustomEvent): void {\n this._fireIconClickEvent(\"second-icon-click\", e);\n }\n\n _dropdownScrollToTop() {\n this.getPopoverPart(UDExPopoverPart.Content)?.scrollTo({ top: 0 });\n }\n\n _dropdownScrollToSelectedItem() {\n const content = this.getPopoverPart(UDExPopoverPart.Content);\n const activeItem = this.activeItem;\n if (!content || !activeItem) { return; }\n const itemRect = activeItem.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n content.scrollTop += itemRect.top - contentRect.top + itemRect.height / 2 - content.clientHeight / 2;\n }\n\n _handleDropdownScroll() {\n if (this.modeMultiSelect) {\n this._dropdownScrollToTop();\n }\n if (this.modeSingleSelect) {\n this._dropdownScrollToSelectedItem();\n }\n }\n\n focusFirstItem(): void {\n const list = this.getList();\n const items = list.getKeyboardNavigationItems();\n if (!items.length) { return; }\n const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;\n const firstItem = items[firstIndex];\n list.setTabIndexByIndex(items, firstIndex);\n\n if (firstItem.isGroup) {\n list.focusHeader(firstItem);\n } else {\n list.focusItem(firstItem);\n }\n }\n\n private _fireIconClickEvent(eventName: \"first-icon-click\" | \"second-icon-click\", e: CustomEvent): void {\n const item = e.detail.item as UDExListItemBase;\n const id = this.getDataTokenId(item);\n this.fireDecoratorEvent(eventName, {\n originalEvent: e.detail.originalEvent,\n item: this.getItemFromList(id),\n });\n }\n\n getFlattenItemsArray(array: Array<UDExProcessedItem>): (UDExProcessedItem | UDExListItemBase)[] {\n return array.flatMap(item => {\n if (item.isGroup) {\n return [\n item,\n ...item.groupItems.filter(groupItem => !groupItem.disabled),\n ];\n }\n return item.item.disabled ? [] : [item.item];\n });\n }\n\n getCurrentIndex(item: UDExListItem): number {\n return this.getDomListItems().indexOf(item);\n }\n\n getList(): UDExList {\n return this.shadowRoot!.querySelector<UDExList>(\"[udex-list]\")!;\n }\n\n getSearch(): UDExSearch | HTMLInputElement {\n return this.shadowRoot!.querySelector<UDExSearch>(\"[udex-search]\")! || this.shadowRoot!.querySelector<HTMLInputElement>(\".udex-text-field__search\")!;\n }\n\n getPopover(): Popover {\n return this.shadowRoot!.querySelector<Popover>(\"[ui5-popover]\")!;\n }\n\n getDomListItems(): UDExListItem[] {\n const elementList = this.shadowRoot!.querySelector(\"[udex-list]\") as HTMLElement;\n return elementList ? Array.from(elementList.querySelectorAll(\"[udex-list-item]\")) : [];\n }\n\n getDataTokenId(item: UDExListItemBase): string {\n return item.getAttribute(\"data-token-id\") as string;\n }\n\n getProcessedItems(): Array<UDExProcessedItem> {\n return this._validItems.map(item => {\n const isGroup = item.isGroup;\n const groupItems = isGroup ? (item as UDExListGroupHeaderBase).getItems() : [];\n\n if (isGroup) {\n this._setItemsModeAndControl(groupItems);\n }\n\n item.mode = this.mode;\n item.controlled = this.isControlled;\n\n return { item, groupItems, isGroup };\n });\n }\n\n getPopoverPart(part: UDExPopoverPart): HTMLElement {\n return this.getPopover().shadowRoot!.querySelector<HTMLElement>(`[part=${part}]`)!;\n }\n\n _managePopupListeners(part: UDExPopoverPart, action: \"addEventListener\" | \"removeEventListener\"): void {\n const element = this.getPopoverPart(part);\n element?.[action](\"wheel\", ((e: WheelEvent) => e.preventDefault()) as EventListener);\n }\n\n _setContentHeight(): void {\n const content = this.getPopoverPart(UDExPopoverPart.Content);\n content.style.maxHeight = this.height || \"\";\n }\n\n _setItemsModeAndControl(items: Array<UDExFilterMenuItem | UDExSelectBoxItem>) {\n items.forEach(item => {\n item.mode = this.mode;\n item.controlled = this.isControlled;\n });\n }\n\n get activeItem(): UDExListItem | undefined {\n return this.getDomListItems().find(({ selected }) => selected);\n }\n\n get _validItems(): Array<UDExListItemBase | UDExListGroupHeaderBase> {\n return this.items.filter(item => !(item instanceof HTMLElement) || \"isGroup\" in item);\n }\n\n get getNoResultText(): string {\n const hasTextProperty = this.noResultText !== undefined && this.noResultText.length > 0;\n return hasTextProperty ? this.noResultText : this.noMatchesFoundText;\n }\n\n get noMatchesFoundText(): string {\n return translate(UDExSearchableListBase, NO_MATCHES_FOUND);\n }\n\n get resultReturnedText(): string {\n return translate(UDExSearchableListBase, RESULT_RETURNED);\n }\n\n get startsText(): string {\n return translate(UDExSearchableListBase, STARS);\n }\n\n get isListEmpty(): boolean {\n return this._filteredItems.length === 0;\n }\n\n get selectedItems(): Array<UDExListItemBase> {\n const selectedItems: Array<UDExListItemBase> = this.getSlottedItems(this._validItems).filter(({ selected }) => selected);\n return selectedItems;\n }\n\n get modeMultiSelect(): boolean {\n return this.mode === UDExListMode.MultiSelect;\n }\n\n get modeSingleSelect(): boolean {\n return this.mode === UDExListMode.SingleSelect;\n }\n\n get modeRadioGroup(): boolean {\n return this.mode === UDExListMode.RadioGroup;\n }\n\n get isControlled(): boolean {\n const isGrouping = this.items.some(({ isGroup }) => isGroup);\n return this.modeMultiSelect && isGrouping;\n }\n\n /**\n * Whether the dropdown list should use the ARIA tree pattern\n * (role=\"tree\"/\"treeitem\" with aria-expanded / aria-selected / aria-checked).\n *\n * Base implementation is never a tree. Subclasses that support grouped\n * hierarchical navigation (e.g. UDExFilterMenu) override this with their\n * own mode/collapsible rules.\n */\n get isTreeStructure(): boolean {\n return false;\n }\n\n get additionalClassName(): string {\n return `udex-searchable-list__header`;\n }\n\n get groupClassName(): string {\n const classHeader = `udex-searchable-list__header`;\n return this.showSearch ? `${classHeader} udex-searchable-list__header_no-margin` : classHeader;\n }\n\n get showSearch(): boolean {\n const isSearchVisible = this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);\n return !this.hideDropdownSearch && isSearchVisible;\n }\n\n get isSearchActive(): boolean {\n return this.nonGroupItems.length > SHOW_SEARCH_AFTER_COUNT;\n }\n\n get nonGroupItems(): Array<UDExListItemBase> {\n return this.getSlottedItems(this._validItems).filter(item => !item.isGroup);\n }\n\n get roleForGroupList(): string {\n // Host is always transparent; the shadow-inner div carries the widget role\n // (tree/listbox) via accessibleRoleForList.\n return \"none\";\n }\n\n get accessibleRoleForList(): string {\n if (this.isTreeStructure) {\n return \"tree\";\n }\n return this.defaultAccessibleRole;\n }\n\n get listItemRole(): string {\n if (this.isTreeStructure) {\n return \"treeitem\";\n }\n\n if (this.accessibleRoleForList === \"listbox\") {\n return \"option\";\n }\n\n return \"none\";\n }\n\n get hideDropdownSearch(): boolean {\n return false;\n }\n}\n\nexport default UDExSearchableListBase;\nexport type {\n UDExSelectBoxIconClickEventDetail, UDExSearchableListBaseSubmitSearchEventDetail, UDExSearchableListBaseChangeSearchEventDetail, UDExSearchableListBaseSelectionChangeEventDetail,\n};\n"]}
|
|
@@ -7,7 +7,7 @@ import UDExListItem from "./ListItem.js";
|
|
|
7
7
|
import UDExListGroupHeader from "./ListGroupHeader.js";
|
|
8
8
|
import UDExListSelectAll from "./ListSelectAll.js";
|
|
9
9
|
export default function SearchableListBaseTemplate() {
|
|
10
|
-
return (_jsxs(_Fragment, { children: [this.showSearch && (_jsxs(_Fragment, { children: [_jsx(UDExSearch, { slot: "header", mode: UDExSearchMode.Standard, class: "udex-filter-menu__search", label: this.searchPlaceholder, "label-animation-disabled": true, "non-interactive-submit-button": true, "show-submit-button": true }), _jsx("span", { "aria-live": "polite", "aria-atomic": "true", class: "hidden", children: this._accSearchResultInfo })] })), this.isListEmpty ? (_jsxs("div", { class: "udex-no-result", children: [_jsx(IllustratedMessage, { name: "NoSearchResults", design: "Dot", "title-text": " ", "subtitle-text": " " }), _jsx("span", { children: this.getNoResultText })] })) : this.busy ? (_jsx(UDExBusyIndicator, { class: "udex-busy-indicator", size: "M", delay: this.busyDelay, active: true })) : (_jsx(UDExList, { id: "udex-list", role: this.roleForGroupList, "accessible-role": this.accessibleRoleForList, class: "udex-filter-menu__list", controlled: this.isControlled, mode: this.mode, type: this.type, "item-icon": this.itemIcon, children: this._filteredItems.map((processedItem, index) => (processedItem.isGroup
|
|
10
|
+
return (_jsxs(_Fragment, { children: [this.showSearch && (_jsxs(_Fragment, { children: [_jsx(UDExSearch, { slot: "header", mode: UDExSearchMode.Standard, class: "udex-filter-menu__search", label: this.searchPlaceholder, "label-animation-disabled": true, "non-interactive-submit-button": true, "show-submit-button": true }), _jsx("span", { "aria-live": "polite", "aria-atomic": "true", class: "hidden", children: this._accSearchResultInfo })] })), this.isListEmpty ? (_jsxs("div", { class: "udex-no-result", children: [_jsx(IllustratedMessage, { name: "NoSearchResults", design: "Dot", "title-text": " ", "subtitle-text": " " }), _jsx("span", { children: this.getNoResultText })] })) : this.busy ? (_jsx(UDExBusyIndicator, { class: "udex-busy-indicator", size: "M", delay: this.busyDelay, active: true })) : (_jsx(UDExList, { id: "udex-list", role: this.roleForGroupList, "accessible-role": this.accessibleRoleForList, ...(this.isTreeStructure && this.modeMultiSelect ? { "aria-multiselectable": "true" } : {}), class: "udex-filter-menu__list", controlled: this.isControlled, mode: this.mode, type: this.type, "item-icon": this.itemIcon, children: this._filteredItems.map((processedItem, index) => (processedItem.isGroup
|
|
11
11
|
? renderGroup.call(this, processedItem, index)
|
|
12
12
|
: renderListItem(processedItem.item, index, "none", this.listItemRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent))) }))] }));
|
|
13
13
|
}
|
|
@@ -24,7 +24,8 @@ function renderSelectAll(processedItem, index) {
|
|
|
24
24
|
function renderGroupHeader(processedItem, index) {
|
|
25
25
|
const { item, groupItems } = processedItem;
|
|
26
26
|
const header = item;
|
|
27
|
-
|
|
27
|
+
const childAccessibleRole = this.isTreeStructure ? "treeitem" : undefined;
|
|
28
|
+
return (_jsx(UDExListGroupHeader, { role: this.isTreeStructure ? "none" : "group", "_tree-mode": this.isTreeStructure || undefined, ...(index === 0 ? { "_no-border": "" } : {}), "_additional-class-name": "udex-searchable-list__header", class: this.groupClassName, "non-interactive": header.nonInteractive, "data-token-id": item._id, label: item.label, "supporting-text": item.supportingText, controlled: header.controlled, collapsible: header.collapsible, collapsed: header.collapsed, _filtered: this._shouldFilterItems, disabled: item.disabled, selected: item.selected, onFirstIconClick: this.fireFirstIconClickEvent, onSecondIconClick: this.fireSecondIconClickEvent, indeterminate: header.indeterminate, children: groupItems.map((child, i) => renderListItem(child, i, "none", childAccessibleRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)) }, index));
|
|
28
29
|
}
|
|
29
30
|
function renderListItem(item, index, role, accessibleRole, onFirstIconClick, onSecondIconClick) {
|
|
30
31
|
return (_jsx(UDExListItem, { role: role, "data-token-id": item._id, controlled: item.controlled, mode: item.mode, onFirstIconClick: onFirstIconClick, onSecondIconClick: onSecondIconClick, "supporting-text": item.supportingText, "additional-text": item.additionalText, "additional-text-state": item.additionalTextState, divider: item.divider, disabled: item.disabled, selected: item.selected, rating: item.rating, "total-count": item.totalCount, "rating-count": item.ratingCount, "rating-max": item.ratingMax, label: item.label, image: item.image, "image-alt": item.imageAlt, "image-badge-state": item.imageBadgeState, "image-shape": item.imageShape, "image-size": item.imageSize, flag: item.flag, "flag-position": item.flagPosition, size: item.size, type: item.type, ...(accessibleRole ? { "accessible-role": accessibleRole } : {}), ...(item.innerHTML ? { dangerouslySetInnerHTML: { __html: item.innerHTML } } : {}) }, index));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchableListBaseTemplate.js","sourceRoot":"","sources":["../src/SearchableListBaseTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExSearchableListBase from \"./SearchableListBase.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\n\nexport default function SearchableListBaseTemplate(this: UDExSearchableListBase) {\n return (\n <>\n {this.showSearch && (\n <>\n <UDExSearch\n slot=\"header\"\n mode={UDExSearchMode.Standard}\n class=\"udex-filter-menu__search\"\n label={this.searchPlaceholder}\n label-animation-disabled\n non-interactive-submit-button\n show-submit-button>\n </UDExSearch>\n <span aria-live=\"polite\" aria-atomic=\"true\" class=\"hidden\">{this._accSearchResultInfo}</span>\n </>\n )}\n {this.isListEmpty ? (\n <div class=\"udex-no-result\">\n <IllustratedMessage\n name=\"NoSearchResults\"\n design=\"Dot\"\n title-text=\" \"\n subtitle-text=\" \">\n </IllustratedMessage>\n <span>{this.getNoResultText}</span>\n </div>\n ) : this.busy ? (\n <UDExBusyIndicator\n class=\"udex-busy-indicator\"\n size=\"M\"\n delay={this.busyDelay}\n active>\n </UDExBusyIndicator>\n ) : (\n <UDExList\n id=\"udex-list\"\n role={this.roleForGroupList as AriaRole}\n accessible-role={this.accessibleRoleForList}\n class=\"udex-filter-menu__list\"\n controlled={this.isControlled}\n mode={this.mode}\n type={this.type}\n item-icon={this.itemIcon}>\n {this._filteredItems.map((processedItem, index) => (\n processedItem.isGroup\n ? renderGroup.call(this, processedItem, index)\n : renderListItem(processedItem.item as UDExListItem, index, \"none\", this.listItemRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n ))}\n </UDExList>\n )}\n </>\n );\n}\n\nfunction renderGroup(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n return (processedItem.item as UDExListGroupHeaderBase).isSelectAllHeader\n ? renderSelectAll.call(this, processedItem, index)\n : renderGroupHeader.call(this, processedItem, index);\n}\n\nfunction renderSelectAll(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n return (\n <UDExListSelectAll\n key={index}\n _additional-class-name={this.additionalClassName}\n data-token-id={item._id}\n label={item.label}\n controlled={header.controlled}\n supporting-text={item.supportingText}\n disabled={item.disabled}\n selected={item.selected}\n indeterminate={header.indeterminate}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, this.listItemRole, undefined, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n )}\n </UDExListSelectAll>\n );\n}\n\nfunction renderGroupHeader(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n return (\n <UDExListGroupHeader\n key={index}\n role=\"group\"\n {...(index === 0 ? { \"_no-border\": \"\" } : {})}\n _additional-class-name=\"udex-searchable-list__header\"\n class={this.groupClassName}\n non-interactive={header.nonInteractive}\n data-token-id={item._id}\n label={item.label}\n supporting-text={item.supportingText}\n controlled={header.controlled}\n collapsible={header.collapsible}\n collapsed={header.collapsed}\n _filtered={this._shouldFilterItems}\n disabled={item.disabled}\n selected={item.selected}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}\n indeterminate={header.indeterminate}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, \"none\", undefined, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n )}\n </UDExListGroupHeader>\n );\n}\n\nfunction renderListItem(\n item: UDExListItem,\n index: number,\n role: string,\n accessibleRole: string | undefined,\n onFirstIconClick: (e: CustomEvent) => void,\n onSecondIconClick: (e: CustomEvent) => void,\n) {\n return (\n <UDExListItem\n key={index}\n role={role as AriaRole}\n data-token-id={item._id}\n controlled={item.controlled}\n mode={item.mode}\n onFirstIconClick={onFirstIconClick}\n onSecondIconClick={onSecondIconClick}\n supporting-text={item.supportingText}\n additional-text={item.additionalText}\n additional-text-state={item.additionalTextState}\n divider={item.divider}\n disabled={item.disabled}\n selected={item.selected}\n rating={item.rating}\n total-count={item.totalCount}\n rating-count={item.ratingCount}\n rating-max={item.ratingMax}\n label={item.label}\n image={item.image}\n image-alt={item.imageAlt}\n image-badge-state={item.imageBadgeState}\n image-shape={item.imageShape}\n image-size={item.imageSize}\n flag={item.flag}\n flag-position={item.flagPosition}\n size={item.size}\n type={item.type}\n {...(accessibleRole ? { \"accessible-role\": accessibleRole } : {})}\n {...((item as any).innerHTML ? { dangerouslySetInnerHTML: { __html: (item as any).innerHTML } } : {})}>\n </UDExListItem>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SearchableListBaseTemplate.js","sourceRoot":"","sources":["../src/SearchableListBaseTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExSearchableListBase from \"./SearchableListBase.js\";\nimport type { UDExProcessedItem } from \"./types/SearchableListBase.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExSearch, { Mode as UDExSearchMode } from \"./Search.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\n\nexport default function SearchableListBaseTemplate(this: UDExSearchableListBase) {\n return (\n <>\n {this.showSearch && (\n <>\n <UDExSearch\n slot=\"header\"\n mode={UDExSearchMode.Standard}\n class=\"udex-filter-menu__search\"\n label={this.searchPlaceholder}\n label-animation-disabled\n non-interactive-submit-button\n show-submit-button>\n </UDExSearch>\n <span aria-live=\"polite\" aria-atomic=\"true\" class=\"hidden\">{this._accSearchResultInfo}</span>\n </>\n )}\n {this.isListEmpty ? (\n <div class=\"udex-no-result\">\n <IllustratedMessage\n name=\"NoSearchResults\"\n design=\"Dot\"\n title-text=\" \"\n subtitle-text=\" \">\n </IllustratedMessage>\n <span>{this.getNoResultText}</span>\n </div>\n ) : this.busy ? (\n <UDExBusyIndicator\n class=\"udex-busy-indicator\"\n size=\"M\"\n delay={this.busyDelay}\n active>\n </UDExBusyIndicator>\n ) : (\n <UDExList\n id=\"udex-list\"\n role={this.roleForGroupList as AriaRole}\n accessible-role={this.accessibleRoleForList}\n {...(this.isTreeStructure && this.modeMultiSelect ? { \"aria-multiselectable\": \"true\" } : {})}\n class=\"udex-filter-menu__list\"\n controlled={this.isControlled}\n mode={this.mode}\n type={this.type}\n item-icon={this.itemIcon}>\n {this._filteredItems.map((processedItem, index) => (\n processedItem.isGroup\n ? renderGroup.call(this, processedItem, index)\n : renderListItem(processedItem.item as UDExListItem, index, \"none\", this.listItemRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n ))}\n </UDExList>\n )}\n </>\n );\n}\n\nfunction renderGroup(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n return (processedItem.item as UDExListGroupHeaderBase).isSelectAllHeader\n ? renderSelectAll.call(this, processedItem, index)\n : renderGroupHeader.call(this, processedItem, index);\n}\n\nfunction renderSelectAll(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n return (\n <UDExListSelectAll\n key={index}\n _additional-class-name={this.additionalClassName}\n data-token-id={item._id}\n label={item.label}\n controlled={header.controlled}\n supporting-text={item.supportingText}\n disabled={item.disabled}\n selected={item.selected}\n indeterminate={header.indeterminate}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, this.listItemRole, undefined, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n )}\n </UDExListSelectAll>\n );\n}\n\nfunction renderGroupHeader(this: UDExSearchableListBase, processedItem: UDExProcessedItem, index: number) {\n const { item, groupItems } = processedItem;\n const header = item as UDExListGroupHeaderBase;\n const childAccessibleRole = this.isTreeStructure ? \"treeitem\" : undefined;\n return (\n <UDExListGroupHeader\n key={index}\n role={this.isTreeStructure ? \"none\" : \"group\"}\n _tree-mode={this.isTreeStructure || undefined}\n {...(index === 0 ? { \"_no-border\": \"\" } : {})}\n _additional-class-name=\"udex-searchable-list__header\"\n class={this.groupClassName}\n non-interactive={header.nonInteractive}\n data-token-id={item._id}\n label={item.label}\n supporting-text={item.supportingText}\n controlled={header.controlled}\n collapsible={header.collapsible}\n collapsed={header.collapsed}\n _filtered={this._shouldFilterItems}\n disabled={item.disabled}\n selected={item.selected}\n onFirstIconClick={this.fireFirstIconClickEvent}\n onSecondIconClick={this.fireSecondIconClickEvent}\n indeterminate={header.indeterminate}>\n {groupItems.map((child, i) =>\n renderListItem(child as UDExListItem, i, \"none\", childAccessibleRole, this.fireFirstIconClickEvent, this.fireSecondIconClickEvent)\n )}\n </UDExListGroupHeader>\n );\n}\n\nfunction renderListItem(\n item: UDExListItem,\n index: number,\n role: string,\n accessibleRole: string | undefined,\n onFirstIconClick: (e: CustomEvent) => void,\n onSecondIconClick: (e: CustomEvent) => void,\n) {\n return (\n <UDExListItem\n key={index}\n role={role as AriaRole}\n data-token-id={item._id}\n controlled={item.controlled}\n mode={item.mode}\n onFirstIconClick={onFirstIconClick}\n onSecondIconClick={onSecondIconClick}\n supporting-text={item.supportingText}\n additional-text={item.additionalText}\n additional-text-state={item.additionalTextState}\n divider={item.divider}\n disabled={item.disabled}\n selected={item.selected}\n rating={item.rating}\n total-count={item.totalCount}\n rating-count={item.ratingCount}\n rating-max={item.ratingMax}\n label={item.label}\n image={item.image}\n image-alt={item.imageAlt}\n image-badge-state={item.imageBadgeState}\n image-shape={item.imageShape}\n image-size={item.imageSize}\n flag={item.flag}\n flag-position={item.flagPosition}\n size={item.size}\n type={item.type}\n {...(accessibleRole ? { \"accessible-role\": accessibleRole } : {})}\n {...((item as any).innerHTML ? { dangerouslySetInnerHTML: { __html: (item as any).innerHTML } } : {})}>\n </UDExListItem>\n );\n}\n"]}
|
package/dist/SelectBase.d.ts
CHANGED
|
@@ -180,6 +180,20 @@ declare class UDExSelectBase extends UDExSearchableListBase {
|
|
|
180
180
|
handleImagePosition(items: UDExListItemBase[], index: number): void;
|
|
181
181
|
get hasFooter(): boolean;
|
|
182
182
|
_getIconButtonSlot(el: HTMLElement): string | null;
|
|
183
|
+
/**
|
|
184
|
+
* Collapses (Left) or expands (Right) a collapsible group header when the arrow key
|
|
185
|
+
* is pressed while focus is on that header. Mirrors List.handleArrowLeft/Right, but is
|
|
186
|
+
* needed here because SelectBox intercepts Left/Right at the popover level (for icon-row
|
|
187
|
+
* navigation) before the event would reach the List's own handler.
|
|
188
|
+
*
|
|
189
|
+
* Returns true when a collapse/expand was handled, so the caller skips icon-row handling.
|
|
190
|
+
*/
|
|
191
|
+
_handleGroupHeaderCollapse(target: HTMLElement, collapse: boolean): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Resolves the collapsible group-header host from a keydown target, walking up through
|
|
194
|
+
* shadow host boundaries (the focused element can be the header's inner wrapper/list-item).
|
|
195
|
+
*/
|
|
196
|
+
_resolveCollapsibleGroupHeader(target: HTMLElement): UDExListItemBase | null;
|
|
183
197
|
_handleArrowRightInRow(target: HTMLElement): void;
|
|
184
198
|
_handleArrowLeftInRow(target: HTMLElement): void;
|
|
185
199
|
_handleListKeyDownCapture(e: KeyboardEvent): void;
|
package/dist/SelectBase.js
CHANGED
|
@@ -89,6 +89,9 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
89
89
|
this._list = this.getList();
|
|
90
90
|
this._trigger = this.trigger;
|
|
91
91
|
this.handleDirection();
|
|
92
|
+
if (this._list) {
|
|
93
|
+
this._list._scrollIntoView = "Nearest";
|
|
94
|
+
}
|
|
92
95
|
if (this._requestRender) {
|
|
93
96
|
this._requestRender = false;
|
|
94
97
|
}
|
|
@@ -152,11 +155,17 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
152
155
|
}
|
|
153
156
|
if (isRight(e)) {
|
|
154
157
|
e.preventDefault();
|
|
158
|
+
if (this._handleGroupHeaderCollapse(e.target, false)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
155
161
|
this._handleArrowRightInRow(e.target);
|
|
156
162
|
return;
|
|
157
163
|
}
|
|
158
164
|
if (isLeft(e)) {
|
|
159
165
|
e.preventDefault();
|
|
166
|
+
if (this._handleGroupHeaderCollapse(e.target, true)) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
160
169
|
this._handleArrowLeftInRow(e.target);
|
|
161
170
|
return;
|
|
162
171
|
}
|
|
@@ -410,6 +419,50 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
410
419
|
const iconSlot = el.getAttribute?.("slot");
|
|
411
420
|
return (iconSlot === "firstIcon" || iconSlot === "secondIcon") ? iconSlot : null;
|
|
412
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Collapses (Left) or expands (Right) a collapsible group header when the arrow key
|
|
424
|
+
* is pressed while focus is on that header. Mirrors List.handleArrowLeft/Right, but is
|
|
425
|
+
* needed here because SelectBox intercepts Left/Right at the popover level (for icon-row
|
|
426
|
+
* navigation) before the event would reach the List's own handler.
|
|
427
|
+
*
|
|
428
|
+
* Returns true when a collapse/expand was handled, so the caller skips icon-row handling.
|
|
429
|
+
*/
|
|
430
|
+
_handleGroupHeaderCollapse(target, collapse) {
|
|
431
|
+
const header = this._resolveCollapsibleGroupHeader(target);
|
|
432
|
+
if (!header) {
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
435
|
+
// Left only collapses an expanded group; Right only expands a collapsed one.
|
|
436
|
+
if (collapse && !header.collapsed) {
|
|
437
|
+
header.collapsed = true;
|
|
438
|
+
this._list.setCollapsedItems(true, header);
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
if (!collapse && header.collapsed) {
|
|
442
|
+
header.collapsed = false;
|
|
443
|
+
this._list.setCollapsedItems(false, header);
|
|
444
|
+
return true;
|
|
445
|
+
}
|
|
446
|
+
// Target is a collapsible header but already in the requested state — still consume
|
|
447
|
+
// the key so it does not fall through to icon-row navigation.
|
|
448
|
+
return header.isGroup;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Resolves the collapsible group-header host from a keydown target, walking up through
|
|
452
|
+
* shadow host boundaries (the focused element can be the header's inner wrapper/list-item).
|
|
453
|
+
*/
|
|
454
|
+
_resolveCollapsibleGroupHeader(target) {
|
|
455
|
+
let node = target;
|
|
456
|
+
while (node) {
|
|
457
|
+
const el = node;
|
|
458
|
+
if (el.isGroup && typeof el.hasAttribute === "function" && el.hasAttribute("collapsible")) {
|
|
459
|
+
return el;
|
|
460
|
+
}
|
|
461
|
+
const root = node.getRootNode();
|
|
462
|
+
node = root.host ?? null;
|
|
463
|
+
}
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
413
466
|
_handleArrowRightInRow(target) {
|
|
414
467
|
const iconSlot = this._getIconButtonSlot(target);
|
|
415
468
|
if (!iconSlot) {
|
|
@@ -439,7 +492,7 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
439
492
|
firstIcon?.focus();
|
|
440
493
|
}
|
|
441
494
|
else if (iconSlot === "firstIcon") {
|
|
442
|
-
|
|
495
|
+
this._list.focusItem(parentItem);
|
|
443
496
|
}
|
|
444
497
|
}
|
|
445
498
|
_handleListKeyDownCapture(e) {
|
|
@@ -480,7 +533,7 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
480
533
|
}
|
|
481
534
|
this._list.unsetTabIndexByIndex(items, currentIndex);
|
|
482
535
|
this._list.setTabIndexByIndex(items, targetIndex);
|
|
483
|
-
items[targetIndex]
|
|
536
|
+
this._list.focusItem(items[targetIndex]);
|
|
484
537
|
this._selectedOption = items[targetIndex].label;
|
|
485
538
|
}
|
|
486
539
|
_focusLastListItem() {
|
|
@@ -497,7 +550,7 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
497
550
|
this._list.focusHeader(lastItem);
|
|
498
551
|
}
|
|
499
552
|
else {
|
|
500
|
-
|
|
553
|
+
this._list.focusItem(lastItem);
|
|
501
554
|
}
|
|
502
555
|
}
|
|
503
556
|
_firstFocusableIn(el) {
|