@ui5/webcomponents 2.13.0-rc.0 → 2.13.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/CheckBox.d.ts +22 -0
  4. package/dist/CheckBox.js +15 -2
  5. package/dist/CheckBox.js.map +1 -1
  6. package/dist/CheckBoxTemplate.js +3 -2
  7. package/dist/CheckBoxTemplate.js.map +1 -1
  8. package/dist/ComboBox.d.ts +23 -6
  9. package/dist/ComboBox.js +128 -54
  10. package/dist/ComboBox.js.map +1 -1
  11. package/dist/ComboBoxPopoverTemplate.js +0 -1
  12. package/dist/ComboBoxPopoverTemplate.js.map +1 -1
  13. package/dist/ComboBoxTemplate.js +2 -1
  14. package/dist/ComboBoxTemplate.js.map +1 -1
  15. package/dist/FileUploader.d.ts +55 -13
  16. package/dist/FileUploader.js +166 -48
  17. package/dist/FileUploader.js.map +1 -1
  18. package/dist/FileUploaderPopoverTemplate.js +1 -3
  19. package/dist/FileUploaderPopoverTemplate.js.map +1 -1
  20. package/dist/FileUploaderTemplate.js +7 -4
  21. package/dist/FileUploaderTemplate.js.map +1 -1
  22. package/dist/Input.d.ts +19 -5
  23. package/dist/Input.js +116 -17
  24. package/dist/Input.js.map +1 -1
  25. package/dist/InputTemplate.js +2 -1
  26. package/dist/InputTemplate.js.map +1 -1
  27. package/dist/List.d.ts +26 -1
  28. package/dist/List.js +27 -0
  29. package/dist/List.js.map +1 -1
  30. package/dist/ListItemBase.d.ts +8 -0
  31. package/dist/ListItemBase.js +15 -3
  32. package/dist/ListItemBase.js.map +1 -1
  33. package/dist/ListItemStandard.d.ts +12 -8
  34. package/dist/ListItemStandard.js +3 -8
  35. package/dist/ListItemStandard.js.map +1 -1
  36. package/dist/ListTemplate.js +1 -1
  37. package/dist/ListTemplate.js.map +1 -1
  38. package/dist/Menu.js +3 -7
  39. package/dist/Menu.js.map +1 -1
  40. package/dist/MenuItem.d.ts +6 -0
  41. package/dist/MenuItem.js +24 -6
  42. package/dist/MenuItem.js.map +1 -1
  43. package/dist/MenuItemGroup.d.ts +3 -0
  44. package/dist/MenuItemGroup.js +20 -2
  45. package/dist/MenuItemGroup.js.map +1 -1
  46. package/dist/MenuItemGroupTemplate.js +1 -1
  47. package/dist/MenuItemGroupTemplate.js.map +1 -1
  48. package/dist/MenuItemTemplate.js +1 -1
  49. package/dist/MenuItemTemplate.js.map +1 -1
  50. package/dist/MultiComboBox.d.ts +20 -1
  51. package/dist/MultiComboBox.js +120 -20
  52. package/dist/MultiComboBox.js.map +1 -1
  53. package/dist/MultiComboBoxItem.d.ts +4 -0
  54. package/dist/MultiComboBoxItem.js +5 -0
  55. package/dist/MultiComboBoxItem.js.map +1 -1
  56. package/dist/MultiComboBoxItemTemplate.js +1 -1
  57. package/dist/MultiComboBoxItemTemplate.js.map +1 -1
  58. package/dist/MultiComboBoxPopoverTemplate.js +1 -1
  59. package/dist/MultiComboBoxPopoverTemplate.js.map +1 -1
  60. package/dist/MultiComboBoxTemplate.js +2 -1
  61. package/dist/MultiComboBoxTemplate.js.map +1 -1
  62. package/dist/MultiInput.js +1 -1
  63. package/dist/MultiInput.js.map +1 -1
  64. package/dist/Select.js +2 -2
  65. package/dist/Select.js.map +1 -1
  66. package/dist/SplitButtonTemplate.js +1 -1
  67. package/dist/SplitButtonTemplate.js.map +1 -1
  68. package/dist/Table.js +1 -1
  69. package/dist/Table.js.map +1 -1
  70. package/dist/TableSelection.d.ts +4 -1
  71. package/dist/TableSelection.js +10 -4
  72. package/dist/TableSelection.js.map +1 -1
  73. package/dist/TableSelectionMulti.d.ts +4 -1
  74. package/dist/TableSelectionMulti.js +11 -4
  75. package/dist/TableSelectionMulti.js.map +1 -1
  76. package/dist/Token.js +2 -2
  77. package/dist/Token.js.map +1 -1
  78. package/dist/Tokenizer.js +4 -0
  79. package/dist/Tokenizer.js.map +1 -1
  80. package/dist/TokenizerPopoverTemplate.js +1 -1
  81. package/dist/TokenizerPopoverTemplate.js.map +1 -1
  82. package/dist/Toolbar.js +0 -3
  83. package/dist/Toolbar.js.map +1 -1
  84. package/dist/ToolbarButton.js +2 -0
  85. package/dist/ToolbarButton.js.map +1 -1
  86. package/dist/css/themes/Avatar.css +1 -1
  87. package/dist/css/themes/AvatarGroup.css +1 -1
  88. package/dist/css/themes/Bar.css +1 -1
  89. package/dist/css/themes/Breadcrumbs.css +1 -1
  90. package/dist/css/themes/BusyIndicator.css +1 -1
  91. package/dist/css/themes/Button.css +1 -1
  92. package/dist/css/themes/ButtonBadge.css +1 -1
  93. package/dist/css/themes/Calendar.css +1 -1
  94. package/dist/css/themes/CalendarHeader.css +1 -1
  95. package/dist/css/themes/CalendarLegend.css +1 -1
  96. package/dist/css/themes/CalendarLegendItem.css +1 -1
  97. package/dist/css/themes/Card.css +1 -1
  98. package/dist/css/themes/CardHeader.css +1 -1
  99. package/dist/css/themes/Carousel.css +1 -1
  100. package/dist/css/themes/CheckBox.css +1 -1
  101. package/dist/css/themes/ColorPalette.css +1 -1
  102. package/dist/css/themes/ColorPaletteItem.css +1 -1
  103. package/dist/css/themes/ColorPalettePopover.css +1 -1
  104. package/dist/css/themes/ColorPicker.css +1 -1
  105. package/dist/css/themes/ComboBox.css +1 -1
  106. package/dist/css/themes/ComboBoxItem.css +1 -1
  107. package/dist/css/themes/DatePicker.css +1 -1
  108. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  109. package/dist/css/themes/DayPicker.css +1 -1
  110. package/dist/css/themes/Dialog.css +1 -1
  111. package/dist/css/themes/DynamicDateRange.css +1 -1
  112. package/dist/css/themes/DynamicDateRangePopover.css +1 -1
  113. package/dist/css/themes/FileUploader.css +1 -1
  114. package/dist/css/themes/Form.css +1 -1
  115. package/dist/css/themes/FormItem.css +1 -1
  116. package/dist/css/themes/FormItemSpan.css +1 -1
  117. package/dist/css/themes/GrowingButton.css +1 -1
  118. package/dist/css/themes/Icon.css +1 -1
  119. package/dist/css/themes/Input.css +1 -1
  120. package/dist/css/themes/InputIcon.css +1 -1
  121. package/dist/css/themes/InputSharedStyles.css +1 -1
  122. package/dist/css/themes/Link.css +1 -1
  123. package/dist/css/themes/List.css +1 -1
  124. package/dist/css/themes/ListItem.css +1 -1
  125. package/dist/css/themes/ListItemBase.css +1 -1
  126. package/dist/css/themes/ListItemCustom.css +1 -1
  127. package/dist/css/themes/ListItemGroup.css +1 -1
  128. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  129. package/dist/css/themes/ListItemIcon.css +1 -1
  130. package/dist/css/themes/Menu.css +1 -1
  131. package/dist/css/themes/MenuItem.css +1 -1
  132. package/dist/css/themes/MessageStrip.css +1 -1
  133. package/dist/css/themes/MonthPicker.css +1 -1
  134. package/dist/css/themes/MultiComboBox.css +1 -1
  135. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  136. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  137. package/dist/css/themes/MultiInput.css +1 -1
  138. package/dist/css/themes/OptionBase.css +1 -1
  139. package/dist/css/themes/Panel.css +1 -1
  140. package/dist/css/themes/Popover.css +1 -1
  141. package/dist/css/themes/PopupsCommon.css +1 -1
  142. package/dist/css/themes/ProgressIndicator.css +1 -1
  143. package/dist/css/themes/RadioButton.css +1 -1
  144. package/dist/css/themes/RangeSlider.css +1 -1
  145. package/dist/css/themes/RatingIndicator.css +1 -1
  146. package/dist/css/themes/ResponsivePopover.css +1 -1
  147. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  148. package/dist/css/themes/SegmentedButton.css +1 -1
  149. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  150. package/dist/css/themes/Select.css +1 -1
  151. package/dist/css/themes/SliderBase.css +1 -1
  152. package/dist/css/themes/SplitButton.css +1 -1
  153. package/dist/css/themes/StepInput.css +1 -1
  154. package/dist/css/themes/SuggestionItem.css +1 -1
  155. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  156. package/dist/css/themes/Switch.css +1 -1
  157. package/dist/css/themes/TabContainer.css +1 -1
  158. package/dist/css/themes/TabInOverflow.css +1 -1
  159. package/dist/css/themes/TabInStrip.css +1 -1
  160. package/dist/css/themes/TabSemanticIcon.css +1 -1
  161. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  162. package/dist/css/themes/Table.css +1 -1
  163. package/dist/css/themes/TableCellBase.css +1 -1
  164. package/dist/css/themes/TableHeaderRow.css +1 -1
  165. package/dist/css/themes/TableRow.css +1 -1
  166. package/dist/css/themes/TableRowActionBase.css +1 -1
  167. package/dist/css/themes/TableRowBase.css +1 -1
  168. package/dist/css/themes/Tag.css +1 -1
  169. package/dist/css/themes/Text.css +1 -1
  170. package/dist/css/themes/TextArea.css +1 -1
  171. package/dist/css/themes/TimePicker.css +1 -1
  172. package/dist/css/themes/Toast.css +1 -1
  173. package/dist/css/themes/ToggleButton.css +1 -1
  174. package/dist/css/themes/Token.css +1 -1
  175. package/dist/css/themes/Tokenizer.css +1 -1
  176. package/dist/css/themes/TokenizerPopover.css +1 -1
  177. package/dist/css/themes/Toolbar.css +1 -1
  178. package/dist/css/themes/ToolbarButton.css +1 -0
  179. package/dist/css/themes/ToolbarPopover.css +1 -1
  180. package/dist/css/themes/ToolbarSeparator.css +1 -1
  181. package/dist/css/themes/TreeItem.css +1 -1
  182. package/dist/css/themes/ValueStateMessage.css +1 -1
  183. package/dist/css/themes/ValueStateVariables.css +1 -0
  184. package/dist/css/themes/YearPicker.css +1 -1
  185. package/dist/css/themes/YearRangePicker.css +1 -1
  186. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  187. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  188. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  189. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  190. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  191. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  192. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  193. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  194. package/dist/custom-elements-internal.json +97 -9
  195. package/dist/custom-elements.json +91 -8
  196. package/dist/features/InputSuggestions.d.ts +0 -3
  197. package/dist/features/InputSuggestions.js +4 -50
  198. package/dist/features/InputSuggestions.js.map +1 -1
  199. package/dist/features/InputSuggestionsTemplate.js +0 -1
  200. package/dist/features/InputSuggestionsTemplate.js.map +1 -1
  201. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  202. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  203. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  204. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  205. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  206. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  207. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  208. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  209. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  210. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  211. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  212. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  213. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  214. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  215. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  216. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  217. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  218. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  219. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  220. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  221. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  222. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  223. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  224. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  225. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  226. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  227. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  228. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  229. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  230. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  231. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  232. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  233. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  234. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  235. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  236. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  237. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  238. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  239. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  240. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  241. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  242. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  243. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  244. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  245. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  246. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  247. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  248. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  249. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  250. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  251. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  252. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  253. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  254. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  255. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  256. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  257. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  258. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  259. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  260. package/dist/generated/i18n/i18n-defaults.d.ts +15 -3
  261. package/dist/generated/i18n/i18n-defaults.js +15 -3
  262. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  263. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  264. package/dist/generated/themes/Avatar.css.js +1 -1
  265. package/dist/generated/themes/Avatar.css.js.map +1 -1
  266. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  267. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  268. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  269. package/dist/generated/themes/Bar.css.d.ts +1 -1
  270. package/dist/generated/themes/Bar.css.js +1 -1
  271. package/dist/generated/themes/Bar.css.js.map +1 -1
  272. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  273. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  274. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  275. package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
  276. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  277. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  278. package/dist/generated/themes/Button.css.d.ts +1 -1
  279. package/dist/generated/themes/Button.css.js +1 -1
  280. package/dist/generated/themes/Button.css.js.map +1 -1
  281. package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
  282. package/dist/generated/themes/ButtonBadge.css.js +1 -1
  283. package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
  284. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  285. package/dist/generated/themes/Calendar.css.js +1 -1
  286. package/dist/generated/themes/Calendar.css.js.map +1 -1
  287. package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
  288. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  289. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  290. package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
  291. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  292. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  293. package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
  294. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  295. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  296. package/dist/generated/themes/Card.css.d.ts +1 -1
  297. package/dist/generated/themes/Card.css.js +1 -1
  298. package/dist/generated/themes/Card.css.js.map +1 -1
  299. package/dist/generated/themes/CardHeader.css.d.ts +1 -1
  300. package/dist/generated/themes/CardHeader.css.js +1 -1
  301. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  302. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  303. package/dist/generated/themes/Carousel.css.js +1 -1
  304. package/dist/generated/themes/Carousel.css.js.map +1 -1
  305. package/dist/generated/themes/CheckBox.css.d.ts +1 -1
  306. package/dist/generated/themes/CheckBox.css.js +1 -1
  307. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  308. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  309. package/dist/generated/themes/ColorPalette.css.js +1 -1
  310. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  311. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  312. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  313. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  314. package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
  315. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  316. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  317. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  318. package/dist/generated/themes/ColorPicker.css.js +1 -1
  319. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  320. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  321. package/dist/generated/themes/ComboBox.css.js +1 -1
  322. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  323. package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
  324. package/dist/generated/themes/ComboBoxItem.css.js +1 -1
  325. package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
  326. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  327. package/dist/generated/themes/DatePicker.css.js +1 -1
  328. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  329. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  330. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  331. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  332. package/dist/generated/themes/DayPicker.css.d.ts +1 -1
  333. package/dist/generated/themes/DayPicker.css.js +1 -1
  334. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  335. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  336. package/dist/generated/themes/Dialog.css.js +1 -1
  337. package/dist/generated/themes/Dialog.css.js.map +1 -1
  338. package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
  339. package/dist/generated/themes/DynamicDateRange.css.js +1 -1
  340. package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
  341. package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
  342. package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
  343. package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
  344. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  345. package/dist/generated/themes/FileUploader.css.js +1 -1
  346. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  347. package/dist/generated/themes/Form.css.d.ts +1 -1
  348. package/dist/generated/themes/Form.css.js +1 -1
  349. package/dist/generated/themes/Form.css.js.map +1 -1
  350. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  351. package/dist/generated/themes/FormItem.css.js +1 -1
  352. package/dist/generated/themes/FormItem.css.js.map +1 -1
  353. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  354. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  355. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  356. package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
  357. package/dist/generated/themes/GrowingButton.css.js +1 -1
  358. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  359. package/dist/generated/themes/Icon.css.d.ts +1 -1
  360. package/dist/generated/themes/Icon.css.js +1 -1
  361. package/dist/generated/themes/Icon.css.js.map +1 -1
  362. package/dist/generated/themes/Input.css.d.ts +1 -1
  363. package/dist/generated/themes/Input.css.js +1 -1
  364. package/dist/generated/themes/Input.css.js.map +1 -1
  365. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  366. package/dist/generated/themes/InputIcon.css.js +1 -1
  367. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  368. package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
  369. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  370. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  371. package/dist/generated/themes/Link.css.d.ts +1 -1
  372. package/dist/generated/themes/Link.css.js +1 -1
  373. package/dist/generated/themes/Link.css.js.map +1 -1
  374. package/dist/generated/themes/List.css.d.ts +1 -1
  375. package/dist/generated/themes/List.css.js +1 -1
  376. package/dist/generated/themes/List.css.js.map +1 -1
  377. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  378. package/dist/generated/themes/ListItem.css.js +1 -1
  379. package/dist/generated/themes/ListItem.css.js.map +1 -1
  380. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  381. package/dist/generated/themes/ListItemBase.css.js +1 -1
  382. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  383. package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
  384. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  385. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  386. package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
  387. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  388. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  389. package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
  390. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  391. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  392. package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
  393. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  394. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  395. package/dist/generated/themes/Menu.css.d.ts +1 -1
  396. package/dist/generated/themes/Menu.css.js +1 -1
  397. package/dist/generated/themes/Menu.css.js.map +1 -1
  398. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  399. package/dist/generated/themes/MenuItem.css.js +1 -1
  400. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  401. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  402. package/dist/generated/themes/MessageStrip.css.js +1 -1
  403. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  404. package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
  405. package/dist/generated/themes/MonthPicker.css.js +1 -1
  406. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  407. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  408. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  409. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  410. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  411. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  412. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  413. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  414. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  415. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  416. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  417. package/dist/generated/themes/MultiInput.css.js +1 -1
  418. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  419. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  420. package/dist/generated/themes/OptionBase.css.js +1 -1
  421. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  422. package/dist/generated/themes/Panel.css.d.ts +1 -1
  423. package/dist/generated/themes/Panel.css.js +1 -1
  424. package/dist/generated/themes/Panel.css.js.map +1 -1
  425. package/dist/generated/themes/Popover.css.d.ts +1 -1
  426. package/dist/generated/themes/Popover.css.js +1 -1
  427. package/dist/generated/themes/Popover.css.js.map +1 -1
  428. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  429. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  430. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  431. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  432. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  433. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  434. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  435. package/dist/generated/themes/RadioButton.css.js +1 -1
  436. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  437. package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
  438. package/dist/generated/themes/RangeSlider.css.js +1 -1
  439. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  440. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  441. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  442. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  443. package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
  444. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  445. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  446. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  447. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  448. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  449. package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
  450. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  451. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  452. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  453. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  454. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  455. package/dist/generated/themes/Select.css.d.ts +1 -1
  456. package/dist/generated/themes/Select.css.js +1 -1
  457. package/dist/generated/themes/Select.css.js.map +1 -1
  458. package/dist/generated/themes/SliderBase.css.d.ts +1 -1
  459. package/dist/generated/themes/SliderBase.css.js +1 -1
  460. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  461. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  462. package/dist/generated/themes/SplitButton.css.js +1 -1
  463. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  464. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  465. package/dist/generated/themes/StepInput.css.js +1 -1
  466. package/dist/generated/themes/StepInput.css.js.map +1 -1
  467. package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
  468. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  469. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  470. package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
  471. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  472. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  473. package/dist/generated/themes/Switch.css.d.ts +1 -1
  474. package/dist/generated/themes/Switch.css.js +1 -1
  475. package/dist/generated/themes/Switch.css.js.map +1 -1
  476. package/dist/generated/themes/TabContainer.css.d.ts +1 -1
  477. package/dist/generated/themes/TabContainer.css.js +1 -1
  478. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  479. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  480. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  481. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  482. package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
  483. package/dist/generated/themes/TabInStrip.css.js +1 -1
  484. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  485. package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
  486. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  487. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  488. package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
  489. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  490. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  491. package/dist/generated/themes/Table.css.d.ts +1 -1
  492. package/dist/generated/themes/Table.css.js +1 -1
  493. package/dist/generated/themes/Table.css.js.map +1 -1
  494. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  495. package/dist/generated/themes/TableCellBase.css.js +1 -1
  496. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  497. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  498. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  499. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  500. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  501. package/dist/generated/themes/TableRow.css.js +1 -1
  502. package/dist/generated/themes/TableRow.css.js.map +1 -1
  503. package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
  504. package/dist/generated/themes/TableRowActionBase.css.js +1 -1
  505. package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
  506. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  507. package/dist/generated/themes/TableRowBase.css.js +1 -1
  508. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  509. package/dist/generated/themes/Tag.css.d.ts +1 -1
  510. package/dist/generated/themes/Tag.css.js +1 -1
  511. package/dist/generated/themes/Tag.css.js.map +1 -1
  512. package/dist/generated/themes/Text.css.d.ts +1 -1
  513. package/dist/generated/themes/Text.css.js +1 -1
  514. package/dist/generated/themes/Text.css.js.map +1 -1
  515. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  516. package/dist/generated/themes/TextArea.css.js +1 -1
  517. package/dist/generated/themes/TextArea.css.js.map +1 -1
  518. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  519. package/dist/generated/themes/TimePicker.css.js +1 -1
  520. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  521. package/dist/generated/themes/Toast.css.d.ts +1 -1
  522. package/dist/generated/themes/Toast.css.js +1 -1
  523. package/dist/generated/themes/Toast.css.js.map +1 -1
  524. package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
  525. package/dist/generated/themes/ToggleButton.css.js +1 -1
  526. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  527. package/dist/generated/themes/Token.css.d.ts +1 -1
  528. package/dist/generated/themes/Token.css.js +1 -1
  529. package/dist/generated/themes/Token.css.js.map +1 -1
  530. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  531. package/dist/generated/themes/Tokenizer.css.js +1 -1
  532. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  533. package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
  534. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  535. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  536. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  537. package/dist/generated/themes/Toolbar.css.js +1 -1
  538. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  539. package/dist/generated/themes/ToolbarButton.css.d.ts +2 -0
  540. package/dist/generated/themes/{ToolbarButtonPopover.css.js → ToolbarButton.css.js} +2 -2
  541. package/dist/generated/themes/ToolbarButton.css.js.map +1 -0
  542. package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
  543. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  544. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  545. package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
  546. package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
  547. package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
  548. package/dist/generated/themes/TreeItem.css.d.ts +1 -1
  549. package/dist/generated/themes/TreeItem.css.js +1 -1
  550. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  551. package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
  552. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  553. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  554. package/dist/generated/themes/ValueStateVariables.css.d.ts +2 -0
  555. package/dist/generated/themes/ValueStateVariables.css.js +8 -0
  556. package/dist/generated/themes/ValueStateVariables.css.js.map +1 -0
  557. package/dist/generated/themes/YearPicker.css.d.ts +1 -1
  558. package/dist/generated/themes/YearPicker.css.js +1 -1
  559. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  560. package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
  561. package/dist/generated/themes/YearRangePicker.css.js +1 -1
  562. package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
  563. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  564. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  565. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  566. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  567. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  568. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  569. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  570. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  571. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  572. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  573. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  574. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  575. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  576. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  577. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  578. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  579. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  580. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  581. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  582. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  583. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  584. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  585. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  586. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  587. package/dist/popup-utils/OpenedPopupsRegistry.js +15 -1
  588. package/dist/popup-utils/OpenedPopupsRegistry.js.map +1 -1
  589. package/dist/vscode.html-custom-data.json +25 -5
  590. package/dist/web-types.json +51 -8
  591. package/package.json +9 -9
  592. package/src/CheckBoxTemplate.tsx +8 -6
  593. package/src/ComboBoxPopoverTemplate.tsx +0 -1
  594. package/src/ComboBoxTemplate.tsx +4 -1
  595. package/src/FileUploaderPopoverTemplate.tsx +1 -3
  596. package/src/FileUploaderTemplate.tsx +79 -25
  597. package/src/InputTemplate.tsx +4 -0
  598. package/src/ListTemplate.tsx +2 -1
  599. package/src/MenuItemGroupTemplate.tsx +1 -0
  600. package/src/MenuItemTemplate.tsx +1 -0
  601. package/src/MultiComboBoxItemTemplate.tsx +1 -2
  602. package/src/MultiComboBoxPopoverTemplate.tsx +1 -1
  603. package/src/MultiComboBoxTemplate.tsx +4 -0
  604. package/src/SplitButtonTemplate.tsx +1 -1
  605. package/src/TokenizerPopoverTemplate.tsx +1 -1
  606. package/src/features/InputSuggestionsTemplate.tsx +0 -1
  607. package/src/i18n/messagebundle.properties +40 -3
  608. package/src/i18n/messagebundle_ar.properties +4 -0
  609. package/src/i18n/messagebundle_bg.properties +5 -1
  610. package/src/i18n/messagebundle_ca.properties +5 -1
  611. package/src/i18n/messagebundle_cnr.properties +4 -0
  612. package/src/i18n/messagebundle_cs.properties +4 -0
  613. package/src/i18n/messagebundle_cy.properties +4 -0
  614. package/src/i18n/messagebundle_da.properties +4 -0
  615. package/src/i18n/messagebundle_de.properties +5 -1
  616. package/src/i18n/messagebundle_el.properties +4 -0
  617. package/src/i18n/messagebundle_en.properties +31 -3
  618. package/src/i18n/messagebundle_en_GB.properties +4 -0
  619. package/src/i18n/messagebundle_en_US_sappsd.properties +22 -2
  620. package/src/i18n/messagebundle_en_US_saprigi.properties +20 -2
  621. package/src/i18n/messagebundle_en_US_saptrc.properties +22 -2
  622. package/src/i18n/messagebundle_es.properties +4 -0
  623. package/src/i18n/messagebundle_es_MX.properties +4 -0
  624. package/src/i18n/messagebundle_et.properties +4 -0
  625. package/src/i18n/messagebundle_fi.properties +4 -0
  626. package/src/i18n/messagebundle_fr.properties +4 -0
  627. package/src/i18n/messagebundle_fr_CA.properties +4 -0
  628. package/src/i18n/messagebundle_hi.properties +4 -0
  629. package/src/i18n/messagebundle_hr.properties +5 -1
  630. package/src/i18n/messagebundle_hu.properties +4 -0
  631. package/src/i18n/messagebundle_id.properties +5 -1
  632. package/src/i18n/messagebundle_it.properties +4 -0
  633. package/src/i18n/messagebundle_iw.properties +4 -0
  634. package/src/i18n/messagebundle_ja.properties +4 -0
  635. package/src/i18n/messagebundle_kk.properties +5 -1
  636. package/src/i18n/messagebundle_ko.properties +4 -0
  637. package/src/i18n/messagebundle_lt.properties +4 -0
  638. package/src/i18n/messagebundle_lv.properties +4 -0
  639. package/src/i18n/messagebundle_mk.properties +4 -0
  640. package/src/i18n/messagebundle_ms.properties +4 -0
  641. package/src/i18n/messagebundle_nl.properties +4 -0
  642. package/src/i18n/messagebundle_no.properties +4 -0
  643. package/src/i18n/messagebundle_pl.properties +4 -0
  644. package/src/i18n/messagebundle_pt.properties +4 -0
  645. package/src/i18n/messagebundle_pt_PT.properties +4 -0
  646. package/src/i18n/messagebundle_ro.properties +4 -0
  647. package/src/i18n/messagebundle_ru.properties +4 -0
  648. package/src/i18n/messagebundle_sh.properties +4 -0
  649. package/src/i18n/messagebundle_sk.properties +4 -0
  650. package/src/i18n/messagebundle_sl.properties +4 -0
  651. package/src/i18n/messagebundle_sr.properties +4 -0
  652. package/src/i18n/messagebundle_sv.properties +4 -0
  653. package/src/i18n/messagebundle_th.properties +4 -0
  654. package/src/i18n/messagebundle_tr.properties +4 -0
  655. package/src/i18n/messagebundle_uk.properties +4 -0
  656. package/src/i18n/messagebundle_vi.properties +4 -0
  657. package/src/i18n/messagebundle_zh_CN.properties +4 -0
  658. package/src/i18n/messagebundle_zh_TW.properties +4 -0
  659. package/src/themes/AvatarGroup.css +2 -1
  660. package/src/themes/Button.css +2 -2
  661. package/src/themes/FileUploader.css +148 -31
  662. package/src/themes/MenuItem.css +1 -4
  663. package/src/themes/Table.css +0 -2
  664. package/src/themes/ToolbarButton.css +7 -0
  665. package/src/themes/ValueStateMessage.css +1 -1
  666. package/src/themes/ValueStateVariables.css +27 -0
  667. package/src/themes/base/FileUploader-parameters.css +2 -2
  668. package/src/themes/sap_horizon/FileUploader-parameters.css +0 -4
  669. package/src/themes/sap_horizon_dark/FileUploader-parameters.css +0 -4
  670. package/src/themes/sap_horizon_hcb/FileUploader-parameters.css +1 -6
  671. package/src/themes/sap_horizon_hcw/FileUploader-parameters.css +1 -6
  672. package/dist/css/themes/ToolbarButtonPopover.css +0 -1
  673. package/dist/generated/themes/ToolbarButtonPopover.css.d.ts +0 -2
  674. package/dist/generated/themes/ToolbarButtonPopover.css.js.map +0 -1
  675. package/src/themes/ToolbarButtonPopover.css +0 -3
@@ -2,8 +2,9 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
3
3
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
4
  import type { IFormInputElement } from "@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js";
5
- import type Input from "./Input.js";
5
+ import type { InputAccInfo } from "./Input.js";
6
6
  import type Popover from "./Popover.js";
7
+ import type Tokenizer from "./Tokenizer.js";
7
8
  type FileData = {
8
9
  fileName: string;
9
10
  fileSize: number;
@@ -53,6 +54,8 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
53
54
  accept?: string;
54
55
  /**
55
56
  * If set to "true", the input field of component will not be rendered. Only the default slot that is passed will be rendered.
57
+ *
58
+ * **Note:** Use this property in combination with the default slot to achieve a button-only file uploader design.
56
59
  * @default false
57
60
  * @public
58
61
  */
@@ -106,15 +109,38 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
106
109
  * @public
107
110
  */
108
111
  valueState: `${ValueState}`;
112
+ /**
113
+ * Defines whether the component is required.
114
+ * @default false
115
+ * @public
116
+ * @since 2.13.0
117
+ */
118
+ required: boolean;
119
+ /**
120
+ * Defines the accessible ARIA name of the component.
121
+ * @default undefined
122
+ * @public
123
+ * @since 2.13.0
124
+ */
125
+ accessibleName?: string;
126
+ /**
127
+ * Receives id(or many ids) of the elements that label the input.
128
+ * @default undefined
129
+ * @public
130
+ * @since 2.13.0
131
+ */
132
+ accessibleNameRef?: string;
109
133
  /**
110
134
  * @private
111
135
  */
112
136
  focused: boolean;
113
137
  /**
114
- * By default the component contains a single input field. With this slot you can pass any content that you wish to add. See the samples for more information.
138
+ * This slot allows you to add custom content to the component, such as a button or any other interactive element to trigger the file selection dialog.
115
139
  *
116
- * **Note:** If no content is provided in this slot, the component will only consist of an input field and will not be interactable using the keyboard.
117
- * Also it is not recommended to use any non-interactable components, as it may lead to poor accessibility experience.
140
+ * **Note:** For best accessibility experience, set a `tabindex` of "-1" on your interactive element, or it will be set automatically.
141
+ * This slot is intended for use cases where you want a button-only file uploader.
142
+ * It is recommended to set `hideInput` property to "true" when using this slot.
143
+ * Not setting `hideInput` may negatively impact the screen reader users.
118
144
  * @public
119
145
  */
120
146
  content: Array<HTMLElement>;
@@ -129,6 +155,13 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
129
155
  * @public
130
156
  */
131
157
  valueStateMessage: Array<HTMLElement>;
158
+ _form: HTMLFormElement;
159
+ _input: HTMLInputElement;
160
+ _tokenizer: Tokenizer;
161
+ _messagePopover: Popover;
162
+ _selectedFilesNames: Array<string>;
163
+ _tokenizerOpen: boolean;
164
+ _tokenizerExpanded: boolean;
132
165
  static emptyInput: HTMLInputElement;
133
166
  static i18nBundle: I18nBundle;
134
167
  formElementAnchor(): Promise<HTMLElement | undefined>;
@@ -137,15 +170,23 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
137
170
  */
138
171
  getFocusDomRef(): HTMLElement | undefined;
139
172
  get formFormattedValue(): FormData | null;
140
- _onmouseover(): void;
141
- _onmouseout(): void;
142
173
  _onclick(): void;
174
+ _onNativeInputClick(e: MouseEvent): void;
175
+ _onmousedown(e: MouseEvent): void;
143
176
  _onkeydown(e: KeyboardEvent): void;
144
177
  _onkeyup(e: KeyboardEvent): void;
145
178
  _ondrag(e: DragEvent): void;
146
179
  _ondrop(e: DragEvent): void;
147
180
  _onfocusin(): void;
148
181
  _onfocusout(): void;
182
+ _onTokenizerKeyUp(e: KeyboardEvent): void;
183
+ _onTokenizerKeyDown(e: KeyboardEvent): void;
184
+ _onTokenizerClick(e: MouseEvent): void;
185
+ _onTokenizerMouseDown(e: MouseEvent): void;
186
+ _onClearIconClick(e: CustomEvent): void;
187
+ _onFormSubmit(e: SubmitEvent): void;
188
+ _openFileBrowser(): void;
189
+ _clearFileSelection(): void;
149
190
  /**
150
191
  * FileList of all selected files.
151
192
  * @public
@@ -153,8 +194,10 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
153
194
  */
154
195
  get files(): FileList | null;
155
196
  onAfterRendering(): void;
197
+ get computedValue(): string;
198
+ get _formWidth(): number;
156
199
  _onChange(e: Event): void;
157
- _updateValue(files: FileList | null): void;
200
+ _fileNamesList(files: FileList): Array<string>;
158
201
  /**
159
202
  * Checks whether all files are below `maxFileSize` (if set),
160
203
  * and fires a `file-size-exceed` event if any file exceeds it.
@@ -165,26 +208,25 @@ declare class FileUploader extends UI5Element implements IFormInputElement {
165
208
  toggleValueStatePopover(open: boolean): void;
166
209
  openValueStatePopover(): void;
167
210
  closeValueStatePopover(): void;
168
- _getPopover(): Popover;
169
211
  /**
170
212
  * in case when the component is not placed in the DOM, return empty FileList, like native input would do
171
213
  * @private
172
214
  */
173
215
  static get _emptyFilesList(): FileList | null;
174
- get browseText(): string;
175
- get titleText(): string;
176
- get _input(): HTMLInputElement;
216
+ get accInfo(): InputAccInfo;
217
+ get inputTitle(): string;
218
+ get valueHelpTitle(): string;
219
+ get clearIconTitle(): string;
220
+ get resolvedPlaceholder(): string;
177
221
  get valueStateTextMappings(): Record<string, string>;
178
222
  get valueStateText(): string;
179
223
  get hasValueState(): boolean;
180
- get hasValueStateText(): boolean;
181
224
  get shouldDisplayDefaultValueStateMessage(): boolean;
182
225
  get shouldOpenValueStateMessagePopover(): boolean;
183
226
  /**
184
227
  * This method is relevant for sap_horizon theme only
185
228
  */
186
229
  get _valueStateMessageInputIcon(): string;
187
- get ui5Input(): Input | null;
188
230
  }
189
231
  export default FileUploader;
190
232
  export type { FileData, FileUploaderChangeEventDetail, FileUploaderFileSizeExceedEventDetail, };
@@ -10,11 +10,13 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
10
10
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
11
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
12
12
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
13
+ import query from "@ui5/webcomponents-base/dist/decorators/query.js";
13
14
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
15
+ import { getEffectiveAriaLabelText, getAssociatedLabelForTexts, getAllAccessibleNameRefTexts, } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
14
16
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
15
17
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
16
- import { isEnter, isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
17
- import { FILEUPLOAD_BROWSE, FILEUPLOADER_TITLE, VALUE_STATE_SUCCESS, VALUE_STATE_INFORMATION, VALUE_STATE_ERROR, VALUE_STATE_WARNING, } from "./generated/i18n/i18n-defaults.js";
18
+ import { isUpAlt, isDownAlt, isEnter, isDelete, isF4, isSpace, isRight, isLeft, } from "@ui5/webcomponents-base/dist/Keys.js";
19
+ import { FILEUPLOADER_INPUT_TOOLTIP, FILEUPLOADER_VALUE_HELP_TOOLTIP, FILEUPLOADER_CLEAR_ICON_TOOLTIP, VALUE_STATE_SUCCESS, VALUE_STATE_INFORMATION, VALUE_STATE_ERROR, VALUE_STATE_WARNING, FILEUPLOADER_DEFAULT_PLACEHOLDER, FILEUPLOADER_DEFAULT_MULTIPLE_PLACEHOLDER, FILEUPLOADER_ROLE_DESCRIPTION, } from "./generated/i18n/i18n-defaults.js";
18
20
  // Template
19
21
  import FileUploaderTemplate from "./FileUploaderTemplate.js";
20
22
  // Styles
@@ -51,6 +53,8 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
51
53
  super(...arguments);
52
54
  /**
53
55
  * If set to "true", the input field of component will not be rendered. Only the default slot that is passed will be rendered.
56
+ *
57
+ * **Note:** Use this property in combination with the default slot to achieve a button-only file uploader design.
54
58
  * @default false
55
59
  * @public
56
60
  */
@@ -83,10 +87,20 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
83
87
  * @public
84
88
  */
85
89
  this.valueState = "None";
90
+ /**
91
+ * Defines whether the component is required.
92
+ * @default false
93
+ * @public
94
+ * @since 2.13.0
95
+ */
96
+ this.required = false;
86
97
  /**
87
98
  * @private
88
99
  */
89
100
  this.focused = false;
101
+ this._selectedFilesNames = [];
102
+ this._tokenizerOpen = false;
103
+ this._tokenizerExpanded = true;
90
104
  }
91
105
  async formElementAnchor() {
92
106
  return this.getFocusDomRefAsync();
@@ -95,7 +109,7 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
95
109
  * @override
96
110
  */
97
111
  getFocusDomRef() {
98
- return this.content[0];
112
+ return this._input;
99
113
  }
100
114
  get formFormattedValue() {
101
115
  if (this.files && this.name) {
@@ -107,32 +121,47 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
107
121
  }
108
122
  return null;
109
123
  }
110
- _onmouseover() {
111
- this.content.forEach(item => {
112
- item.classList.add("ui5_hovered");
113
- });
114
- }
115
- _onmouseout() {
116
- this.content.forEach(item => {
117
- item.classList.remove("ui5_hovered");
118
- });
119
- }
120
124
  _onclick() {
121
125
  if (this.getFocusDomRef()?.matches(":focus-within")) {
122
- this._input.click();
126
+ this._openFileBrowser();
123
127
  }
124
128
  }
129
+ _onNativeInputClick(e) {
130
+ e.stopPropagation();
131
+ }
132
+ _onmousedown(e) {
133
+ e.preventDefault();
134
+ this._input.focus();
135
+ }
125
136
  _onkeydown(e) {
137
+ const firstToken = this._tokenizer?.tokens.find(token => !token.hasAttribute("overflows"));
138
+ const isToken = e.target.hasAttribute("ui5-token");
139
+ const isArrowNavigation = this.effectiveDir === "ltr" ? isRight(e) : isLeft(e);
140
+ if (this.hideInput) {
141
+ return;
142
+ }
126
143
  if (isEnter(e)) {
127
- this._input.click();
128
144
  e.preventDefault();
145
+ this._openFileBrowser();
129
146
  }
130
- }
131
- _onkeyup(e) {
132
147
  if (isSpace(e)) {
133
- this._input.click();
134
148
  e.preventDefault();
135
149
  }
150
+ if (isArrowNavigation && !isToken) {
151
+ e.preventDefault();
152
+ firstToken?.focus();
153
+ }
154
+ }
155
+ _onkeyup(e) {
156
+ if (this.hideInput) {
157
+ return;
158
+ }
159
+ if (isSpace(e) || isF4(e) || isUpAlt(e) || isDownAlt(e)) {
160
+ this._openFileBrowser();
161
+ }
162
+ else if (isDelete(e)) {
163
+ this._clearFileSelection();
164
+ }
136
165
  }
137
166
  _ondrag(e) {
138
167
  e.preventDefault();
@@ -150,16 +179,59 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
150
179
  return;
151
180
  }
152
181
  this._input.files = validatedFiles;
153
- this._updateValue(validatedFiles);
182
+ this._selectedFilesNames = this._fileNamesList(files);
183
+ this.value = this.computedValue;
154
184
  this.fireDecoratorEvent("change", {
155
185
  files: validatedFiles,
156
186
  });
157
187
  }
158
188
  _onfocusin() {
159
189
  this.focused = true;
190
+ this._tokenizerExpanded = true;
160
191
  }
161
192
  _onfocusout() {
162
193
  this.focused = false;
194
+ this._tokenizerExpanded = this._tokenizerOpen || false;
195
+ }
196
+ _onTokenizerKeyUp(e) {
197
+ if (isSpace(e) || isDelete(e)) {
198
+ e.stopPropagation();
199
+ }
200
+ }
201
+ _onTokenizerKeyDown(e) {
202
+ const firstToken = this._tokenizer?.tokens.find(token => !token.hasAttribute("overflows"));
203
+ const isArrowNavigation = this.effectiveDir === "ltr" ? isLeft(e) : isRight(e);
204
+ if (isEnter(e)) {
205
+ e.stopPropagation();
206
+ }
207
+ if (e.target === firstToken && isArrowNavigation) {
208
+ this._input.focus();
209
+ e.preventDefault();
210
+ }
211
+ }
212
+ _onTokenizerClick(e) {
213
+ e.stopPropagation();
214
+ }
215
+ _onTokenizerMouseDown(e) {
216
+ e.stopPropagation();
217
+ }
218
+ _onClearIconClick(e) {
219
+ e.stopPropagation();
220
+ this._clearFileSelection();
221
+ }
222
+ _onFormSubmit(e) {
223
+ e.preventDefault();
224
+ }
225
+ _openFileBrowser() {
226
+ this._input.click();
227
+ }
228
+ _clearFileSelection() {
229
+ this._selectedFilesNames = [];
230
+ this.value = "";
231
+ this._form?.reset();
232
+ this.fireDecoratorEvent("change", {
233
+ files: this.files,
234
+ });
163
235
  }
164
236
  /**
165
237
  * FileList of all selected files.
@@ -176,8 +248,20 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
176
248
  if (!this.value) {
177
249
  this._input.value = "";
178
250
  }
251
+ this._tokenizerOpen = this._tokenizer?.open || false;
252
+ if (this.hideInput && this.content.length > 0) {
253
+ this.content.forEach(element => {
254
+ element.setAttribute("tabindex", "-1");
255
+ });
256
+ }
179
257
  this.toggleValueStatePopover(this.shouldOpenValueStateMessagePopover);
180
258
  }
259
+ get computedValue() {
260
+ return this._selectedFilesNames.join(" ");
261
+ }
262
+ get _formWidth() {
263
+ return this._form ? this._form.offsetWidth : 0;
264
+ }
181
265
  _onChange(e) {
182
266
  let changedFiles = e.target.files;
183
267
  if (changedFiles) {
@@ -186,15 +270,16 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
186
270
  if (!this.value && !changedFiles?.length) {
187
271
  return;
188
272
  }
189
- this._updateValue(changedFiles);
273
+ this._selectedFilesNames = this._fileNamesList(changedFiles);
274
+ this.value = this.computedValue;
190
275
  this.fireDecoratorEvent("change", {
191
276
  files: changedFiles,
192
277
  });
193
278
  }
194
- _updateValue(files) {
195
- this.value = Array.from(files || []).reduce((acc, currFile) => {
196
- return `${acc}"${currFile.name}" `;
197
- }, "");
279
+ _fileNamesList(files) {
280
+ return Array.from(files)
281
+ .map(file => file.name)
282
+ .sort((a, b) => a.length - b.length); // workaround for incident #11824
198
283
  }
199
284
  /**
200
285
  * Checks whether all files are below `maxFileSize` (if set),
@@ -234,21 +319,16 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
234
319
  }
235
320
  }
236
321
  openValueStatePopover() {
237
- const popover = this._getPopover();
238
- if (popover) {
239
- popover.opener = this;
240
- popover.open = true;
322
+ if (this._messagePopover) {
323
+ this._messagePopover.opener = this;
324
+ this._messagePopover.open = true;
241
325
  }
242
326
  }
243
327
  closeValueStatePopover() {
244
- const popover = this._getPopover();
245
- if (popover) {
246
- popover.open = false;
328
+ if (this._messagePopover) {
329
+ this._messagePopover.open = false;
247
330
  }
248
331
  }
249
- _getPopover() {
250
- return this.shadowRoot.querySelector(".ui5-valuestatemessage-popover");
251
- }
252
332
  /**
253
333
  * in case when the component is not placed in the DOM, return empty FileList, like native input would do
254
334
  * @private
@@ -260,14 +340,28 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
260
340
  }
261
341
  return this.emptyInput.files;
262
342
  }
263
- get browseText() {
264
- return FileUploader_1.i18nBundle.getText(FILEUPLOAD_BROWSE);
343
+ get accInfo() {
344
+ return {
345
+ "ariaRoledescription": FileUploader_1.i18nBundle.getText(FILEUPLOADER_ROLE_DESCRIPTION),
346
+ "ariaRequired": this.required || undefined,
347
+ "ariaInvalid": this.valueState === ValueState.Negative || undefined,
348
+ "ariaHasPopup": "dialog",
349
+ "ariaLabel": getAllAccessibleNameRefTexts(this) || getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined,
350
+ };
351
+ }
352
+ get inputTitle() {
353
+ return FileUploader_1.i18nBundle.getText(FILEUPLOADER_INPUT_TOOLTIP);
354
+ }
355
+ get valueHelpTitle() {
356
+ return FileUploader_1.i18nBundle.getText(FILEUPLOADER_VALUE_HELP_TOOLTIP);
265
357
  }
266
- get titleText() {
267
- return FileUploader_1.i18nBundle.getText(FILEUPLOADER_TITLE);
358
+ get clearIconTitle() {
359
+ return FileUploader_1.i18nBundle.getText(FILEUPLOADER_CLEAR_ICON_TOOLTIP);
268
360
  }
269
- get _input() {
270
- return (this.shadowRoot.querySelector("input[type=file]") || this.querySelector("input[type=file][data-ui5-form-support]"));
361
+ get resolvedPlaceholder() {
362
+ const singlePlaceholder = FileUploader_1.i18nBundle.getText(FILEUPLOADER_DEFAULT_PLACEHOLDER);
363
+ const multiplePlaceholder = FileUploader_1.i18nBundle.getText(FILEUPLOADER_DEFAULT_MULTIPLE_PLACEHOLDER);
364
+ return this.placeholder ?? (this.multiple ? multiplePlaceholder : singlePlaceholder);
271
365
  }
272
366
  get valueStateTextMappings() {
273
367
  return {
@@ -283,14 +377,11 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
283
377
  get hasValueState() {
284
378
  return this.valueState !== ValueState.None;
285
379
  }
286
- get hasValueStateText() {
287
- return this.hasValueState && this.valueState !== ValueState.Positive;
288
- }
289
380
  get shouldDisplayDefaultValueStateMessage() {
290
- return !this.valueStateMessage.length && this.hasValueStateText;
381
+ return !this.valueStateMessage.length && this.hasValueState;
291
382
  }
292
383
  get shouldOpenValueStateMessagePopover() {
293
- return this.focused && this.hasValueStateText && !this.hideInput;
384
+ return this.focused && this.hasValueState && !this.hideInput && !this._tokenizerOpen;
294
385
  }
295
386
  /**
296
387
  * This method is relevant for sap_horizon theme only
@@ -304,9 +395,6 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
304
395
  };
305
396
  return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
306
397
  }
307
- get ui5Input() {
308
- return this.shadowRoot.querySelector(".ui5-file-uploader-input");
309
- }
310
398
  };
311
399
  __decorate([
312
400
  property()
@@ -335,6 +423,15 @@ __decorate([
335
423
  __decorate([
336
424
  property()
337
425
  ], FileUploader.prototype, "valueState", void 0);
426
+ __decorate([
427
+ property({ type: Boolean })
428
+ ], FileUploader.prototype, "required", void 0);
429
+ __decorate([
430
+ property()
431
+ ], FileUploader.prototype, "accessibleName", void 0);
432
+ __decorate([
433
+ property()
434
+ ], FileUploader.prototype, "accessibleNameRef", void 0);
338
435
  __decorate([
339
436
  property({ type: Boolean })
340
437
  ], FileUploader.prototype, "focused", void 0);
@@ -344,6 +441,27 @@ __decorate([
344
441
  __decorate([
345
442
  slot()
346
443
  ], FileUploader.prototype, "valueStateMessage", void 0);
444
+ __decorate([
445
+ query(".ui5-file-uploader-form")
446
+ ], FileUploader.prototype, "_form", void 0);
447
+ __decorate([
448
+ query("input[type=file]")
449
+ ], FileUploader.prototype, "_input", void 0);
450
+ __decorate([
451
+ query("[ui5-tokenizer]")
452
+ ], FileUploader.prototype, "_tokenizer", void 0);
453
+ __decorate([
454
+ query(".ui5-valuestatemessage-popover")
455
+ ], FileUploader.prototype, "_messagePopover", void 0);
456
+ __decorate([
457
+ property({ type: Array, noAttribute: true })
458
+ ], FileUploader.prototype, "_selectedFilesNames", void 0);
459
+ __decorate([
460
+ property({ type: Boolean, noAttribute: true })
461
+ ], FileUploader.prototype, "_tokenizerOpen", void 0);
462
+ __decorate([
463
+ property({ type: Boolean, noAttribute: true })
464
+ ], FileUploader.prototype, "_tokenizerExpanded", void 0);
347
465
  __decorate([
348
466
  i18n("@ui5/webcomponents")
349
467
  ], FileUploader, "i18nBundle", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../src/FileUploader.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tFILEUPLOAD_BROWSE,\n\tFILEUPLOADER_TITLE,\n\tVALUE_STATE_SUCCESS,\n\tVALUE_STATE_INFORMATION,\n\tVALUE_STATE_ERROR,\n\tVALUE_STATE_WARNING,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport type Input from \"./Input.js\";\nimport type Popover from \"./Popover.js\";\n\n// Template\nimport FileUploaderTemplate from \"./FileUploaderTemplate.js\";\n\n// Styles\nimport FileUploaderCss from \"./generated/themes/FileUploader.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport ValueStateMessageCss from \"./generated/themes/ValueStateMessage.css.js\";\n\nconst convertBytesToMegabytes = (bytes: number) => (bytes / 1024) / 1024;\n\ntype FileData = {\n\tfileName: string,\n\tfileSize: number,\n}\n\ntype FileUploaderFileSizeExceedEventDetail = {\n\tfilesData: Array<FileData>,\n}\n\ntype FileUploaderChangeEventDetail = {\n\tfiles: FileList | null,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-file-uploader` opens a file explorer dialog and enables users to upload files.\n * The component consists of input field, but you can provide an HTML element by your choice\n * to trigger the file upload, by using the default slot.\n * Furthermore, you can set the property \"hideInput\" to \"true\" to hide the input field.\n *\n * To get all selected files, you can simply use the read-only \"files\" property.\n * To restrict the types of files the user can select, you can use the \"accept\" property.\n *\n * And, similar to all input based components, the FileUploader supports \"valueState\", \"placeholder\", \"name\", and \"disabled\" properties.\n *\n * For the `ui5-file-uploader`\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/FileUploader.js\";`\n * @constructor\n * @since 1.0.0-rc.6\n * @extends UI5Element\n * @public\n */\n@customElement({\n\ttag: \"ui5-file-uploader\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tFileUploaderCss,\n\t\tResponsivePopoverCommonCss,\n\t\tValueStateMessageCss,\n\t],\n\ttemplate: FileUploaderTemplate,\n})\n/**\n * Event is fired when the value of the file path has been changed.\n *\n * **Note:** Keep in mind that because of the HTML input element of type file, the event is also fired in Chrome browser when the Cancel button of the uploads window is pressed.\n * @param {FileList | null} files The current files.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Event is fired when the size of a file is above the `maxFileSize` property value.\n * @param {Array<FileData>} filesData An array of `FileData` objects containing the`fileName` and `fileSize` in MB of each file that exceeds the upload limit.\n * @since 2.2.0\n * @public\n */\n@event(\"file-size-exceed\", {\n\tbubbles: true,\n})\nclass FileUploader extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\t\"change\": FileUploaderChangeEventDetail,\n\t\t\"file-size-exceed\": FileUploaderFileSizeExceedEventDetail,\n\t}\n\t/**\n\t * Comma-separated list of file types that the component should accept.\n\t *\n\t * **Note:** Please make sure you are adding the `.` in front on the file type, e.g. `.png` in case you want to accept png's only.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\taccept?: string;\n\n\t/**\n\t * If set to \"true\", the input field of component will not be rendered. Only the default slot that is passed will be rendered.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thideInput = false;\n\n\t/**\n\t * Defines whether the component is in disabled state.\n\t *\n\t * **Note:** A disabled component is completely noninteractive.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Allows multiple files to be chosen.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tmultiple = false;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Defines a short hint intended to aid the user with data entry when the component has no value.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Defines the name/names of the file/files to upload.\n\t * @default \"\"\n\t * @formEvents change\n\t * @formProperty\n\t * @public\n\t */\n\t@property()\n\tvalue = \"\";\n\n\t/**\n\t * Defines the maximum file size in megabytes which prevents the upload if at least one file exceeds it.\n\t * @default undefined\n\t * @since 2.2.0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmaxFileSize?: number;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tvalueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * By default the component contains a single input field. With this slot you can pass any content that you wish to add. See the samples for more information.\n\t *\n\t * **Note:** If no content is provided in this slot, the component will only consist of an input field and will not be interactable using the keyboard.\n\t * Also it is not recommended to use any non-interactable components, as it may lead to poor accessibility experience.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\tcontent!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Critical` or `Negative` value state.\n\t * @since 1.0.0-rc.9\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Array<HTMLElement>;\n\n\tstatic emptyInput: HTMLInputElement;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tasync formElementAnchor() {\n\t\treturn this.getFocusDomRefAsync();\n\t}\n\n\t/**\n\t * @override\n\t */\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this.content[0];\n\t}\n\n\tget formFormattedValue() {\n\t\tif (this.files && this.name) {\n\t\t\tconst formData = new FormData();\n\n\t\t\tfor (let i = 0; i < this.files.length; i++) {\n\t\t\t\tformData.append(this.name, this.files[i]);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t_onmouseover() {\n\t\tthis.content.forEach(item => {\n\t\t\titem.classList.add(\"ui5_hovered\");\n\t\t});\n\t}\n\n\t_onmouseout() {\n\t\tthis.content.forEach(item => {\n\t\t\titem.classList.remove(\"ui5_hovered\");\n\t\t});\n\t}\n\n\t_onclick() {\n\t\tif (this.getFocusDomRef()?.matches(\":focus-within\")) {\n\t\t\tthis._input.click();\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isEnter(e)) {\n\t\t\tthis._input.click();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\tthis._input.click();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_ondrag(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}\n\n\t_ondrop(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst files = e.dataTransfer?.files;\n\n\t\tif (!files) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst validatedFiles = this._validateFiles(files);\n\n\t\tif (!this.value && !validatedFiles.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._input.files = validatedFiles;\n\t\tthis._updateValue(validatedFiles);\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\tfiles: validatedFiles,\n\t\t});\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t}\n\n\t/**\n\t * FileList of all selected files.\n\t * @public\n\t * @default null\n\t */\n\tget files(): FileList | null {\n\t\tif (this._input) {\n\t\t\treturn this._input.files;\n\t\t}\n\n\t\treturn FileUploader._emptyFilesList;\n\t}\n\n\tonAfterRendering() {\n\t\tif (!this.value) {\n\t\t\tthis._input.value = \"\";\n\t\t}\n\n\t\tthis.toggleValueStatePopover(this.shouldOpenValueStateMessagePopover);\n\t}\n\n\t_onChange(e: Event) {\n\t\tlet changedFiles = (e.target as HTMLInputElement).files;\n\n\t\tif (changedFiles) {\n\t\t\tchangedFiles = this._validateFiles(changedFiles);\n\t\t}\n\n\t\tif (!this.value && !changedFiles?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._updateValue(changedFiles);\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\tfiles: changedFiles,\n\t\t});\n\t}\n\n\t_updateValue(files: FileList | null) {\n\t\tthis.value = Array.from(files || []).reduce((acc, currFile) => {\n\t\t\treturn `${acc}\"${currFile.name}\" `;\n\t\t}, \"\");\n\t}\n\n\t/**\n\t * Checks whether all files are below `maxFileSize` (if set),\n\t * and fires a `file-size-exceed` event if any file exceeds it.\n\t * @private\n\t */\n\t_validateFiles(changedFiles: FileList): FileList {\n\t\tconst exceededFilesData = this.maxFileSize ? this._getExceededFiles(changedFiles) : [];\n\n\t\tif (exceededFilesData.length) {\n\t\t\tthis.fireDecoratorEvent(\"file-size-exceed\", {\n\t\t\t\tfilesData: exceededFilesData,\n\t\t\t});\n\t\t\tchangedFiles = new DataTransfer().files;\n\t\t}\n\n\t\treturn changedFiles;\n\t}\n\n\t_getExceededFiles(files: FileList): Array<FileData> {\n\t\tconst filesArray = Array.from(files);\n\t\tconst exceededFiles: Array<FileData> = [];\n\n\t\tfor (let i = 0; i < filesArray.length; i++) {\n\t\t\tconst fileSize = convertBytesToMegabytes(filesArray[i].size);\n\t\t\tif (fileSize > this.maxFileSize!) {\n\t\t\t\texceededFiles.push({\n\t\t\t\t\tfileName: filesArray[i].name,\n\t\t\t\t\tfileSize,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn exceededFiles;\n\t}\n\n\ttoggleValueStatePopover(open: boolean) {\n\t\tif (open) {\n\t\t\tthis.openValueStatePopover();\n\t\t} else {\n\t\t\tthis.closeValueStatePopover();\n\t\t}\n\t}\n\n\topenValueStatePopover() {\n\t\tconst popover = this._getPopover();\n\n\t\tif (popover) {\n\t\t\tpopover.opener = this;\n\t\t\tpopover.open = true;\n\t\t}\n\t}\n\n\tcloseValueStatePopover() {\n\t\tconst popover = this._getPopover();\n\n\t\tif (popover) {\n\t\t\tpopover.open = false;\n\t\t}\n\t}\n\n\t_getPopover(): Popover {\n\t\treturn this.shadowRoot!.querySelector<Popover>(\".ui5-valuestatemessage-popover\")!;\n\t}\n\n\t/**\n\t * in case when the component is not placed in the DOM, return empty FileList, like native input would do\n\t * @private\n\t */\n\tstatic get _emptyFilesList() {\n\t\tif (!this.emptyInput) {\n\t\t\tthis.emptyInput = document.createElement(\"input\");\n\t\t\tthis.emptyInput.type = \"file\";\n\t\t}\n\t\treturn this.emptyInput.files;\n\t}\n\n\tget browseText(): string {\n\t\treturn FileUploader.i18nBundle.getText(FILEUPLOAD_BROWSE);\n\t}\n\n\tget titleText(): string {\n\t\treturn FileUploader.i18nBundle.getText(FILEUPLOADER_TITLE);\n\t}\n\n\tget _input(): HTMLInputElement {\n\t\treturn (this.shadowRoot!.querySelector<HTMLInputElement>(\"input[type=file]\") || this.querySelector<HTMLInputElement>(\"input[type=file][data-ui5-form-support]\"))!;\n\t}\n\n\tget valueStateTextMappings(): Record<string, string> {\n\t\treturn {\n\t\t\t\"Positive\": FileUploader.i18nBundle.getText(VALUE_STATE_SUCCESS),\n\t\t\t\"Information\": FileUploader.i18nBundle.getText(VALUE_STATE_INFORMATION),\n\t\t\t\"Negative\": FileUploader.i18nBundle.getText(VALUE_STATE_ERROR),\n\t\t\t\"Critical\": FileUploader.i18nBundle.getText(VALUE_STATE_WARNING),\n\t\t};\n\t}\n\n\tget valueStateText(): string {\n\t\treturn this.valueStateTextMappings[this.valueState];\n\t}\n\n\tget hasValueState(): boolean {\n\t\treturn this.valueState !== ValueState.None;\n\t}\n\n\tget hasValueStateText(): boolean {\n\t\treturn this.hasValueState && this.valueState !== ValueState.Positive;\n\t}\n\n\tget shouldDisplayDefaultValueStateMessage(): boolean {\n\t\treturn !this.valueStateMessage.length && this.hasValueStateText;\n\t}\n\n\tget shouldOpenValueStateMessagePopover(): boolean {\n\t\treturn this.focused && this.hasValueStateText && !this.hideInput;\n\t}\n\n\t/**\n\t * This method is relevant for sap_horizon theme only\n\t */\n\tget _valueStateMessageInputIcon(): string {\n\t\tconst iconPerValueState = {\n\t\t\tNegative: \"error\",\n\t\t\tCritical: \"alert\",\n\t\t\tPositive: \"sys-enter-2\",\n\t\t\tInformation: \"information\",\n\t\t};\n\n\t\treturn this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : \"\";\n\t}\n\n\tget ui5Input() {\n\t\treturn this.shadowRoot!.querySelector<Input>(\".ui5-file-uploader-input\");\n\t}\n}\n\nFileUploader.define();\n\nexport default FileUploader;\nexport type {\n\tFileData,\n\tFileUploaderChangeEventDetail,\n\tFileUploaderFileSizeExceedEventDetail,\n};\n"]}
1
+ {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../src/FileUploader.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport {\n\tgetEffectiveAriaLabelText,\n\tgetAssociatedLabelForTexts,\n\tgetAllAccessibleNameRefTexts,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tisUpAlt,\n\tisDownAlt,\n\tisEnter,\n\tisDelete,\n\tisF4,\n\tisSpace,\n\tisRight,\n\tisLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport {\n\tFILEUPLOADER_INPUT_TOOLTIP,\n\tFILEUPLOADER_VALUE_HELP_TOOLTIP,\n\tFILEUPLOADER_CLEAR_ICON_TOOLTIP,\n\tVALUE_STATE_SUCCESS,\n\tVALUE_STATE_INFORMATION,\n\tVALUE_STATE_ERROR,\n\tVALUE_STATE_WARNING,\n\tFILEUPLOADER_DEFAULT_PLACEHOLDER,\n\tFILEUPLOADER_DEFAULT_MULTIPLE_PLACEHOLDER,\n\tFILEUPLOADER_ROLE_DESCRIPTION,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport type { InputAccInfo } from \"./Input.js\";\nimport type Popover from \"./Popover.js\";\nimport type Tokenizer from \"./Tokenizer.js\";\n\n// Template\nimport FileUploaderTemplate from \"./FileUploaderTemplate.js\";\n\n// Styles\nimport FileUploaderCss from \"./generated/themes/FileUploader.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport ValueStateMessageCss from \"./generated/themes/ValueStateMessage.css.js\";\n\nconst convertBytesToMegabytes = (bytes: number) => (bytes / 1024) / 1024;\n\ntype FileData = {\n\tfileName: string,\n\tfileSize: number,\n}\n\ntype FileUploaderFileSizeExceedEventDetail = {\n\tfilesData: Array<FileData>,\n}\n\ntype FileUploaderChangeEventDetail = {\n\tfiles: FileList | null,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-file-uploader` opens a file explorer dialog and enables users to upload files.\n * The component consists of input field, but you can provide an HTML element by your choice\n * to trigger the file upload, by using the default slot.\n * Furthermore, you can set the property \"hideInput\" to \"true\" to hide the input field.\n *\n * To get all selected files, you can simply use the read-only \"files\" property.\n * To restrict the types of files the user can select, you can use the \"accept\" property.\n *\n * And, similar to all input based components, the FileUploader supports \"valueState\", \"placeholder\", \"name\", and \"disabled\" properties.\n *\n * For the `ui5-file-uploader`\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/FileUploader.js\";`\n * @constructor\n * @since 1.0.0-rc.6\n * @extends UI5Element\n * @public\n */\n@customElement({\n\ttag: \"ui5-file-uploader\",\n\tlanguageAware: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tFileUploaderCss,\n\t\tResponsivePopoverCommonCss,\n\t\tValueStateMessageCss,\n\t],\n\ttemplate: FileUploaderTemplate,\n})\n/**\n * Event is fired when the value of the file path has been changed.\n *\n * **Note:** Keep in mind that because of the HTML input element of type file, the event is also fired in Chrome browser when the Cancel button of the uploads window is pressed.\n * @param {FileList | null} files The current files.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Event is fired when the size of a file is above the `maxFileSize` property value.\n * @param {Array<FileData>} filesData An array of `FileData` objects containing the`fileName` and `fileSize` in MB of each file that exceeds the upload limit.\n * @since 2.2.0\n * @public\n */\n@event(\"file-size-exceed\", {\n\tbubbles: true,\n})\nclass FileUploader extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\t\"change\": FileUploaderChangeEventDetail,\n\t\t\"file-size-exceed\": FileUploaderFileSizeExceedEventDetail,\n\t}\n\t/**\n\t * Comma-separated list of file types that the component should accept.\n\t *\n\t * **Note:** Please make sure you are adding the `.` in front on the file type, e.g. `.png` in case you want to accept png's only.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\taccept?: string;\n\n\t/**\n\t * If set to \"true\", the input field of component will not be rendered. Only the default slot that is passed will be rendered.\n\t *\n\t * **Note:** Use this property in combination with the default slot to achieve a button-only file uploader design.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thideInput = false;\n\n\t/**\n\t * Defines whether the component is in disabled state.\n\t *\n\t * **Note:** A disabled component is completely noninteractive.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Allows multiple files to be chosen.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tmultiple = false;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Defines a short hint intended to aid the user with data entry when the component has no value.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Defines the name/names of the file/files to upload.\n\t * @default \"\"\n\t * @formEvents change\n\t * @formProperty\n\t * @public\n\t */\n\t@property()\n\tvalue = \"\";\n\n\t/**\n\t * Defines the maximum file size in megabytes which prevents the upload if at least one file exceeds it.\n\t * @default undefined\n\t * @since 2.2.0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmaxFileSize?: number;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tvalueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property({ type: Boolean })\n\trequired = false;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the input.\n\t * @default undefined\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * This slot allows you to add custom content to the component, such as a button or any other interactive element to trigger the file selection dialog.\n\t *\n\t * **Note:** For best accessibility experience, set a `tabindex` of \"-1\" on your interactive element, or it will be set automatically.\n\t * This slot is intended for use cases where you want a button-only file uploader.\n\t * It is recommended to set `hideInput` property to \"true\" when using this slot.\n\t * Not setting `hideInput` may negatively impact the screen reader users.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\tcontent!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Critical` or `Negative` value state.\n\t * @since 1.0.0-rc.9\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Array<HTMLElement>;\n\n\t@query(\".ui5-file-uploader-form\")\n\t_form!: HTMLFormElement;\n\n\t@query(\"input[type=file]\")\n\t_input!: HTMLInputElement;\n\n\t@query(\"[ui5-tokenizer]\")\n\t_tokenizer!: Tokenizer;\n\n\t@query(\".ui5-valuestatemessage-popover\")\n\t_messagePopover!: Popover;\n\n\t@property({ type: Array, noAttribute: true })\n\t_selectedFilesNames: Array<string> = [];\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_tokenizerOpen = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_tokenizerExpanded = true;\n\n\tstatic emptyInput: HTMLInputElement;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tasync formElementAnchor() {\n\t\treturn this.getFocusDomRefAsync();\n\t}\n\n\t/**\n\t * @override\n\t */\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this._input;\n\t}\n\n\tget formFormattedValue() {\n\t\tif (this.files && this.name) {\n\t\t\tconst formData = new FormData();\n\n\t\t\tfor (let i = 0; i < this.files.length; i++) {\n\t\t\t\tformData.append(this.name, this.files[i]);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t_onclick() {\n\t\tif (this.getFocusDomRef()?.matches(\":focus-within\")) {\n\t\t\tthis._openFileBrowser();\n\t\t}\n\t}\n\n\t_onNativeInputClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\te.preventDefault();\n\t\tthis._input.focus();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tconst firstToken = this._tokenizer?.tokens.find(token => !token.hasAttribute(\"overflows\"));\n\t\tconst isToken = (<HTMLElement>e.target).hasAttribute(\"ui5-token\");\n\t\tconst isArrowNavigation = this.effectiveDir === \"ltr\" ? isRight(e) : isLeft(e);\n\n\t\tif (this.hideInput) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis._openFileBrowser();\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isArrowNavigation && !isToken) {\n\t\t\te.preventDefault();\n\t\t\tfirstToken?.focus();\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.hideInput) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isSpace(e) || isF4(e) || isUpAlt(e) || isDownAlt(e)) {\n\t\t\tthis._openFileBrowser();\n\t\t} else if (isDelete(e)) {\n\t\t\tthis._clearFileSelection();\n\t\t}\n\t}\n\n\t_ondrag(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}\n\n\t_ondrop(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tconst files = e.dataTransfer?.files;\n\n\t\tif (!files) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst validatedFiles = this._validateFiles(files);\n\n\t\tif (!this.value && !validatedFiles.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._input.files = validatedFiles;\n\t\tthis._selectedFilesNames = this._fileNamesList(files);\n\t\tthis.value = this.computedValue;\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\tfiles: validatedFiles,\n\t\t});\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t\tthis._tokenizerExpanded = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t\tthis._tokenizerExpanded = this._tokenizerOpen || false;\n\t}\n\n\t_onTokenizerKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e) || isDelete(e)) {\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_onTokenizerKeyDown(e: KeyboardEvent) {\n\t\tconst firstToken = this._tokenizer?.tokens.find(token => !token.hasAttribute(\"overflows\"));\n\t\tconst isArrowNavigation = this.effectiveDir === \"ltr\" ? isLeft(e) : isRight(e);\n\n\t\tif (isEnter(e)) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (e.target === firstToken && isArrowNavigation) {\n\t\t\tthis._input.focus();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onTokenizerClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t}\n\n\t_onTokenizerMouseDown(e: MouseEvent) {\n\t\te.stopPropagation();\n\t}\n\n\t_onClearIconClick(e: CustomEvent) {\n\t\te.stopPropagation();\n\t\tthis._clearFileSelection();\n\t}\n\n\t_onFormSubmit(e: SubmitEvent) {\n\t\te.preventDefault();\n\t}\n\n\t_openFileBrowser() {\n\t\tthis._input.click();\n\t}\n\n\t_clearFileSelection() {\n\t\tthis._selectedFilesNames = [];\n\t\tthis.value = \"\";\n\t\tthis._form?.reset();\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\tfiles: this.files,\n\t\t});\n\t}\n\n\t/**\n\t * FileList of all selected files.\n\t * @public\n\t * @default null\n\t */\n\tget files(): FileList | null {\n\t\tif (this._input) {\n\t\t\treturn this._input.files;\n\t\t}\n\n\t\treturn FileUploader._emptyFilesList;\n\t}\n\n\tonAfterRendering() {\n\t\tif (!this.value) {\n\t\t\tthis._input.value = \"\";\n\t\t}\n\n\t\tthis._tokenizerOpen = this._tokenizer?.open || false;\n\n\t\tif (this.hideInput && this.content.length > 0) {\n\t\t\tthis.content.forEach(element => {\n\t\t\t\telement.setAttribute(\"tabindex\", \"-1\");\n\t\t\t});\n\t\t}\n\n\t\tthis.toggleValueStatePopover(this.shouldOpenValueStateMessagePopover);\n\t}\n\n\tget computedValue(): string {\n\t\treturn this._selectedFilesNames.join(\" \");\n\t}\n\n\tget _formWidth() : number {\n\t\treturn this._form ? this._form.offsetWidth : 0;\n\t}\n\n\t_onChange(e: Event) {\n\t\tlet changedFiles = (e.target as HTMLInputElement).files;\n\n\t\tif (changedFiles) {\n\t\t\tchangedFiles = this._validateFiles(changedFiles);\n\t\t}\n\n\t\tif (!this.value && !changedFiles?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selectedFilesNames = this._fileNamesList(changedFiles as FileList);\n\t\tthis.value = this.computedValue;\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\tfiles: changedFiles,\n\t\t});\n\t}\n\n\t_fileNamesList(files: FileList) : Array<string> {\n\t\treturn Array.from(files)\n\t\t\t.map(file => file.name)\n\t\t\t.sort((a, b) => a.length - b.length); // workaround for incident #11824\n\t}\n\n\t/**\n\t * Checks whether all files are below `maxFileSize` (if set),\n\t * and fires a `file-size-exceed` event if any file exceeds it.\n\t * @private\n\t */\n\t_validateFiles(changedFiles: FileList): FileList {\n\t\tconst exceededFilesData = this.maxFileSize ? this._getExceededFiles(changedFiles) : [];\n\n\t\tif (exceededFilesData.length) {\n\t\t\tthis.fireDecoratorEvent(\"file-size-exceed\", {\n\t\t\t\tfilesData: exceededFilesData,\n\t\t\t});\n\t\t\tchangedFiles = new DataTransfer().files;\n\t\t}\n\n\t\treturn changedFiles;\n\t}\n\n\t_getExceededFiles(files: FileList): Array<FileData> {\n\t\tconst filesArray = Array.from(files);\n\t\tconst exceededFiles: Array<FileData> = [];\n\n\t\tfor (let i = 0; i < filesArray.length; i++) {\n\t\t\tconst fileSize = convertBytesToMegabytes(filesArray[i].size);\n\t\t\tif (fileSize > this.maxFileSize!) {\n\t\t\t\texceededFiles.push({\n\t\t\t\t\tfileName: filesArray[i].name,\n\t\t\t\t\tfileSize,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn exceededFiles;\n\t}\n\n\ttoggleValueStatePopover(open: boolean) {\n\t\tif (open) {\n\t\t\tthis.openValueStatePopover();\n\t\t} else {\n\t\t\tthis.closeValueStatePopover();\n\t\t}\n\t}\n\n\topenValueStatePopover() {\n\t\tif (this._messagePopover) {\n\t\t\tthis._messagePopover.opener = this;\n\t\t\tthis._messagePopover.open = true;\n\t\t}\n\t}\n\n\tcloseValueStatePopover() {\n\t\tif (this._messagePopover) {\n\t\t\tthis._messagePopover.open = false;\n\t\t}\n\t}\n\n\t/**\n\t * in case when the component is not placed in the DOM, return empty FileList, like native input would do\n\t * @private\n\t */\n\tstatic get _emptyFilesList() {\n\t\tif (!this.emptyInput) {\n\t\t\tthis.emptyInput = document.createElement(\"input\");\n\t\t\tthis.emptyInput.type = \"file\";\n\t\t}\n\t\treturn this.emptyInput.files;\n\t}\n\n\tget accInfo(): InputAccInfo {\n\t\treturn {\n\t\t\t\"ariaRoledescription\": FileUploader.i18nBundle.getText(FILEUPLOADER_ROLE_DESCRIPTION),\n\t\t\t\"ariaRequired\": this.required || undefined,\n\t\t\t\"ariaInvalid\": this.valueState === ValueState.Negative || undefined,\n\t\t\t\"ariaHasPopup\": \"dialog\",\n\t\t\t\"ariaLabel\": getAllAccessibleNameRefTexts(this) || getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined,\n\t\t};\n\t}\n\n\tget inputTitle(): string {\n\t\treturn FileUploader.i18nBundle.getText(FILEUPLOADER_INPUT_TOOLTIP);\n\t}\n\n\tget valueHelpTitle(): string {\n\t\treturn FileUploader.i18nBundle.getText(FILEUPLOADER_VALUE_HELP_TOOLTIP);\n\t}\n\n\tget clearIconTitle(): string {\n\t\treturn FileUploader.i18nBundle.getText(FILEUPLOADER_CLEAR_ICON_TOOLTIP);\n\t}\n\n\tget resolvedPlaceholder(): string {\n\t\tconst singlePlaceholder = FileUploader.i18nBundle.getText(FILEUPLOADER_DEFAULT_PLACEHOLDER);\n\t\tconst multiplePlaceholder = FileUploader.i18nBundle.getText(FILEUPLOADER_DEFAULT_MULTIPLE_PLACEHOLDER);\n\t\treturn this.placeholder ?? (this.multiple ? multiplePlaceholder : singlePlaceholder);\n\t}\n\n\tget valueStateTextMappings(): Record<string, string> {\n\t\treturn {\n\t\t\t\"Positive\": FileUploader.i18nBundle.getText(VALUE_STATE_SUCCESS),\n\t\t\t\"Information\": FileUploader.i18nBundle.getText(VALUE_STATE_INFORMATION),\n\t\t\t\"Negative\": FileUploader.i18nBundle.getText(VALUE_STATE_ERROR),\n\t\t\t\"Critical\": FileUploader.i18nBundle.getText(VALUE_STATE_WARNING),\n\t\t};\n\t}\n\n\tget valueStateText(): string {\n\t\treturn this.valueStateTextMappings[this.valueState];\n\t}\n\n\tget hasValueState(): boolean {\n\t\treturn this.valueState !== ValueState.None;\n\t}\n\n\tget shouldDisplayDefaultValueStateMessage(): boolean {\n\t\treturn !this.valueStateMessage.length && this.hasValueState;\n\t}\n\n\tget shouldOpenValueStateMessagePopover(): boolean {\n\t\treturn this.focused && this.hasValueState && !this.hideInput && !this._tokenizerOpen;\n\t}\n\n\t/**\n\t * This method is relevant for sap_horizon theme only\n\t */\n\tget _valueStateMessageInputIcon(): string {\n\t\tconst iconPerValueState = {\n\t\t\tNegative: \"error\",\n\t\t\tCritical: \"alert\",\n\t\t\tPositive: \"sys-enter-2\",\n\t\t\tInformation: \"information\",\n\t\t};\n\n\t\treturn this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : \"\";\n\t}\n}\n\nFileUploader.define();\n\nexport default FileUploader;\nexport type {\n\tFileData,\n\tFileUploaderChangeEventDetail,\n\tFileUploaderFileSizeExceedEventDetail,\n};\n"]}
@@ -9,9 +9,7 @@ export default function FileUploaderPopoverTemplate() {
9
9
  "ui5-valuestatemessage--error": this.valueState === ValueState.Negative,
10
10
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Critical,
11
11
  "ui5-valuestatemessage--information": this.valueState === ValueState.Information,
12
- }, style: {
13
- "width": `${this.ui5Input ? this.ui5Input.offsetWidth : 0}px`,
14
- }, children: [this._valueStateMessageInputIcon &&
12
+ }, style: { width: `${this._formWidth}px` }, children: [this._valueStateMessageInputIcon &&
15
13
  _jsx(Icon, { class: "ui5-input-value-state-message-icon", name: this._valueStateMessageInputIcon }), valueStateMessage.call(this)] }) }));
16
14
  }
17
15
  function valueStateMessage() {
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploaderPopoverTemplate.js","sourceRoot":"","sources":["../src/FileUploaderPopoverTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,kDAAkD,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAClD,OAAO,CACN,KAAC,OAAO,IACP,mBAAmB,EAAE,IAAI,EACzB,mBAAmB,EAAE,IAAI,EACzB,SAAS,EAAE,IAAI,EACf,SAAS,EAAC,QAAQ,EAClB,eAAe,EAAC,OAAO,EACvB,KAAK,EAAC,+BAA+B,YAErC,eAAK,IAAI,EAAC,QAAQ,EACjB,KAAK,EAAE;gBACN,4BAA4B,EAAE,IAAI;gBAClC,gCAAgC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACzE,8BAA8B,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACvE,gCAAgC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACzE,oCAAoC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW;aAChF,EACD,KAAK,EAAE;gBACN,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;aAC7D,aAGA,IAAI,CAAC,2BAA2B;oBAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,oCAAoC,EAAC,IAAI,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAG1F,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IACzB,GACG,CACV,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACzB,OAAO,CACN,4BAEE,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,eAAM,IAAI,EAAC,mBAAmB,GAAQ,GAExG,CACH,CAAC;AACH,CAAC","sourcesContent":["import type FileUploader from \"./FileUploader.js\";\nimport Icon from \"./Icon.js\";\nimport Popover from \"./Popover.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\n\nexport default function FileUploaderPopoverTemplate(this: FileUploader) {\n\treturn (\n\t\t<Popover\n\t\t\tpreventInitialFocus={true}\n\t\t\tpreventFocusRestore={true}\n\t\t\thideArrow={true}\n\t\t\tplacement=\"Bottom\"\n\t\t\thorizontalAlign=\"Start\"\n\t\t\tclass=\"ui5-valuestatemessage-popover\"\n\t\t>\n\t\t\t<div slot=\"header\"\n\t\t\t\tclass={{\n\t\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Positive,\n\t\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Negative,\n\t\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Critical,\n\t\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t\t}}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"width\": `${this.ui5Input ? this.ui5Input.offsetWidth : 0}px`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tthis._valueStateMessageInputIcon &&\n\t\t\t\t\t\t<Icon class=\"ui5-input-value-state-message-icon\" name={this._valueStateMessageInputIcon}/>\n\t\t\t\t}\n\n\t\t\t\t{ valueStateMessage.call(this) }\n\t\t\t</div>\n\t\t</Popover>\n\t);\n}\n\nfunction valueStateMessage(this: FileUploader) {\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\tthis.shouldDisplayDefaultValueStateMessage ? this.valueStateText : <slot name=\"valueStateMessage\"></slot>\n\t\t\t}\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"file":"FileUploaderPopoverTemplate.js","sourceRoot":"","sources":["../src/FileUploaderPopoverTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,kDAAkD,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAClD,OAAO,CACN,KAAC,OAAO,IACP,mBAAmB,EAAE,IAAI,EACzB,mBAAmB,EAAE,IAAI,EACzB,SAAS,EAAE,IAAI,EACf,SAAS,EAAC,QAAQ,EAClB,eAAe,EAAC,OAAO,EACvB,KAAK,EAAC,+BAA+B,YAErC,eAAK,IAAI,EAAC,QAAQ,EACjB,KAAK,EAAE;gBACN,4BAA4B,EAAE,IAAI;gBAClC,gCAAgC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACzE,8BAA8B,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACvE,gCAAgC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ;gBACzE,oCAAoC,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW;aAChF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,aAGvC,IAAI,CAAC,2BAA2B;oBAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,oCAAoC,EAAC,IAAI,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAG1F,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IACzB,GACG,CACV,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACzB,OAAO,CACN,4BAEE,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,eAAM,IAAI,EAAC,mBAAmB,GAAQ,GAExG,CACH,CAAC;AACH,CAAC","sourcesContent":["import type FileUploader from \"./FileUploader.js\";\nimport Icon from \"./Icon.js\";\nimport Popover from \"./Popover.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\n\nexport default function FileUploaderPopoverTemplate(this: FileUploader) {\n\treturn (\n\t\t<Popover\n\t\t\tpreventInitialFocus={true}\n\t\t\tpreventFocusRestore={true}\n\t\t\thideArrow={true}\n\t\t\tplacement=\"Bottom\"\n\t\t\thorizontalAlign=\"Start\"\n\t\t\tclass=\"ui5-valuestatemessage-popover\"\n\t\t>\n\t\t\t<div slot=\"header\"\n\t\t\t\tclass={{\n\t\t\t\t\t\"ui5-valuestatemessage-root\": true,\n\t\t\t\t\t\"ui5-valuestatemessage--success\": this.valueState === ValueState.Positive,\n\t\t\t\t\t\"ui5-valuestatemessage--error\": this.valueState === ValueState.Negative,\n\t\t\t\t\t\"ui5-valuestatemessage--warning\": this.valueState === ValueState.Critical,\n\t\t\t\t\t\"ui5-valuestatemessage--information\": this.valueState === ValueState.Information,\n\t\t\t\t}}\n\t\t\t\tstyle={{ width: `${this._formWidth}px` }}\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tthis._valueStateMessageInputIcon &&\n\t\t\t\t\t\t<Icon class=\"ui5-input-value-state-message-icon\" name={this._valueStateMessageInputIcon}/>\n\t\t\t\t}\n\n\t\t\t\t{ valueStateMessage.call(this) }\n\t\t\t</div>\n\t\t</Popover>\n\t);\n}\n\nfunction valueStateMessage(this: FileUploader) {\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\tthis.shouldDisplayDefaultValueStateMessage ? this.valueStateText : <slot name=\"valueStateMessage\"></slot>\n\t\t\t}\n\t\t</>\n\t);\n}\n"]}