@sapudex/web-components 0.111.0 → 0.114.2

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.
Files changed (189) hide show
  1. package/.npmrc +1 -2
  2. package/bundle.esm.js +1 -0
  3. package/dist/AccordionItem.d.ts +7 -0
  4. package/dist/AccordionItem.js +6 -2
  5. package/dist/AccordionItem.js.map +1 -1
  6. package/dist/CountrySelector.d.ts +5 -7
  7. package/dist/CountrySelector.js +12 -7
  8. package/dist/CountrySelector.js.map +1 -1
  9. package/dist/Dropdown.d.ts +10 -0
  10. package/dist/Dropdown.js +10 -0
  11. package/dist/Dropdown.js.map +1 -1
  12. package/dist/Footer.d.ts +40 -1
  13. package/dist/Footer.js +151 -1
  14. package/dist/Footer.js.map +1 -1
  15. package/dist/InputGroup.d.ts +75 -0
  16. package/dist/InputGroup.js +101 -0
  17. package/dist/InputGroup.js.map +1 -0
  18. package/dist/MastheadMobileMenu.d.ts +4 -1
  19. package/dist/MastheadMobileMenu.js +10 -3
  20. package/dist/MastheadMobileMenu.js.map +1 -1
  21. package/dist/PhoneNumberField.d.ts +8 -0
  22. package/dist/PhoneNumberField.js +23 -10
  23. package/dist/PhoneNumberField.js.map +1 -1
  24. package/dist/Search.d.ts +58 -2
  25. package/dist/Search.js +159 -12
  26. package/dist/Search.js.map +1 -1
  27. package/dist/SecondaryNavigation.d.ts +5 -1
  28. package/dist/SecondaryNavigation.js +18 -2
  29. package/dist/SecondaryNavigation.js.map +1 -1
  30. package/dist/SelectBox.d.ts +6 -0
  31. package/dist/SelectBox.js +14 -1
  32. package/dist/SelectBox.js.map +1 -1
  33. package/dist/Table.d.ts +5 -5
  34. package/dist/Table.js +5 -5
  35. package/dist/Table.js.map +1 -1
  36. package/dist/Tag.d.ts +7 -1
  37. package/dist/Tag.js +6 -2
  38. package/dist/Tag.js.map +1 -1
  39. package/dist/TextArea.js.map +1 -1
  40. package/dist/assets/{bundle.esm-b7920968.js → bundle.esm-ab45813e.js} +181 -179
  41. package/dist/css/themes/AccordionItem.css +1 -1
  42. package/dist/css/themes/Breadcrumbs.css +1 -1
  43. package/dist/css/themes/CountrySelector.css +1 -1
  44. package/dist/css/themes/DatePicker.css +1 -1
  45. package/dist/css/themes/Dropdown.css +1 -1
  46. package/dist/css/themes/InputGroup.css +1 -0
  47. package/dist/css/themes/MastheadItem.css +1 -1
  48. package/dist/css/themes/MastheadMenuItem.css +1 -1
  49. package/dist/css/themes/MastheadShell.css +1 -1
  50. package/dist/css/themes/PhoneNumberField.css +1 -1
  51. package/dist/css/themes/RatingIndicator.css +1 -1
  52. package/dist/css/themes/Search.css +1 -1
  53. package/dist/css/themes/SearchSuggestions.css +1 -1
  54. package/dist/css/themes/Slider.css +1 -1
  55. package/dist/css/themes/Tag.css +1 -1
  56. package/dist/css/themes/TextField.css +1 -1
  57. package/dist/custom-elements-internal.json +405 -53
  58. package/dist/custom-elements.json +358 -52
  59. package/dist/features/SearchSuggestionsPopover.d.ts +3 -3
  60. package/dist/features/SearchSuggestionsPopover.js +16 -18
  61. package/dist/features/SearchSuggestionsPopover.js.map +1 -1
  62. package/dist/generated/templates/AccordionItemTemplate.lit.js +2 -1
  63. package/dist/generated/templates/AccordionItemTemplate.lit.js.map +1 -1
  64. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
  65. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  66. package/dist/generated/templates/FooterTemplate.lit.js +15 -15
  67. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  68. package/dist/generated/templates/InputGroupTemplate.lit.d.ts +4 -0
  69. package/dist/generated/templates/InputGroupTemplate.lit.js +7 -0
  70. package/dist/generated/templates/InputGroupTemplate.lit.js.map +1 -0
  71. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +15 -10
  72. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  73. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
  74. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  75. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +11 -10
  76. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  77. package/dist/generated/templates/SearchTemplate.lit.js +11 -10
  78. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  79. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +2 -1
  80. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  81. package/dist/generated/themes/AccordionItem.css.js +1 -1
  82. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  83. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  84. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  85. package/dist/generated/themes/CountrySelector.css.js +1 -1
  86. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  87. package/dist/generated/themes/DatePicker.css.js +1 -1
  88. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  89. package/dist/generated/themes/Dropdown.css.js +1 -1
  90. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  91. package/dist/generated/themes/InputGroup.css.d.ts +3 -0
  92. package/dist/generated/themes/InputGroup.css.js +9 -0
  93. package/dist/generated/themes/InputGroup.css.js.map +1 -0
  94. package/dist/generated/themes/MastheadItem.css.js +1 -1
  95. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  96. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  97. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  98. package/dist/generated/themes/MastheadShell.css.js +1 -1
  99. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  100. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  101. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  102. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  103. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  104. package/dist/generated/themes/Search.css.js +1 -1
  105. package/dist/generated/themes/Search.css.js.map +1 -1
  106. package/dist/generated/themes/SearchSuggestions.css.js +1 -1
  107. package/dist/generated/themes/SearchSuggestions.css.js.map +1 -1
  108. package/dist/generated/themes/Slider.css.js +1 -1
  109. package/dist/generated/themes/Slider.css.js.map +1 -1
  110. package/dist/generated/themes/Tag.css.js +1 -1
  111. package/dist/generated/themes/Tag.css.js.map +1 -1
  112. package/dist/generated/themes/TextField.css.js +1 -1
  113. package/dist/generated/themes/TextField.css.js.map +1 -1
  114. package/dist/types/callback.d.ts +2 -0
  115. package/dist/types/callback.js +2 -0
  116. package/dist/types/callback.js.map +1 -0
  117. package/dist/utils/debounce.d.ts +2 -2
  118. package/dist/utils/debounce.js.map +1 -1
  119. package/dist/utils/retryUntilSuccessful.d.ts +3 -0
  120. package/dist/utils/retryUntilSuccessful.js +21 -0
  121. package/dist/utils/retryUntilSuccessful.js.map +1 -0
  122. package/dist/vscode.html-custom-data.json +48 -12
  123. package/dist/web-types.json +205 -29
  124. package/package.json +1 -1
  125. package/src/AccordionItem.hbs +12 -1
  126. package/src/AccordionItem.ts +11 -2
  127. package/src/CountrySelector.hbs +1 -2
  128. package/src/CountrySelector.ts +18 -20
  129. package/src/Dropdown.ts +10 -0
  130. package/src/Footer.hbs +154 -91
  131. package/src/Footer.ts +158 -1
  132. package/src/InputGroup.hbs +20 -0
  133. package/src/InputGroup.ts +136 -0
  134. package/src/MastheadMobileMenu.hbs +51 -28
  135. package/src/MastheadMobileMenu.ts +12 -3
  136. package/src/MastheadProfileMenu.hbs +1 -1
  137. package/src/PhoneNumberField.ts +27 -3
  138. package/src/Search.hbs +23 -1
  139. package/src/Search.ts +203 -15
  140. package/src/SearchSuggestions.hbs +46 -48
  141. package/src/SecondaryNavigation.hbs +6 -4
  142. package/src/SecondaryNavigation.ts +23 -3
  143. package/src/SelectBox.ts +22 -0
  144. package/src/Table.ts +7 -7
  145. package/src/Tag.ts +12 -3
  146. package/src/TextArea.ts +1 -1
  147. package/src/features/SearchSuggestionsPopover.ts +18 -20
  148. package/src/generated/templates/AccordionItemTemplate.lit.ts +2 -1
  149. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
  150. package/src/generated/templates/FooterTemplate.lit.ts +15 -15
  151. package/src/generated/templates/InputGroupTemplate.lit.ts +12 -0
  152. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +15 -10
  153. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
  154. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +11 -10
  155. package/src/generated/templates/SearchTemplate.lit.ts +10 -9
  156. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +2 -1
  157. package/src/generated/themes/AccordionItem.css.ts +1 -1
  158. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  159. package/src/generated/themes/CountrySelector.css.ts +1 -1
  160. package/src/generated/themes/DatePicker.css.ts +1 -1
  161. package/src/generated/themes/Dropdown.css.ts +1 -1
  162. package/src/generated/themes/InputGroup.css.ts +13 -0
  163. package/src/generated/themes/MastheadItem.css.ts +1 -1
  164. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  165. package/src/generated/themes/MastheadShell.css.ts +1 -1
  166. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  167. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  168. package/src/generated/themes/Search.css.ts +1 -1
  169. package/src/generated/themes/SearchSuggestions.css.ts +1 -1
  170. package/src/generated/themes/Slider.css.ts +1 -1
  171. package/src/generated/themes/Tag.css.ts +1 -1
  172. package/src/generated/themes/TextField.css.ts +1 -1
  173. package/src/themes/AccordionItem.css +20 -15
  174. package/src/themes/Breadcrumbs.css +4 -2
  175. package/src/themes/CountrySelector.css +12 -1
  176. package/src/themes/DatePicker.css +1 -1
  177. package/src/themes/Dropdown.css +2 -2
  178. package/src/themes/InputGroup.css +19 -0
  179. package/src/themes/MastheadItem.css +2 -7
  180. package/src/themes/MastheadMenuItem.css +0 -4
  181. package/src/themes/MastheadShell.css +9 -10
  182. package/src/themes/PhoneNumberField.css +13 -3
  183. package/src/themes/Search.css +160 -17
  184. package/src/themes/SearchSuggestions.css +7 -1
  185. package/src/themes/Tag.css +6 -1
  186. package/src/themes/TextField.css +10 -1
  187. package/src/types/callback.ts +3 -0
  188. package/src/utils/debounce.ts +1 -1
  189. package/src/utils/retryUntilSuccessful.ts +23 -0
@@ -0,0 +1,136 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
6
+
7
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
8
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
10
+ import UDExCheckbox from "./Checkbox.js";
11
+ import UDExRadioButton from "./RadioButton.js";
12
+ import UDExStatusMessage from "./StatusMessage.js";
13
+ import InputGroupTemplate from "./generated/templates/InputGroupTemplate.lit.js";
14
+ import {
15
+ VALUE_STATE_ERROR,
16
+ VALUE_STATE_SUCCESS,
17
+ } from "./generated/i18n/i18n-defaults.js";
18
+
19
+ // Styles
20
+ import InputGroupCss from "./generated/themes/InputGroup.css.js";
21
+
22
+ export enum GroupValueState {
23
+ Standard = "Standard",
24
+ Error = "Error",
25
+ Success = "Success",
26
+ }
27
+
28
+ export enum Orientation {
29
+ Vertical = "Vertical",
30
+ Horizontal = "Horizontal",
31
+ }
32
+
33
+ /**
34
+ * @class
35
+ *
36
+ * <h3 class="comment-api-title">Overview</h3>
37
+ *
38
+ *
39
+ * <h3>Usage</h3>
40
+ *
41
+ * For the <code>udex-input-group</code>
42
+ * <h3>ES6 Module Import</h3>
43
+ *
44
+ * <code>import "@udex/web-components/dist/InputGroup.js";</code>
45
+ *
46
+ * @constructor
47
+ * @extends UI5Element
48
+ * @public
49
+ */
50
+
51
+ @customElement({
52
+ tag: "udex-input-group",
53
+ renderer: litRender,
54
+ styles: InputGroupCss,
55
+ template: InputGroupTemplate,
56
+ dependencies: [Icon, UDExStatusMessage],
57
+ })
58
+
59
+ class UDExInputGroup extends UI5Element {
60
+ /**
61
+ * Defines the group name of the component.
62
+ *
63
+ * @public
64
+ */
65
+ @property({ type: String })
66
+ groupName?: string;
67
+
68
+ /**
69
+ * Defines the orientation of the component.
70
+ *
71
+ * @default "Vertical"
72
+ * @public
73
+ */
74
+ @property({ type: Orientation, defaultValue: Orientation.Vertical })
75
+ orientation!: `${Orientation}`;
76
+
77
+ /**
78
+ * Defines the value state of the component.
79
+ *
80
+ * @default "Standard"
81
+ * @public
82
+ */
83
+ @property({ type: GroupValueState, defaultValue: GroupValueState.Standard })
84
+ valueState!: `${GroupValueState}`;
85
+
86
+ /**
87
+ * Defines supporting text under the Input Group.
88
+ *
89
+ * @default ""
90
+ * @public
91
+ */
92
+ @property({ type: String })
93
+ supportingText!: string;
94
+
95
+ /**
96
+ * Slot for input elements items.
97
+ *
98
+ * @slot
99
+ * @public
100
+ */
101
+ @slot({ type: HTMLElement, "default": true, individualSlots: true }) items!: Array<UDExCheckbox | UDExRadioButton>;
102
+
103
+ static i18nBundle: I18nBundle;
104
+
105
+ static async onDefine() {
106
+ UDExInputGroup.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
107
+ }
108
+
109
+ get _items() {
110
+ return this.items.map(el => {
111
+ if (this.groupName) { el.name = this.groupName; }
112
+ return {
113
+ item: el,
114
+ };
115
+ });
116
+ }
117
+
118
+ get valueStateTypeMappings(): Record<string, string> {
119
+ return {
120
+ "Success": UDExInputGroup.i18nBundle.getText(VALUE_STATE_SUCCESS),
121
+ "Error": UDExInputGroup.i18nBundle.getText(VALUE_STATE_ERROR),
122
+ };
123
+ }
124
+
125
+ get hasValueState(): boolean {
126
+ return this.valueState !== GroupValueState.Standard;
127
+ }
128
+
129
+ get valueStateText(): string | undefined {
130
+ return this.supportingText || this.valueStateTypeMappings[this.valueState];
131
+ }
132
+ }
133
+
134
+ UDExInputGroup.define();
135
+
136
+ export default UDExInputGroup;
@@ -1,8 +1,10 @@
1
1
  <nav class="udex-masthead-mobile-menu" @keydown="{{handleKeyDown}}">
2
2
  <div class="udex-masthead-mobile-menu__nav-holder">
3
- <div class="udex-masthead-mobile-menu__list-search">
4
- <slot name="search"></slot>
5
- </div>
3
+ {{#if hasSearchSlot}}
4
+ <div class="udex-masthead-mobile-menu__list-search">
5
+ <slot name="search"></slot>
6
+ </div>
7
+ {{/if}}
6
8
  <ul class="udex-masthead-mobile-menu__list" role="menu">
7
9
  {{#if showNavigation}}
8
10
  {{>nav-items}}
@@ -33,15 +35,6 @@
33
35
  back-to-categories>
34
36
  </udex-masthead-menu-item>
35
37
  </li>
36
- {{#if _category.url}}
37
- <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
38
- <udex-masthead-menu-item
39
- url="{{this._category.url}}"
40
- label="{{categoryLinkText}}"
41
- has-border>
42
- </udex-masthead-menu-item>
43
- </li>
44
- {{/if}}
45
38
  {{>category-items}}
46
39
  {{/if}}
47
40
  </ul>
@@ -64,13 +57,7 @@
64
57
  {{#*inline "nav-items"}}
65
58
  {{#each items}}
66
59
  <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
67
- {{#if this.href}}
68
- <udex-masthead-menu-item
69
- url="{{this.href}}"
70
- label="{{this.innerText}}"
71
- has-border>
72
- </udex-masthead-menu-item>
73
- {{else}}
60
+ {{#if this.subItems}}
74
61
  <udex-masthead-menu-item
75
62
  @click="{{../handleMenuItemClick}}"
76
63
  label="{{this.innerText}}"
@@ -80,29 +67,65 @@
80
67
  icon-end
81
68
  first-level>
82
69
  </udex-masthead-menu-item>
70
+ {{else}}
71
+ <udex-masthead-menu-item
72
+ url="{{this.href}}"
73
+ label="{{this.innerText}}"
74
+ has-border>
75
+ </udex-masthead-menu-item>
83
76
  {{/if}}
84
77
  </li>
85
78
  {{/each}}
86
79
  {{/inline}}
87
80
 
88
81
  {{#*inline "categories"}}
89
- {{#each _categories}}
82
+ {{#if _clickedItem.href}}
90
83
  <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
91
84
  <udex-masthead-menu-item
92
- @click="{{../handleMenuCategoryClick}}"
93
- url="{{this.url}}"
94
- id="{{@index}}"
95
- label="{{this.category}}"
96
- type="Button"
97
- second-level
98
- has-border
99
- icon-end>
85
+ url="{{_clickedItem.href}}"
86
+ label="{{overviewLinkText}}"
87
+ has-border>
100
88
  </udex-masthead-menu-item>
101
89
  </li>
90
+ {{/if}}
91
+ {{#each _categories}}
92
+ {{#if this.category}}
93
+ <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
94
+ <udex-masthead-menu-item
95
+ @click="{{../handleMenuCategoryClick}}"
96
+ url="{{this.url}}"
97
+ id="{{@index}}"
98
+ label="{{this.category}}"
99
+ type="Button"
100
+ second-level
101
+ has-border
102
+ icon-end>
103
+ </udex-masthead-menu-item>
104
+ </li>
105
+ {{else}}
106
+ {{#each this.items}}
107
+ <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
108
+ <udex-masthead-menu-item
109
+ url="{{this.url}}"
110
+ label="{{this.title}}"
111
+ has-border>
112
+ </udex-masthead-menu-item>
113
+ </li>
114
+ {{/each}}
115
+ {{/if}}
102
116
  {{/each}}
103
117
  {{/inline}}
104
118
 
105
119
  {{#*inline "category-items"}}
120
+ {{#if _category.url}}
121
+ <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
122
+ <udex-masthead-menu-item
123
+ url="{{this._category.url}}"
124
+ label="{{overviewLinkText}}"
125
+ has-border>
126
+ </udex-masthead-menu-item>
127
+ </li>
128
+ {{/if}}
106
129
  {{#each _category.items}}
107
130
  <li class="udex-masthead-mobile-menu__list-item" role="menuitem">
108
131
  <udex-masthead-menu-item
@@ -230,13 +230,13 @@ class UDExMastheadMobileMenu extends UI5Element {
230
230
  const item = this.getItemByList(e.target as UDExMastheadItem);
231
231
  this._clickedItem = item;
232
232
  this._categories = this.getCategories(item.getSubItems());
233
+ this.setCategoryByItem(item);
233
234
  this._showCategories = true;
234
235
  }
235
236
 
236
237
  openCategoryItems(e: Event) {
237
238
  const item = e.target as UDExMastheadMenuItem;
238
- const index = Number(item.getAttribute("id"));
239
- this._category = this._categories[index];
239
+ this.setCategoryByItem(item);
240
240
  this._showCategories = false;
241
241
  this._showCategoryItems = true;
242
242
  }
@@ -252,6 +252,11 @@ class UDExMastheadMobileMenu extends UI5Element {
252
252
  this._showCategoryItems = false;
253
253
  }
254
254
 
255
+ setCategoryByItem(item: UDExMastheadMenuItem | UDExMastheadItem) {
256
+ const index = Number(item.getAttribute("id"));
257
+ this._category = this._categories[index];
258
+ }
259
+
255
260
  getItemByList(el: UDExMastheadItem): UDExMastheadItem {
256
261
  const items = [
257
262
  ...this.items,
@@ -291,7 +296,7 @@ class UDExMastheadMobileMenu extends UI5Element {
291
296
  return !this._showCategories && !this._showCategoryItems;
292
297
  }
293
298
 
294
- get categoryLinkText(): string {
299
+ get overviewLinkText(): string {
295
300
  return UDExMastheadMobileMenu.i18nBundle.getText(OVERVIEW);
296
301
  }
297
302
 
@@ -306,6 +311,10 @@ class UDExMastheadMobileMenu extends UI5Element {
306
311
  get hasExploreBtnSlot(): boolean {
307
312
  return !!this.getSlottedNodes("exploreSapMobileButton").length;
308
313
  }
314
+
315
+ get hasSearchSlot(): boolean {
316
+ return !!this.search.length;
317
+ }
309
318
  }
310
319
 
311
320
  UDExMastheadMobileMenu.define();
@@ -24,7 +24,7 @@
24
24
  {{#if logoutLink}}
25
25
  <div class="udex-masthead-profile-menu__actions" @click={{userLogout}}>
26
26
  <udex-masthead-menu-item
27
- url="#"
27
+ url="{{logoutUrl}}"
28
28
  label="{{logoutText}}">
29
29
  </udex-masthead-menu-item>
30
30
  </div>
@@ -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?.match(/[\d+-]/g)
336
+ const isKeyAllowed = e.key.match(/\d/)
313
337
  || this.allowedKeys.includes(e.key)
314
338
  || e.metaKey
315
- || e.ctrlKey
316
- || (e.key === " " && this.previousKey !== " ");
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