@sapudex/web-components 0.111.0 → 0.117.1
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/.npmrc +1 -2
- package/bundle.esm.js +4 -0
- package/dist/AccordionItem.d.ts +7 -0
- package/dist/AccordionItem.js +6 -2
- package/dist/AccordionItem.js.map +1 -1
- package/dist/Avatar.d.ts +8 -1
- package/dist/Avatar.js +5 -2
- package/dist/Avatar.js.map +1 -1
- package/dist/CountrySelector.d.ts +6 -7
- package/dist/CountrySelector.js +15 -7
- package/dist/CountrySelector.js.map +1 -1
- package/dist/Dropdown.d.ts +10 -0
- package/dist/Dropdown.js +10 -0
- package/dist/Dropdown.js.map +1 -1
- package/dist/FilterMenu.d.ts +14 -4
- package/dist/FilterMenu.js +46 -7
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.d.ts +40 -1
- package/dist/Footer.js +151 -1
- package/dist/Footer.js.map +1 -1
- package/dist/InputGroup.d.ts +75 -0
- package/dist/InputGroup.js +101 -0
- package/dist/InputGroup.js.map +1 -0
- package/dist/List.d.ts +7 -0
- package/dist/List.js +78 -18
- package/dist/List.js.map +1 -1
- package/dist/ListItem.d.ts +0 -1
- package/dist/ListItem.js +0 -6
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +3 -0
- package/dist/ListItemBase.js +12 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/MastheadMobileMenu.d.ts +4 -1
- package/dist/MastheadMobileMenu.js +10 -3
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +8 -0
- package/dist/PhoneNumberField.js +23 -10
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/Search.d.ts +60 -1
- package/dist/Search.js +191 -19
- package/dist/Search.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +37 -45
- package/dist/SecondaryNavigation.js +148 -153
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +101 -0
- package/dist/SecondaryNavigationItem.js +287 -0
- package/dist/SecondaryNavigationItem.js.map +1 -0
- package/dist/SecondaryNavigationItemBase.d.ts +68 -0
- package/dist/SecondaryNavigationItemBase.js +78 -0
- package/dist/SecondaryNavigationItemBase.js.map +1 -0
- package/dist/SecondaryNavigationSubItem.d.ts +52 -0
- package/dist/SecondaryNavigationSubItem.js +102 -0
- package/dist/SecondaryNavigationSubItem.js.map +1 -0
- package/dist/SelectBox.d.ts +7 -0
- package/dist/SelectBox.js +27 -2
- package/dist/SelectBox.js.map +1 -1
- package/dist/StatusBadge.d.ts +67 -0
- package/dist/StatusBadge.js +104 -0
- package/dist/StatusBadge.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Tab.js.map +1 -1
- package/dist/Table.d.ts +5 -5
- package/dist/Table.js +5 -5
- package/dist/Table.js.map +1 -1
- package/dist/Tag.d.ts +7 -1
- package/dist/Tag.js +6 -2
- package/dist/Tag.js.map +1 -1
- package/dist/TextArea.js.map +1 -1
- package/dist/assets/{bundle.esm-b7920968.js → bundle.esm-f65ae7da.js} +189 -184
- package/dist/assets/messagebundle_en-7249941b.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/DatePicker.css +1 -1
- package/dist/css/themes/Dropdown.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/InputGroup.css +1 -0
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMenuItem.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/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SearchSuggestions.css +1 -1
- package/dist/css/themes/SecondaryNavigation.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -0
- package/dist/css/themes/SecondaryNavigationSubItem.css +1 -0
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StatusBadge.css +1 -0
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +1070 -116
- package/dist/custom-elements.json +1047 -169
- package/dist/features/SearchSuggestionsPopover.d.ts +3 -3
- package/dist/features/SearchSuggestionsPopover.js +16 -18
- package/dist/features/SearchSuggestionsPopover.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +8 -1
- package/dist/generated/i18n/i18n-defaults.js +8 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/AccordionItemTemplate.lit.js +2 -1
- package/dist/generated/templates/AccordionItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DropdownTemplate.lit.js +1 -1
- package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js +3 -3
- package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FooterTemplate.lit.js +15 -15
- package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
- package/dist/generated/templates/HeroBannerTemplate.lit.js +2 -2
- package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/InputGroupTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/InputGroupTemplate.lit.js +7 -0
- package/dist/generated/templates/InputGroupTemplate.lit.js.map +1 -0
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +4 -4
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
- 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/MastheadMobileMenuTemplate.lit.js +15 -10
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +11 -10
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchTemplate.lit.js +11 -10
- package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +11 -0
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +9 -0
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -0
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -9
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
- package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/StatusBadgeTemplate.lit.js +5 -0
- package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +1 -0
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/Checkbox.css.js +1 -1
- package/dist/generated/themes/Checkbox.css.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/DatePicker.css.js +1 -1
- package/dist/generated/themes/DatePicker.css.js.map +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.js +1 -1
- package/dist/generated/themes/FilterMenu.css.js.map +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/InputGroup.css.d.ts +3 -0
- package/dist/generated/themes/InputGroup.css.js +9 -0
- package/dist/generated/themes/InputGroup.css.js.map +1 -0
- package/dist/generated/themes/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.css.js.map +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.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/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +1 -1
- package/dist/generated/themes/SearchSuggestions.css.js +1 -1
- package/dist/generated/themes/SearchSuggestions.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.d.ts +3 -0
- package/dist/generated/themes/SecondaryNavigationItem.css.js +9 -0
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +3 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js +9 -0
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -0
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/StatusBadge.css.d.ts +3 -0
- package/dist/generated/themes/StatusBadge.css.js +9 -0
- package/dist/generated/themes/StatusBadge.css.js.map +1 -0
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.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/i18n/messagebundle.properties +12 -1
- package/dist/i18n/messagebundle_en.properties +8 -1
- package/dist/types/callback.d.ts +2 -0
- package/dist/types/callback.js +2 -0
- package/dist/types/callback.js.map +1 -0
- package/dist/utils/debounce.d.ts +2 -2
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/retryUntilSuccessful.d.ts +3 -0
- package/dist/utils/retryUntilSuccessful.js +21 -0
- package/dist/utils/retryUntilSuccessful.js.map +1 -0
- package/dist/vscode.html-custom-data.json +178 -14
- package/dist/web-types.json +406 -32
- package/package.json +1 -1
- package/src/AccordionItem.hbs +12 -1
- package/src/AccordionItem.ts +11 -2
- package/src/Avatar.ts +12 -3
- package/src/CountrySelector.hbs +3 -3
- package/src/CountrySelector.ts +22 -21
- package/src/Dropdown.hbs +0 -1
- package/src/Dropdown.ts +10 -0
- package/src/FilterMenu.hbs +5 -1
- package/src/FilterMenu.ts +60 -10
- package/src/Footer.hbs +154 -91
- package/src/Footer.ts +158 -1
- package/src/HeroBanner.hbs +24 -21
- package/src/InputGroup.hbs +20 -0
- package/src/InputGroup.ts +137 -0
- package/src/List.ts +92 -21
- package/src/ListGroupHeader.hbs +9 -5
- package/src/ListItem.hbs +2 -1
- package/src/ListItem.ts +0 -7
- package/src/ListItemBase.ts +14 -0
- package/src/ListSelectAll.hbs +1 -0
- package/src/MastheadMobileMenu.hbs +51 -28
- package/src/MastheadMobileMenu.ts +12 -3
- package/src/MastheadProfileMenu.hbs +1 -1
- package/src/PhoneNumberField.ts +27 -3
- package/src/Search.hbs +26 -3
- package/src/Search.ts +236 -21
- package/src/SearchSuggestions.hbs +47 -49
- package/src/SearchableListBase.hbs +2 -0
- package/src/SecondaryNavigation.hbs +52 -72
- package/src/SecondaryNavigation.ts +182 -186
- package/src/SecondaryNavigationItem.hbs +63 -0
- package/src/SecondaryNavigationItem.ts +358 -0
- package/src/SecondaryNavigationItemBase.ts +115 -0
- package/src/SecondaryNavigationSubItem.hbs +41 -0
- package/src/SecondaryNavigationSubItem.ts +123 -0
- package/src/SelectBox.hbs +1 -0
- package/src/SelectBox.ts +38 -1
- package/src/StatusBadge.hbs +9 -0
- package/src/StatusBadge.ts +129 -0
- package/src/Tab.ts +1 -1
- package/src/Table.ts +7 -7
- package/src/Tag.ts +12 -3
- package/src/TextArea.ts +1 -1
- package/src/features/SearchSuggestionsPopover.ts +18 -20
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/AccordionItemTemplate.lit.ts +2 -1
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
- package/src/generated/templates/DropdownTemplate.lit.ts +1 -1
- package/src/generated/templates/FilterMenuTemplate.lit.ts +3 -3
- package/src/generated/templates/FooterTemplate.lit.ts +15 -15
- package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -2
- package/src/generated/templates/InputGroupTemplate.lit.ts +12 -0
- package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +4 -4
- package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
- package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +15 -10
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +11 -10
- package/src/generated/templates/SearchTemplate.lit.ts +10 -9
- package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
- package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +16 -0
- package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +14 -0
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -9
- package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
- package/src/generated/templates/StatusBadgeTemplate.lit.ts +10 -0
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/Avatar.css.ts +1 -1
- package/src/generated/themes/Breadcrumbs.css.ts +1 -1
- package/src/generated/themes/Checkbox.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/DatePicker.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/HeroBanner.css.ts +1 -1
- package/src/generated/themes/InputGroup.css.ts +13 -0
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.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/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SearchSuggestions.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +13 -0
- package/src/generated/themes/SecondaryNavigationSubItem.css.ts +13 -0
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StatusBadge.css.ts +13 -0
- package/src/generated/themes/Tag.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/i18n/messagebundle.properties +12 -1
- package/src/i18n/messagebundle_en.properties +8 -1
- package/src/themes/AccordionItem.css +20 -15
- package/src/themes/Avatar.css +20 -0
- package/src/themes/Breadcrumbs.css +4 -2
- package/src/themes/Checkbox.css +12 -0
- package/src/themes/CountrySelector.css +16 -1
- package/src/themes/DatePicker.css +1 -1
- package/src/themes/Dropdown.css +3 -1
- package/src/themes/FilterMenu.css +10 -0
- package/src/themes/HeroBanner.css +42 -6
- package/src/themes/InputGroup.css +19 -0
- package/src/themes/MastheadItem.css +2 -7
- package/src/themes/MastheadMenuItem.css +0 -4
- package/src/themes/MastheadShell.css +9 -10
- package/src/themes/MediaPlayer.css +3 -2
- package/src/themes/PhoneNumberField.css +17 -3
- package/src/themes/Search.css +168 -21
- package/src/themes/SearchSuggestions.css +7 -1
- package/src/themes/SecondaryNavigation.css +44 -302
- package/src/themes/SecondaryNavigationItem.css +220 -0
- package/src/themes/SecondaryNavigationSubItem.css +118 -0
- package/src/themes/StatusBadge.css +135 -0
- package/src/themes/Tag.css +6 -1
- package/src/themes/TextField.css +10 -1
- package/src/types/callback.ts +3 -0
- package/src/utils/debounce.ts +1 -1
- package/src/utils/retryUntilSuccessful.ts +23 -0
- package/dist/assets/messagebundle_en-26cd7a92.js +0 -1
package/src/PhoneNumberField.ts
CHANGED
|
@@ -6,6 +6,7 @@ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
|
6
6
|
import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
7
7
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
8
8
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
9
|
+
import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
9
10
|
import { COUNTRY_SELECT } from "./generated/i18n/i18n-defaults.js";
|
|
10
11
|
import { Country, CountryListDB } from "./data/CountryListISO3166.js";
|
|
11
12
|
import UDExDropdown from "./Dropdown.js";
|
|
@@ -258,6 +259,8 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
258
259
|
previousKey!: string;
|
|
259
260
|
|
|
260
261
|
static i18nBundle: I18nBundle;
|
|
262
|
+
_dropdown!: UDExDropdown;
|
|
263
|
+
_handleResizeBound: ResizeObserverCallback;
|
|
261
264
|
|
|
262
265
|
static async onDefine() {
|
|
263
266
|
UDExPhoneNumberField.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
|
|
@@ -273,6 +276,23 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
273
276
|
|
|
274
277
|
countriesList: ExtendedCountriesListPhoneNumberData[] = CountryListDB;
|
|
275
278
|
|
|
279
|
+
constructor() {
|
|
280
|
+
super();
|
|
281
|
+
this._handleResizeBound = this._handleResize.bind(this);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
onEnterDOM(): void {
|
|
285
|
+
ResizeHandler.register(this, this._handleResizeBound);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
onExitDOM(): void {
|
|
289
|
+
ResizeHandler.deregister(this, this._handleResizeBound);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
onAfterRendering() {
|
|
293
|
+
this._dropdown = this.getDropdown();
|
|
294
|
+
}
|
|
295
|
+
|
|
276
296
|
onClick(): void {
|
|
277
297
|
if (this.isButtonDisabled) {
|
|
278
298
|
return;
|
|
@@ -287,6 +307,10 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
287
307
|
}
|
|
288
308
|
}
|
|
289
309
|
|
|
310
|
+
_handleResize() {
|
|
311
|
+
this._dropdown.style.setProperty("--udex-dropdown-pane-width", `${this.offsetWidth}px`);
|
|
312
|
+
}
|
|
313
|
+
|
|
290
314
|
handleInput(e: InputEvent) {
|
|
291
315
|
this.value = (e.target as HTMLInputElement)?.value.trim();
|
|
292
316
|
|
|
@@ -309,11 +333,11 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
309
333
|
}
|
|
310
334
|
|
|
311
335
|
handleKeyDown = (e: KeyboardEvent) => {
|
|
312
|
-
const isKeyAllowed = e.key
|
|
336
|
+
const isKeyAllowed = e.key.match(/\d/)
|
|
313
337
|
|| this.allowedKeys.includes(e.key)
|
|
314
338
|
|| e.metaKey
|
|
315
|
-
|| e.ctrlKey
|
|
316
|
-
|
|
339
|
+
|| e.ctrlKey;
|
|
340
|
+
|
|
317
341
|
if (!isKeyAllowed) {
|
|
318
342
|
e.preventDefault();
|
|
319
343
|
}
|
package/src/Search.hbs
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
|
-
<div class="udex-search__root">
|
|
1
|
+
<div class="udex-search__root {{classWithPrefix}}">
|
|
2
|
+
{{#if isShowSearchHomePrefix}}
|
|
3
|
+
<div class="udex-search__prefix">
|
|
4
|
+
<button type="button"
|
|
5
|
+
aria-haspopup="true"
|
|
6
|
+
aria-controls="udex-search-prefix"
|
|
7
|
+
class="udex-search__prefix-button"
|
|
8
|
+
@click="{{handleDropdownClick}}">
|
|
9
|
+
<span class="udex-search__prefix-label">{{labelPrefix}}</span>
|
|
10
|
+
<ui5-icon class="udex-search__prefix-icon" name="slim-arrow-down"></ui5-icon>
|
|
11
|
+
</button>
|
|
12
|
+
<ui5-popover
|
|
13
|
+
id="udex-search-prefix"
|
|
14
|
+
class="udex-search__prefix-popover"
|
|
15
|
+
hide-arrow
|
|
16
|
+
placement-type="Bottom"
|
|
17
|
+
horizontal-align="Left"
|
|
18
|
+
style="{{prefixPopoverStyles}}"
|
|
19
|
+
@after-close="{{handleAfterClosePrefixPopover}}">
|
|
20
|
+
<slot></slot>
|
|
21
|
+
</ui5-popover>
|
|
22
|
+
</div>
|
|
23
|
+
{{/if}}
|
|
2
24
|
<form role="search" class="udex-search__container {{focusClasses}} {{isNotEmptyClass}}">
|
|
3
25
|
{{#if labelAnimationDisabled}}
|
|
4
26
|
<input
|
|
@@ -8,9 +30,10 @@
|
|
|
8
30
|
class="udex-search__field"
|
|
9
31
|
autocomplete="off"
|
|
10
32
|
role="combobox"
|
|
11
|
-
aria-controls="
|
|
33
|
+
aria-controls="{{getAriaControls}}"
|
|
12
34
|
aria-expanded="false"
|
|
13
35
|
aria-haspopup="{{showSuggestedPopover}}"
|
|
36
|
+
aria-label="Search"
|
|
14
37
|
placeholder="{{label}}"
|
|
15
38
|
.value="{{value}}"
|
|
16
39
|
@input="{{handleSearchChange}}"
|
|
@@ -34,7 +57,7 @@
|
|
|
34
57
|
autocomplete="off"
|
|
35
58
|
role="combobox"
|
|
36
59
|
aria-label="{{accInfo.ariaLabel}}"
|
|
37
|
-
aria-controls="
|
|
60
|
+
aria-controls="{{getAriaControls}}"
|
|
38
61
|
aria-expanded="false"
|
|
39
62
|
aria-haspopup="{{showSuggestedPopover}}"
|
|
40
63
|
.value="{{value}}"
|
package/src/Search.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import UI5Element, { ChangeInfo } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
3
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
3
4
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
4
5
|
import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
5
6
|
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
@@ -16,11 +17,20 @@ import {
|
|
|
16
17
|
isDown,
|
|
17
18
|
isEscape,
|
|
18
19
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
20
|
+
import List from "./List.js";
|
|
21
|
+
import ListItemBase from "./ListItemBase.js";
|
|
22
|
+
import "@ui5/webcomponents/dist/Icon.js";
|
|
19
23
|
import "@ui5/webcomponents-icons/dist/decline.js";
|
|
20
24
|
import "@ui5/webcomponents-icons/dist/search.js";
|
|
21
25
|
import "@ui5/webcomponents-icons/dist/microphone.js";
|
|
26
|
+
import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
22
27
|
import debounce from "./utils/debounce.js";
|
|
23
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
SUGGESTED_TEXT,
|
|
30
|
+
RECOMMENDED_TEXT,
|
|
31
|
+
AVAILABLE_VALUES,
|
|
32
|
+
NO_MATCHES_FOUND,
|
|
33
|
+
} from "./generated/i18n/i18n-defaults.js";
|
|
24
34
|
import type SearchInputSuggestion from "./features/SearchSuggestionsPopover.js";
|
|
25
35
|
|
|
26
36
|
import SearchTemplate from "./generated/templates/SearchTemplate.lit.js";
|
|
@@ -29,9 +39,12 @@ import SearchSuggestionsTemplate from "./generated/templates/SearchSuggestionsTe
|
|
|
29
39
|
// Styles
|
|
30
40
|
import SearchCss from "./generated/themes/Search.css.js";
|
|
31
41
|
import SearchSuggestionsCss from "./generated/themes/SearchSuggestions.css.js";
|
|
42
|
+
import retryUntilSuccessful from "./utils/retryUntilSuccessful.js";
|
|
32
43
|
|
|
33
44
|
const SearchIcon: string = "sap-icon://search";
|
|
34
45
|
|
|
46
|
+
const SuggestionsPopoverId: string = "suggestions-popover";
|
|
47
|
+
|
|
35
48
|
type ListItem = {
|
|
36
49
|
label: string;
|
|
37
50
|
icon: string;
|
|
@@ -65,7 +78,7 @@ export type SuggestionList = {
|
|
|
65
78
|
|
|
66
79
|
export enum Mode {
|
|
67
80
|
Standard = "Standard",
|
|
68
|
-
HomeSearch = "Home Search"
|
|
81
|
+
HomeSearch = "Home Search"
|
|
69
82
|
}
|
|
70
83
|
|
|
71
84
|
/**
|
|
@@ -96,7 +109,7 @@ export enum Mode {
|
|
|
96
109
|
staticAreaTemplate: SearchSuggestionsTemplate,
|
|
97
110
|
get dependencies() {
|
|
98
111
|
const Suggestion = getFeature<typeof SearchInputSuggestion>("SearchInputSuggestion");
|
|
99
|
-
return ([Popover] as Array<typeof UI5Element>).concat(Suggestion ? Suggestion.dependencies : []);
|
|
112
|
+
return ([Popover] as Array<typeof UI5Element>).concat(Suggestion ? [...Suggestion.dependencies, List] : [List]);
|
|
100
113
|
},
|
|
101
114
|
})
|
|
102
115
|
|
|
@@ -121,6 +134,13 @@ export enum Mode {
|
|
|
121
134
|
* @public
|
|
122
135
|
*/
|
|
123
136
|
@event("handle-value-reset")
|
|
137
|
+
/**
|
|
138
|
+
* Fired event when the user presses escape in search field.
|
|
139
|
+
*
|
|
140
|
+
* @event sap.ui.webc.web-components.UDExSearch#handleCloseSearch
|
|
141
|
+
* @public
|
|
142
|
+
*/
|
|
143
|
+
@event("handle-close-search")
|
|
124
144
|
/**
|
|
125
145
|
* Fired event when the user clicks on the item inside the popover.
|
|
126
146
|
*
|
|
@@ -128,6 +148,13 @@ export enum Mode {
|
|
|
128
148
|
* @public
|
|
129
149
|
*/
|
|
130
150
|
@event("dropdown-item-click", { detail: { value: { type: String } } })
|
|
151
|
+
/**
|
|
152
|
+
* Fired event when the user clicks on the intem inside the prefix dropdown.
|
|
153
|
+
*
|
|
154
|
+
* @event sap.ui.webc.web-components.UDExSearch#prefixItemClick
|
|
155
|
+
* @public
|
|
156
|
+
*/
|
|
157
|
+
@event("prefix-item-click", { detail: { item: { type: ListItemBase } } })
|
|
131
158
|
class UDExSearch extends UI5Element {
|
|
132
159
|
static i18nBundle: any;
|
|
133
160
|
_labelActiveClassName = "udex-search__label--active";
|
|
@@ -225,6 +252,14 @@ class UDExSearch extends UI5Element {
|
|
|
225
252
|
@property({ validator: Integer })
|
|
226
253
|
_searchWidth?: number;
|
|
227
254
|
|
|
255
|
+
/**
|
|
256
|
+
* Define the label of the prefix for the dropdown.
|
|
257
|
+
*
|
|
258
|
+
* @private
|
|
259
|
+
*/
|
|
260
|
+
@property({ type: String })
|
|
261
|
+
labelPrefix!: string;
|
|
262
|
+
|
|
228
263
|
/**
|
|
229
264
|
* Defines display the suggestion popover in the component.
|
|
230
265
|
*
|
|
@@ -251,8 +286,8 @@ class UDExSearch extends UI5Element {
|
|
|
251
286
|
* @default "Standard"
|
|
252
287
|
* @public
|
|
253
288
|
*/
|
|
254
|
-
@property({ type: String, defaultValue:
|
|
255
|
-
mode!:
|
|
289
|
+
@property({ type: String, defaultValue: Mode.Standard })
|
|
290
|
+
mode!: Mode;
|
|
256
291
|
|
|
257
292
|
/**
|
|
258
293
|
* Defines open suggestion popover when clicked on the input field.
|
|
@@ -281,6 +316,15 @@ class UDExSearch extends UI5Element {
|
|
|
281
316
|
@property()
|
|
282
317
|
accessibleName!: string;
|
|
283
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Defines the text if the suggestion list doesn't return results.
|
|
321
|
+
*
|
|
322
|
+
* @default "No matches found."
|
|
323
|
+
* @public
|
|
324
|
+
*/
|
|
325
|
+
@property({ type: String, defaultValue: "No matches found." })
|
|
326
|
+
noResultText!: string;
|
|
327
|
+
|
|
284
328
|
/**
|
|
285
329
|
* Defines the inner stored class of the label.
|
|
286
330
|
*
|
|
@@ -349,6 +393,36 @@ class UDExSearch extends UI5Element {
|
|
|
349
393
|
@property({ type: String })
|
|
350
394
|
_recommendLabel?: string;
|
|
351
395
|
|
|
396
|
+
/**
|
|
397
|
+
* The console warning shown after all unsuccessful attempts of opening SearchSuggestionsPopover component.
|
|
398
|
+
* @default "UdexSearchSuggestionsPopover couldn`t be opened"
|
|
399
|
+
*/
|
|
400
|
+
@property({ type: String, defaultValue: "UdexSearchSuggestionsPopover couldn`t be opened" })
|
|
401
|
+
unsuccessfulRetryMessage: string = "UdexSearchSuggestionsPopover couldn`t be opened";
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* The delay before retrying to open the SerchSuggestionsPopover component.
|
|
405
|
+
* @default 200
|
|
406
|
+
*/
|
|
407
|
+
@property({ type: Number, defaultValue: 200 })
|
|
408
|
+
retryDelay: number = 200;
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* The maximum number of attempts for opening the SearchSuggestionsPopover component.
|
|
412
|
+
* @default 5
|
|
413
|
+
*/
|
|
414
|
+
@property({ type: Number, defaultValue: 5 })
|
|
415
|
+
maxRetryAttempts: number = 5;
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Defines the prefix dropdown of the Search component.
|
|
419
|
+
*
|
|
420
|
+
* @slot dropdownPrefix
|
|
421
|
+
* @public
|
|
422
|
+
*/
|
|
423
|
+
@slot({ type: HTMLElement, "default": true })
|
|
424
|
+
dropdownPrefix!: Array<List>;
|
|
425
|
+
|
|
352
426
|
constructor() {
|
|
353
427
|
super();
|
|
354
428
|
this._handleResizeBound = this._handleResize.bind(this);
|
|
@@ -546,6 +620,67 @@ class UDExSearch extends UI5Element {
|
|
|
546
620
|
this.fireEvent("dropdown-item-click", { value });
|
|
547
621
|
}
|
|
548
622
|
|
|
623
|
+
handleDropdownClick() {
|
|
624
|
+
const dropdown = this.getPrefixPopover();
|
|
625
|
+
|
|
626
|
+
if (dropdown.opened) {
|
|
627
|
+
this.onClosePrefixPopover();
|
|
628
|
+
} else {
|
|
629
|
+
this.onOpenPrefixPopover();
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
getPrefixWrapper() {
|
|
634
|
+
return this.shadowRoot!.querySelector(".udex-search__prefix") as HTMLElement;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
getPrefixPopover() {
|
|
638
|
+
return this.shadowRoot!.querySelector<Popover>("[ui5-popover]")!;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
getPrefixButton() {
|
|
642
|
+
return this.shadowRoot!.querySelector(".udex-search__prefix-button") as HTMLElement;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
onOpenPrefixPopover() {
|
|
646
|
+
if (this.dropdownPrefix.length) {
|
|
647
|
+
const wrapper = this.getPrefixWrapper();
|
|
648
|
+
const dropdown = this.getPrefixPopover();
|
|
649
|
+
const button = this.getPrefixButton();
|
|
650
|
+
|
|
651
|
+
dropdown.showAt(this.getPrefixButton());
|
|
652
|
+
dropdown.style.width = `${button.offsetWidth + 1}px`;
|
|
653
|
+
button.classList.add("udex-search__prefix-button--active");
|
|
654
|
+
wrapper.classList.add("udex-search__prefix--show-popover");
|
|
655
|
+
this.handleItemClick();
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
private handleItemClick() {
|
|
660
|
+
this.dropdownPrefix[0].addEventListener("item-press", (e: any) => {
|
|
661
|
+
const selectedItemPrefix = e.detail.item as ListItemBase;
|
|
662
|
+
this.labelPrefix = selectedItemPrefix.innerText;
|
|
663
|
+
this.fireEvent("prefix-item-click", { item: selectedItemPrefix });
|
|
664
|
+
this.onClosePrefixPopover();
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
onClosePrefixPopover() {
|
|
669
|
+
const dropdown = this.getPrefixPopover();
|
|
670
|
+
|
|
671
|
+
dropdown.close();
|
|
672
|
+
this.handleAfterClosePrefixPopover();
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
handleAfterClosePrefixPopover() {
|
|
676
|
+
const wrapper = this.getPrefixWrapper();
|
|
677
|
+
const button = this.getPrefixButton();
|
|
678
|
+
|
|
679
|
+
wrapper.classList.remove("udex-search__prefix--show-popover");
|
|
680
|
+
button.classList.remove("udex-search__prefix-button--active");
|
|
681
|
+
this.dropdownPrefix[0].removeEventListener("item-press", () => {});
|
|
682
|
+
}
|
|
683
|
+
|
|
549
684
|
handleInputClick(): void {
|
|
550
685
|
if (this.showPopoverWhenClickedIntoInput) {
|
|
551
686
|
this.onOpenPopover();
|
|
@@ -568,8 +703,19 @@ class UDExSearch extends UI5Element {
|
|
|
568
703
|
}
|
|
569
704
|
|
|
570
705
|
onOpenPopover(): void {
|
|
571
|
-
if (this.showSuggestedPopover
|
|
572
|
-
this.Suggestion
|
|
706
|
+
if (this.showSuggestedPopover) {
|
|
707
|
+
if (!this.Suggestion) {
|
|
708
|
+
retryUntilSuccessful(() => this.Suggestion, this.retryDelay, this.maxRetryAttempts, this.unsuccessfulRetryMessage)
|
|
709
|
+
.then(() => {
|
|
710
|
+
this.Suggestion!.open();
|
|
711
|
+
})
|
|
712
|
+
.catch(error => {
|
|
713
|
+
console.warn(error.message);
|
|
714
|
+
});
|
|
715
|
+
} else {
|
|
716
|
+
this.Suggestion.open();
|
|
717
|
+
}
|
|
718
|
+
|
|
573
719
|
this.handleClassToRoot();
|
|
574
720
|
this.handleAriaExpanded();
|
|
575
721
|
}
|
|
@@ -601,6 +747,14 @@ class UDExSearch extends UI5Element {
|
|
|
601
747
|
this.enableSuggestions();
|
|
602
748
|
}
|
|
603
749
|
|
|
750
|
+
if (this.isHomeSearchWithPrefixMode && this.dropdownPrefix.length) {
|
|
751
|
+
const dropdownItems = Array.from(this.dropdownPrefix[0].children) as Array<ListItemBase>;
|
|
752
|
+
const selectedItemIndex = dropdownItems.findIndex(listItem => listItem.selected);
|
|
753
|
+
const selectedItemPrefix = selectedItemIndex >= 0 ? dropdownItems[selectedItemIndex] : dropdownItems[0];
|
|
754
|
+
|
|
755
|
+
this.labelPrefix = selectedItemPrefix.innerText;
|
|
756
|
+
}
|
|
757
|
+
|
|
604
758
|
this.showResetButton = !!this.value.length;
|
|
605
759
|
|
|
606
760
|
if (this.value && this.labelActiveClass === "") {
|
|
@@ -616,6 +770,14 @@ class UDExSearch extends UI5Element {
|
|
|
616
770
|
}
|
|
617
771
|
|
|
618
772
|
this.labelClasses = `udex-search__label ${this.labelActiveClass} ${this.labelAnimationClass}`;
|
|
773
|
+
|
|
774
|
+
if (this.isVoiceButton) {
|
|
775
|
+
this.labelClasses += " udex-search__label-with-voice-icon";
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
if (this.isShowSubmitButton) {
|
|
779
|
+
this.labelClasses += " udex-search__label-with-search-icon";
|
|
780
|
+
}
|
|
619
781
|
}
|
|
620
782
|
|
|
621
783
|
enableSuggestions() {
|
|
@@ -628,7 +790,7 @@ class UDExSearch extends UI5Element {
|
|
|
628
790
|
if (Suggestion) {
|
|
629
791
|
this.Suggestion = new Suggestion(this);
|
|
630
792
|
} else {
|
|
631
|
-
throw new Error("You have to import '@udex/webcomponents/dist/features/
|
|
793
|
+
throw new Error("You have to import '@udex/webcomponents/dist/features/SearchSuggestionsPopover.js' module to use udex-search suggestions");
|
|
632
794
|
}
|
|
633
795
|
}
|
|
634
796
|
|
|
@@ -636,6 +798,7 @@ class UDExSearch extends UI5Element {
|
|
|
636
798
|
if (this.showSuggestedPopover) {
|
|
637
799
|
this.handleOutsideClick();
|
|
638
800
|
this.handleOpenSuggestionPopover();
|
|
801
|
+
this.setSearchWidth();
|
|
639
802
|
}
|
|
640
803
|
}
|
|
641
804
|
|
|
@@ -687,16 +850,17 @@ class UDExSearch extends UI5Element {
|
|
|
687
850
|
this.handleEnterKey(e);
|
|
688
851
|
this.handleTabKey(e);
|
|
689
852
|
this.handleEscapeKey(e);
|
|
853
|
+
this.fireEvent("search-keydown", e);
|
|
690
854
|
};
|
|
691
855
|
|
|
692
856
|
handleEnterKey(e: KeyboardEvent) {
|
|
693
|
-
if (isEnter(e)
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
857
|
+
if (isEnter(e)) {
|
|
858
|
+
if (!this.open) {
|
|
859
|
+
e.preventDefault();
|
|
860
|
+
} else {
|
|
861
|
+
this.Suggestion?.onEnter(e);
|
|
862
|
+
this.fireDropdownItemClick(this.value);
|
|
863
|
+
}
|
|
700
864
|
this.handleSubmitValue();
|
|
701
865
|
}
|
|
702
866
|
}
|
|
@@ -708,9 +872,12 @@ class UDExSearch extends UI5Element {
|
|
|
708
872
|
}
|
|
709
873
|
|
|
710
874
|
handleEscapeKey(e: KeyboardEvent) {
|
|
711
|
-
if (isEscape(e)
|
|
712
|
-
this.
|
|
713
|
-
|
|
875
|
+
if (isEscape(e)) {
|
|
876
|
+
if (this.open) {
|
|
877
|
+
this.Suggestion?.onEscape(e);
|
|
878
|
+
this.handleClassToRoot();
|
|
879
|
+
}
|
|
880
|
+
this.fireEvent("handle-close-search");
|
|
714
881
|
}
|
|
715
882
|
}
|
|
716
883
|
|
|
@@ -720,12 +887,14 @@ class UDExSearch extends UI5Element {
|
|
|
720
887
|
this.handlePrevTabKeyList(e);
|
|
721
888
|
this.handleDownKeyList(e);
|
|
722
889
|
this.handleUpKeyList(e);
|
|
890
|
+
this.handleEscapeKey(e);
|
|
723
891
|
}
|
|
724
892
|
}
|
|
725
893
|
|
|
726
894
|
handleTabKeyList(e: KeyboardEvent) {
|
|
727
895
|
if (isTabNext(e)) {
|
|
728
896
|
this.Suggestion?.onKeyTabList(e);
|
|
897
|
+
this.handleClassToRoot();
|
|
729
898
|
}
|
|
730
899
|
}
|
|
731
900
|
|
|
@@ -771,7 +940,7 @@ class UDExSearch extends UI5Element {
|
|
|
771
940
|
|
|
772
941
|
handleKeyDownReset(e: KeyboardEvent) {
|
|
773
942
|
if (isTabPrevious(e) && this.open) {
|
|
774
|
-
this.Suggestion?.
|
|
943
|
+
this.Suggestion?.handlePrevTabReset(e);
|
|
775
944
|
}
|
|
776
945
|
}
|
|
777
946
|
|
|
@@ -823,7 +992,15 @@ class UDExSearch extends UI5Element {
|
|
|
823
992
|
}
|
|
824
993
|
|
|
825
994
|
_handleResize() {
|
|
826
|
-
this.
|
|
995
|
+
this.setSearchWidth();
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
private setSearchWidth() {
|
|
999
|
+
const searchContainer = (this.shadowRoot?.querySelector(".udex-search__container") as HTMLElement);
|
|
1000
|
+
|
|
1001
|
+
if (searchContainer.offsetWidth !== this._searchWidth) {
|
|
1002
|
+
this._searchWidth = searchContainer.offsetWidth;
|
|
1003
|
+
}
|
|
827
1004
|
}
|
|
828
1005
|
|
|
829
1006
|
get popoverStyles() {
|
|
@@ -832,10 +1009,24 @@ class UDExSearch extends UI5Element {
|
|
|
832
1009
|
};
|
|
833
1010
|
}
|
|
834
1011
|
|
|
1012
|
+
get prefixPopoverStyles() {
|
|
1013
|
+
return {
|
|
1014
|
+
"width": this.getPrefixButton() ? `${this.getPrefixButton().offsetWidth + 1}px` : "",
|
|
1015
|
+
};
|
|
1016
|
+
}
|
|
1017
|
+
|
|
835
1018
|
get isShowResetButton(): boolean {
|
|
836
1019
|
return this.showResetButton && !!this.value.length;
|
|
837
1020
|
}
|
|
838
1021
|
|
|
1022
|
+
get noResultMessage(): string {
|
|
1023
|
+
return this.noResultText || UDExSearch.i18nBundle.getText(NO_MATCHES_FOUND) as string;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
get showNoResultMessage(): boolean {
|
|
1027
|
+
return !this.suggestedList?.length && !this.recommendedList?.length;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
839
1030
|
get isShowSuggestedList(): boolean {
|
|
840
1031
|
return !!this.suggestedList?.length;
|
|
841
1032
|
}
|
|
@@ -848,6 +1039,14 @@ class UDExSearch extends UI5Element {
|
|
|
848
1039
|
return !!(this.suggestedList?.length || this.recommendedList?.length);
|
|
849
1040
|
}
|
|
850
1041
|
|
|
1042
|
+
get getAriaControls(): string {
|
|
1043
|
+
return this.hasPopoverContent ? this.getSuggestionsPopoverId : "";
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
get getSuggestionsPopoverId(): string {
|
|
1047
|
+
return SuggestionsPopoverId;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
851
1050
|
get isShowSubmitButton(): boolean {
|
|
852
1051
|
return this.showSubmitButton;
|
|
853
1052
|
}
|
|
@@ -860,12 +1059,28 @@ class UDExSearch extends UI5Element {
|
|
|
860
1059
|
return this._recommendLabel;
|
|
861
1060
|
}
|
|
862
1061
|
|
|
1062
|
+
get isShowSearchHomePrefix(): boolean {
|
|
1063
|
+
return this.isHomeSearchWithPrefixMode && !!this.dropdownPrefix.length;
|
|
1064
|
+
}
|
|
1065
|
+
|
|
863
1066
|
get isHomeSearchMode(): boolean {
|
|
864
1067
|
return this.mode === Mode.HomeSearch;
|
|
865
1068
|
}
|
|
866
1069
|
|
|
1070
|
+
get isHomeSearchWithPrefixMode(): boolean {
|
|
1071
|
+
return this.mode === Mode.HomeSearch && !!this.dropdownPrefix.length;
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
get classWithPrefix(): string {
|
|
1075
|
+
return this.isHomeSearchWithPrefixMode ? "udex-search-prefix" : "";
|
|
1076
|
+
}
|
|
1077
|
+
|
|
867
1078
|
get homeSearchPopoverClass(): string {
|
|
868
|
-
return this.isHomeSearchMode ? "udex-search-suggestions__root--home" : "";
|
|
1079
|
+
return this.isHomeSearchMode || this.isHomeSearchWithPrefixMode ? "udex-search-suggestions__root--home" : "";
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
get homeSearchWithPrefixPopoverClass(): string {
|
|
1083
|
+
return this.isHomeSearchWithPrefixMode ? "udex-search-suggestions__root--prefix" : "";
|
|
869
1084
|
}
|
|
870
1085
|
|
|
871
1086
|
get searchButtonActiveClass(): string {
|