@sapudex/web-components 0.127.6 → 0.138.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/dist/Accordion.d.ts +1 -1
- package/dist/Accordion.js +1 -1
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionItem.d.ts +1 -1
- package/dist/AccordionItem.js +2 -2
- package/dist/AccordionItem.js.map +1 -1
- package/dist/Checkbox.d.ts +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/CountrySelector.d.ts +24 -6
- package/dist/CountrySelector.js +25 -7
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.d.ts +1 -0
- package/dist/DatePicker.js +4 -1
- package/dist/DatePicker.js.map +1 -1
- package/dist/Dropdown.d.ts +1 -1
- package/dist/Dropdown.js +3 -3
- package/dist/Dropdown.js.map +1 -1
- package/dist/FilterMenu.d.ts +19 -5
- package/dist/FilterMenu.js +57 -20
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.d.ts +9 -1
- package/dist/Footer.js +8 -1
- package/dist/Footer.js.map +1 -1
- package/dist/Link.d.ts +1 -1
- package/dist/Link.js +1 -1
- package/dist/Link.js.map +1 -1
- package/dist/List.d.ts +1 -1
- package/dist/List.js +17 -1
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.d.ts +2 -2
- package/dist/ListGroupHeader.js +2 -2
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListItem.d.ts +3 -3
- package/dist/ListItem.js +6 -7
- package/dist/ListItem.js.map +1 -1
- package/dist/ListSelectAll.d.ts +1 -1
- package/dist/ListSelectAll.js +1 -1
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadItem.d.ts +9 -1
- package/dist/MastheadItem.js +26 -9
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +5 -0
- package/dist/MastheadMenu.js +24 -0
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +2 -3
- package/dist/MastheadMenuItem.js +2 -17
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.d.ts +25 -5
- package/dist/MastheadMobileMenu.js +135 -21
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.d.ts +13 -4
- package/dist/MastheadProfileMenu.js +40 -9
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +3 -0
- package/dist/MastheadShell.js +42 -8
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.d.ts +3 -3
- package/dist/MediaPlayer.js +115 -25
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +26 -0
- package/dist/PhoneNumberField.js +46 -2
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/ReviewItem.d.ts +105 -0
- package/dist/ReviewItem.js +157 -0
- package/dist/ReviewItem.js.map +1 -0
- package/dist/Search.d.ts +15 -1
- package/dist/Search.js +30 -5
- package/dist/Search.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +1 -0
- package/dist/SecondaryNavigation.js +11 -10
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +1 -1
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationItemBase.js +1 -1
- package/dist/SecondaryNavigationItemBase.js.map +1 -1
- package/dist/SelectBox.d.ts +33 -9
- package/dist/SelectBox.js +119 -60
- package/dist/SelectBox.js.map +1 -1
- package/dist/Switch.d.ts +19 -0
- package/dist/Switch.js +19 -0
- package/dist/Switch.js.map +1 -1
- package/dist/Tab.d.ts +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.d.ts +1 -1
- package/dist/TabNavigation.js +1 -1
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Tag.d.ts +9 -1
- package/dist/Tag.js +20 -3
- package/dist/Tag.js.map +1 -1
- package/dist/TagGroup.d.ts +94 -0
- package/dist/TagGroup.js +174 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TextArea.d.ts +13 -0
- package/dist/TextArea.js +15 -0
- package/dist/TextArea.js.map +1 -1
- package/dist/TextField.d.ts +23 -13
- package/dist/TextField.js +16 -2
- package/dist/TextField.js.map +1 -1
- package/dist/Tooltip.d.ts +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/Tooltip.js.map +1 -1
- package/dist/assets/{bundle.esm-7d53f4f2.js → bundle.esm-bb1c7413.js} +190 -188
- package/dist/assets/messagebundle_en-c677773a.js +1 -0
- package/dist/assets/parameters-bundle.css-c897ae23.js +2 -0
- package/dist/assets/video.es-60bfb78c.js +228 -0
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -0
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SecondaryNavigation.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/TagGroup.css +1 -0
- 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/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +783 -362
- package/dist/custom-elements.json +751 -369
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
- package/dist/generated/i18n/i18n-defaults.js +6 -4
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DropdownTemplate.lit.js +2 -2
- package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FooterTemplate.lit.js +9 -9
- package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
- package/dist/generated/templates/HeroBannerTemplate.lit.js +7 -8
- package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +6 -6
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
- package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +16 -12
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +7 -7
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MediaPlayerTemplate.lit.js +2 -2
- package/dist/generated/templates/MediaPlayerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +5 -2
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ReviewItemTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/ReviewItemTemplate.lit.js +8 -0
- package/dist/generated/templates/ReviewItemTemplate.lit.js.map +1 -0
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -6
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js +2 -2
- package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js +2 -2
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -6
- package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +3 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TagGroupTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/TagGroupTemplate.lit.js +8 -0
- package/dist/generated/templates/TagGroupTemplate.lit.js.map +1 -0
- package/dist/generated/templates/TagTemplate.lit.js +11 -7
- package/dist/generated/templates/TagTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
- package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
- package/dist/generated/themes/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +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/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +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/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +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/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.d.ts +3 -0
- package/dist/generated/themes/ReviewItem.css.js +9 -0
- package/dist/generated/themes/ReviewItem.css.js.map +1 -0
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +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.js +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +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/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +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 +3 -0
- package/dist/generated/themes/TagGroup.css.js +9 -0
- package/dist/generated/themes/TagGroup.css.js.map +1 -0
- 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.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
- package/dist/i18n/messagebundle.properties +7 -3
- package/dist/i18n/messagebundle_en.properties +5 -3
- package/dist/vscode.html-custom-data.json +148 -78
- package/dist/web-types.json +382 -142
- package/package.json +8 -8
- package/src/Accordion.ts +1 -1
- package/src/AccordionItem.ts +2 -2
- package/src/Checkbox.ts +1 -1
- package/src/CountrySelector.hbs +19 -15
- package/src/CountrySelector.ts +42 -9
- package/src/DatePicker.hbs +7 -8
- package/src/DatePicker.ts +14 -10
- package/src/Dropdown.hbs +3 -0
- package/src/Dropdown.ts +3 -3
- package/src/FilterMenu.hbs +58 -59
- package/src/FilterMenu.ts +91 -37
- package/src/Footer.hbs +9 -0
- package/src/Footer.ts +10 -1
- package/src/HeroBanner.hbs +4 -1
- package/src/Link.ts +1 -1
- package/src/List.ts +43 -23
- package/src/ListGroupHeader.ts +2 -2
- package/src/ListItem.hbs +4 -2
- package/src/ListItem.ts +8 -10
- package/src/ListSelectAll.hbs +1 -1
- package/src/ListSelectAll.ts +1 -1
- package/src/MastheadItem.hbs +5 -3
- package/src/MastheadItem.ts +35 -8
- package/src/MastheadMenu.hbs +4 -2
- package/src/MastheadMenu.ts +30 -0
- package/src/MastheadMenuItem.hbs +0 -2
- package/src/MastheadMenuItem.ts +2 -16
- package/src/MastheadMobileMenu.hbs +36 -10
- package/src/MastheadMobileMenu.ts +162 -22
- package/src/MastheadProfileMenu.hbs +6 -2
- package/src/MastheadProfileMenu.ts +66 -20
- package/src/MastheadShell.hbs +10 -4
- package/src/MastheadShell.ts +49 -8
- package/src/MediaPlayer.hbs +1 -3
- package/src/MediaPlayer.ts +122 -26
- package/src/PhoneNumberField.hbs +18 -3
- package/src/PhoneNumberField.ts +67 -2
- package/src/ReviewItem.hbs +20 -0
- package/src/ReviewItem.ts +227 -0
- package/src/Search.ts +41 -4
- package/src/SecondaryNavigation.hbs +9 -7
- package/src/SecondaryNavigation.ts +13 -11
- package/src/SecondaryNavigationItem.ts +1 -1
- package/src/SecondaryNavigationItemBase.ts +1 -1
- package/src/SelectBox.hbs +9 -7
- package/src/SelectBox.ts +153 -72
- package/src/Switch.ts +21 -0
- package/src/Tab.ts +1 -1
- package/src/TabHeader.hbs +3 -1
- package/src/TabInOverflow.hbs +16 -4
- package/src/TabNavigation.hbs +15 -7
- package/src/TabNavigation.ts +1 -1
- package/src/Tag.hbs +28 -12
- package/src/Tag.ts +25 -4
- package/src/TagGroup.hbs +48 -0
- package/src/TagGroup.ts +222 -0
- package/src/TextArea.hbs +36 -33
- package/src/TextArea.ts +25 -0
- package/src/TextField.hbs +8 -6
- package/src/TextField.ts +50 -18
- package/src/Tooltip.ts +1 -1
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +3 -3
- package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
- package/src/generated/templates/DropdownTemplate.lit.ts +2 -2
- package/src/generated/templates/FilterMenuTemplate.lit.ts +1 -1
- package/src/generated/templates/FooterTemplate.lit.ts +9 -9
- package/src/generated/templates/HeroBannerTemplate.lit.ts +7 -8
- package/src/generated/templates/ListItemTemplate.lit.ts +6 -6
- package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +16 -12
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadShellTemplate.lit.ts +7 -7
- package/src/generated/templates/MediaPlayerTemplate.lit.ts +2 -2
- package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +5 -2
- package/src/generated/templates/ReviewItemTemplate.lit.ts +13 -0
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -6
- package/src/generated/templates/SelectBoxTemplate.lit.ts +2 -2
- package/src/generated/templates/TabHeaderTemplate.lit.ts +2 -2
- package/src/generated/templates/TabInOverflowTemplate.lit.ts +6 -6
- package/src/generated/templates/TabNavigationTemplate.lit.ts +3 -1
- package/src/generated/templates/TagGroupTemplate.lit.ts +13 -0
- package/src/generated/templates/TagTemplate.lit.ts +11 -7
- package/src/generated/templates/TextAreaTemplate.lit.ts +1 -1
- package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/FilterMenu.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +13 -0
- package/src/generated/themes/Search.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/SecondaryNavigationSubItem.css.ts +1 -1
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/Tag.css.ts +1 -1
- package/src/generated/themes/TagGroup.css.ts +13 -0
- 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/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
- package/src/i18n/messagebundle.properties +7 -3
- package/src/i18n/messagebundle_en.properties +5 -3
- package/src/themes/CountrySelector.css +49 -26
- package/src/themes/FilterMenu.css +52 -15
- package/src/themes/ListItem.css +4 -0
- package/src/themes/MastheadItem.css +12 -2
- package/src/themes/MastheadMobileMenu.css +4 -0
- package/src/themes/PhoneNumberField.css +14 -1
- package/src/themes/ReviewItem.css +121 -0
- package/src/themes/Search.css +9 -0
- package/src/themes/SecondaryNavigation.css +13 -14
- package/src/themes/SecondaryNavigationItem.css +3 -2
- package/src/themes/SecondaryNavigationSubItem.css +5 -5
- package/src/themes/SelectBox.css +34 -0
- package/src/themes/Tag.css +20 -0
- package/src/themes/TagGroup.css +90 -0
- package/src/themes/TextArea.css +13 -0
- package/src/themes/TextField.css +25 -8
- package/src/themes/Toast.css +4 -0
- package/dist/assets/messagebundle_en-6dcc9ab4.js +0 -1
- package/dist/assets/parameters-bundle.css-de55cf62.js +0 -2
- package/dist/assets/video.es-17aecf95.js +0 -219
package/src/Search.ts
CHANGED
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
isUp,
|
|
17
17
|
isDown,
|
|
18
18
|
isEscape,
|
|
19
|
+
isSpace,
|
|
19
20
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
21
|
+
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
20
22
|
import List from "./List.js";
|
|
21
23
|
import ListItemBase from "./ListItemBase.js";
|
|
22
24
|
import "@ui5/webcomponents/dist/Icon.js";
|
|
@@ -97,7 +99,7 @@ export enum Mode {
|
|
|
97
99
|
* For the <code>udex-search</code>
|
|
98
100
|
* <h3>ES6 Module Import</h3>
|
|
99
101
|
*
|
|
100
|
-
* <code>import @udex/web-components/dist/Search.js";</code>
|
|
102
|
+
* <code>import "@udex/web-components/dist/Search.js";</code>
|
|
101
103
|
*
|
|
102
104
|
* @constructor
|
|
103
105
|
* @author SAP SE
|
|
@@ -481,6 +483,21 @@ class UDExSearch extends UI5Element {
|
|
|
481
483
|
@property({ type: Boolean, noAttribute: true })
|
|
482
484
|
_prefixDropdownExpanded!: boolean;
|
|
483
485
|
|
|
486
|
+
/**
|
|
487
|
+
* Defines the active (focus)
|
|
488
|
+
* @default false
|
|
489
|
+
* @private
|
|
490
|
+
*/
|
|
491
|
+
@property({ type: Boolean })
|
|
492
|
+
active!: boolean;
|
|
493
|
+
/**
|
|
494
|
+
* Defines is it the touch of the input field (only for mobile devices).
|
|
495
|
+
* @default false
|
|
496
|
+
* @private
|
|
497
|
+
*/
|
|
498
|
+
@property({ type: Boolean })
|
|
499
|
+
_isTouched!: boolean;
|
|
500
|
+
|
|
484
501
|
constructor() {
|
|
485
502
|
super();
|
|
486
503
|
this._handleResizeBound = this._handleResize.bind(this);
|
|
@@ -742,6 +759,9 @@ class UDExSearch extends UI5Element {
|
|
|
742
759
|
}
|
|
743
760
|
|
|
744
761
|
handleInputClick(): void {
|
|
762
|
+
if (!isDesktop()) {
|
|
763
|
+
this._isTouched = true;
|
|
764
|
+
}
|
|
745
765
|
if (this.showPopoverWhenClickedIntoInput) {
|
|
746
766
|
this.onOpenPopover();
|
|
747
767
|
}
|
|
@@ -759,7 +779,7 @@ class UDExSearch extends UI5Element {
|
|
|
759
779
|
|
|
760
780
|
handleAriaExpanded() {
|
|
761
781
|
const value = this.open.toString();
|
|
762
|
-
this.
|
|
782
|
+
this.getSearchInput()?.setAttribute("aria-expanded", value);
|
|
763
783
|
}
|
|
764
784
|
|
|
765
785
|
onOpenPopover(): void {
|
|
@@ -882,6 +902,7 @@ class UDExSearch extends UI5Element {
|
|
|
882
902
|
}
|
|
883
903
|
|
|
884
904
|
handleBlur(): void {
|
|
905
|
+
this._isTouched = false;
|
|
885
906
|
if (this.value) {
|
|
886
907
|
this.labelActiveClass = this._labelActiveClassName;
|
|
887
908
|
} else {
|
|
@@ -977,6 +998,7 @@ class UDExSearch extends UI5Element {
|
|
|
977
998
|
}
|
|
978
999
|
|
|
979
1000
|
handleFocus(): void {
|
|
1001
|
+
this.active = true;
|
|
980
1002
|
this.isFocusedOnTextfield = true;
|
|
981
1003
|
this.focusClasses = this._focusActiveClassName;
|
|
982
1004
|
this.labelActiveClass = (this.value || !this.labelAnimationDisabled) ? this._labelActiveClassName : "";
|
|
@@ -984,24 +1006,39 @@ class UDExSearch extends UI5Element {
|
|
|
984
1006
|
}
|
|
985
1007
|
|
|
986
1008
|
handleFocusout(): void {
|
|
1009
|
+
this.active = false;
|
|
987
1010
|
this.isFocusedOnTextfield = false;
|
|
988
1011
|
this.focusClasses = "";
|
|
989
1012
|
}
|
|
990
1013
|
|
|
991
1014
|
onReset(e: MouseEvent): void {
|
|
992
1015
|
e.stopPropagation();
|
|
1016
|
+
this.handleReset();
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
handleReset(): void {
|
|
993
1020
|
this.value = "";
|
|
994
1021
|
this.showResetButton = false;
|
|
995
1022
|
this.onClosePopover();
|
|
996
|
-
this.handleBlur();
|
|
997
1023
|
this.fireEvent("handle-value-reset");
|
|
998
1024
|
this.Suggestion?.resetFocusState();
|
|
1025
|
+
this.focus();
|
|
999
1026
|
}
|
|
1000
1027
|
|
|
1001
1028
|
handleKeyDownReset(e: KeyboardEvent) {
|
|
1002
1029
|
if (isTabPrevious(e) && this.open) {
|
|
1003
1030
|
this.Suggestion?.handlePrevTabReset(e);
|
|
1004
1031
|
}
|
|
1032
|
+
if (isEnter(e) || isSpace(e)) {
|
|
1033
|
+
e.preventDefault();
|
|
1034
|
+
e.stopPropagation();
|
|
1035
|
+
this.handleReset();
|
|
1036
|
+
this.getSearchInput()?.focus();
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
private getSearchInput(): HTMLInputElement {
|
|
1041
|
+
return this.shadowRoot?.querySelector("[id='search-input']") as HTMLInputElement;
|
|
1005
1042
|
}
|
|
1006
1043
|
|
|
1007
1044
|
onVoice(e: MouseEvent): void {
|
|
@@ -1025,7 +1062,7 @@ class UDExSearch extends UI5Element {
|
|
|
1025
1062
|
onSpeechStart(): void {
|
|
1026
1063
|
this.speechRecognition.onstart = () => {
|
|
1027
1064
|
this.voiceActiveClass = this._voiceActiveClassName;
|
|
1028
|
-
|
|
1065
|
+
this.getSearchInput()?.focus();
|
|
1029
1066
|
};
|
|
1030
1067
|
}
|
|
1031
1068
|
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
{{/if}}
|
|
7
7
|
<div class="udex-secondary-navigation__holder">
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
{{#if title.length}}
|
|
9
|
+
<div class="udex-secondary-navigation__heading">
|
|
10
|
+
{{#if titleHref.length}}
|
|
11
|
+
<a class="udex-secondary-navigation__title" href="{{titleHref}}">{{title}}</a>
|
|
12
|
+
{{else}}
|
|
13
|
+
<span class="udex-secondary-navigation__title">{{title}}</span>
|
|
14
|
+
{{/if}}
|
|
15
|
+
</div>
|
|
16
|
+
{{/if}}
|
|
15
17
|
<div class="udex-secondary-navigation__wrap">
|
|
16
18
|
<ul
|
|
17
19
|
role="menubar"
|
|
@@ -193,7 +193,7 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
reflowItems(): void {
|
|
196
|
-
const availableWidth = this.rootHolder.offsetWidth - this.heading?.offsetWidth - (this.optionalButtons?.offsetWidth || 0);
|
|
196
|
+
const availableWidth = this.rootHolder.offsetWidth - (this.heading?.offsetWidth || 0) - (this.optionalButtons?.offsetWidth || 0);
|
|
197
197
|
const moreButtonWidth = this.getMoreButtonWidth();
|
|
198
198
|
const itemsGap = 20;
|
|
199
199
|
const widths = this.parsedItems.map(item => this.getItemWidth(item));
|
|
@@ -359,18 +359,20 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
handleOutsideClick(): void {
|
|
362
|
-
document.addEventListener("
|
|
363
|
-
if (this.isMobileScreen && e.target !== this) {
|
|
364
|
-
this.closeMobileDropdown();
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
if (this.isDesktopScreen) {
|
|
369
|
-
this.handleDesktopDropdown(e);
|
|
370
|
-
}
|
|
371
|
-
});
|
|
362
|
+
document.addEventListener("mousedown", this.outsideClickListener);
|
|
372
363
|
}
|
|
373
364
|
|
|
365
|
+
outsideClickListener = (e: MouseEvent): void => {
|
|
366
|
+
if (this.isMobileScreen && e.target !== this) {
|
|
367
|
+
this.closeMobileDropdown();
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (this.isDesktopScreen) {
|
|
372
|
+
this.handleDesktopDropdown(e);
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
|
|
374
376
|
closeMobileDropdown(): void {
|
|
375
377
|
this.mobileNav?.closeDropdown();
|
|
376
378
|
}
|
|
@@ -338,7 +338,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
338
338
|
get subActiveItemTitle(): string | undefined {
|
|
339
339
|
if (this.subActiveItem) {
|
|
340
340
|
const { title, mobileLinkTitle } = this.subActiveItem;
|
|
341
|
-
return this._isMobileView ? mobileLinkTitle : title;
|
|
341
|
+
return this._isMobileView ? (mobileLinkTitle || title) : title;
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
|
|
@@ -142,7 +142,7 @@ class UDExSecondaryNavigationItemBase extends UI5Element {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
get itemLabel(): string {
|
|
145
|
-
return this._isMobileView ? this.mobileLinkTitle : this.label;
|
|
145
|
+
return this._isMobileView ? (this.mobileLinkTitle || this.label) : this.label;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
get isMobile(): boolean {
|
package/src/SelectBox.hbs
CHANGED
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
{{/if}}
|
|
67
67
|
{{#if showTrigger}}
|
|
68
68
|
<udex-control-button
|
|
69
|
+
tabindex="{{triggerTabIndex}}"
|
|
69
70
|
class="udex-text-field__trigger"
|
|
70
71
|
role="combobox"
|
|
71
72
|
size="Large"
|
|
@@ -89,10 +90,11 @@
|
|
|
89
90
|
</udex-status-message>
|
|
90
91
|
{{/if}}
|
|
91
92
|
</div>
|
|
92
|
-
<
|
|
93
|
+
<ui5-popover
|
|
94
|
+
hide-arrow
|
|
93
95
|
id="udex-select-box__dropdown"
|
|
94
96
|
class="udex-select-box__dropdown"
|
|
95
|
-
?
|
|
97
|
+
?allow-target-overlap="{{allowTargetOverlap}}"
|
|
96
98
|
@keydown="{{handleKeyDownDropdown}}"
|
|
97
99
|
@ui5-select-all="{{handleSelectAll}}"
|
|
98
100
|
@ui5-item-press="{{handleItemPress}}"
|
|
@@ -100,11 +102,11 @@
|
|
|
100
102
|
@ui5-submit-search-value="{{handleSubmitSearch}}"
|
|
101
103
|
@ui5-handle-value-search="{{handleValueSearch}}"
|
|
102
104
|
@ui5-handle-value-reset="{{handleResetSearch}}"
|
|
103
|
-
@before-open="{{handleDropdownBeforeOpen}}"
|
|
104
|
-
@after-close="{{handleDropdownAfterClose}}"
|
|
105
|
+
@ui5-before-open="{{handleDropdownBeforeOpen}}"
|
|
106
|
+
@ui5-after-close="{{handleDropdownAfterClose}}"
|
|
105
107
|
@search-keydown="{{handleKeyDownSearch}}"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
horizontal-align="Left"
|
|
109
|
+
placement-type="Bottom">
|
|
108
110
|
{{#if _showTagsDropdownContent}}
|
|
109
111
|
<div class="udex-truncatable-tag-content">
|
|
110
112
|
<span class="udex-truncatable-tag-content__label">{{truncatableTagLabel}}</span>
|
|
@@ -117,7 +119,7 @@
|
|
|
117
119
|
{{else}}
|
|
118
120
|
{{searchableList}}
|
|
119
121
|
{{/if}}
|
|
120
|
-
</
|
|
122
|
+
</ui5-popover>
|
|
121
123
|
{{#if displayonly}}
|
|
122
124
|
<udex-tooltip
|
|
123
125
|
placement="{{tooltipPlacement}}">
|
package/src/SelectBox.ts
CHANGED
|
@@ -15,13 +15,14 @@ import {
|
|
|
15
15
|
isUp,
|
|
16
16
|
isEscape,
|
|
17
17
|
isBackSpace,
|
|
18
|
+
isShift,
|
|
18
19
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
19
20
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
20
21
|
import Tokenizer from "@ui5/webcomponents/dist/Tokenizer.js";
|
|
21
22
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
22
23
|
import Token from "@ui5/webcomponents/dist/Token.js";
|
|
23
24
|
import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
24
|
-
import
|
|
25
|
+
import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
|
|
25
26
|
import UDExList from "./List.js";
|
|
26
27
|
import UDExListItem from "./ListItem.js";
|
|
27
28
|
import UDExListGroupHeader from "./ListGroupHeader.js";
|
|
@@ -76,7 +77,6 @@ import UDExControlButton from "./ControlButton.js";
|
|
|
76
77
|
UDExListSelectAll,
|
|
77
78
|
UDExSelectBoxItem,
|
|
78
79
|
UDExList,
|
|
79
|
-
UDExDropdown,
|
|
80
80
|
UDExTooltip,
|
|
81
81
|
UDExSearch,
|
|
82
82
|
UDExButton,
|
|
@@ -86,6 +86,7 @@ import UDExControlButton from "./ControlButton.js";
|
|
|
86
86
|
Icon,
|
|
87
87
|
UDExStatusMessage,
|
|
88
88
|
UDExControlButton,
|
|
89
|
+
ResponsivePopover,
|
|
89
90
|
],
|
|
90
91
|
})
|
|
91
92
|
|
|
@@ -222,20 +223,37 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
222
223
|
@property({ type: String, noAttribute: true })
|
|
223
224
|
_direction?: string;
|
|
224
225
|
|
|
226
|
+
/**
|
|
227
|
+
* @default false
|
|
228
|
+
* @private
|
|
229
|
+
*/
|
|
225
230
|
@property({ type: Boolean })
|
|
226
231
|
_focused!: boolean;
|
|
227
232
|
|
|
233
|
+
/**
|
|
234
|
+
* @default false
|
|
235
|
+
* @private
|
|
236
|
+
*/
|
|
228
237
|
@property({ type: Boolean })
|
|
229
|
-
_open
|
|
238
|
+
_open!: boolean;
|
|
230
239
|
|
|
240
|
+
/**
|
|
241
|
+
* @default false
|
|
242
|
+
* @private
|
|
243
|
+
*/
|
|
231
244
|
@property({ type: Boolean })
|
|
232
|
-
_showTagsDropdownContent
|
|
245
|
+
_showTagsDropdownContent!: boolean;
|
|
233
246
|
|
|
234
|
-
|
|
247
|
+
_trigger!: HTMLElement;
|
|
248
|
+
_popover!: ResponsivePopover;
|
|
235
249
|
_tokenizer!: Tokenizer;
|
|
236
250
|
_search!: UDExSearch;
|
|
237
251
|
_singleSelectedOption!: string;
|
|
238
252
|
_truncatableTag!: UDExTag;
|
|
253
|
+
_tags!: Array<UDExTag>;
|
|
254
|
+
_inactiveTabIndex: number = -1;
|
|
255
|
+
_activeTabIndex: number = 0;
|
|
256
|
+
_openedByTrigger: boolean = true;
|
|
239
257
|
|
|
240
258
|
_handleResizeBound: ResizeObserverCallback;
|
|
241
259
|
|
|
@@ -246,22 +264,24 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
246
264
|
this._filteredItems = [];
|
|
247
265
|
}
|
|
248
266
|
|
|
249
|
-
onEnterDOM()
|
|
267
|
+
onEnterDOM() {
|
|
250
268
|
ResizeHandler.register(this, this._handleResizeBound);
|
|
251
269
|
}
|
|
252
270
|
|
|
253
|
-
onExitDOM()
|
|
271
|
+
onExitDOM() {
|
|
254
272
|
ResizeHandler.deregister(this, this._handleResizeBound);
|
|
255
273
|
}
|
|
256
274
|
|
|
257
275
|
onAfterRendering() {
|
|
258
|
-
this._tokenizer = this.
|
|
259
|
-
this.
|
|
260
|
-
this._search = this.
|
|
276
|
+
this._tokenizer = this.getTokenizer();
|
|
277
|
+
this._popover = this.getPopover();
|
|
278
|
+
this._search = this.getSearch();
|
|
279
|
+
this._trigger = this.getTrigger();
|
|
280
|
+
this._tags = this.getTags();
|
|
261
281
|
this.handleDirection();
|
|
262
|
-
|
|
263
282
|
if (this._tokenizer?.tokens.length > 0) {
|
|
264
283
|
this.handleOutsideClick();
|
|
284
|
+
this.resetTagsTabIndexes();
|
|
265
285
|
}
|
|
266
286
|
}
|
|
267
287
|
|
|
@@ -274,7 +294,7 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
274
294
|
}
|
|
275
295
|
|
|
276
296
|
_handleResize() {
|
|
277
|
-
this.
|
|
297
|
+
this._popover.style.setProperty("--udex-dropdown-pane-width", `${this.offsetWidth}px`);
|
|
278
298
|
}
|
|
279
299
|
|
|
280
300
|
handleItemPress(e:CustomEvent) {
|
|
@@ -324,7 +344,11 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
324
344
|
}
|
|
325
345
|
|
|
326
346
|
handleDropdownBeforeOpen() {
|
|
327
|
-
this.
|
|
347
|
+
if (this.height) {
|
|
348
|
+
const content = this._popover.shadowRoot!.querySelector("[part=content]") as HTMLElement;
|
|
349
|
+
content.style.maxHeight = this.height;
|
|
350
|
+
}
|
|
351
|
+
this.fireEvent("before-open");
|
|
328
352
|
}
|
|
329
353
|
|
|
330
354
|
handleDropdownAfterClose() {
|
|
@@ -366,13 +390,7 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
366
390
|
handleTagPress(e: CustomEvent) {
|
|
367
391
|
const tag = e.target as UDExTag;
|
|
368
392
|
tag.selected = false;
|
|
369
|
-
|
|
370
|
-
if (tag.isTruncatable && !this._tokenizer.expanded) {
|
|
371
|
-
this._truncatableTag = tag;
|
|
372
|
-
this._truncatableTag.selected = true;
|
|
373
|
-
this._showTagsDropdownContent = true;
|
|
374
|
-
this.openDropdown();
|
|
375
|
-
}
|
|
393
|
+
this.toggleTruncatedPopover(tag);
|
|
376
394
|
}
|
|
377
395
|
|
|
378
396
|
handleUnselectTruncatableTag() {
|
|
@@ -383,11 +401,13 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
383
401
|
|
|
384
402
|
handleKeydownTokenizer(e: KeyboardEvent) {
|
|
385
403
|
e.stopPropagation();
|
|
404
|
+
this.getTagContent(this._tags[0]).tabIndex = this._inactiveTabIndex;
|
|
405
|
+
|
|
386
406
|
const target = e.target as Token;
|
|
387
407
|
const activeIndex = this._tokenizer.tokens?.indexOf(target);
|
|
388
408
|
const tagsCount = this._tokenizer._tokensCount;
|
|
389
|
-
const
|
|
390
|
-
|
|
409
|
+
const shouldNavigateTags = (isLeft(e) || isRight(e) || isBackSpace(e) || isDelete(e)) && tagsCount > 0;
|
|
410
|
+
this._tokenizer.expanded = shouldNavigateTags;
|
|
391
411
|
|
|
392
412
|
if (isLeft(e) && activeIndex !== 0) {
|
|
393
413
|
this.focusTag(activeIndex - 1);
|
|
@@ -399,35 +419,33 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
399
419
|
this.scrollToTag(activeIndex + 1);
|
|
400
420
|
}
|
|
401
421
|
|
|
402
|
-
if (
|
|
403
|
-
this.
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
if (isDown(e) || isUp(e)) {
|
|
422
|
+
if ((isDown(e) || isUp(e))) {
|
|
423
|
+
this._openedByTrigger = false;
|
|
407
424
|
this.openDropdown();
|
|
408
425
|
}
|
|
409
426
|
}
|
|
410
427
|
|
|
411
428
|
handleKeyDownTrigger(e: KeyboardEvent) {
|
|
412
|
-
if (isSpace(e)) {
|
|
413
|
-
e.preventDefault();
|
|
414
|
-
}
|
|
415
|
-
|
|
416
429
|
if (isSpace(e) || isEnter(e)) {
|
|
430
|
+
e.preventDefault();
|
|
431
|
+
e.stopPropagation();
|
|
432
|
+
this._showTagsDropdownContent = false;
|
|
433
|
+
this._openedByTrigger = true;
|
|
417
434
|
this.openDropdown();
|
|
418
435
|
}
|
|
419
|
-
|
|
420
|
-
if (isTabNext(e) && this._tokenizer?._tokensCount > 0) {
|
|
421
|
-
this._tokenizer.expanded = true;
|
|
422
|
-
setTimeout(() => {
|
|
423
|
-
this.focusTag(this._tokenizer._tokensCount - 1);
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
436
|
}
|
|
427
437
|
|
|
428
438
|
handleKeyDownTag(e: KeyboardEvent) {
|
|
429
|
-
|
|
439
|
+
const tag = e.target as UDExTag;
|
|
440
|
+
if (isSpace(e) || isShift(e) || isEnter(e)) {
|
|
430
441
|
e.preventDefault();
|
|
442
|
+
e.stopPropagation();
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
if (tag.isTruncatable && this.validTruncatableKey(e)) {
|
|
446
|
+
this.toggleTruncatedPopover(tag);
|
|
447
|
+
} else {
|
|
448
|
+
this._showTagsDropdownContent = false;
|
|
431
449
|
}
|
|
432
450
|
|
|
433
451
|
if (isDelete(e) || isBackSpace(e)) {
|
|
@@ -435,32 +453,37 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
435
453
|
const target = e.target as Token;
|
|
436
454
|
const tags = this._tokenizer.tokens;
|
|
437
455
|
const deletedTagIndex = tags.indexOf(target);
|
|
438
|
-
|
|
456
|
+
let nextTokenIndex = deletedTagIndex + 1;
|
|
439
457
|
if (this._tokenizer.tokens.length !== 1) {
|
|
440
|
-
|
|
458
|
+
if (deletedTagIndex === tags.length - 1) {
|
|
459
|
+
nextTokenIndex = deletedTagIndex - 1;
|
|
460
|
+
this.focusTag(nextTokenIndex);
|
|
461
|
+
} else {
|
|
462
|
+
this.focusTag(nextTokenIndex);
|
|
463
|
+
}
|
|
441
464
|
this.scrollToTag(nextTokenIndex);
|
|
442
465
|
} else {
|
|
443
|
-
this.
|
|
466
|
+
this._trigger.focus();
|
|
444
467
|
}
|
|
445
468
|
}
|
|
446
469
|
}
|
|
447
470
|
|
|
448
471
|
handleKeyDownDropdown(e: KeyboardEvent) {
|
|
449
472
|
const isTabPrevPress = isTabPrevious(e) && !this._search;
|
|
473
|
+
const isTabNextPress = isTabNext(e);
|
|
474
|
+
const isEscapePress = isEscape(e);
|
|
475
|
+
const isSearchResetTrigger = e.target === this._search;
|
|
450
476
|
|
|
451
|
-
if (
|
|
452
|
-
this.
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
if (isTabNext(e) || isTabPrevPress) {
|
|
456
|
-
this.closeDropdown();
|
|
477
|
+
if ((isTabNextPress && (!isSearchResetTrigger || this.isListEmpty)) || isTabPrevPress || isEscapePress) {
|
|
478
|
+
this.closeDropdown(e);
|
|
457
479
|
}
|
|
458
480
|
}
|
|
459
481
|
|
|
460
482
|
handleKeyDownSearch(e: CustomEvent) {
|
|
461
483
|
const keyEvent = e.detail as KeyboardEvent;
|
|
484
|
+
|
|
462
485
|
if (isTabPrevious(keyEvent) || isEscape(keyEvent)) {
|
|
463
|
-
this.closeDropdown();
|
|
486
|
+
this.closeDropdown(keyEvent);
|
|
464
487
|
}
|
|
465
488
|
}
|
|
466
489
|
|
|
@@ -473,12 +496,41 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
473
496
|
}
|
|
474
497
|
|
|
475
498
|
openDropdown() {
|
|
476
|
-
this.
|
|
499
|
+
this._popover.showAt(this._trigger);
|
|
500
|
+
this._open = true;
|
|
501
|
+
if (this.showMultiSelectedOptions) {
|
|
502
|
+
this._tokenizer.expanded = true;
|
|
503
|
+
}
|
|
477
504
|
}
|
|
478
505
|
|
|
479
|
-
closeDropdown() {
|
|
480
|
-
if (this.
|
|
481
|
-
this.
|
|
506
|
+
closeDropdown(e?: KeyboardEvent) {
|
|
507
|
+
if (this._popover.open) {
|
|
508
|
+
if (this._tokenizer) {
|
|
509
|
+
this._tokenizer.expanded = false;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
if (e && (isEscape(e) || isTabPrevious(e))) {
|
|
513
|
+
e.preventDefault();
|
|
514
|
+
if (this._openedByTrigger) {
|
|
515
|
+
this._trigger.focus();
|
|
516
|
+
} else {
|
|
517
|
+
this.focusTag(0);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
this._popover.close();
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
toggleTruncatedPopover(tag: UDExTag) {
|
|
525
|
+
if (!tag.isTruncatable) {
|
|
526
|
+
this._showTagsDropdownContent = false;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (tag.isTruncatable && !this._open) {
|
|
530
|
+
this._truncatableTag = tag;
|
|
531
|
+
this._truncatableTag.selected = true;
|
|
532
|
+
this._showTagsDropdownContent = true;
|
|
533
|
+
this.openDropdown();
|
|
482
534
|
}
|
|
483
535
|
}
|
|
484
536
|
|
|
@@ -498,7 +550,7 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
498
550
|
}
|
|
499
551
|
|
|
500
552
|
handleOpenMultiSelect() {
|
|
501
|
-
if (this.
|
|
553
|
+
if (this._popover.open) {
|
|
502
554
|
this.closeDropdown();
|
|
503
555
|
} else {
|
|
504
556
|
this._showTagsDropdownContent = false;
|
|
@@ -507,7 +559,7 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
507
559
|
}
|
|
508
560
|
|
|
509
561
|
handleOpenSingleSelect() {
|
|
510
|
-
if (this.
|
|
562
|
+
if (this._popover.open) {
|
|
511
563
|
this.closeDropdown();
|
|
512
564
|
} else {
|
|
513
565
|
this.openDropdown();
|
|
@@ -526,6 +578,30 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
526
578
|
return this.displayonly ? this.showMoreReadOnlyItems() : this.showMoreItems();
|
|
527
579
|
}
|
|
528
580
|
|
|
581
|
+
getPopover(): ResponsivePopover {
|
|
582
|
+
return this.shadowRoot!.querySelector<ResponsivePopover>("[ui5-popover]")!;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
getSearch(): UDExSearch {
|
|
586
|
+
return this.shadowRoot!.querySelector<UDExSearch>("udex-search")!;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
getTrigger(): HTMLElement {
|
|
590
|
+
return this.shadowRoot!.querySelector(".udex-text-field__input")!;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
getTokenizer(): Tokenizer {
|
|
594
|
+
return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
getTags(): Array<UDExTag> {
|
|
598
|
+
return Array.from(this.shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
getTagContent(tag: UDExTag): HTMLElement {
|
|
602
|
+
return tag.shadowRoot!.querySelector(".udex-tag")!;
|
|
603
|
+
}
|
|
604
|
+
|
|
529
605
|
handleDirection() {
|
|
530
606
|
const directionStyles: string = window
|
|
531
607
|
.getComputedStyle(this)
|
|
@@ -538,6 +614,18 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
538
614
|
}
|
|
539
615
|
}
|
|
540
616
|
|
|
617
|
+
validTruncatableKey(e: KeyboardEvent): boolean {
|
|
618
|
+
return isSpace(e) || isEnter(e);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
resetTagsTabIndexes() {
|
|
622
|
+
this._tags.forEach((tag, i) => { this.getTagContent(tag).tabIndex = i === 0 ? this._activeTabIndex : this._inactiveTabIndex; });
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
get allowTargetOverlap(): boolean {
|
|
626
|
+
return !this.disableTargetOverlap;
|
|
627
|
+
}
|
|
628
|
+
|
|
541
629
|
get isDisabled(): boolean {
|
|
542
630
|
return this.readonly || this.displayonly || this.disabled;
|
|
543
631
|
}
|
|
@@ -558,22 +646,6 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
558
646
|
return this.hasSelectedItems && this.modeMultiSelect;
|
|
559
647
|
}
|
|
560
648
|
|
|
561
|
-
get dropdown(): UDExDropdown {
|
|
562
|
-
return this.shadowRoot!.querySelector<UDExDropdown>("udex-dropdown")!;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
get search(): UDExSearch {
|
|
566
|
-
return this.shadowRoot!.querySelector<UDExSearch>("udex-search")!;
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
get trigger(): UDExDropdown {
|
|
570
|
-
return this.shadowRoot!.querySelector(".udex-text-field__input")!;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
get tokenizer(): Tokenizer {
|
|
574
|
-
return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
649
|
get labelClass(): string {
|
|
578
650
|
const baseClass = "udex-text-field__label";
|
|
579
651
|
const isActive = this._open || this._singleSelectedOption || this.hasSelectedItems;
|
|
@@ -594,6 +666,11 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
594
666
|
if (this._showTagsDropdownContent && this._truncatableTag) {
|
|
595
667
|
return false;
|
|
596
668
|
}
|
|
669
|
+
|
|
670
|
+
if (this._tokenizer) {
|
|
671
|
+
return this._tokenizer.expanded;
|
|
672
|
+
}
|
|
673
|
+
|
|
597
674
|
return this._open;
|
|
598
675
|
}
|
|
599
676
|
|
|
@@ -607,7 +684,11 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
607
684
|
|
|
608
685
|
get effectiveTabIndex(): string {
|
|
609
686
|
const tabindex = this.getAttribute("tabindex");
|
|
610
|
-
return this.disabled ?
|
|
687
|
+
return this.disabled ? `${this._inactiveTabIndex}` : tabindex || `${this._inactiveTabIndex}`;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
get triggerTabIndex(): string {
|
|
691
|
+
return this.disabled || this.readonly ? `${this._inactiveTabIndex}` : "";
|
|
611
692
|
}
|
|
612
693
|
|
|
613
694
|
get iconAccessibleNameText(): string {
|