@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
@@ -0,0 +1,353 @@
1
+ import type UDExSearch from "./Search.js";
2
+ import type { SuggestionList } from "./Search.js";
3
+ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
4
+ import search from "@ui5/webcomponents-icons/dist/search.js";
5
+ import decline from "@ui5/webcomponents-icons/dist/decline.js";
6
+ import microphone from "@ui5/webcomponents-icons/dist/microphone.js";
7
+ import UDExButton from "./Button.js";
8
+ import UDExButtonDesign from "./types/ButtonDesign.js";
9
+ import UDExButtonSize from "./types/ButtonSize.js";
10
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
11
+ import UI5IconMode from "@ui5/webcomponents/dist/types/IconMode.js";
12
+ import UI5Popover from "@ui5/webcomponents/dist/Popover.js";
13
+ import UI5PopoverPlacement from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
14
+ import UI5PopoverHAlign from "@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js";
15
+ import UDExControlButton from "./ControlButton.js";
16
+ import UDExControlButtonDesign from "./types/ControlButtonDesign.js";
17
+ import UI5Button from "@ui5/webcomponents/dist/Button.js";
18
+ import UI5ButtonDesign from "@ui5/webcomponents/dist/types/ButtonDesign.js";
19
+
20
+ export default function SearchTemplate(this: UDExSearch) {
21
+ return (
22
+ <>
23
+ <div class={`udex-search__root ${this.searchClasses}`}>
24
+ { this.isShowSearchHomePrefix ? renderSearchHomePrefix.call(this) : "" }
25
+
26
+ <form role="search" class={`udex-search__container ${this.focusClasses} ${this.isNotEmptyClass}`}>
27
+ { this.labelAnimationDisabled ? renderInputWithStaticLabel.call(this) : renderInputWithAnimatedLabel.call(this) }
28
+
29
+ {
30
+ this.open ? (
31
+ <span
32
+ aria-live="polite"
33
+ aria-atomic="true"
34
+ id="search-description"
35
+ class="hidden"
36
+ aria-hidden="true"
37
+ >
38
+ {this.suggestionsDescription}
39
+ </span>
40
+ ) : ""
41
+ }
42
+
43
+ <div class="udex-search__icons">
44
+ {
45
+ this.isShowHomeResetButton ? (
46
+ <UDExButton
47
+ id="reset-button"
48
+ class="udex-search__button udex-search__reset-button"
49
+ size={UDExButtonSize.Small}
50
+ design={UDExButtonDesign.Default}
51
+ tooltip={this.tooltipInfo.tooltipResetButton}
52
+ onClick={this.onReset as any}
53
+ onKeyDown={this.handleKeyDownReset}
54
+ >
55
+ <UI5Icon
56
+ class="udex-search__button-icon"
57
+ accessible-name={this.accInfo.accessibleNameResetIcon}
58
+ accessible-role="presentation"
59
+ name={decline}
60
+ ></UI5Icon>
61
+ </UDExButton>
62
+ ) : ""
63
+ }
64
+
65
+ {
66
+ this.isShowResetButton ? (
67
+ <UDExControlButton
68
+ id="reset-button"
69
+ class="udex-search__reset-button"
70
+ design={UDExControlButtonDesign.Default}
71
+ tooltip={this.tooltipInfo.tooltipResetButton}
72
+ icon={decline}
73
+ size={UDExButtonSize.Large}
74
+ accessible-name={this.accInfo.accessibleNameResetIcon}
75
+ onClick={this.onReset as any}
76
+ onKeyDown={this.handleKeyDownReset}
77
+ ></UDExControlButton>
78
+ ) : ""
79
+ }
80
+
81
+ {
82
+ this.isVoiceButton ? (
83
+ <UDExButton
84
+ id="voice-button"
85
+ class={`udex-search__button udex-search__voice-button ${this.voiceActiveClass}`}
86
+ design={UDExButtonDesign.Default}
87
+ size={UDExButtonSize.Small}
88
+ icon={microphone}
89
+ tooltip={this.tooltipInfo.tooltipVoiceButton}
90
+ onClick={this.onVoice as any}
91
+ ></UDExButton>
92
+ ) : ""
93
+ }
94
+
95
+ {
96
+ this.showNonInteractiveButton ? (
97
+ <UI5Icon
98
+ class="udex-search__icon"
99
+ aria-hidden="true"
100
+ accessible-name={this.accInfo.accessibleNameSearchIcon}
101
+ name={search}
102
+ ></UI5Icon>
103
+ ) : ""
104
+ }
105
+
106
+ {
107
+ this.showSubmitHomeButton ? (
108
+ <UDExButton
109
+ id="submit-button"
110
+ class={`udex-search__button udex-search__submit-button ${this.searchButtonActiveClass}`}
111
+ design={UDExButtonDesign.Default}
112
+ icon={search}
113
+ size={UDExButtonSize.Small}
114
+ tooltip={this.tooltipInfo.tooltipSubmitButton}
115
+ onClick={this.onSubmit as any}
116
+ ></UDExButton>
117
+ ) : ""
118
+ }
119
+
120
+ {
121
+ this.showSubmitStandardButton ? (
122
+ <UDExControlButton
123
+ id="submit-button"
124
+ class="udex-search__submit-button"
125
+ size={UDExButtonSize.Large}
126
+ design={UDExControlButtonDesign.Default}
127
+ icon={search}
128
+ tooltip={this.tooltipInfo.tooltipSubmitButton}
129
+ onClick={this.onSubmit as any}
130
+ ></UDExControlButton>
131
+ ) : ""
132
+ }
133
+ </div>
134
+ </form>
135
+ </div>
136
+
137
+ { renderSearchSuggestionPopover.call(this) }
138
+ </>
139
+ );
140
+ }
141
+
142
+ function renderSearchHomePrefix(this: UDExSearch) {
143
+ return (
144
+ <div class={`udex-search__prefix ${this.prefixWrapperClasses}`}>
145
+ <button
146
+ type="button"
147
+ role="combobox"
148
+ aria-expanded={this._prefixDropdownExpanded}
149
+ aria-label={this.labelPrefix}
150
+ aria-haspopup="true"
151
+ aria-controls="udex-search-prefix"
152
+ class="udex-search__prefix-button"
153
+ onClick={this.handleDropdownClick}
154
+ >
155
+ <span class="udex-search__prefix-label">{this.labelPrefix}</span>
156
+ <UI5Icon
157
+ class="udex-search__prefix-icon"
158
+ name={slimArrowDown}
159
+ mode={UI5IconMode.Decorative}
160
+ ></UI5Icon>
161
+ </button>
162
+
163
+ <UI5Popover
164
+ id="udex-search-prefix"
165
+ class={this.prefixPopoverClasses}
166
+ hide-arrow
167
+ placement={UI5PopoverPlacement.Bottom}
168
+ horizontal-align={UI5PopoverHAlign.Start}
169
+ style={this.prefixPopoverStyles}
170
+ onClose={this.handleAfterClosePrefixPopover}
171
+ >
172
+ <slot></slot>
173
+ </UI5Popover>
174
+ </div>
175
+ );
176
+ }
177
+
178
+ function renderSearchInput(this: UDExSearch, placeholder: boolean = false) {
179
+ return (
180
+ <input
181
+ role="searchbox"
182
+ id="search-input"
183
+ type="search"
184
+ name="search"
185
+ class="udex-search__field"
186
+ autocomplete="off"
187
+ aria-autocomplete="list"
188
+ aria-haspopup={this.getAriaHasPopup}
189
+ aria-label={this.accInfo.ariaLabel}
190
+ aria-describedby="search-description"
191
+ {...(placeholder ? { placeholder: this.effectivePlaceholder } : {})}
192
+ value={this.value}
193
+ onInput={this.handleSearchChange}
194
+ onKeyDown={this.handleKeyDown}
195
+ onFocus={this.handleFocus}
196
+ onFocusOut={this.handleFocusout}
197
+ onBlur={this.handleBlur}
198
+ onClick={this.handleInputClick}
199
+ />
200
+ );
201
+ }
202
+
203
+ function renderInputWithStaticLabel(this: UDExSearch) {
204
+ return renderSearchInput.call(this, true);
205
+ }
206
+
207
+ function renderInputWithAnimatedLabel(this: UDExSearch) {
208
+ return (
209
+ <>
210
+ {
211
+ this.label ? (
212
+ <label for="search-input" class={this.labelClasses}>
213
+ {this.label}
214
+ </label>
215
+ ) : ""
216
+ }
217
+
218
+ { renderSearchInput.call(this, false) }
219
+ </>
220
+ );
221
+ }
222
+
223
+ function renderSearchSuggestionPopover(this: UDExSearch) {
224
+ return (
225
+ <UI5Popover
226
+ class={`udex-search-suggestions__root ${this.homeSearchPopoverClass}`}
227
+ hide-arrow
228
+ prevent-initial-focus
229
+ placement={UI5PopoverPlacement.Bottom}
230
+ horizontal-align={UI5PopoverHAlign.End}
231
+ style={this.popoverStyles}
232
+ id={this.getSuggestionsPopoverId}
233
+ aria-orientation="vertical"
234
+ accessible-role="Dialog"
235
+ onKeyDown={this.handleKeyPressSuggestionList}
236
+ accessible-name={this.suggestionsAccessibleName}
237
+ >
238
+ {
239
+ this.showNoResultMessage ? (
240
+ <span class="udex-search-suggestions__message">{this.noResultMessage}</span>
241
+ ) : renderSearchSuggestionPopoverResults.call(this)
242
+ }
243
+ </UI5Popover>
244
+ );
245
+ }
246
+
247
+ function renderSearchSuggestionPopoverResults(this: UDExSearch) {
248
+ return (
249
+ <div role="tree">
250
+ {
251
+ this.isShowSuggestedList ? (
252
+ renderSearchSuggestionPopoverResultsSuggestedList.call(this)
253
+ ) : ""
254
+ }
255
+
256
+ {
257
+ this.isShowRecommendedList ? (
258
+ renderSearchSuggestionPopoverResultsRecommendedList.call(this)
259
+ ) : ""
260
+ }
261
+ </div>
262
+ );
263
+ }
264
+
265
+ function renderSearchSuggestionPopoverResultsSuggestedList(this: UDExSearch) {
266
+ return (
267
+ <div class="udex-search-suggestions__block" role="treeitem">
268
+ {
269
+ this.suggestedHeading ? (
270
+ <span class="udex-search-suggestions__heading" id="suggested-heading">
271
+ {this.suggestedHeading}
272
+ </span>
273
+ ) : ""
274
+ }
275
+
276
+ <div class="udex-search-suggestions__list"
277
+ role="listbox"
278
+ aria-labelledby="suggested-heading"
279
+ tabindex={0}
280
+ onKeyDown={this.handleKeyDownPopover}
281
+ >
282
+ {
283
+ this.suggestedList.map((item, i) => (
284
+ <UI5Button
285
+ key={i}
286
+ id={item.id}
287
+ icon={item.icon}
288
+ type="Button"
289
+ design={UI5ButtonDesign.Default}
290
+ accessible-name={item.suggestionDescription}
291
+ class="udex-search-suggestions__item-button"
292
+ title={item.title}
293
+ tabindex={-1}
294
+ role="option"
295
+ onClick={item.handleSelectItem}
296
+ dangerouslySetInnerHTML={{ __html: item.text }}
297
+ ></UI5Button>
298
+ ))
299
+ }
300
+ </div>
301
+ </div>
302
+ );
303
+ }
304
+
305
+ function renderSearchSuggestionPopoverResultsRecommendedList(this: UDExSearch) {
306
+ return (
307
+ <div class="udex-search-suggestions__block" role="treeitem">
308
+ {
309
+ this.recommendedHeading ? (
310
+ <span class="udex-search-suggestions__heading" id="recommended-heading">
311
+ {this.recommendedHeading}
312
+ </span>
313
+ ) : ""
314
+ }
315
+
316
+ <div class="udex-search-suggestions__list"
317
+ role="listbox"
318
+ aria-labelledby="recommended-heading"
319
+ tabindex={0}
320
+ onKeyDown={this.handleKeyDownPopover}
321
+ >
322
+ {
323
+ this.recommendedList.map((item, i) => (
324
+ item.hasCustomIcon ? (
325
+ renderSearchSuggestionPopoverResultsRecommendedListButton(item, i, item.icon)
326
+ ) : (
327
+ renderSearchSuggestionPopoverResultsRecommendedListButton(item, i)
328
+ )
329
+ ))
330
+ }
331
+ </div>
332
+ </div>
333
+ );
334
+ }
335
+
336
+ function renderSearchSuggestionPopoverResultsRecommendedListButton(button: SuggestionList, key: number, icon: string | undefined = undefined) {
337
+ return (
338
+ <UI5Button
339
+ key={key}
340
+ id={button.id}
341
+ {...(icon ? { "icon": icon } : {})}
342
+ type="Button"
343
+ design={UI5ButtonDesign.Default}
344
+ class="udex-search-suggestions__item-button"
345
+ accessible-name={button.suggestionDescription}
346
+ title={button.title}
347
+ tabindex={-1}
348
+ role="option"
349
+ onClick={button.handleSelectItem}
350
+ dangerouslySetInnerHTML={{ __html: button.text }}
351
+ ></UI5Button>
352
+ );
353
+ }
@@ -3,16 +3,17 @@ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
5
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
6
+ import { cleanLabel } from "./utils/listItemLabelUtils.js";
7
+ import { UDExListMode } from "./types/List.js";
6
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
9
  import type Popover from "@ui5/webcomponents/dist/Popover.js";
8
- import { isDown, isUp } from "@ui5/webcomponents-base/dist/Keys.js";
9
- import { cleanLabel } from "./utils/listItemLabelUtils.js";
10
+ import type { UDExProcessedItem } from "./types/SearchableListBase.js";
10
11
  import type UDExSearch from "./Search.js";
11
12
  import type UDExListItemBase from "./ListItemBase.js";
12
13
  import type UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
13
- import { UDExListMode } from "./types/List.js";
14
+ import type UDExList from "./List.js";
15
+ import type UDExListItem from "./ListItem.js";
14
16
  import type UDExFilterMenuItem from "./FilterMenuItem.js";
15
- import type { UDExProcessedItem } from "./types/SearchableListBase.js";
16
17
  import { SHOW_SEARCH_AFTER_COUNT, UDExPopoverPart } from "./types/SearchableListBase.js";
17
18
  import { NO_MATCHES_FOUND, RESULT_RETURNED } from "./generated/i18n/i18n-defaults.js";
18
19
 
@@ -49,7 +50,7 @@ export type UDExSearchableListBaseEvents = {
49
50
  * @class
50
51
  *
51
52
  * A class to serve as a foundation
52
- * for the <code>UDExFilterMenu</code> , <code>UDExSelectBox</code> and <code>UDExCountrySelector/code> classes.
53
+ * for the <code>UDExFilterMenu</code> and <code>UDExSelectBox</code> classes.
53
54
  *
54
55
  * @constructor
55
56
  * @author SAP SE
@@ -59,8 +60,12 @@ export type UDExSearchableListBaseEvents = {
59
60
 
60
61
  /**
61
62
  * Fired event when the user click on an item on the list.
62
- *
63
+ * @param {Array<UDExListItemBase>} selectedItems The selected items.
64
+ * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.
63
65
  * @public
66
+ * @param {Array<UDExListItemBase>} selectedItems The selected items.
67
+ * @param {UDExListItemBase | UDExListGroupHeaderBase | null | undefined} item The clicked item.
68
+ *
64
69
  */
65
70
  @event("selection-change", { bubbles: true })
66
71
 
@@ -73,8 +78,10 @@ export type UDExSearchableListBaseEvents = {
73
78
 
74
79
  /**
75
80
  * Fired event when the user clicks on the submitted icon in the search.
76
- *
81
+ * @param {Array<UDExListItemBase>} selectedItems The selected items.
77
82
  * @public
83
+ * @param {Array<UDExListItemBase>} selectedItems The selected items.
84
+ *
78
85
  */
79
86
  @event("submit-search", { bubbles: true })
80
87
 
@@ -87,22 +94,29 @@ export type UDExSearchableListBaseEvents = {
87
94
 
88
95
  /**
89
96
  * Fired event when the user submitted the value in the search.
90
- *
97
+ * @param {string} value The search value.
91
98
  * @public
99
+ * @param {string} value The search value.
92
100
  */
93
101
  @event("change-search", { bubbles: true })
94
102
 
95
103
  /**
96
104
  * Fired event when the user clicks on the first icon.
97
- *
105
+ * @param { PointerEvent } originalEvent The original event object
106
+ * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item
98
107
  * @public
108
+ * @param { PointerEvent } originalEvent The original event object
109
+ * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item
99
110
  */
100
111
  @event("first-icon-click", { bubbles: true })
101
112
 
102
113
  /**
103
114
  * Fired event when the user clicks on the second icon.
104
- *
115
+ * @param { PointerEvent } originalEvent The original event object
116
+ * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item
105
117
  * @public
118
+ * @param { PointerEvent } originalEvent The original event object
119
+ * @param { UDExListItemBase | UDExListGroupHeaderBase | null | undefined } item The list item
106
120
  */
107
121
  @event("second-icon-click", { bubbles: true })
108
122
 
@@ -215,7 +229,7 @@ class UDExSearchableListBase extends UI5Element {
215
229
  items!: Array<UDExListItemBase | UDExListGroupHeaderBase>;
216
230
 
217
231
  /**
218
- * Defines the default accessible role for the list componnet.
232
+ * Defines the default accessible role for the list component.
219
233
  *
220
234
  * @default "list"
221
235
  * @public
@@ -223,6 +237,12 @@ class UDExSearchableListBase extends UI5Element {
223
237
  @property({ type: String })
224
238
  defaultAccessibleRole: string = "list";
225
239
 
240
+ /**
241
+ * Defines the filtered items for the component.
242
+ *
243
+ * @default []
244
+ * @private
245
+ */
226
246
  @property({ type: Object })
227
247
  _filteredItems!: Array<UDExProcessedItem>;
228
248
 
@@ -245,16 +265,11 @@ class UDExSearchableListBase extends UI5Element {
245
265
  }
246
266
 
247
267
  onItemPress(e:CustomEvent) {
248
- const dropdownItemId: string = this.getDataTokenId(e);
268
+ const dropdownItemId: string = this.getDataTokenId(e.detail.item as UDExListItemBase);
249
269
  this.handleDropdownItemPress(dropdownItemId);
250
270
  this.fireSelectionChange(dropdownItemId);
251
271
  }
252
272
 
253
- activateHeaderAndSetAllItems(item: UDExListGroupHeaderBase) {
254
- item.activateHeader();
255
- item.setAllItems(false);
256
- }
257
-
258
273
  handleDropdownItemPress(dropdownItemId: string) {
259
274
  this.getProcessedItems().forEach(({ item, groupItems, isGroup }) => {
260
275
  if (isGroup) {
@@ -291,28 +306,31 @@ class UDExSearchableListBase extends UI5Element {
291
306
  }
292
307
 
293
308
  onHeaderPress(e:CustomEvent) {
294
- this.handleGroupHeaderSelection(e);
309
+ const item = e.detail.item as UDExListItemBase;
310
+ const id = this.getDataTokenId(item);
311
+ this.handleGroupHeaderSelection(id);
295
312
  this.syncFilteredItems();
296
- this.fireSelectionChange(this.getDataTokenId(e));
313
+ this.fireSelectionChange(id);
297
314
  }
298
315
 
299
316
  onSelectAllHeaderPress(e:CustomEvent) {
300
- this.handleGroupHeaderSelection(e);
317
+ const item = e.detail.item as UDExListItemBase;
318
+ const id = this.getDataTokenId(item);
319
+ this.handleGroupHeaderSelection(id);
301
320
  this.syncFilteredItems();
302
321
  this.fireDecoratorEvent("select-all");
303
322
  }
304
323
 
305
- handleGroupHeaderSelection(e: CustomEvent): void {
306
- const headerItemId = this.getDataTokenId(e);
324
+ handleGroupHeaderSelection(id: string): void {
307
325
  this.getProcessedItems().forEach(({ item }) => {
308
- if (item._id === headerItemId) {
326
+ if (item._id === id) {
309
327
  (item as UDExListGroupHeaderBase).handleSelectionGroupState();
310
328
  }
311
329
  });
312
330
  }
313
331
 
314
- onSearch(e:CustomEvent) {
315
- const searchValue: string = e.detail.value;
332
+ onSearch(value: string) {
333
+ const searchValue: string = value;
316
334
  this._shouldFilterItems = true;
317
335
  this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);
318
336
  const items = this.getFlattenItemsArray(this._filteredItems);
@@ -403,15 +421,6 @@ class UDExSearchableListBase extends UI5Element {
403
421
  }
404
422
  }
405
423
 
406
- handleKeyDown(e: KeyboardEvent) {
407
- if (isUp(e)) {
408
- this.handlePreviousItemFocus(e);
409
- }
410
- if (isDown(e)) {
411
- this.handleNextListItemFocus(e);
412
- }
413
- }
414
-
415
424
  getSlottedItems(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<UDExListItemBase | UDExListGroupHeaderBase> {
416
425
  const arr: Array<UDExListItemBase | UDExListGroupHeaderBase> = [];
417
426
  items.forEach(item => {
@@ -452,31 +461,6 @@ class UDExSearchableListBase extends UI5Element {
452
461
  });
453
462
  }
454
463
 
455
- // moves focus to next list item
456
- handlePreviousItemFocus(e: KeyboardEvent) {
457
- const item = e.target as HTMLElement;
458
- const listItems = this.getDomListItems();
459
- const currentSelectIndex = this.getCurrentIndex(item);
460
- const previousSelectIndex = currentSelectIndex - 1;
461
- if (currentSelectIndex > 0) {
462
- e.preventDefault();
463
- (listItems[previousSelectIndex] as HTMLElement).focus();
464
- }
465
- }
466
-
467
- // moves focus to previous list item
468
- handleNextListItemFocus(e: KeyboardEvent) {
469
- const item = e.target as HTMLElement;
470
- const listItems = this.getDomListItems();
471
- const lastItemIndex = listItems.length - 1;
472
- const currentSelectIndex = this.getCurrentIndex(item);
473
- const nextSelectIndex = currentSelectIndex + 1;
474
- if (nextSelectIndex <= lastItemIndex) {
475
- e.preventDefault();
476
- (listItems[nextSelectIndex] as HTMLElement).focus();
477
- }
478
- }
479
-
480
464
  fireFirstIconClickEvent(e: CustomEvent): void {
481
465
  this._fireIconClickEvent("first-icon-click", e);
482
466
  }
@@ -486,7 +470,8 @@ class UDExSearchableListBase extends UI5Element {
486
470
  }
487
471
 
488
472
  private _fireIconClickEvent(eventName: "first-icon-click" | "second-icon-click", e: CustomEvent): void {
489
- const id = this.getDataTokenId(e);
473
+ const item = e.detail.item as UDExListItemBase;
474
+ const id = this.getDataTokenId(item);
490
475
  this.fireDecoratorEvent(eventName, {
491
476
  originalEvent: e.detail.originalEvent,
492
477
  item: this.getItemFromList(id),
@@ -505,47 +490,44 @@ class UDExSearchableListBase extends UI5Element {
505
490
  });
506
491
  }
507
492
 
508
- getCurrentIndex(item: Element): number {
493
+ getCurrentIndex(item: UDExListItem): number {
509
494
  return this.getDomListItems().indexOf(item);
510
495
  }
511
496
 
512
- getSearch(): UDExSearch {
513
- return this.shadowRoot!.querySelector<UDExSearch>("[udex-search]")!;
497
+ getList(): UDExList {
498
+ return this.shadowRoot!.querySelector<UDExList>("[udex-list]")!;
499
+ }
500
+
501
+ getSearch(): UDExSearch | HTMLInputElement {
502
+ return this.shadowRoot!.querySelector<UDExSearch>("[udex-search]")! || this.shadowRoot!.querySelector<HTMLInputElement>(".udex-text-field__search")!;
514
503
  }
515
504
 
516
505
  getPopover(): Popover {
517
506
  return this.shadowRoot!.querySelector<Popover>("[ui5-popover]")!;
518
507
  }
519
508
 
520
- getDomListItems(): Element[] {
509
+ getDomListItems(): UDExListItem[] {
521
510
  const elementList = this.shadowRoot!.querySelector("[udex-list]") as HTMLElement;
522
511
  return elementList ? Array.from(elementList.querySelectorAll("[udex-list-item]")) : [];
523
512
  }
524
513
 
525
- setItemsModeAndControl(items: Array<UDExFilterMenuItem>) {
526
- items.forEach(item => {
527
- item.mode = this.mode;
528
- item.controlled = this.isControlled;
529
- });
530
- }
531
-
532
- getDataTokenId(e:CustomEvent): string {
533
- return e.detail.item.getAttribute("data-token-id") as string;
514
+ getDataTokenId(item: UDExListItemBase): string {
515
+ return item.getAttribute("data-token-id") as string;
534
516
  }
535
517
 
536
518
  getProcessedItems(): Array<UDExProcessedItem> {
537
519
  return this.items.map(item => {
538
- if (item.isGroup) {
539
- const groupItems = (item as UDExListGroupHeaderBase).getItems();
540
- this.setItemsModeAndControl(groupItems);
520
+ const isGroup = item.isGroup;
521
+ const groupItems = isGroup ? (item as UDExListGroupHeaderBase).getItems() : [];
522
+
523
+ if (isGroup) {
524
+ this._setItemsModeAndControl(groupItems);
541
525
  }
526
+
542
527
  item.mode = this.mode;
543
528
  item.controlled = this.isControlled;
544
- return {
545
- item,
546
- groupItems: item.isGroup ? (item as UDExListGroupHeaderBase).getItems() : [],
547
- isGroup: item.isGroup,
548
- };
529
+
530
+ return { item, groupItems, isGroup };
549
531
  });
550
532
  }
551
533
 
@@ -563,6 +545,13 @@ class UDExSearchableListBase extends UI5Element {
563
545
  content.style.maxHeight = this.height || "";
564
546
  }
565
547
 
548
+ _setItemsModeAndControl(items: Array<UDExFilterMenuItem>) {
549
+ items.forEach(item => {
550
+ item.mode = this.mode;
551
+ item.controlled = this.isControlled;
552
+ });
553
+ }
554
+
566
555
  get getNoResultText(): string {
567
556
  const hasTextProperty = this.noResultText !== undefined && this.noResultText.length > 0;
568
557
  return hasTextProperty ? this.noResultText : this.noMatchesFoundText;
@@ -581,7 +570,8 @@ class UDExSearchableListBase extends UI5Element {
581
570
  }
582
571
 
583
572
  get selectedItems(): Array<UDExListItemBase> {
584
- return this.getSlottedItems(this.items).filter(({ selected }) => selected);
573
+ const selectedItems: Array<UDExListItemBase> = this.getSlottedItems(this.items).filter(({ selected }) => selected);
574
+ return selectedItems;
585
575
  }
586
576
 
587
577
  get modeMultiSelect(): boolean {
@@ -611,7 +601,8 @@ class UDExSearchableListBase extends UI5Element {
611
601
  }
612
602
 
613
603
  get showSearch(): boolean {
614
- return this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);
604
+ const isSearchVisible = this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);
605
+ return !this.hideDropdownSearch && isSearchVisible;
615
606
  }
616
607
 
617
608
  get isSearchActive(): boolean {
@@ -641,6 +632,10 @@ class UDExSearchableListBase extends UI5Element {
641
632
 
642
633
  return "none";
643
634
  }
635
+
636
+ get hideDropdownSearch(): boolean {
637
+ return false;
638
+ }
644
639
  }
645
640
 
646
641
  export default UDExSearchableListBase;