@sapudex/web-components 2.21.0 → 2.23.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 (319) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/specs/CountrySelector.cy.tsx +158 -144
  3. package/cypress/specs/EventRibbon.cy.tsx +3 -1
  4. package/cypress/specs/ImageGridCloud.cy.tsx +78 -0
  5. package/cypress/specs/ImageGridCloudItem.cy.tsx +29 -0
  6. package/cypress/specs/SelectBox.cy.tsx +173 -206
  7. package/cypress/specs/Tag.cy.tsx +1 -1
  8. package/cypress/specs/TextField.cy.tsx +15 -0
  9. package/cypress/specs/Textarea.cy.tsx +15 -33
  10. package/cypress/support/component-imports.instrumented.ts +4 -0
  11. package/cypress/support/component-imports.src.ts +4 -0
  12. package/dist/Accordion.js +1 -0
  13. package/dist/Accordion.js.map +1 -1
  14. package/dist/AccordionItem.js +2 -0
  15. package/dist/AccordionItem.js.map +1 -1
  16. package/dist/AssetsVariables.js +2 -1
  17. package/dist/AssetsVariables.js.map +1 -1
  18. package/dist/Breadcrumbs.js +5 -0
  19. package/dist/Breadcrumbs.js.map +1 -1
  20. package/dist/ContactItem.js +2 -0
  21. package/dist/ContactItem.js.map +1 -1
  22. package/dist/CountrySelector.d.ts +25 -142
  23. package/dist/CountrySelector.js +91 -267
  24. package/dist/CountrySelector.js.map +1 -1
  25. package/dist/DatePicker.js +2 -1
  26. package/dist/DatePicker.js.map +1 -1
  27. package/dist/FilterMenu.d.ts +14 -2
  28. package/dist/FilterMenu.js +13 -1
  29. package/dist/FilterMenu.js.map +1 -1
  30. package/dist/Footer.js +27 -0
  31. package/dist/Footer.js.map +1 -1
  32. package/dist/ImageGridCloud.d.ts +76 -0
  33. package/dist/ImageGridCloud.js +153 -0
  34. package/dist/ImageGridCloud.js.map +1 -0
  35. package/dist/ImageGridCloudItem.d.ts +35 -0
  36. package/dist/ImageGridCloudItem.js +49 -0
  37. package/dist/ImageGridCloudItem.js.map +1 -0
  38. package/dist/ImageGridCloudItemTemplate.d.ts +2 -0
  39. package/dist/ImageGridCloudItemTemplate.js +5 -0
  40. package/dist/ImageGridCloudItemTemplate.js.map +1 -0
  41. package/dist/ImageGridCloudTemplate.d.ts +2 -0
  42. package/dist/ImageGridCloudTemplate.js +6 -0
  43. package/dist/ImageGridCloudTemplate.js.map +1 -0
  44. package/dist/ImageGridTicker.d.ts +2 -2
  45. package/dist/ImageGridTicker.js +1 -8
  46. package/dist/ImageGridTicker.js.map +1 -1
  47. package/dist/LinkListItem.js +1 -0
  48. package/dist/LinkListItem.js.map +1 -1
  49. package/dist/List.js +5 -3
  50. package/dist/List.js.map +1 -1
  51. package/dist/ListGroupHeader.js +1 -0
  52. package/dist/ListGroupHeader.js.map +1 -1
  53. package/dist/ListGroupHeaderBase.d.ts +1 -0
  54. package/dist/ListGroupHeaderBase.js +3 -0
  55. package/dist/ListGroupHeaderBase.js.map +1 -1
  56. package/dist/ListItem.js +2 -0
  57. package/dist/ListItem.js.map +1 -1
  58. package/dist/ListItemBase.d.ts +12 -0
  59. package/dist/ListItemBase.js +21 -2
  60. package/dist/ListItemBase.js.map +1 -1
  61. package/dist/ListSelectAll.js +1 -0
  62. package/dist/ListSelectAll.js.map +1 -1
  63. package/dist/MastheadCountrySelector.js +15 -0
  64. package/dist/MastheadCountrySelector.js.map +1 -1
  65. package/dist/MastheadItem.js +10 -0
  66. package/dist/MastheadItem.js.map +1 -1
  67. package/dist/MastheadMenu.js +6 -0
  68. package/dist/MastheadMenu.js.map +1 -1
  69. package/dist/MastheadMobileMenu.js +11 -0
  70. package/dist/MastheadMobileMenu.js.map +1 -1
  71. package/dist/MastheadProfileMenu.js +11 -0
  72. package/dist/MastheadProfileMenu.js.map +1 -1
  73. package/dist/MastheadShell.js +41 -0
  74. package/dist/MastheadShell.js.map +1 -1
  75. package/dist/MediaPlayer.js +3 -0
  76. package/dist/MediaPlayer.js.map +1 -1
  77. package/dist/MediaPlayerTemplate.js +4 -4
  78. package/dist/MediaPlayerTemplate.js.map +1 -1
  79. package/dist/MediaPlayerVimeo.d.ts +3 -3
  80. package/dist/MediaPlayerVimeo.js +1 -0
  81. package/dist/MediaPlayerVimeo.js.map +1 -1
  82. package/dist/MediaPlayerYoutube.js +3 -0
  83. package/dist/MediaPlayerYoutube.js.map +1 -1
  84. package/dist/Pagination.js +1 -1
  85. package/dist/Pagination.js.map +1 -1
  86. package/dist/Search.d.ts +2 -1
  87. package/dist/Search.js +18 -3
  88. package/dist/Search.js.map +1 -1
  89. package/dist/SearchTemplate.d.ts +2 -0
  90. package/dist/SearchTemplate.js +48 -0
  91. package/dist/SearchTemplate.js.map +1 -0
  92. package/dist/SearchableListBase.d.ts +26 -16
  93. package/dist/SearchableListBase.js +58 -72
  94. package/dist/SearchableListBase.js.map +1 -1
  95. package/dist/SecondaryNavigation.js +19 -0
  96. package/dist/SecondaryNavigation.js.map +1 -1
  97. package/dist/SecondaryNavigationItem.js +6 -0
  98. package/dist/SecondaryNavigationItem.js.map +1 -1
  99. package/dist/SecondaryNavigationSubItem.js +3 -0
  100. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  101. package/dist/SelectBase.d.ts +193 -0
  102. package/dist/SelectBase.js +428 -0
  103. package/dist/SelectBase.js.map +1 -0
  104. package/dist/SelectBox.d.ts +30 -152
  105. package/dist/SelectBox.js +140 -348
  106. package/dist/SelectBox.js.map +1 -1
  107. package/dist/SocialMediaButton.js +2 -0
  108. package/dist/SocialMediaButton.js.map +1 -1
  109. package/dist/StepInput.js +2 -0
  110. package/dist/StepInput.js.map +1 -1
  111. package/dist/TabNavigation.js +3 -0
  112. package/dist/TabNavigation.js.map +1 -1
  113. package/dist/Tag.js +1 -0
  114. package/dist/Tag.js.map +1 -1
  115. package/dist/TagGroup.d.ts +23 -5
  116. package/dist/TagGroup.js +40 -16
  117. package/dist/TagGroup.js.map +1 -1
  118. package/dist/TagTemplate.js +4 -2
  119. package/dist/TagTemplate.js.map +1 -1
  120. package/dist/TextArea.d.ts +1 -1
  121. package/dist/TextArea.js +5 -5
  122. package/dist/TextArea.js.map +1 -1
  123. package/dist/TextAreaTemplate.d.ts +2 -0
  124. package/dist/TextAreaTemplate.js +13 -0
  125. package/dist/TextAreaTemplate.js.map +1 -0
  126. package/dist/TextField.d.ts +29 -4
  127. package/dist/TextField.js +33 -16
  128. package/dist/TextField.js.map +1 -1
  129. package/dist/TextFieldTemplate.d.ts +2 -0
  130. package/dist/TextFieldTemplate.js +14 -0
  131. package/dist/TextFieldTemplate.js.map +1 -0
  132. package/dist/Tile.js +1 -0
  133. package/dist/Tile.js.map +1 -1
  134. package/dist/Upload.js +5 -0
  135. package/dist/Upload.js.map +1 -1
  136. package/dist/assets/{InputSuggestions-B0P5JAFd.js → InputSuggestions-C8m6N2-d.js} +1 -1
  137. package/dist/assets/{ListItemStandardExpandableTextTemplate-CFj3_UAT.js → ListItemStandardExpandableTextTemplate-BwD5bYhw.js} +1 -1
  138. package/dist/assets/{bundle.esm-BaPBMfCT.js → bundle.esm-hGsUwmUy.js} +222 -218
  139. package/dist/css/themes/CountrySelector.css +1 -1
  140. package/dist/css/themes/EventRibbon.css +1 -1
  141. package/dist/css/themes/ImageGridCloud.css +1 -0
  142. package/dist/css/themes/ImageGridCloudItem.css +1 -0
  143. package/dist/css/themes/ListItem.css +1 -1
  144. package/dist/css/themes/MastheadItem.css +1 -1
  145. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  146. package/dist/css/themes/Pagination.css +1 -1
  147. package/dist/css/themes/RatingIndicator.css +1 -1
  148. package/dist/css/themes/Search.css +1 -1
  149. package/dist/css/themes/SelectBase.css +1 -0
  150. package/dist/css/themes/SelectBox.css +1 -1
  151. package/dist/css/themes/Slider.css +1 -1
  152. package/dist/css/themes/TagGroup.css +1 -1
  153. package/dist/css/themes/TextField.css +1 -1
  154. package/dist/custom-elements-internal.json +4627 -1311
  155. package/dist/custom-elements.json +1260 -1249
  156. package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
  157. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  158. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  159. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  160. package/dist/generated/templates/SelectBoxTemplate.lit.js +10 -9
  161. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  162. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  163. package/dist/generated/themes/CountrySelector.css.js +1 -1
  164. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  165. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  166. package/dist/generated/themes/EventRibbon.css.js +1 -1
  167. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  168. package/dist/generated/themes/ImageGridCloud.css.d.ts +2 -0
  169. package/dist/generated/themes/ImageGridCloud.css.js +8 -0
  170. package/dist/generated/themes/ImageGridCloud.css.js.map +1 -0
  171. package/dist/generated/themes/ImageGridCloudItem.css.d.ts +2 -0
  172. package/dist/generated/themes/ImageGridCloudItem.css.js +8 -0
  173. package/dist/generated/themes/ImageGridCloudItem.css.js.map +1 -0
  174. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  175. package/dist/generated/themes/ListItem.css.js +1 -1
  176. package/dist/generated/themes/ListItem.css.js.map +1 -1
  177. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  178. package/dist/generated/themes/MastheadItem.css.js +1 -1
  179. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  180. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  181. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  182. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  183. package/dist/generated/themes/Pagination.css.d.ts +1 -1
  184. package/dist/generated/themes/Pagination.css.js +1 -1
  185. package/dist/generated/themes/Pagination.css.js.map +1 -1
  186. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  187. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  188. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  189. package/dist/generated/themes/Search.css.d.ts +1 -1
  190. package/dist/generated/themes/Search.css.js +1 -1
  191. package/dist/generated/themes/Search.css.js.map +1 -1
  192. package/dist/generated/themes/SelectBase.css.d.ts +2 -0
  193. package/dist/generated/themes/SelectBase.css.js +8 -0
  194. package/dist/generated/themes/SelectBase.css.js.map +1 -0
  195. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  196. package/dist/generated/themes/SelectBox.css.js +1 -1
  197. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  198. package/dist/generated/themes/Slider.css.d.ts +1 -1
  199. package/dist/generated/themes/Slider.css.js +1 -1
  200. package/dist/generated/themes/Slider.css.js.map +1 -1
  201. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  202. package/dist/generated/themes/TagGroup.css.js +1 -1
  203. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  204. package/dist/generated/themes/TextField.css.d.ts +1 -1
  205. package/dist/generated/themes/TextField.css.js +1 -1
  206. package/dist/generated/themes/TextField.css.js.map +1 -1
  207. package/dist/types/common.d.ts +1 -1
  208. package/dist/types/common.js +1 -1
  209. package/dist/types/common.js.map +1 -1
  210. package/dist/vscode.html-custom-data.json +49 -235
  211. package/dist/web-types.json +347 -832
  212. package/package.json +1 -1
  213. package/src/Accordion.ts +1 -0
  214. package/src/AccordionItem.ts +2 -0
  215. package/src/AssetsVariables.ts +2 -1
  216. package/src/Breadcrumbs.ts +5 -0
  217. package/src/ContactItem.ts +2 -0
  218. package/src/CountrySelector.hbs +6 -61
  219. package/src/CountrySelector.ts +93 -374
  220. package/src/DatePicker.ts +2 -1
  221. package/src/FilterMenu.ts +15 -3
  222. package/src/Footer.ts +27 -0
  223. package/src/ImageGridCloud.ts +188 -0
  224. package/src/ImageGridCloudItem.ts +57 -0
  225. package/src/ImageGridCloudItemTemplate.tsx +11 -0
  226. package/src/ImageGridCloudTemplate.tsx +16 -0
  227. package/src/ImageGridTicker.ts +3 -3
  228. package/src/LinkListItem.ts +1 -0
  229. package/src/List.ts +5 -3
  230. package/src/ListGroupHeader.ts +1 -0
  231. package/src/ListGroupHeaderBase.ts +4 -0
  232. package/src/ListItem.hbs +0 -1
  233. package/src/ListItem.ts +2 -0
  234. package/src/ListItemBase.ts +21 -3
  235. package/src/ListSelectAll.ts +1 -0
  236. package/src/MastheadCountrySelector.ts +15 -0
  237. package/src/MastheadItem.ts +10 -0
  238. package/src/MastheadMenu.ts +6 -0
  239. package/src/MastheadMobileMenu.ts +11 -0
  240. package/src/MastheadProfileMenu.ts +11 -0
  241. package/src/MastheadShell.ts +41 -0
  242. package/src/MediaPlayer.ts +3 -0
  243. package/src/MediaPlayerTemplate.tsx +0 -1
  244. package/src/MediaPlayerVimeo.ts +4 -3
  245. package/src/MediaPlayerYoutube.ts +3 -0
  246. package/src/Pagination.ts +1 -1
  247. package/src/Search.ts +20 -4
  248. package/src/SearchTemplate.tsx +353 -0
  249. package/src/SearchableListBase.ts +78 -83
  250. package/src/SecondaryNavigation.ts +19 -0
  251. package/src/SecondaryNavigationItem.ts +6 -0
  252. package/src/SecondaryNavigationSubItem.ts +3 -0
  253. package/src/SelectBase.ts +580 -0
  254. package/src/SelectBox.hbs +118 -107
  255. package/src/SelectBox.ts +156 -445
  256. package/src/SocialMediaButton.ts +2 -0
  257. package/src/StepInput.ts +2 -0
  258. package/src/TabNavigation.ts +3 -0
  259. package/src/Tag.ts +1 -0
  260. package/src/TagGroup.ts +56 -19
  261. package/src/TagTemplate.tsx +4 -2
  262. package/src/TextArea.ts +5 -5
  263. package/src/TextAreaTemplate.tsx +67 -0
  264. package/src/TextField.ts +58 -24
  265. package/src/TextFieldTemplate.tsx +90 -0
  266. package/src/Tile.ts +1 -0
  267. package/src/Upload.ts +5 -0
  268. package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
  269. package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
  270. package/src/generated/templates/SelectBoxTemplate.lit.ts +10 -9
  271. package/src/generated/themes/CountrySelector.css.ts +1 -1
  272. package/src/generated/themes/EventRibbon.css.ts +1 -1
  273. package/src/generated/themes/ImageGridCloud.css.ts +9 -0
  274. package/src/generated/themes/ImageGridCloudItem.css.ts +9 -0
  275. package/src/generated/themes/ListItem.css.ts +1 -1
  276. package/src/generated/themes/MastheadItem.css.ts +1 -1
  277. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  278. package/src/generated/themes/Pagination.css.ts +1 -1
  279. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  280. package/src/generated/themes/Search.css.ts +1 -1
  281. package/src/generated/themes/SelectBase.css.ts +9 -0
  282. package/src/generated/themes/SelectBox.css.ts +1 -1
  283. package/src/generated/themes/Slider.css.ts +1 -1
  284. package/src/generated/themes/TagGroup.css.ts +1 -1
  285. package/src/generated/themes/TextField.css.ts +1 -1
  286. package/src/themes/CountrySelector.css +42 -115
  287. package/src/themes/EventRibbon.css +21 -13
  288. package/src/themes/ImageGridCloud.css +55 -0
  289. package/src/themes/ImageGridCloudItem.css +10 -0
  290. package/src/themes/ListItem.css +6 -0
  291. package/src/themes/MastheadItem.css +0 -2
  292. package/src/themes/MastheadMobileMenu.css +2 -0
  293. package/src/themes/Pagination.css +1 -1
  294. package/src/themes/Search.css +0 -1
  295. package/src/themes/SelectBase.css +239 -0
  296. package/src/themes/SelectBox.css +13 -195
  297. package/src/themes/TagGroup.css +0 -1
  298. package/src/themes/TextField.css +7 -7
  299. package/src/types/common.ts +1 -1
  300. package/dist/generated/templates/SearchSuggestionsTemplate.lit.d.ts +0 -3
  301. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +0 -17
  302. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +0 -1
  303. package/dist/generated/templates/SearchTemplate.lit.d.ts +0 -3
  304. package/dist/generated/templates/SearchTemplate.lit.js +0 -28
  305. package/dist/generated/templates/SearchTemplate.lit.js.map +0 -1
  306. package/dist/generated/templates/TextAreaTemplate.lit.d.ts +0 -3
  307. package/dist/generated/templates/TextAreaTemplate.lit.js +0 -13
  308. package/dist/generated/templates/TextAreaTemplate.lit.js.map +0 -1
  309. package/dist/generated/templates/TextFieldTemplate.lit.d.ts +0 -3
  310. package/dist/generated/templates/TextFieldTemplate.lit.js +0 -14
  311. package/dist/generated/templates/TextFieldTemplate.lit.js.map +0 -1
  312. package/src/Search.hbs +0 -155
  313. package/src/SearchSuggestions.hbs +0 -91
  314. package/src/TextArea.hbs +0 -54
  315. package/src/TextField.hbs +0 -78
  316. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +0 -21
  317. package/src/generated/templates/SearchTemplate.lit.ts +0 -32
  318. package/src/generated/templates/TextAreaTemplate.lit.ts +0 -17
  319. package/src/generated/templates/TextFieldTemplate.lit.ts +0 -18
@@ -1,16 +1,7 @@
1
- import type Popover from "@ui5/webcomponents/dist/Popover.js";
2
- import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
3
1
  import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
4
2
  import "@ui5/webcomponents-icons/dist/navigation-up-arrow.js";
5
3
  import type { Country } from "./data/CountryListISO3166.js";
6
- import Search from "./Search.js";
7
- import UDExDropdown from "./Dropdown.js";
8
- import UDExSearchableListBase from "./SearchableListBase.js";
9
- import UDExTextField from "./TextField.js";
10
- import UDExValueState from "./types/common.js";
11
- import type { UDExSearchKeydownEventDetail } from "./Search.js";
12
- import type { UDExSearchableListBaseEvents } from "./SearchableListBase.js";
13
- import SearchableListBaseTemplate from "./generated/templates/SearchableListBaseTemplate.lit.js";
4
+ import UDExSelectBase from "./SelectBase.js";
14
5
  type UDExCountrySelectorChangeSearchEventDetail = {
15
6
  value: string;
16
7
  };
@@ -32,76 +23,7 @@ type UDExCountrySelectorChangeSearchEventDetail = {
32
23
  * @tagname udex-country-selector
33
24
  * @public
34
25
  */
35
- declare class UDExCountrySelector extends UDExSearchableListBase {
36
- eventDetails: {
37
- "open": void;
38
- "close": void;
39
- "before-close": void;
40
- "before-open": void;
41
- "change-search": UDExCountrySelectorChangeSearchEventDetail;
42
- } & Omit<UDExSearchableListBaseEvents, "change-search">;
43
- /**
44
- * Defines label text for the input field.
45
- *
46
- * @default undefined
47
- * @public
48
- */
49
- label?: string;
50
- /**
51
- * Defines the accessible ARIA name of the component.
52
- *
53
- * @default undefined
54
- * @public
55
- */
56
- accessibleName?: string;
57
- /**
58
- * Receives id (or many ids) of the elements that label the component.
59
- * @default ""
60
- * @public
61
- */
62
- accessibleNameRef: string;
63
- /**
64
- * Defines whether the component is required.
65
- *
66
- * @default false
67
- * @public
68
- */
69
- required: boolean;
70
- /**
71
- * Allows control over the height.
72
- *
73
- * @public
74
- */
75
- height?: string;
76
- /**
77
- * Defines whether the component is in disabled state.
78
- * <br><br>
79
- * <b>Note:</b> A disabled component is completely noninteractive.
80
- *
81
- * @default false
82
- * @public
83
- */
84
- disabled: boolean;
85
- /**
86
- * Defines whether the component is read-only.
87
- * <br><br>
88
- * <b>Note:</b> A read-only component is not editable,
89
- * but still provides visual feedback upon user interaction.
90
- *
91
- * @default false
92
- * @public
93
- */
94
- readonly: boolean;
95
- /**
96
- * Defines whether the component is display-only.
97
- * <br><br>
98
- * <b>Note:</b> A display-only component is not editable,
99
- * but still provides visual feedback upon user interaction, input border is not visible.
100
- *
101
- * @default false
102
- * @public
103
- */
104
- displayonly: boolean;
26
+ declare class UDExCountrySelector extends UDExSelectBase {
105
27
  /**
106
28
  * Allows to define the initially preselected country.
107
29
  *
@@ -117,81 +39,42 @@ declare class UDExCountrySelector extends UDExSearchableListBase {
117
39
  */
118
40
  blockedCountryCodes?: string;
119
41
  /**
120
- * Defines the placeholder of the search.
42
+ * Allows to hide the flag images in the country selector.
121
43
  *
122
- * @default ""
123
- * @public
124
- */
125
- searchPlaceholder: string;
126
- /**
127
- * Defines the value state of the component.
128
- *
129
- * @default "Standard"
130
- * @public
131
- */
132
- valueState: `${UDExValueState}`;
133
- /**
134
- * Defines supporting text under the country selector.
135
- *
136
- * @default undefined
44
+ * @default false
137
45
  * @public
138
46
  */
139
- supportingText?: string;
47
+ hideFlagImages?: boolean;
140
48
  /**
49
+ * Indicates whether the country selector is enabled.
141
50
  *
142
- * @public
51
+ * @default true
52
+ * @private
143
53
  */
144
- hideFlagImages?: boolean;
145
- _open?: boolean;
146
- countryList: Country[];
147
- selectedCountry: Country | undefined;
148
- _trigger: UDExTextField;
149
- _dropdown: UDExDropdown;
150
- _search: Search;
151
- _handleResizeBound: ResizeObserverCallback;
152
- constructor();
153
- onEnterDOM(): void;
154
- onExitDOM(): void;
155
- onBeforeRendering(): void;
54
+ _countrySelector: boolean;
55
+ _countryList: Country[];
56
+ _selectedCountry: Country | undefined;
156
57
  onAfterRendering(): void;
157
- getTrigger(): UDExTextField;
158
- _dropdownClose(): void;
159
- _dropdownOpen(): void;
160
- _dropdownBeforeOpen(): void;
161
- _dropdownBeforeClose(): void;
162
- get searchableList(): object;
163
- static get searchableListBaseTemplate(): typeof SearchableListBaseTemplate;
164
- _handleResize(): void;
165
- handleCloseSearch(): void;
58
+ onBeforeRendering(): void;
166
59
  handleItemPress(e: CustomEvent): void;
167
- handleKeyPress(keyEvent: KeyboardEvent): void;
168
- handleInputMouseDown(e: CustomEvent): void;
169
- handleTriggerClick(): void;
170
- handleValueSearch(e: CustomEvent): void;
171
- handleSubmitSearch(): void;
172
- handleKeyDownSearch(keyEvent: CustomEvent<UDExSearchKeydownEventDetail>): void;
173
- handleKeyDownDropdown(e: KeyboardEvent): void;
174
- dropDownClose(): void;
175
- handleResetSearch(): void;
60
+ handleInputFocusIn(): void;
61
+ handleInputFocusOut(e: FocusEvent): void;
62
+ handleKeyDownSearch(e: KeyboardEvent): void;
63
+ handleDropdownBeforeOpen(): void;
64
+ handleDropdownClose(): void;
65
+ handleOutsideClick(): void;
66
+ updateImagePosition(): void;
67
+ filterBlockedCountries(): void;
68
+ setPreselectedCountry(): void;
69
+ selectCountryByElement(el: HTMLElement): void;
176
70
  prepareCountrySelectorItems(): void;
177
- fireChangeSearch(): void;
178
71
  getItemTemplate(country: Country): string | undefined;
179
72
  getCountryLabel(countryName?: string, localName?: string): string | null;
180
- get ariaControls(): string | null | undefined;
181
- get selectedCountryFlagX(): string | undefined;
182
- get selectedCountryFlagY(): string | undefined;
183
73
  get selectedCountryName(): string | null;
184
74
  get flagAriaLabel(): string;
185
- get triggerIcon(): string | undefined;
186
- get countrySelectorClasses(): string;
187
- get countrySelectorTriggerClasses(): string;
188
- get showFlagImages(): boolean;
189
- get isOpenerDisabled(): boolean;
190
- getSearch(): Search;
191
- getDropdownPopover(): Popover;
192
- getDropdown(): UDExDropdown;
193
- getTextField(): UDExTextField;
194
- get effectiveAriaLabel(): string;
75
+ get selectedCountryFlagX(): string | undefined;
76
+ get selectedCountryFlagY(): string | undefined;
77
+ get showImageFlags(): boolean;
195
78
  }
196
79
  export default UDExCountrySelector;
197
80
  export type { UDExCountrySelectorChangeSearchEventDetail };
@@ -4,31 +4,27 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var UDExCountrySelector_1;
8
7
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
9
8
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
10
9
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
- import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
12
- import { isEscape, isTabPrevious, isTabNext } from "@ui5/webcomponents-base/dist/Keys.js";
13
- import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
14
- import Button from "@ui5/webcomponents/dist/Button.js";
15
- import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
10
+ import UI5Button from "@ui5/webcomponents/dist/Button.js";
16
11
  import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
17
12
  import "@ui5/webcomponents-icons/dist/navigation-up-arrow.js";
18
13
  import { CountryListDB } from "./data/CountryListISO3166.js";
19
- import { COUNTRY_SELECT } from "./generated/i18n/i18n-defaults.js";
20
- import Search from "./Search.js";
14
+ import UDExSearch from "./Search.js";
21
15
  import UDExDropdown from "./Dropdown.js";
22
16
  import UDExList from "./List.js";
23
- import UDExSearchableListBase from "./SearchableListBase.js";
17
+ import UDExSelectBase from "./SelectBase.js";
24
18
  import UDExListItem from "./ListItem.js";
25
19
  import UDExTextField from "./TextField.js";
26
- import UDExValueState from "./types/common.js";
27
- import StatusMessage from "./StatusMessage.js";
28
- import CountrySelectorTemplate from "./generated/templates/CountrySelectorTemplate.lit.js";
29
- import SearchableListBaseTemplate from "./generated/templates/SearchableListBaseTemplate.lit.js";
20
+ import UDExStatusMessage from "./StatusMessage.js";
21
+ import SelectBoxTemplate from "./generated/templates/SelectBoxTemplate.lit.js";
30
22
  // Styles
31
23
  import CountrySelectorCss from "./generated/themes/CountrySelector.css.js";
24
+ import TextFieldCss from "./generated/themes/TextField.css.js";
25
+ import SelectBaseCss from "./generated/themes/SelectBase.css.js";
26
+ import SearchableListCss from "./generated/themes/SearchableList.css.js";
27
+ import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
32
28
  /**
33
29
  * @class
34
30
  *
@@ -47,138 +43,90 @@ import CountrySelectorCss from "./generated/themes/CountrySelector.css.js";
47
43
  * @tagname udex-country-selector
48
44
  * @public
49
45
  */
50
- let UDExCountrySelector = UDExCountrySelector_1 = class UDExCountrySelector extends UDExSearchableListBase {
46
+ let UDExCountrySelector = class UDExCountrySelector extends UDExSelectBase {
51
47
  constructor() {
52
- super();
48
+ super(...arguments);
53
49
  /**
54
- * Receives id (or many ids) of the elements that label the component.
55
- * @default ""
56
- * @public
57
- */
58
- this.accessibleNameRef = "";
59
- /**
60
- * Defines the value state of the component.
50
+ * Indicates whether the country selector is enabled.
61
51
  *
62
- * @default "Standard"
63
- * @public
52
+ * @default true
53
+ * @private
64
54
  */
65
- this.valueState = UDExValueState.Standard;
66
- this._open = false;
67
- this.countryList = CountryListDB;
68
- this._shouldFilterItems = false;
69
- this._handleResizeBound = this._handleResize.bind(this);
70
- this._filteredItems = [];
55
+ this._countrySelector = true;
56
+ this._countryList = CountryListDB;
71
57
  }
72
- onEnterDOM() {
73
- ResizeHandler.register(this, this._handleResizeBound);
74
- }
75
- onExitDOM() {
76
- ResizeHandler.deregister(this, this._handleResizeBound);
58
+ onAfterRendering() {
59
+ super.onAfterRendering();
60
+ this.handleOutsideClick();
77
61
  }
78
62
  onBeforeRendering() {
79
- if (this.blockedCountryCodes?.length) {
80
- const blockedCountryCodesArray = this.blockedCountryCodes.split(",").map(code => code.trim().toUpperCase());
81
- this.countryList = this.countryList.filter(country => !blockedCountryCodesArray?.includes(country.iso.toUpperCase()));
82
- }
83
- if (!this.selectedCountry) {
84
- this.selectedCountry = this.countryList.find(country => country.iso.toUpperCase() === this.preselectedCountry?.toUpperCase());
85
- }
63
+ super.onBeforeRendering();
64
+ this.filterBlockedCountries();
65
+ this.setPreselectedCountry();
86
66
  this.prepareCountrySelectorItems();
87
- if (!this._shouldFilterItems) {
88
- this._filteredItems = this.getProcessedItems();
89
- }
90
- }
91
- onAfterRendering() {
92
- this._dropdown = this.getDropdown();
93
- this._search = this.getSearch();
94
- this._trigger = this.getTrigger();
95
- }
96
- getTrigger() {
97
- return this.shadowRoot.querySelector("[udex-text-field]");
98
67
  }
99
- _dropdownClose() {
100
- this.fireDecoratorEvent("close");
101
- this._trigger.iconActive = false;
68
+ handleItemPress(e) {
69
+ this.handleItemSelection(e);
70
+ this.selectCountryByElement(e.target);
71
+ }
72
+ handleInputFocusIn() {
73
+ this.inputFocusIn();
74
+ }
75
+ handleInputFocusOut(e) {
76
+ const relatedTarget = e.relatedTarget;
77
+ const isInsideComponent = relatedTarget?.closest(`.${this._rootClass}`);
78
+ if (!isInsideComponent) {
79
+ this.closeDropdown();
80
+ this.resetSearchState();
81
+ this.updateImagePosition();
82
+ }
83
+ this._focused = false;
102
84
  }
103
- _dropdownOpen() {
104
- this.fireDecoratorEvent("open");
105
- this._trigger.iconActive = true;
85
+ handleKeyDownSearch(e) {
86
+ this.onKeyDownSearch(e);
106
87
  }
107
- _dropdownBeforeOpen() {
108
- this._open = true;
109
- this.onResetSearch();
110
- this.fireDecoratorEvent("before-open");
88
+ handleDropdownBeforeOpen() {
89
+ this.dropdownBeforeOpen();
111
90
  }
112
- _dropdownBeforeClose() {
91
+ handleDropdownClose() {
113
92
  this._open = false;
114
- this.fireDecoratorEvent("before-close");
115
- }
116
- get searchableList() {
117
- this.defaultAccessibleRole = "listbox";
118
- return executeTemplate(UDExCountrySelector_1.searchableListBaseTemplate, this);
119
- }
120
- static get searchableListBaseTemplate() {
121
- return SearchableListBaseTemplate;
93
+ this.fireEventDropdownClose();
122
94
  }
123
- _handleResize() {
124
- this._dropdown.style.setProperty("--udex-dropdown-pane-width", `${this._trigger.offsetWidth}px`);
125
- }
126
- handleCloseSearch() {
127
- this.getTextField()?.shadowRoot.querySelector("[udex-control-button]")?.focus();
128
- }
129
- handleItemPress(e) {
130
- this.onItemPress(e);
131
- const target = e.target;
132
- const item = this.getItemFromList(target?.getAttribute("data-token-id"));
133
- this.selectedCountry = this.countryList.find(country => country.iso === item._id);
134
- this.dropDownClose();
135
- }
136
- handleKeyPress(keyEvent) {
137
- const key = keyEvent.key;
138
- this._dropdown.open = true;
139
- this._search.focus();
140
- this._search.value = key;
141
- this.fireChangeSearch();
142
- }
143
- handleInputMouseDown(e) {
144
- e.preventDefault();
95
+ handleOutsideClick() {
96
+ document.addEventListener("click", (e) => {
97
+ if (e.target !== this) {
98
+ this._open = this._popover.open;
99
+ }
100
+ });
145
101
  }
146
- handleTriggerClick() {
147
- if (!this.isOpenerDisabled) {
148
- this._dropdown.opener = this.getTextField()._inputHolder;
149
- this._dropdown.open = !this._dropdown.open;
102
+ updateImagePosition() {
103
+ const imagePlaceholder = this.shadowRoot.querySelector(".udex-text-field__input > .udex-text-field__image");
104
+ if (imagePlaceholder) {
105
+ imagePlaceholder.style.backgroundPosition = this.selectedCountryFlagX || "";
150
106
  }
151
107
  }
152
- handleValueSearch(e) {
153
- this.onSearch(e);
154
- this.fireChangeSearch();
155
- }
156
- handleSubmitSearch() {
157
- this.onSubmitSearch();
158
- }
159
- handleKeyDownSearch(keyEvent) {
160
- const { detail: { e } } = keyEvent;
161
- if (isTabPrevious(e) || isEscape(e)) {
162
- e.preventDefault();
163
- this.dropDownClose();
164
- this.handleCloseSearch();
108
+ filterBlockedCountries() {
109
+ if (this.blockedCountryCodes?.length) {
110
+ const blockedCountryCodesArray = this.blockedCountryCodes.split(",").map(code => code.trim().toUpperCase());
111
+ this._countryList = this._countryList.filter(country => !blockedCountryCodesArray.includes(country.iso.toUpperCase()));
165
112
  }
166
113
  }
167
- handleKeyDownDropdown(e) {
168
- if ((isTabNext(e) && (e.target !== this._search || this.isListEmpty))) {
169
- this.dropDownClose();
114
+ setPreselectedCountry() {
115
+ if (!this._selectedCountry && this.preselectedCountry) {
116
+ const preselectedISO = this.preselectedCountry.toUpperCase();
117
+ this._selectedCountry = this._countryList.find(({ iso }) => iso.toUpperCase() === preselectedISO);
170
118
  }
171
119
  }
172
- dropDownClose() {
173
- this._dropdown.open = false;
174
- }
175
- handleResetSearch() {
176
- this.onResetSearch();
120
+ selectCountryByElement(el) {
121
+ const tokenId = el?.getAttribute("data-token-id") || "";
122
+ const itemObj = this.getItemFromList(tokenId);
123
+ this._selectedCountry = this._countryList.find(country => country.iso === itemObj?._id);
124
+ this._selectedOption = this.selectedCountryName || "";
177
125
  }
178
126
  prepareCountrySelectorItems() {
179
127
  this.items.length = 0;
180
- this.countryList.forEach(country => {
181
- const selected = country.iso.toUpperCase() === this.selectedCountry?.iso.toUpperCase();
128
+ this._countryList.forEach(country => {
129
+ const selected = country.iso.toUpperCase() === this._selectedCountry?.iso.toUpperCase();
182
130
  this.items.push({
183
131
  label: this.getCountryLabel(country.countryName, country.localName),
184
132
  innerHTML: this.getItemTemplate(country),
@@ -187,186 +135,62 @@ let UDExCountrySelector = UDExCountrySelector_1 = class UDExCountrySelector exte
187
135
  });
188
136
  });
189
137
  }
190
- fireChangeSearch() {
191
- this.fireDecoratorEvent("change-search", { value: this._search.value });
192
- }
193
138
  getItemTemplate(country) {
194
- return this.hideFlagImages ? undefined : `<span class="udex-country-selector-item__image" style="background-position:${country.flagX}">`;
139
+ return this.hideFlagImages ? undefined : `<span class="udex-text-field__image" style="background-position:${country.flagX}">`;
195
140
  }
196
141
  getCountryLabel(countryName, localName) {
197
142
  return localName ? `${countryName} (${localName})` : countryName || null;
198
143
  }
199
- get ariaControls() {
200
- const list = this.shadowRoot.querySelector("[udex-list]");
201
- return list?.getAttribute("id");
202
- }
203
- get selectedCountryFlagX() {
204
- return this.selectedCountry?.flagX;
205
- }
206
- get selectedCountryFlagY() {
207
- return this.selectedCountry?.flagY;
208
- }
209
144
  get selectedCountryName() {
210
- return this.selectedCountry ? this.getCountryLabel(this.selectedCountry.countryName, this.selectedCountry.localName) : "";
145
+ return this._selectedCountry ? this.getCountryLabel(this._selectedCountry.countryName, this._selectedCountry.localName) : "";
211
146
  }
212
147
  get flagAriaLabel() {
213
- return this.getCountryLabel(this.selectedCountry?.countryName, this.selectedCountry?.localName) || "None";
148
+ return this.getCountryLabel(this._selectedCountry?.countryName, this._selectedCountry?.localName) || "None";
214
149
  }
215
- get triggerIcon() {
216
- if (!this.displayonly) {
217
- return this._open ? "navigation-up-arrow" : "navigation-down-arrow";
218
- }
219
- }
220
- get countrySelectorClasses() {
221
- const baseClass = "udex-country-selector__dropdown";
222
- return this.hideFlagImages ? `${baseClass} ${baseClass}--hide-flag` : baseClass;
223
- }
224
- get countrySelectorTriggerClasses() {
225
- const baseClass = "udex-country-selector__trigger";
226
- const classes = [baseClass];
227
- if (this.disabled) {
228
- classes.push(`${baseClass}--disabled`);
229
- }
230
- if (this.readonly) {
231
- classes.push(`${baseClass}--readonly`);
232
- }
233
- if (this.displayonly) {
234
- classes.push(`${baseClass}--displayonly`);
235
- }
236
- return classes.join(" ");
237
- }
238
- get showFlagImages() {
239
- return !this.hideFlagImages;
240
- }
241
- get isOpenerDisabled() {
242
- return this.readonly || this.displayonly || this.disabled;
243
- }
244
- getSearch() {
245
- return this.shadowRoot.querySelector("[udex-search]");
246
- }
247
- getDropdownPopover() {
248
- return this._dropdown.shadowRoot.querySelector("[ui5-popover]");
249
- }
250
- getDropdown() {
251
- return this.shadowRoot.querySelector("[udex-dropdown]");
150
+ get selectedCountryFlagX() {
151
+ return this._selectedCountry?.flagX;
252
152
  }
253
- getTextField() {
254
- return this.shadowRoot.querySelector("[udex-text-field]");
153
+ get selectedCountryFlagY() {
154
+ return this._selectedCountry?.flagY;
255
155
  }
256
- get effectiveAriaLabel() {
257
- return this.label || this.accessibleName || UDExCountrySelector_1.i18nBundle.getText(COUNTRY_SELECT);
156
+ get showImageFlags() {
157
+ return true;
258
158
  }
259
159
  };
260
- __decorate([
261
- property({ type: String })
262
- ], UDExCountrySelector.prototype, "label", void 0);
263
- __decorate([
264
- property()
265
- ], UDExCountrySelector.prototype, "accessibleName", void 0);
266
- __decorate([
267
- property()
268
- ], UDExCountrySelector.prototype, "accessibleNameRef", void 0);
269
- __decorate([
270
- property({ type: Boolean })
271
- ], UDExCountrySelector.prototype, "required", void 0);
272
- __decorate([
273
- property({ type: String })
274
- ], UDExCountrySelector.prototype, "height", void 0);
275
- __decorate([
276
- property({ type: Boolean })
277
- ], UDExCountrySelector.prototype, "disabled", void 0);
278
- __decorate([
279
- property({ type: Boolean })
280
- ], UDExCountrySelector.prototype, "readonly", void 0);
281
- __decorate([
282
- property({ type: Boolean })
283
- ], UDExCountrySelector.prototype, "displayonly", void 0);
284
160
  __decorate([
285
161
  property({ type: String })
286
162
  ], UDExCountrySelector.prototype, "preselectedCountry", void 0);
287
163
  __decorate([
288
164
  property({ type: String })
289
165
  ], UDExCountrySelector.prototype, "blockedCountryCodes", void 0);
290
- __decorate([
291
- property({ type: String })
292
- ], UDExCountrySelector.prototype, "searchPlaceholder", void 0);
293
- __decorate([
294
- property()
295
- ], UDExCountrySelector.prototype, "valueState", void 0);
296
- __decorate([
297
- property({ type: String })
298
- ], UDExCountrySelector.prototype, "supportingText", void 0);
299
166
  __decorate([
300
167
  property({ type: Boolean })
301
168
  ], UDExCountrySelector.prototype, "hideFlagImages", void 0);
302
169
  __decorate([
303
170
  property({ type: Boolean })
304
- ], UDExCountrySelector.prototype, "_open", void 0);
305
- UDExCountrySelector = UDExCountrySelector_1 = __decorate([
171
+ ], UDExCountrySelector.prototype, "_countrySelector", void 0);
172
+ UDExCountrySelector = __decorate([
306
173
  customElement({
307
174
  tag: "udex-country-selector",
308
175
  renderer: litRender,
309
- styles: CountrySelectorCss,
310
- template: CountrySelectorTemplate,
176
+ styles: [
177
+ TextFieldCss,
178
+ SelectBaseCss,
179
+ CountrySelectorCss,
180
+ SearchableListCss,
181
+ getEffectiveScrollbarStyle(),
182
+ ],
183
+ template: SelectBoxTemplate,
311
184
  dependencies: [
312
- Search,
313
- Button,
185
+ UI5Button,
314
186
  UDExList,
187
+ UDExSearch,
315
188
  UDExListItem,
316
189
  UDExDropdown,
317
190
  UDExTextField,
318
- StatusMessage,
191
+ UDExStatusMessage,
319
192
  ],
320
193
  })
321
- /**
322
- * Fired before the dropdown pane is opened.
323
- *
324
- * @public
325
- */
326
- ,
327
- event("before-open", { bubbles: true })
328
- /**
329
- * Fired after the dropdown pane is opened.
330
- *
331
- * @public
332
- */
333
- ,
334
- event("open", { bubbles: true })
335
- /**
336
- * Fired before the dropdown pane is closed.
337
- *
338
- * @public
339
- */
340
- ,
341
- event("before-close", { bubbles: true })
342
- /**
343
- * Fired after the dropdown pane is closed.
344
- *
345
- * @public
346
- */
347
- ,
348
- event("close", { bubbles: true })
349
- /**
350
- * Fired event when the user submitted the value in the search.
351
- *
352
- * @public
353
- */
354
- ,
355
- event("change-search", { bubbles: true })
356
- /**
357
- * Fired event when the user clicks on the reset button in the search.
358
- *
359
- * @public
360
- */
361
- ,
362
- event("reset-search", { bubbles: true })
363
- /**
364
- * Fired event when the user clicks on the submitted icon in the search.
365
- *
366
- * @public
367
- */
368
- ,
369
- event("submit-search", { bubbles: true })
370
194
  ], UDExCountrySelector);
371
195
  UDExCountrySelector.define();
372
196
  export default UDExCountrySelector;