@sapudex/web-components 0.138.0 → 0.147.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.
Files changed (229) hide show
  1. package/dist/Accordion.js +1 -1
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Avatar.js +1 -1
  4. package/dist/Avatar.js.map +1 -1
  5. package/dist/Breadcrumbs.js +1 -1
  6. package/dist/Breadcrumbs.js.map +1 -1
  7. package/dist/Carousel.js +1 -1
  8. package/dist/Carousel.js.map +1 -1
  9. package/dist/CountrySelector.d.ts +7 -1
  10. package/dist/CountrySelector.js +34 -9
  11. package/dist/CountrySelector.js.map +1 -1
  12. package/dist/DatePicker.js +1 -1
  13. package/dist/DatePicker.js.map +1 -1
  14. package/dist/Dropdown.d.ts +1 -0
  15. package/dist/Dropdown.js +13 -1
  16. package/dist/Dropdown.js.map +1 -1
  17. package/dist/FilterMenu.d.ts +2 -1
  18. package/dist/FilterMenu.js +13 -5
  19. package/dist/FilterMenu.js.map +1 -1
  20. package/dist/Footer.js +1 -1
  21. package/dist/Footer.js.map +1 -1
  22. package/dist/InputGroup.js +1 -1
  23. package/dist/InputGroup.js.map +1 -1
  24. package/dist/List.js +1 -1
  25. package/dist/List.js.map +1 -1
  26. package/dist/ListItem.js +1 -1
  27. package/dist/ListItem.js.map +1 -1
  28. package/dist/ListItemBase.d.ts +2 -2
  29. package/dist/ListItemBase.js.map +1 -1
  30. package/dist/ListSelectAll.js +1 -1
  31. package/dist/ListSelectAll.js.map +1 -1
  32. package/dist/MastheadItem.js +3 -8
  33. package/dist/MastheadItem.js.map +1 -1
  34. package/dist/MastheadMobileMenu.js +1 -1
  35. package/dist/MastheadMobileMenu.js.map +1 -1
  36. package/dist/MastheadProfileMenu.js +1 -1
  37. package/dist/MastheadProfileMenu.js.map +1 -1
  38. package/dist/MastheadShell.d.ts +22 -6
  39. package/dist/MastheadShell.js +39 -25
  40. package/dist/MastheadShell.js.map +1 -1
  41. package/dist/MessageStrip.js +1 -1
  42. package/dist/MessageStrip.js.map +1 -1
  43. package/dist/Pagination.js +1 -1
  44. package/dist/Pagination.js.map +1 -1
  45. package/dist/PasswordField.js +1 -1
  46. package/dist/PasswordField.js.map +1 -1
  47. package/dist/PhoneNumberField.js +1 -1
  48. package/dist/PhoneNumberField.js.map +1 -1
  49. package/dist/RatingBar.js +1 -1
  50. package/dist/RatingBar.js.map +1 -1
  51. package/dist/Review.js +1 -1
  52. package/dist/Review.js.map +1 -1
  53. package/dist/ReviewItem.js +1 -1
  54. package/dist/ReviewItem.js.map +1 -1
  55. package/dist/Search.js +2 -2
  56. package/dist/Search.js.map +1 -1
  57. package/dist/SearchableListBase.d.ts +5 -0
  58. package/dist/SearchableListBase.js +11 -4
  59. package/dist/SearchableListBase.js.map +1 -1
  60. package/dist/SecondaryNavigation.d.ts +1 -0
  61. package/dist/SecondaryNavigation.js +8 -2
  62. package/dist/SecondaryNavigation.js.map +1 -1
  63. package/dist/SecondaryNavigationItem.d.ts +8 -0
  64. package/dist/SecondaryNavigationItem.js +19 -0
  65. package/dist/SecondaryNavigationItem.js.map +1 -1
  66. package/dist/SecondaryNavigationSubItem.js +1 -1
  67. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  68. package/dist/SelectBox.d.ts +6 -9
  69. package/dist/SelectBox.js +51 -56
  70. package/dist/SelectBox.js.map +1 -1
  71. package/dist/StatusBadge.js +1 -1
  72. package/dist/StatusBadge.js.map +1 -1
  73. package/dist/StepInput.js +1 -1
  74. package/dist/StepInput.js.map +1 -1
  75. package/dist/Tab.js +1 -1
  76. package/dist/Tab.js.map +1 -1
  77. package/dist/TabNavigation.js +1 -1
  78. package/dist/TabNavigation.js.map +1 -1
  79. package/dist/Table.js +1 -1
  80. package/dist/Table.js.map +1 -1
  81. package/dist/TextArea.js +1 -1
  82. package/dist/TextArea.js.map +1 -1
  83. package/dist/TextField.js +1 -2
  84. package/dist/TextField.js.map +1 -1
  85. package/dist/TruncatedText.js +1 -1
  86. package/dist/TruncatedText.js.map +1 -1
  87. package/dist/assets/{bundle.esm-bb1c7413.js → bundle.esm-6e8e301d.js} +186 -188
  88. package/dist/assets/{parameters-bundle.css-c897ae23.js → parameters-bundle.css-07457fce.js} +2 -2
  89. package/dist/css/themes/Button.css +1 -1
  90. package/dist/css/themes/CountrySelector.css +1 -1
  91. package/dist/css/themes/Dropdown.css +1 -1
  92. package/dist/css/themes/FilterMenu.css +1 -1
  93. package/dist/css/themes/MastheadItem.css +1 -1
  94. package/dist/css/themes/MastheadShell.css +1 -1
  95. package/dist/css/themes/PhoneNumberField.css +1 -1
  96. package/dist/css/themes/RatingIndicator.css +1 -1
  97. package/dist/css/themes/Search.css +1 -1
  98. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  99. package/dist/css/themes/SelectBox.css +1 -1
  100. package/dist/css/themes/Slider.css +1 -1
  101. package/dist/css/themes/Tag.css +1 -1
  102. package/dist/css/themes/TagGroup.css +1 -1
  103. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
  104. package/dist/custom-elements-internal.json +56 -0
  105. package/dist/custom-elements.json +55 -0
  106. package/dist/data/CountryListISO3166.js +1 -1
  107. package/dist/data/CountryListISO3166.js.map +1 -1
  108. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
  109. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
  110. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  111. package/dist/generated/templates/MastheadShellTemplate.lit.js +10 -8
  112. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  113. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +2 -2
  114. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  115. package/dist/generated/templates/SelectBoxTemplate.lit.js +3 -5
  116. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  117. package/dist/generated/templates/TagGroupTemplate.lit.js +2 -2
  118. package/dist/generated/templates/TagGroupTemplate.lit.js.map +1 -1
  119. package/dist/generated/themes/Button.css.js +1 -1
  120. package/dist/generated/themes/Button.css.js.map +1 -1
  121. package/dist/generated/themes/CountrySelector.css.js +1 -1
  122. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  123. package/dist/generated/themes/Dropdown.css.js +1 -1
  124. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  125. package/dist/generated/themes/FilterMenu.css.js +1 -1
  126. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  127. package/dist/generated/themes/MastheadItem.css.js +1 -1
  128. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  129. package/dist/generated/themes/MastheadShell.css.js +1 -1
  130. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  131. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  132. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  133. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  134. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  135. package/dist/generated/themes/Search.css.js +1 -1
  136. package/dist/generated/themes/Search.css.js.map +1 -1
  137. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  138. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  139. package/dist/generated/themes/SelectBox.css.js +1 -1
  140. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  141. package/dist/generated/themes/Slider.css.js +1 -1
  142. package/dist/generated/themes/Slider.css.js.map +1 -1
  143. package/dist/generated/themes/Tag.css.js +1 -1
  144. package/dist/generated/themes/Tag.css.js.map +1 -1
  145. package/dist/generated/themes/TagGroup.css.js +1 -1
  146. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  147. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
  148. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
  149. package/dist/vscode.html-custom-data.json +9 -4
  150. package/dist/web-types.json +14 -4
  151. package/package.json +1 -1
  152. package/src/Accordion.ts +1 -1
  153. package/src/Avatar.ts +1 -1
  154. package/src/Breadcrumbs.ts +1 -1
  155. package/src/Carousel.ts +1 -1
  156. package/src/CountrySelector.hbs +2 -1
  157. package/src/CountrySelector.ts +45 -12
  158. package/src/DatePicker.ts +1 -1
  159. package/src/Dropdown.ts +9 -1
  160. package/src/FilterMenu.ts +12 -7
  161. package/src/Footer.ts +1 -1
  162. package/src/InputGroup.ts +1 -1
  163. package/src/List.ts +1 -1
  164. package/src/ListItem.ts +1 -1
  165. package/src/ListItemBase.ts +1 -1
  166. package/src/ListSelectAll.ts +1 -1
  167. package/src/MastheadItem.ts +5 -10
  168. package/src/MastheadMobileMenu.ts +1 -1
  169. package/src/MastheadProfileMenu.ts +1 -1
  170. package/src/MastheadShell.hbs +26 -19
  171. package/src/MastheadShell.ts +57 -29
  172. package/src/MessageStrip.ts +1 -3
  173. package/src/Pagination.ts +1 -1
  174. package/src/PasswordField.ts +1 -1
  175. package/src/PhoneNumberField.ts +1 -1
  176. package/src/RatingBar.ts +1 -1
  177. package/src/Review.ts +1 -1
  178. package/src/ReviewItem.ts +1 -1
  179. package/src/Search.ts +2 -2
  180. package/src/SearchableListBase.ts +15 -7
  181. package/src/SecondaryNavigation.hbs +2 -0
  182. package/src/SecondaryNavigation.ts +9 -2
  183. package/src/SecondaryNavigationItem.ts +29 -0
  184. package/src/SecondaryNavigationSubItem.ts +1 -1
  185. package/src/SelectBox.hbs +11 -24
  186. package/src/SelectBox.ts +51 -60
  187. package/src/StatusBadge.ts +1 -1
  188. package/src/StepInput.ts +1 -1
  189. package/src/Tab.ts +1 -1
  190. package/src/TabNavigation.ts +1 -1
  191. package/src/Table.ts +1 -1
  192. package/src/TagGroup.hbs +1 -1
  193. package/src/TextArea.ts +1 -1
  194. package/src/TextField.ts +1 -2
  195. package/src/TruncatedText.ts +1 -1
  196. package/src/data/CountryListISO3166.ts +1 -1
  197. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
  198. package/src/generated/templates/MastheadShellTemplate.lit.ts +10 -8
  199. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +2 -2
  200. package/src/generated/templates/SelectBoxTemplate.lit.ts +3 -5
  201. package/src/generated/templates/TagGroupTemplate.lit.ts +2 -2
  202. package/src/generated/themes/Button.css.ts +1 -1
  203. package/src/generated/themes/CountrySelector.css.ts +1 -1
  204. package/src/generated/themes/Dropdown.css.ts +1 -1
  205. package/src/generated/themes/FilterMenu.css.ts +1 -1
  206. package/src/generated/themes/MastheadItem.css.ts +1 -1
  207. package/src/generated/themes/MastheadShell.css.ts +1 -1
  208. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  209. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  210. package/src/generated/themes/Search.css.ts +1 -1
  211. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  212. package/src/generated/themes/SelectBox.css.ts +1 -1
  213. package/src/generated/themes/Slider.css.ts +1 -1
  214. package/src/generated/themes/Tag.css.ts +1 -1
  215. package/src/generated/themes/TagGroup.css.ts +1 -1
  216. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
  217. package/src/themes/Button.css +10 -0
  218. package/src/themes/CountrySelector.css +13 -11
  219. package/src/themes/Dropdown.css +10 -0
  220. package/src/themes/FilterMenu.css +15 -2
  221. package/src/themes/MastheadItem.css +6 -2
  222. package/src/themes/MastheadShell.css +88 -9
  223. package/src/themes/PhoneNumberField.css +22 -20
  224. package/src/themes/Search.css +4 -0
  225. package/src/themes/SecondaryNavigationItem.css +8 -1
  226. package/src/themes/SelectBox.css +12 -88
  227. package/src/themes/Tag.css +8 -3
  228. package/src/themes/TagGroup.css +8 -0
  229. package/src/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -5
package/src/Review.ts CHANGED
@@ -94,7 +94,7 @@ class UDExReview extends UI5Element {
94
94
  _maxRatingBars: number = 5;
95
95
 
96
96
  static async onDefine() {
97
- UDExReview.i18nBundle = await getI18nBundle("@ui5/webcomponents");
97
+ UDExReview.i18nBundle = await getI18nBundle("@udex/web-components");
98
98
  }
99
99
 
100
100
  get reviewsText(): string {
package/src/ReviewItem.ts CHANGED
@@ -146,7 +146,7 @@ class UDExReviewItem extends UI5Element {
146
146
  static i18nBundle: I18nBundle;
147
147
 
148
148
  static async onDefine() {
149
- UDExReviewItem.i18nBundle = await getI18nBundle("@ui5/webcomponents");
149
+ UDExReviewItem.i18nBundle = await getI18nBundle("@udex/web-components");
150
150
  }
151
151
 
152
152
  constructor() {
package/src/Search.ts CHANGED
@@ -504,7 +504,7 @@ class UDExSearch extends UI5Element {
504
504
  }
505
505
 
506
506
  static async onDefine(): Promise<void> {
507
- UDExSearch.i18nBundle = await getI18nBundle("udex-search");
507
+ UDExSearch.i18nBundle = await getI18nBundle("@udex/web-components");
508
508
  }
509
509
 
510
510
  onEnterDOM(): void {
@@ -587,7 +587,7 @@ class UDExSearch extends UI5Element {
587
587
  }
588
588
 
589
589
  setSuggestedRecommendedLists(value: string): void {
590
- if (this.showSuggestedPopover) {
590
+ if (this.showSuggestedPopover && value) {
591
591
  const parsedData: SuggestionRecommendLists = JSON.parse(value);
592
592
  const hasDataLabels = this.hasDataLabel(parsedData);
593
593
 
@@ -241,9 +241,7 @@ class UDExSearchableListBase extends UI5Element {
241
241
  }
242
242
 
243
243
  onResetSearch() {
244
- const search = this.getSearch();
245
- search.value = "";
246
- this._filteredItems = this.filterItems(this.getProcessedItems(), "");
244
+ this.resetSearch();
247
245
  this.fireEvent("reset-search");
248
246
  }
249
247
 
@@ -253,6 +251,16 @@ class UDExSearchableListBase extends UI5Element {
253
251
  });
254
252
  }
255
253
 
254
+ /**
255
+ * Reset the search value.
256
+ * @public
257
+ */
258
+ resetSearch() {
259
+ const search = this.getSearch();
260
+ search.value = "";
261
+ this._filteredItems = this.filterItems(this.getProcessedItems(), "");
262
+ }
263
+
256
264
  filterItems(items: Array<ProcessedItem>, str: string): Array<ProcessedItem> {
257
265
  return items.filter(preparedItem => {
258
266
  const { isGroup, item } = preparedItem;
@@ -285,7 +293,7 @@ class UDExSearchableListBase extends UI5Element {
285
293
  return text.replace(new RegExp(`(${str})`, "i"), "<b>$&</b>");
286
294
  }
287
295
 
288
- isIncludes(string: string, value: string):boolean {
296
+ isIncludes(string: string, value: string): boolean {
289
297
  return string.toLowerCase().includes(value.toLowerCase());
290
298
  }
291
299
 
@@ -407,11 +415,11 @@ class UDExSearchableListBase extends UI5Element {
407
415
  return this.mode === ListMode.MultiSelect && isGrouping;
408
416
  }
409
417
 
410
- get additionalClassName() {
418
+ get additionalClassName(): string {
411
419
  return `udex-searchable-list__header`;
412
420
  }
413
421
 
414
- get groupClassName() {
422
+ get groupClassName(): string {
415
423
  const classHeader = `udex-searchable-list__header`;
416
424
  return this.showSearch ? `${classHeader} udex-searchable-list__header_no-margin` : classHeader;
417
425
  }
@@ -422,7 +430,7 @@ class UDExSearchableListBase extends UI5Element {
422
430
  }
423
431
 
424
432
  static async onDefine(): Promise<void> {
425
- UDExSearchableListBase.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
433
+ UDExSearchableListBase.i18nBundle = await getI18nBundle("@udex/web-components");
426
434
  }
427
435
  }
428
436
 
@@ -31,6 +31,7 @@
31
31
  mobile-link-title="{{this.mobileLinkTitle}}"
32
32
  target="{{this.target}}"
33
33
  .subItems="{{this.items}}"
34
+ _nav-items-length="{{../visibleItems.length}}"
34
35
  @ui5-sub-item-click="{{../handleSubItemClick}}"
35
36
  @ui5-nav-item-click="{{../handleItemClick}}">
36
37
  </udex-secondary-navigation-item>
@@ -41,6 +42,7 @@
41
42
  role="none"
42
43
  class="udex-secondary-navigation__list-item">
43
44
  <udex-secondary-navigation-item
45
+ _nav-items-length="{{visibleItems.length}}"
44
46
  index="{{visibleItems.length}}"
45
47
  @ui5-sub-item-click="{{../handleSubItemClick}}"
46
48
  @ui5-nav-item-click="{{../handleItemClick}}"
@@ -156,13 +156,13 @@ class UDExSecondaryNavigation extends UI5Element {
156
156
  static i18nBundle: any;
157
157
 
158
158
  static async onDefine(): Promise<void> {
159
- UDExSecondaryNavigation.i18nBundle = await getI18nBundle("udex-secondary-navigation");
159
+ UDExSecondaryNavigation.i18nBundle = await getI18nBundle("@udex/web-components");
160
160
  }
161
161
 
162
162
  constructor() {
163
163
  super();
164
164
  this._showMoreButton = true;
165
- this._boundReflowItems = this.reflowItems.bind(this);
165
+ this._boundReflowItems = this._handleResize.bind(this);
166
166
  }
167
167
 
168
168
  onEnterDOM(): void {
@@ -177,6 +177,13 @@ class UDExSecondaryNavigation extends UI5Element {
177
177
  ResizeHandler.deregister(this, this._boundReflowItems);
178
178
  }
179
179
 
180
+ _handleResize() {
181
+ this.reflowItems();
182
+ if (this._clickedNavItem && this.isDesktopScreen) {
183
+ this._clickedNavItem.closeDropdown();
184
+ }
185
+ }
186
+
180
187
  onInvalidation(changeInfo: ChangeInfo): void {
181
188
  if (changeInfo.name === "navItems") {
182
189
  this.reflowItems();
@@ -123,6 +123,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
123
123
  @property({ type: Boolean })
124
124
  isOpen!: boolean;
125
125
 
126
+ /**
127
+ * Defines the length of items in the secondary navigation.
128
+ *
129
+ * @private
130
+ */
131
+ @property({ validator: Integer })
132
+ _navItemsLength!: number;
133
+
126
134
  /**
127
135
  * Defines processed items.
128
136
  *
@@ -137,6 +145,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
137
145
  _subTitle!: string | undefined;
138
146
 
139
147
  onAfterRendering(): void {
148
+ if (this.isLastItem && this.isOpen && !this._isMobileView) {
149
+ this.setDropdownHorizontalAlign();
150
+ }
151
+
140
152
  if (this._shouldFocusFirstSubItem && this.isOpen) {
141
153
  this.onFirstSubItemFocus();
142
154
  this._shouldFocusFirstSubItem = false;
@@ -306,6 +318,19 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
306
318
  this._processedItems = this.subItems;
307
319
  }
308
320
 
321
+ setDropdownHorizontalAlign(): void {
322
+ const dropdown = this.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown");
323
+ const { right, left } = dropdown!.getBoundingClientRect();
324
+
325
+ if (right > window.innerWidth) {
326
+ dropdown?.setAttribute("data-horizontal-align", "right");
327
+ }
328
+
329
+ if (left < 0) {
330
+ dropdown?.setAttribute("data-horizontal-align", "left");
331
+ }
332
+ }
333
+
309
334
  onFirstSubItemFocus(): void {
310
335
  this.domNavItems[0].focus();
311
336
  }
@@ -318,6 +343,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
318
343
  this._shouldFocusFirstSubItem = true;
319
344
  }
320
345
 
346
+ get isLastItem(): boolean {
347
+ return this._navItemsLength === this.index;
348
+ }
349
+
321
350
  get domNavItems(): Array<UDExSecondaryNavigationSubItem> {
322
351
  const domNavItems = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationSubItem>("udex-secondary-navigation-sub-item");
323
352
  return domNavItems ? Array.from(domNavItems) : [];
@@ -91,7 +91,7 @@ class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
91
91
  static i18nBundle: any;
92
92
 
93
93
  static async onDefine(): Promise<void> {
94
- UDExSecondaryNavigationSubItem.i18nBundle = await getI18nBundle("udex-secondary-navigation-sub-item");
94
+ UDExSecondaryNavigationSubItem.i18nBundle = await getI18nBundle("@udex/web-components");
95
95
  }
96
96
 
97
97
  onItemClick(): void {
package/src/SelectBox.hbs CHANGED
@@ -4,7 +4,7 @@
4
4
  <div
5
5
  @click="{{getHandleSingleSelectOpen}}"
6
6
  class="udex-text-field__input"
7
- @ui5-iconClick="{{handleRemoveTag}}"
7
+ @ui5-tag-icon-click="{{handleRemoveTag}}"
8
8
  @keydown="{{handleKeyDownTrigger}}"
9
9
  ?open="{{_open}}"
10
10
  tabindex="{{effectiveTabIndex}}"
@@ -38,31 +38,26 @@
38
38
  </div>
39
39
  {{/if}}
40
40
  {{#if showMultiSelectedOptions}}
41
- <ui5-tokenizer
42
- part="tokenizer"
43
- show-more
44
- @ui5-selectionChange="{{handleTagPress}}"
45
- @keydown="{{handleKeydownTokenizer}}"
46
- prevent-popover-open
47
- class="{{tokenizerClass}}"
41
+ <udex-tag-group
42
+ class="udex-tag-group"
43
+ ?displayonly="{{displayonly}}"
44
+ ?readonly="{{readonly}}"
48
45
  ?disabled="{{disabled}}"
49
- @ui5-show-more-items-press="{{getHandlerShowMoreItems}}"
46
+ tooltip-placement="{{tooltipPlacement}}"
47
+ @ui5-tag-click="{{handleTagPress}}"
48
+ @ui5-show-more-tags="{{getHandlerShowMoreItems}}"
49
+ @ui5-tag-keydown="{{handleKeyDownTag}}"
50
50
  ?expanded="{{tokenizerExpanded}}">
51
51
  {{#each selectedItems}}
52
52
  {{#unless this.isGroup}}
53
53
  <udex-tag
54
- accessible-role="option"
55
- class="udex-text-field__token"
56
- @keydown="{{../handleKeyDownTag}}"
57
- ?read-only="{{../isReadOrDisplayOnly}}"
58
- data-id="{{this._id}}"
59
- part="token-{{@index}}"
60
54
  text="{{this.label}}"
55
+ id="{{this._id}}"
61
56
  icon="decline">
62
57
  </udex-tag>
63
58
  {{/unless}}
64
59
  {{/each}}
65
- </ui5-tokenizer>
60
+ </udex-tag-group>
66
61
  {{/if}}
67
62
  {{#if showTrigger}}
68
63
  <udex-control-button
@@ -120,12 +115,4 @@
120
115
  {{searchableList}}
121
116
  {{/if}}
122
117
  </ui5-popover>
123
- {{#if displayonly}}
124
- <udex-tooltip
125
- placement="{{tooltipPlacement}}">
126
- {{#each overflowsTags}}
127
- <ul class="udex-select-box__overflow-tags"><li>{{this.text}}</li></ul>
128
- {{/each}}
129
- </udex-tooltip>
130
- {{/if}}
131
118
  </div>
package/src/SelectBox.ts CHANGED
@@ -32,7 +32,7 @@ import UDExSelectBoxGroupHeader from "./SelectBoxGroupHeader.js";
32
32
  import UDExSearchableListBase from "./SearchableListBase.js";
33
33
  import UDExSearch from "./Search.js";
34
34
  import UDExTag from "./Tag.js";
35
- import UDExTooltip, { PlacementType } from "./Tooltip.js";
35
+ import { PlacementType } from "./Tooltip.js";
36
36
  import UDExButton from "./Button.js";
37
37
  import ValueState from "./types/common.js";
38
38
 
@@ -46,6 +46,7 @@ import TextFieldCss from "./generated/themes/TextField.css.js";
46
46
  import SearchableListCss from "./generated/themes/SearchableList.css.js";
47
47
  import UDExStatusMessage from "./StatusMessage.js";
48
48
  import UDExControlButton from "./ControlButton.js";
49
+ import UDExTagGroup from "./TagGroup.js";
49
50
 
50
51
  /**
51
52
  * @class
@@ -77,7 +78,6 @@ import UDExControlButton from "./ControlButton.js";
77
78
  UDExListSelectAll,
78
79
  UDExSelectBoxItem,
79
80
  UDExList,
80
- UDExTooltip,
81
81
  UDExSearch,
82
82
  UDExButton,
83
83
  Tokenizer,
@@ -87,6 +87,7 @@ import UDExControlButton from "./ControlButton.js";
87
87
  UDExStatusMessage,
88
88
  UDExControlButton,
89
89
  ResponsivePopover,
90
+ UDExTagGroup,
90
91
  ],
91
92
  })
92
93
 
@@ -273,13 +274,16 @@ class UDExSelectBox extends UDExSearchableListBase {
273
274
  }
274
275
 
275
276
  onAfterRendering() {
276
- this._tokenizer = this.getTokenizer();
277
+ this._tokenizer = this.getTagGroup()?._tokenizer;
277
278
  this._popover = this.getPopover();
278
279
  this._search = this.getSearch();
279
280
  this._trigger = this.getTrigger();
280
281
  this._tags = this.getTags();
281
282
  this.handleDirection();
282
283
  if (this._tokenizer?.tokens.length > 0) {
284
+ if (!this.displayonly) {
285
+ this._tokenizer.shadowRoot!.querySelector(".ui5-tokenizer-more-text")?.setAttribute("tabindex", "-1");
286
+ }
283
287
  this.handleOutsideClick();
284
288
  this.resetTagsTabIndexes();
285
289
  }
@@ -333,7 +337,7 @@ class UDExSelectBox extends UDExSearchableListBase {
333
337
  }
334
338
 
335
339
  handleFocusIn() {
336
- if (this.disabled) {
340
+ if (this.isDisabled) {
337
341
  return;
338
342
  }
339
343
  this._focused = true;
@@ -364,17 +368,10 @@ class UDExSelectBox extends UDExSearchableListBase {
364
368
  this._showTagsDropdownContent = false;
365
369
  this.openDropdown();
366
370
  this.handleUnselectTruncatableTag();
367
- this.fireEvent("show-more");
368
371
  }
369
372
 
370
- showMoreReadOnlyItems() {
371
- const tooltip = this.shadowRoot!.querySelector<UDExTooltip>("udex-tooltip")!;
372
- const moreBtn = this._tokenizer.shadowRoot!.querySelector<HTMLElement>(".ui5-tokenizer-more-text")!;
373
- tooltip.onOpen(moreBtn);
374
- }
375
-
376
- handleRemoveTag(e: Event) {
377
- const tag = e.target as UI5Element;
373
+ handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {
374
+ tag = tag ?? (e?.detail.tag as UI5Element);
378
375
  const tagId: string = tag.getAttribute("data-id")!;
379
376
  this.handleDropdownItemPress(tagId);
380
377
  this.fireEventRemove(tagId);
@@ -388,7 +385,7 @@ class UDExSelectBox extends UDExSearchableListBase {
388
385
  }
389
386
 
390
387
  handleTagPress(e: CustomEvent) {
391
- const tag = e.target as UDExTag;
388
+ const tag = e.detail.tag as UDExTag;
392
389
  tag.selected = false;
393
390
  this.toggleTruncatedPopover(tag);
394
391
  }
@@ -399,60 +396,57 @@ class UDExSelectBox extends UDExSearchableListBase {
399
396
  }
400
397
  }
401
398
 
402
- handleKeydownTokenizer(e: KeyboardEvent) {
403
- e.stopPropagation();
399
+ handleKeyDownTrigger(e: KeyboardEvent) {
400
+ if (!this.isDisabled && (isSpace(e) || isEnter(e))) {
401
+ e.preventDefault();
402
+ e.stopPropagation();
403
+ this._showTagsDropdownContent = false;
404
+ this._openedByTrigger = true;
405
+ this.openDropdown();
406
+ }
407
+ }
408
+
409
+ handleKeyDownTag(e: CustomEvent) {
410
+ if (this.isDisabled) { return; }
411
+ const originalEvent: KeyboardEvent = e.detail.originalEvent;
412
+ const tag = originalEvent.target as UDExTag;
404
413
  this.getTagContent(this._tags[0]).tabIndex = this._inactiveTabIndex;
405
414
 
406
- const target = e.target as Token;
407
- const activeIndex = this._tokenizer.tokens?.indexOf(target);
415
+ const activeIndex = this._tokenizer.tokens?.indexOf(originalEvent.target as Token);
408
416
  const tagsCount = this._tokenizer._tokensCount;
409
- const shouldNavigateTags = (isLeft(e) || isRight(e) || isBackSpace(e) || isDelete(e)) && tagsCount > 0;
410
- this._tokenizer.expanded = shouldNavigateTags;
417
+ this._tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && tagsCount > 0;
411
418
 
412
- if (isLeft(e) && activeIndex !== 0) {
419
+ if (isLeft(originalEvent) && activeIndex !== 0) {
413
420
  this.focusTag(activeIndex - 1);
414
421
  this.scrollToTag(activeIndex - 1);
415
422
  }
416
423
 
417
- if (isRight(e) && tagsCount !== activeIndex + 1) {
424
+ if (isRight(originalEvent) && tagsCount !== activeIndex + 1) {
418
425
  this.focusTag(activeIndex + 1);
419
426
  this.scrollToTag(activeIndex + 1);
420
427
  }
421
428
 
422
- if ((isDown(e) || isUp(e))) {
429
+ if ((isDown(originalEvent) || isUp(originalEvent))) {
423
430
  this._openedByTrigger = false;
424
431
  this.openDropdown();
425
432
  }
426
- }
427
-
428
- handleKeyDownTrigger(e: KeyboardEvent) {
429
- if (isSpace(e) || isEnter(e)) {
430
- e.preventDefault();
431
- e.stopPropagation();
432
- this._showTagsDropdownContent = false;
433
- this._openedByTrigger = true;
434
- this.openDropdown();
435
- }
436
- }
437
433
 
438
- handleKeyDownTag(e: KeyboardEvent) {
439
- const tag = e.target as UDExTag;
440
- if (isSpace(e) || isShift(e) || isEnter(e)) {
441
- e.preventDefault();
442
- e.stopPropagation();
434
+ if (isSpace(originalEvent) || isShift(originalEvent) || isEnter(originalEvent)) {
435
+ originalEvent.preventDefault();
436
+ originalEvent.stopPropagation();
443
437
  }
444
438
 
445
- if (tag.isTruncatable && this.validTruncatableKey(e)) {
439
+ if (tag.isTruncatable && this.validTruncatableKey(originalEvent)) {
446
440
  this.toggleTruncatedPopover(tag);
447
441
  } else {
448
442
  this._showTagsDropdownContent = false;
449
443
  }
450
444
 
451
- if (isDelete(e) || isBackSpace(e)) {
452
- this.handleRemoveTag(e);
453
- const target = e.target as Token;
445
+ if (isDelete(originalEvent) || isBackSpace(originalEvent)) {
446
+ this.handleRemoveTag(null, tag);
447
+
454
448
  const tags = this._tokenizer.tokens;
455
- const deletedTagIndex = tags.indexOf(target);
449
+ const deletedTagIndex = tags.indexOf(originalEvent.target as Token);
456
450
  let nextTokenIndex = deletedTagIndex + 1;
457
451
  if (this._tokenizer.tokens.length !== 1) {
458
452
  if (deletedTagIndex === tags.length - 1) {
@@ -574,8 +568,12 @@ class UDExSelectBox extends UDExSearchableListBase {
574
568
  return !this.isDisabled && this.modeSingleSelect ? this.handleOpenSingleSelect() : undefined;
575
569
  }
576
570
 
577
- getHandlerShowMoreItems() {
578
- return this.displayonly ? this.showMoreReadOnlyItems() : this.showMoreItems();
571
+ getHandlerShowMoreItems(e: CustomEvent) {
572
+ if (!this.displayonly) {
573
+ e.preventDefault();
574
+ this.showMoreItems();
575
+ }
576
+ this.fireEvent("show-more");
579
577
  }
580
578
 
581
579
  getPopover(): ResponsivePopover {
@@ -590,12 +588,15 @@ class UDExSelectBox extends UDExSearchableListBase {
590
588
  return this.shadowRoot!.querySelector(".udex-text-field__input")!;
591
589
  }
592
590
 
593
- getTokenizer(): Tokenizer {
594
- return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
591
+ getTagGroup(): UDExTagGroup {
592
+ return this.shadowRoot!.querySelector<UDExTagGroup>("udex-tag-group")!;
595
593
  }
596
594
 
597
595
  getTags(): Array<UDExTag> {
598
- return Array.from(this.shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
596
+ if (this.getTagGroup()) {
597
+ return Array.from(this.getTagGroup().shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
598
+ }
599
+ return [];
599
600
  }
600
601
 
601
602
  getTagContent(tag: UDExTag): HTMLElement {
@@ -619,7 +620,7 @@ class UDExSelectBox extends UDExSearchableListBase {
619
620
  }
620
621
 
621
622
  resetTagsTabIndexes() {
622
- this._tags.forEach((tag, i) => { this.getTagContent(tag).tabIndex = i === 0 ? this._activeTabIndex : this._inactiveTabIndex; });
623
+ this._tags.forEach((tag, i) => { this.getTagContent(tag).tabIndex = (i === 0 && !this.isDisabled) ? this._activeTabIndex : this._inactiveTabIndex; });
623
624
  }
624
625
 
625
626
  get allowTargetOverlap(): boolean {
@@ -630,10 +631,6 @@ class UDExSelectBox extends UDExSearchableListBase {
630
631
  return this.readonly || this.displayonly || this.disabled;
631
632
  }
632
633
 
633
- get overflowsTags() {
634
- return this._tokenizer?.tokens?.filter(tag => tag.overflows) || [];
635
- }
636
-
637
634
  get truncatableTagLabel(): string {
638
635
  return this._truncatableTag.text.replace(/<\/?b>/gi, "");
639
636
  }
@@ -656,12 +653,6 @@ class UDExSelectBox extends UDExSearchableListBase {
656
653
  return this.readonly || this.displayonly;
657
654
  }
658
655
 
659
- get tokenizerClass(): string {
660
- return `udex-text-field__tokenizer
661
- ${this.displayonly ? "udex-text-field__tokenize_displayonly" : ""}
662
- ${this.readonly ? "udex-text-field__tokenize_readonly" : ""}`;
663
- }
664
-
665
656
  get tokenizerExpanded() {
666
657
  if (this._showTagsDropdownContent && this._truncatableTag) {
667
658
  return false;
@@ -94,7 +94,7 @@ class UDExStatusBadge extends UI5Element {
94
94
  static i18nBundle: I18nBundle;
95
95
 
96
96
  static async onDefine(): Promise<void> {
97
- UDExStatusBadge.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
97
+ UDExStatusBadge.i18nBundle = await getI18nBundle("@udex/web-components");
98
98
  }
99
99
 
100
100
  get iconFieldName(): string {
package/src/StepInput.ts CHANGED
@@ -263,7 +263,7 @@ class UDExStepInput extends UI5Element {
263
263
  _keyDownHandlerBound: (e: KeyboardEvent) => void;
264
264
 
265
265
  static async onDefine() {
266
- UDExStepInput.i18nBundle = await getI18nBundle("@ui5/webcomponents");
266
+ UDExStepInput.i18nBundle = await getI18nBundle("@udex/web-components");
267
267
  }
268
268
 
269
269
  constructor() {
package/src/Tab.ts CHANGED
@@ -215,7 +215,7 @@ class UDExTab extends UI5Element implements ITab {
215
215
  static i18nBundle: I18nBundle;
216
216
 
217
217
  static async onDefine(): Promise<void> {
218
- UDExTab.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
218
+ UDExTab.i18nBundle = await getI18nBundle("@udex/web-components");
219
219
  }
220
220
 
221
221
  get isOnSelectedTab(): boolean {
@@ -169,7 +169,7 @@ class UDExTabNavigation extends UI5Element {
169
169
  }
170
170
 
171
171
  static async onDefine(): Promise<void> {
172
- UDExTabNavigation.i18nBundle = await getI18nBundle("udex-tab-navigation");
172
+ UDExTabNavigation.i18nBundle = await getI18nBundle("@udex/web-components");
173
173
  }
174
174
 
175
175
  onEnterDOM(): void {
package/src/Table.ts CHANGED
@@ -175,7 +175,7 @@ class UDExTable extends UI5Element {
175
175
  static i18nBundle: I18nBundle;
176
176
 
177
177
  static async onDefine() {
178
- UDExTable.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
178
+ UDExTable.i18nBundle = await getI18nBundle("@udex/web-components");
179
179
  }
180
180
 
181
181
  onAfterRendering() {
package/src/TagGroup.hbs CHANGED
@@ -43,6 +43,6 @@
43
43
  ?non-selectable="{{this.nonSelectable}}"
44
44
  ?data-overflows="{{this.overflows}}"
45
45
  @keydown="{{../handleTagKeyDown}}"
46
- @iconClick="{{../tagIconClickHandler}}">
46
+ @ui5-iconClick="{{../tagIconClickHandler}}">
47
47
  ></udex-tag>
48
48
  {{/inline}}
package/src/TextArea.ts CHANGED
@@ -233,7 +233,7 @@ class UDExTextArea extends UI5Element {
233
233
  static i18nBundle: I18nBundle;
234
234
 
235
235
  static async onDefine() {
236
- UDExTextArea.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
236
+ UDExTextArea.i18nBundle = await getI18nBundle("@udex/web-components");
237
237
  }
238
238
 
239
239
  getInputDomRef() {
package/src/TextField.ts CHANGED
@@ -314,7 +314,7 @@ class UDExTextField extends UI5Element {
314
314
  static i18nBundle: I18nBundle;
315
315
 
316
316
  static async onDefine(): Promise<void> {
317
- UDExTextField.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
317
+ UDExTextField.i18nBundle = await getI18nBundle("@udex/web-components");
318
318
  }
319
319
 
320
320
  get valueStateTypeMappings(): Record<string, string> {
@@ -370,7 +370,6 @@ class UDExTextField extends UI5Element {
370
370
 
371
371
  handleInput = (inputEvent: InputEvent) => {
372
372
  this.value = (inputEvent.target as HTMLInputElement)?.value;
373
- this.fireEvent("input");
374
373
  };
375
374
 
376
375
  handleClick = (): void => {
@@ -81,7 +81,7 @@ class UDExTruncatedText extends UI5Element {
81
81
  }
82
82
 
83
83
  static async onDefine() {
84
- UDExTruncatedText.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
84
+ UDExTruncatedText.i18nBundle = await getI18nBundle("@udex/web-components");
85
85
  }
86
86
 
87
87
  get visibleText() {
@@ -2164,7 +2164,7 @@ export const CountryListDB = [
2164
2164
  "locKey": "COUNTRY_TW",
2165
2165
  "iso": "TW",
2166
2166
  "phoneFmt": " XX XXXX XXXX",
2167
- "countryName": "Province of China",
2167
+ "countryName": "Taiwan (Province of China)",
2168
2168
  "localName": "台湾",
2169
2169
  "phonePrefix": "+886",
2170
2170
  "flagX": "-6780px",
@@ -4,7 +4,7 @@ import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
4
4
  import type CountrySelector from "../../CountrySelector.js";
5
5
  import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
6
6
 
7
- function block0 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="${ifDefined(this.countrySelectorClasses)}"><${scopeTag("udex-dropdown", tags, suffix)} id="dropdown" horizontal-align="Left" height="${ifDefined(this.height)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-before-open="${ifDefined(this._dropdownBeforeOpen)}" @ui5-after-open="${ifDefined(this._dropdownAfterOpen)}" @ui5-before-close="${ifDefined(this._dropdownBeforeClose)}" @ui5-after-close="${ifDefined(this._dropdownAfterClose)}" @click-trigger="${this.handleTriggerClick}" @ui5-submit-search-value="${ifDefined(this.handleSubmitSearch)}" @ui5-handle-value-search="${ifDefined(this.handleValueSearch)}" @ui5-handle-value-reset="${ifDefined(this.handleResetSearch)}" @ui5-handle-close-search="${ifDefined(this.handleCloseSearch)}"><div class="${ifDefined(this.countrySelectorTriggerClasses)}" ?disabled="${this.isOpenerDisabled}" slot="trigger">${ this.showFlagImages ? block1.call(this, context, tags, suffix) : undefined }<${scopeTag("udex-text-field", tags, suffix)} label="${ifDefined(this.effectiveAriaLabel)}" id="udexTextField" class="udex-country-selector__text" value="${ifDefined(this.selectedCountryName)}" value-state="${ifDefined(this.valueState)}" direction="left" aria-label="${ifDefined(this.effectiveAriaLabel)}" accessible-name="${ifDefined(this.supportingText)}" accessible-name-ref="${ifDefined(this.accessibleNameRef)}" aria-controls="${ifDefined(this.ariaControls)}" role="combobox" aria-haspopup="true" aria-expanded="${ifDefined(this._open)}" ?active="${this._open}" ?required="${this.required}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?displayonly="${this.displayonly}" @click-trigger="${this.handleKeyDown}" @mousedown="${this.handleInputMouseDown}" icon="${ifDefined(this.triggerIcon)}" accessible-icon-name="${ifDefined(this.effectiveAriaLabel)}" maxlength="0"></${scopeTag("udex-text-field", tags, suffix)}></div>${ifDefined(this.searchableList)}</${scopeTag("udex-dropdown", tags, suffix)}>${ this.supportingText ? block2.call(this, context, tags, suffix) : undefined }</div> ` : html`<div class="${ifDefined(this.countrySelectorClasses)}"><udex-dropdown id="dropdown" horizontal-align="Left" height="${ifDefined(this.height)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-before-open="${ifDefined(this._dropdownBeforeOpen)}" @ui5-after-open="${ifDefined(this._dropdownAfterOpen)}" @ui5-before-close="${ifDefined(this._dropdownBeforeClose)}" @ui5-after-close="${ifDefined(this._dropdownAfterClose)}" @click-trigger="${this.handleTriggerClick}" @ui5-submit-search-value="${ifDefined(this.handleSubmitSearch)}" @ui5-handle-value-search="${ifDefined(this.handleValueSearch)}" @ui5-handle-value-reset="${ifDefined(this.handleResetSearch)}" @ui5-handle-close-search="${ifDefined(this.handleCloseSearch)}"><div class="${ifDefined(this.countrySelectorTriggerClasses)}" ?disabled="${this.isOpenerDisabled}" slot="trigger">${ this.showFlagImages ? block1.call(this, context, tags, suffix) : undefined }<udex-text-field label="${ifDefined(this.effectiveAriaLabel)}" id="udexTextField" class="udex-country-selector__text" value="${ifDefined(this.selectedCountryName)}" value-state="${ifDefined(this.valueState)}" direction="left" aria-label="${ifDefined(this.effectiveAriaLabel)}" accessible-name="${ifDefined(this.supportingText)}" accessible-name-ref="${ifDefined(this.accessibleNameRef)}" aria-controls="${ifDefined(this.ariaControls)}" role="combobox" aria-haspopup="true" aria-expanded="${ifDefined(this._open)}" ?active="${this._open}" ?required="${this.required}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?displayonly="${this.displayonly}" @click-trigger="${this.handleKeyDown}" @mousedown="${this.handleInputMouseDown}" icon="${ifDefined(this.triggerIcon)}" accessible-icon-name="${ifDefined(this.effectiveAriaLabel)}" maxlength="0"></udex-text-field></div>${ifDefined(this.searchableList)}</udex-dropdown>${ this.supportingText ? block2.call(this, context, tags, suffix) : undefined }</div> `;}
7
+ function block0 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="${ifDefined(this.countrySelectorClasses)}"><${scopeTag("udex-dropdown", tags, suffix)} id="dropdown" horizontal-align="Left" height="${ifDefined(this.height)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-before-open="${ifDefined(this._dropdownBeforeOpen)}" @ui5-after-open="${ifDefined(this._dropdownAfterOpen)}" @ui5-before-close="${ifDefined(this._dropdownBeforeClose)}" @ui5-after-close="${ifDefined(this._dropdownAfterClose)}" @click-trigger="${this.handleTriggerClick}" @ui5-submit-search-value="${ifDefined(this.handleSubmitSearch)}" @ui5-handle-value-search="${ifDefined(this.handleValueSearch)}" @ui5-handle-value-reset="${ifDefined(this.handleResetSearch)}" @ui5-search-keydown="${ifDefined(this.handleKeyDownSearch)}" @keydown="${this.handleKeyDownDropdown}" @ui5-handle-close-search="${ifDefined(this.handleCloseSearch)}"><div class="${ifDefined(this.countrySelectorTriggerClasses)}" ?disabled="${this.isOpenerDisabled}" slot="trigger">${ this.showFlagImages ? block1.call(this, context, tags, suffix) : undefined }<${scopeTag("udex-text-field", tags, suffix)} label="${ifDefined(this.effectiveAriaLabel)}" id="udexTextField" class="udex-country-selector__text" value="${ifDefined(this.selectedCountryName)}" value-state="${ifDefined(this.valueState)}" direction="left" aria-label="${ifDefined(this.effectiveAriaLabel)}" accessible-name="${ifDefined(this.supportingText)}" accessible-name-ref="${ifDefined(this.accessibleNameRef)}" aria-controls="${ifDefined(this.ariaControls)}" role="combobox" aria-haspopup="true" aria-expanded="${ifDefined(this._open)}" ?required="${this.required}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?displayonly="${this.displayonly}" @click-trigger="${this.handleKeyDown}" @mousedown="${this.handleInputMouseDown}" icon="${ifDefined(this.triggerIcon)}" accessible-icon-name="${ifDefined(this.effectiveAriaLabel)}" maxlength="0"></${scopeTag("udex-text-field", tags, suffix)}></div>${ifDefined(this.searchableList)}</${scopeTag("udex-dropdown", tags, suffix)}>${ this.supportingText ? block2.call(this, context, tags, suffix) : undefined }</div> ` : html`<div class="${ifDefined(this.countrySelectorClasses)}"><udex-dropdown id="dropdown" horizontal-align="Left" height="${ifDefined(this.height)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-before-open="${ifDefined(this._dropdownBeforeOpen)}" @ui5-after-open="${ifDefined(this._dropdownAfterOpen)}" @ui5-before-close="${ifDefined(this._dropdownBeforeClose)}" @ui5-after-close="${ifDefined(this._dropdownAfterClose)}" @click-trigger="${this.handleTriggerClick}" @ui5-submit-search-value="${ifDefined(this.handleSubmitSearch)}" @ui5-handle-value-search="${ifDefined(this.handleValueSearch)}" @ui5-handle-value-reset="${ifDefined(this.handleResetSearch)}" @ui5-search-keydown="${ifDefined(this.handleKeyDownSearch)}" @keydown="${this.handleKeyDownDropdown}" @ui5-handle-close-search="${ifDefined(this.handleCloseSearch)}"><div class="${ifDefined(this.countrySelectorTriggerClasses)}" ?disabled="${this.isOpenerDisabled}" slot="trigger">${ this.showFlagImages ? block1.call(this, context, tags, suffix) : undefined }<udex-text-field label="${ifDefined(this.effectiveAriaLabel)}" id="udexTextField" class="udex-country-selector__text" value="${ifDefined(this.selectedCountryName)}" value-state="${ifDefined(this.valueState)}" direction="left" aria-label="${ifDefined(this.effectiveAriaLabel)}" accessible-name="${ifDefined(this.supportingText)}" accessible-name-ref="${ifDefined(this.accessibleNameRef)}" aria-controls="${ifDefined(this.ariaControls)}" role="combobox" aria-haspopup="true" aria-expanded="${ifDefined(this._open)}" ?required="${this.required}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?displayonly="${this.displayonly}" @click-trigger="${this.handleKeyDown}" @mousedown="${this.handleInputMouseDown}" icon="${ifDefined(this.triggerIcon)}" accessible-icon-name="${ifDefined(this.effectiveAriaLabel)}" maxlength="0"></udex-text-field></div>${ifDefined(this.searchableList)}</udex-dropdown>${ this.supportingText ? block2.call(this, context, tags, suffix) : undefined }</div> `;}
8
8
  function block1 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<img class="udex-country-selector__image" design="Default" aria-label="${ifDefined(this.flagAriaLabel)}" style="background-position-x: ${ifDefined(this.selectedCountryFlagX)}; background-position-y: ${ifDefined(this.selectedCountryFlagY)}">`;}
9
9
  function block2 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-status-message", tags, suffix)} ?disabled="${this.disabled}" supporting-text="${ifDefined(this.supportingText)}" value-state="${ifDefined(this.valueState)}"></${scopeTag("udex-status-message", tags, suffix)}>` : html`<udex-status-message ?disabled="${this.disabled}" supporting-text="${ifDefined(this.supportingText)}" value-state="${ifDefined(this.valueState)}"></udex-status-message>`;}
10
10