@ui5/webcomponents 0.0.0-323968e1b → 0.0.0-4180fe799

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 (730) hide show
  1. package/CHANGELOG.md +717 -1
  2. package/README.md +144 -41
  3. package/csp.js +7 -0
  4. package/customI18n.js +50 -0
  5. package/dist/Assets-static.js +6 -0
  6. package/dist/Assets.js +3 -2
  7. package/dist/Avatar.js +224 -40
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +48 -28
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +172 -19
  13. package/dist/Button.js +180 -49
  14. package/dist/Calendar.js +345 -554
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -64
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +47 -161
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +681 -0
  21. package/dist/CheckBox.js +154 -54
  22. package/dist/ColorPalette.js +493 -0
  23. package/dist/ColorPaletteItem.js +137 -0
  24. package/dist/ColorPalettePopover.js +219 -0
  25. package/dist/ColorPicker.js +524 -0
  26. package/dist/ComboBox.js +664 -107
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +33 -30
  30. package/dist/CustomListItem.js +38 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +468 -384
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +430 -0
  35. package/dist/DayPicker.js +513 -438
  36. package/dist/Dialog.js +501 -47
  37. package/dist/DurationPicker.js +312 -0
  38. package/dist/FileUploader.js +532 -0
  39. package/dist/GroupHeaderListItem.js +36 -8
  40. package/dist/Icon.js +221 -43
  41. package/dist/Input.js +796 -127
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +143 -35
  45. package/dist/List.js +560 -73
  46. package/dist/ListItem.js +139 -30
  47. package/dist/ListItemBase.js +53 -9
  48. package/dist/MessageStrip.js +82 -93
  49. package/dist/MonthPicker.js +181 -184
  50. package/dist/MultiComboBox.js +625 -200
  51. package/dist/MultiComboBoxItem.js +43 -0
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +123 -41
  55. package/dist/Popover.js +314 -234
  56. package/dist/Popup.js +382 -287
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +153 -66
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +291 -0
  62. package/dist/ResponsivePopover.js +117 -61
  63. package/dist/SegmentedButton.js +290 -0
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +500 -110
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +46 -24
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +146 -0
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +62 -48
  74. package/dist/Tab.js +184 -18
  75. package/dist/TabContainer.js +337 -235
  76. package/dist/TabSeparator.js +2 -1
  77. package/dist/Table.js +492 -39
  78. package/dist/TableCell.js +13 -15
  79. package/dist/TableColumn.js +18 -7
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +254 -31
  82. package/dist/TextArea.js +314 -38
  83. package/dist/TimePicker.js +166 -0
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +18 -10
  87. package/dist/Toast.js +63 -37
  88. package/dist/ToggleButton.js +21 -13
  89. package/dist/Token.js +87 -49
  90. package/dist/Tokenizer.js +250 -65
  91. package/dist/Tree.js +443 -0
  92. package/dist/TreeItem.js +168 -0
  93. package/dist/TreeListItem.js +332 -0
  94. package/dist/WheelSlider.js +435 -0
  95. package/dist/YearPicker.js +201 -258
  96. package/dist/api.json +6877 -0
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +35 -1
  99. package/dist/features/InputSuggestions.js +294 -52
  100. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
  105. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
  110. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  112. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  113. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
  115. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
  119. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
  123. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
  136. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  148. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -0
  151. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -0
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -0
  155. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
  156. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
  157. package/dist/generated/i18n/i18n-defaults.js +2 -2
  158. package/dist/generated/json-imports/Themes-static.js +35 -0
  159. package/dist/generated/json-imports/Themes.js +23 -13
  160. package/dist/generated/json-imports/i18n-static.js +162 -0
  161. package/dist/generated/json-imports/i18n.js +113 -89
  162. package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
  163. package/dist/generated/templates/AvatarTemplate.lit.js +9 -9
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -6
  165. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
  166. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
  167. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -5
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -6
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -4
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -4
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -8
  173. package/dist/generated/templates/CarouselTemplate.lit.js +16 -0
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -7
  175. package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
  176. package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
  177. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
  178. package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
  179. package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
  180. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -5
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -5
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -12
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -4
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +12 -0
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -8
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +10 -0
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -4
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -6
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -6
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -8
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -4
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -5
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -12
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -8
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +6 -22
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -7
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -8
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +16 -0
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -6
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -9
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +7 -0
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -4
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +17 -0
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -7
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +14 -0
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -11
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +7 -0
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -4
  216. package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
  217. package/dist/generated/templates/SliderTemplate.lit.js +12 -0
  218. package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -18
  219. package/dist/generated/templates/StepInputTemplate.lit.js +10 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +27 -0
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -6
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -8
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -18
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +9 -0
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +11 -0
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -4
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -4
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -4
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -4
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -6
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +11 -0
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +7 -0
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +9 -0
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -10
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -4
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -6
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -5
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +12 -0
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -6
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +21 -0
  245. package/dist/generated/templates/TreeTemplate.lit.js +8 -0
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +10 -0
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +6 -7
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +6 -7
  251. package/dist/generated/themes/Breadcrumbs.css.js +8 -0
  252. package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
  253. package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
  254. package/dist/generated/themes/BusyIndicator.css.js +6 -7
  255. package/dist/generated/themes/Button.css.js +6 -7
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +6 -7
  258. package/dist/generated/themes/CalendarHeader.css.js +6 -7
  259. package/dist/generated/themes/Card.css.js +6 -7
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +8 -0
  262. package/dist/generated/themes/CheckBox.css.js +6 -7
  263. package/dist/generated/themes/ColorPalette.css.js +8 -0
  264. package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
  265. package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
  266. package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
  267. package/dist/generated/themes/ColorPicker.css.js +8 -0
  268. package/dist/generated/themes/ComboBox.css.js +6 -7
  269. package/dist/generated/themes/ComboBoxPopover.css.js +6 -7
  270. package/dist/generated/themes/CustomListItem.css.js +6 -7
  271. package/dist/generated/themes/DatePicker.css.js +6 -7
  272. package/dist/generated/themes/DatePickerPopover.css.js +6 -7
  273. package/dist/generated/themes/DateRangePicker.css.js +8 -0
  274. package/dist/generated/themes/DateTimePicker.css.js +8 -0
  275. package/dist/generated/themes/DateTimePickerPopover.css.js +8 -0
  276. package/dist/generated/themes/DayPicker.css.js +6 -7
  277. package/dist/generated/themes/Dialog.css.js +6 -7
  278. package/dist/generated/themes/FileUploader.css.js +8 -0
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +6 -7
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +6 -7
  282. package/dist/generated/themes/Input.css.js +6 -7
  283. package/dist/generated/themes/InputIcon.css.js +6 -7
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +6 -7
  285. package/dist/generated/themes/Label.css.js +6 -7
  286. package/dist/generated/themes/Link.css.js +6 -7
  287. package/dist/generated/themes/List.css.js +6 -7
  288. package/dist/generated/themes/ListItem.css.js +6 -7
  289. package/dist/generated/themes/ListItemBase.css.js +6 -7
  290. package/dist/generated/themes/MessageStrip.css.js +6 -7
  291. package/dist/generated/themes/MonthPicker.css.js +6 -7
  292. package/dist/generated/themes/MultiComboBox.css.js +6 -7
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +6 -7
  295. package/dist/generated/themes/Popover.css.js +6 -7
  296. package/dist/generated/themes/Popup.css.js +6 -7
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +8 -0
  299. package/dist/generated/themes/PopupsCommon.css.js +8 -0
  300. package/dist/generated/themes/ProgressIndicator.css.js +8 -0
  301. package/dist/generated/themes/RadioButton.css.js +6 -7
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +6 -7
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +6 -7
  305. package/dist/generated/themes/SegmentedButton.css.js +8 -0
  306. package/dist/generated/themes/Select.css.js +6 -7
  307. package/dist/generated/themes/SelectPopover.css.js +8 -0
  308. package/dist/generated/themes/SliderBase.css.js +8 -0
  309. package/dist/generated/themes/StepInput.css.js +8 -0
  310. package/dist/generated/themes/Suggestions.css.js +8 -0
  311. package/dist/generated/themes/Switch.css.js +6 -7
  312. package/dist/generated/themes/Tab.css.js +6 -7
  313. package/dist/generated/themes/TabContainer.css.js +6 -7
  314. package/dist/generated/themes/TabInOverflow.css.js +8 -0
  315. package/dist/generated/themes/TabInStrip.css.js +8 -0
  316. package/dist/generated/themes/Table.css.js +6 -7
  317. package/dist/generated/themes/TableCell.css.js +6 -7
  318. package/dist/generated/themes/TableColumn.css.js +6 -7
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +6 -7
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +6 -7
  323. package/dist/generated/themes/TimePicker.css.js +8 -0
  324. package/dist/generated/themes/TimePickerPopover.css.js +8 -0
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +6 -7
  327. package/dist/generated/themes/Toast.css.js +6 -7
  328. package/dist/generated/themes/ToggleButton.css.js +6 -7
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +6 -7
  331. package/dist/generated/themes/Tokenizer.css.js +6 -7
  332. package/dist/generated/themes/Tree.css.js +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  334. package/dist/generated/themes/ValueStateMessage.css.js +8 -0
  335. package/dist/generated/themes/WheelSlider.css.js +8 -0
  336. package/dist/generated/themes/YearPicker.css.js +6 -7
  337. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  338. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -0
  340. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  342. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -0
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -0
  344. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
  345. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
  346. package/dist/i18n/messagebundle.properties +335 -0
  347. package/dist/i18n/messagebundle_ar.properties +224 -0
  348. package/dist/i18n/messagebundle_bg.properties +224 -0
  349. package/dist/i18n/messagebundle_ca.properties +224 -0
  350. package/dist/i18n/messagebundle_cs.properties +224 -0
  351. package/dist/i18n/messagebundle_cy.properties +224 -0
  352. package/dist/i18n/messagebundle_da.properties +224 -0
  353. package/dist/i18n/messagebundle_de.properties +224 -0
  354. package/dist/i18n/messagebundle_el.properties +224 -0
  355. package/dist/i18n/messagebundle_en.properties +224 -0
  356. package/dist/i18n/messagebundle_en_GB.properties +224 -0
  357. package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
  358. package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
  359. package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
  360. package/dist/i18n/messagebundle_es.properties +224 -0
  361. package/dist/i18n/messagebundle_es_MX.properties +224 -0
  362. package/dist/i18n/messagebundle_et.properties +224 -0
  363. package/dist/i18n/messagebundle_fi.properties +224 -0
  364. package/dist/i18n/messagebundle_fr.properties +224 -0
  365. package/dist/i18n/messagebundle_fr_CA.properties +224 -0
  366. package/dist/i18n/messagebundle_hi.properties +224 -0
  367. package/dist/i18n/messagebundle_hr.properties +224 -0
  368. package/dist/i18n/messagebundle_hu.properties +224 -0
  369. package/dist/i18n/messagebundle_id.properties +224 -0
  370. package/dist/i18n/messagebundle_in.properties +172 -0
  371. package/dist/i18n/messagebundle_it.properties +224 -0
  372. package/dist/i18n/messagebundle_iw.properties +224 -0
  373. package/dist/i18n/messagebundle_ja.properties +224 -0
  374. package/dist/i18n/messagebundle_kk.properties +224 -0
  375. package/dist/i18n/messagebundle_ko.properties +224 -0
  376. package/dist/i18n/messagebundle_lt.properties +224 -0
  377. package/dist/i18n/messagebundle_lv.properties +224 -0
  378. package/dist/i18n/messagebundle_ms.properties +224 -0
  379. package/dist/i18n/messagebundle_nl.properties +224 -0
  380. package/dist/i18n/messagebundle_no.properties +224 -0
  381. package/dist/i18n/messagebundle_pl.properties +224 -0
  382. package/dist/i18n/messagebundle_pt.properties +224 -0
  383. package/dist/i18n/messagebundle_pt_PT.properties +224 -0
  384. package/dist/i18n/messagebundle_ro.properties +224 -0
  385. package/dist/i18n/messagebundle_ru.properties +224 -0
  386. package/dist/i18n/messagebundle_sh.properties +224 -0
  387. package/dist/i18n/messagebundle_sk.properties +224 -0
  388. package/dist/i18n/messagebundle_sl.properties +224 -0
  389. package/dist/i18n/messagebundle_sv.properties +224 -0
  390. package/dist/i18n/messagebundle_th.properties +224 -0
  391. package/dist/i18n/messagebundle_tr.properties +224 -0
  392. package/dist/i18n/messagebundle_uk.properties +224 -0
  393. package/dist/i18n/messagebundle_vi.properties +224 -0
  394. package/dist/i18n/messagebundle_zh_CN.properties +224 -0
  395. package/dist/i18n/messagebundle_zh_TW.properties +224 -0
  396. package/dist/popup-utils/OpenedPopupsRegistry.js +18 -13
  397. package/dist/popup-utils/PopoverRegistry.js +55 -21
  398. package/dist/timepicker-utils/TimeSlider.js +103 -0
  399. package/dist/types/{AvatarBackgroundColor.js → AvatarColorScheme.js} +9 -9
  400. package/dist/types/AvatarGroupType.js +43 -0
  401. package/dist/types/AvatarShape.js +1 -1
  402. package/dist/types/AvatarSize.js +1 -1
  403. package/dist/types/BreadcrumbsDesign.js +42 -0
  404. package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
  405. package/dist/types/BusyIndicatorSize.js +1 -1
  406. package/dist/types/ButtonDesign.js +8 -1
  407. package/dist/types/CalendarSelectionMode.js +47 -0
  408. package/dist/types/CarouselArrowsPlacement.js +40 -0
  409. package/dist/types/GrowingMode.js +48 -0
  410. package/dist/types/InputType.js +7 -7
  411. package/dist/types/LinkDesign.js +1 -1
  412. package/dist/types/ListGrowingMode.js +15 -0
  413. package/dist/types/ListItemType.js +8 -1
  414. package/dist/types/ListMode.js +9 -1
  415. package/dist/types/ListSeparators.js +1 -1
  416. package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  417. package/dist/types/PanelAccessibleRole.js +1 -1
  418. package/dist/types/PopoverHorizontalAlign.js +1 -1
  419. package/dist/types/PopoverPlacementType.js +2 -2
  420. package/dist/types/PopoverVerticalAlign.js +1 -2
  421. package/dist/types/Priority.js +55 -0
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +40 -0
  425. package/dist/types/TabLayout.js +40 -0
  426. package/dist/types/TableGrowingMode.js +15 -0
  427. package/dist/types/TableMode.js +47 -0
  428. package/dist/types/TableRowType.js +40 -0
  429. package/dist/types/TitleLevel.js +1 -1
  430. package/dist/types/ToastPlacement.js +1 -2
  431. package/dist/types/WrappingType.js +41 -0
  432. package/dist/webcomponentsjs/CHANGELOG.md +61 -0
  433. package/dist/webcomponentsjs/README.md +64 -47
  434. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
  435. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
  436. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
  437. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  438. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  439. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  440. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
  441. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
  442. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
  443. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
  444. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
  445. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
  446. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
  447. package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
  448. package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
  449. package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
  450. package/package-scripts.js +1 -0
  451. package/package.json +23 -8
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +7 -0
  454. package/src/Avatar.hbs +20 -0
  455. package/src/Avatar.js +392 -0
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +14 -0
  459. package/src/Badge.js +165 -0
  460. package/src/Breadcrumbs.hbs +42 -0
  461. package/src/Breadcrumbs.js +563 -0
  462. package/src/BreadcrumbsItem.js +109 -0
  463. package/src/BreadcrumbsPopover.hbs +28 -0
  464. package/src/BusyIndicator.hbs +32 -0
  465. package/src/BusyIndicator.js +269 -0
  466. package/src/Button.hbs +45 -0
  467. package/src/Button.js +463 -0
  468. package/src/Calendar.hbs +69 -0
  469. package/src/Calendar.js +489 -0
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +54 -0
  472. package/src/CalendarHeader.js +209 -0
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +14 -0
  475. package/src/Card.js +160 -0
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +85 -0
  479. package/src/Carousel.js +681 -0
  480. package/src/CheckBox.hbs +44 -0
  481. package/src/CheckBox.js +424 -0
  482. package/src/ColorPalette.hbs +52 -0
  483. package/src/ColorPalette.js +493 -0
  484. package/src/ColorPaletteDialog.hbs +18 -0
  485. package/src/ColorPaletteItem.hbs +11 -0
  486. package/src/ColorPaletteItem.js +137 -0
  487. package/src/ColorPalettePopover.hbs +29 -0
  488. package/src/ColorPalettePopover.js +219 -0
  489. package/src/ColorPicker.hbs +98 -0
  490. package/src/ColorPicker.js +524 -0
  491. package/src/ComboBox.hbs +49 -0
  492. package/src/ComboBox.js +1041 -0
  493. package/src/ComboBoxFilters.js +40 -0
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +49 -0
  496. package/src/ComboBoxPopover.hbs +125 -0
  497. package/src/CustomListItem.hbs +5 -0
  498. package/src/CustomListItem.js +99 -0
  499. package/src/DateComponentBase.js +170 -0
  500. package/src/DatePicker.hbs +44 -0
  501. package/src/DatePicker.js +823 -0
  502. package/src/DatePickerPopover.hbs +63 -0
  503. package/src/DateRangePicker.js +328 -0
  504. package/src/DateTimePicker.js +430 -0
  505. package/src/DateTimePickerPopover.hbs +74 -0
  506. package/src/DayPicker.hbs +66 -0
  507. package/src/DayPicker.js +754 -0
  508. package/src/Dialog.hbs +35 -0
  509. package/src/Dialog.js +601 -0
  510. package/src/DurationPicker.js +312 -0
  511. package/src/FileUploader.hbs +40 -0
  512. package/src/FileUploader.js +532 -0
  513. package/src/FileUploaderPopover.hbs +25 -0
  514. package/src/GroupHeaderListItem.hbs +15 -0
  515. package/src/GroupHeaderListItem.js +94 -0
  516. package/src/Icon.hbs +25 -0
  517. package/src/Icon.js +373 -0
  518. package/src/Input.hbs +78 -0
  519. package/src/Input.js +1381 -0
  520. package/src/InputPopover.hbs +118 -0
  521. package/src/Interfaces.js +192 -0
  522. package/src/Label.hbs +13 -0
  523. package/src/Label.js +152 -0
  524. package/src/Link.hbs +20 -0
  525. package/src/Link.js +349 -0
  526. package/src/List.hbs +89 -0
  527. package/src/List.js +1056 -0
  528. package/src/ListItem.hbs +102 -0
  529. package/src/ListItem.js +371 -0
  530. package/src/ListItemBase.js +179 -0
  531. package/src/MessageStrip.hbs +34 -0
  532. package/src/MessageStrip.js +227 -0
  533. package/src/MonthPicker.hbs +29 -0
  534. package/src/MonthPicker.js +299 -0
  535. package/src/MultiComboBox.hbs +78 -0
  536. package/src/MultiComboBox.js +1091 -0
  537. package/src/MultiComboBoxItem.js +43 -0
  538. package/src/MultiComboBoxPopover.hbs +133 -0
  539. package/src/MultiInput.hbs +41 -0
  540. package/src/MultiInput.js +301 -0
  541. package/src/Option.js +115 -0
  542. package/src/Panel.hbs +63 -0
  543. package/src/Panel.js +462 -0
  544. package/src/Popover.hbs +25 -0
  545. package/src/Popover.js +786 -0
  546. package/src/Popup.hbs +34 -0
  547. package/src/Popup.js +567 -0
  548. package/src/PopupBlockLayer.hbs +7 -0
  549. package/src/ProgressIndicator.hbs +35 -0
  550. package/src/ProgressIndicator.js +235 -0
  551. package/src/RadioButton.hbs +33 -0
  552. package/src/RadioButton.js +494 -0
  553. package/src/RadioButtonGroup.js +205 -0
  554. package/src/RangeSlider.hbs +70 -0
  555. package/src/RangeSlider.js +769 -0
  556. package/src/RatingIndicator.hbs +33 -0
  557. package/src/RatingIndicator.js +291 -0
  558. package/src/ResponsivePopover.hbs +39 -0
  559. package/src/ResponsivePopover.js +206 -0
  560. package/src/SegmentedButton.hbs +17 -0
  561. package/src/SegmentedButton.js +290 -0
  562. package/src/SegmentedButtonItem.hbs +42 -0
  563. package/src/SegmentedButtonItem.js +109 -0
  564. package/src/Select.hbs +45 -0
  565. package/src/Select.js +834 -0
  566. package/src/SelectPopover.hbs +89 -0
  567. package/src/Slider.hbs +42 -0
  568. package/src/Slider.js +320 -0
  569. package/src/SliderBase.hbs +38 -0
  570. package/src/SliderBase.js +842 -0
  571. package/src/StandardListItem.hbs +44 -0
  572. package/src/StandardListItem.js +191 -0
  573. package/src/StepInput.hbs +80 -0
  574. package/src/StepInput.js +684 -0
  575. package/src/SuggestionGroupItem.js +64 -0
  576. package/src/SuggestionItem.js +146 -0
  577. package/src/SuggestionListItem.hbs +33 -0
  578. package/src/SuggestionListItem.js +76 -0
  579. package/src/Switch.hbs +50 -0
  580. package/src/Switch.js +262 -0
  581. package/src/Tab.hbs +3 -0
  582. package/src/Tab.js +334 -0
  583. package/src/TabContainer.hbs +93 -0
  584. package/src/TabContainer.js +679 -0
  585. package/src/TabContainerPopover.hbs +24 -0
  586. package/src/TabInOverflow.hbs +22 -0
  587. package/src/TabInStrip.hbs +43 -0
  588. package/src/TabSeparator.hbs +1 -0
  589. package/src/TabSeparator.js +44 -0
  590. package/src/Table.hbs +99 -0
  591. package/src/Table.js +761 -0
  592. package/src/TableCell.hbs +7 -0
  593. package/src/TableCell.js +88 -0
  594. package/src/TableColumn.hbs +8 -0
  595. package/src/TableColumn.js +136 -0
  596. package/src/TableGroupRow.hbs +12 -0
  597. package/src/TableGroupRow.js +160 -0
  598. package/src/TableRow.hbs +61 -0
  599. package/src/TableRow.js +388 -0
  600. package/src/TextArea.hbs +50 -0
  601. package/src/TextArea.js +691 -0
  602. package/src/TextAreaPopover.hbs +28 -0
  603. package/src/TimePicker.hbs +35 -0
  604. package/src/TimePicker.js +166 -0
  605. package/src/TimePickerBase.js +463 -0
  606. package/src/TimePickerPopover.hbs +34 -0
  607. package/src/TimeSelection.hbs +60 -0
  608. package/src/TimeSelection.js +493 -0
  609. package/src/Title.hbs +47 -0
  610. package/src/Title.js +132 -0
  611. package/src/Toast.hbs +13 -0
  612. package/src/Toast.js +243 -0
  613. package/src/ToggleButton.hbs +5 -0
  614. package/src/ToggleButton.js +84 -0
  615. package/src/Token.hbs +30 -0
  616. package/src/Token.js +219 -0
  617. package/src/Tokenizer.hbs +27 -0
  618. package/src/Tokenizer.js +414 -0
  619. package/src/TokenizerPopover.hbs +50 -0
  620. package/src/Tree.hbs +42 -0
  621. package/src/Tree.js +443 -0
  622. package/src/TreeItem.js +168 -0
  623. package/src/TreeListItem.hbs +48 -0
  624. package/src/TreeListItem.js +332 -0
  625. package/src/WheelSlider.hbs +48 -0
  626. package/src/WheelSlider.js +435 -0
  627. package/src/YearPicker.hbs +27 -0
  628. package/src/YearPicker.js +324 -0
  629. package/src/features/ColorPaletteMoreColors.js +42 -0
  630. package/src/features/InputElementsFormSupport.js +88 -0
  631. package/src/features/InputSuggestions.js +530 -0
  632. package/src/i18n/messagebundle.properties +335 -0
  633. package/src/i18n/messagebundle_ar.properties +224 -0
  634. package/src/i18n/messagebundle_bg.properties +224 -0
  635. package/src/i18n/messagebundle_ca.properties +224 -0
  636. package/src/i18n/messagebundle_cs.properties +224 -0
  637. package/src/i18n/messagebundle_cy.properties +224 -0
  638. package/src/i18n/messagebundle_da.properties +224 -0
  639. package/src/i18n/messagebundle_de.properties +224 -0
  640. package/src/i18n/messagebundle_el.properties +224 -0
  641. package/src/i18n/messagebundle_en.properties +224 -0
  642. package/src/i18n/messagebundle_en_GB.properties +224 -0
  643. package/src/i18n/messagebundle_en_US_sappsd.properties +224 -0
  644. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  645. package/src/i18n/messagebundle_en_US_saptrc.properties +224 -0
  646. package/src/i18n/messagebundle_es.properties +224 -0
  647. package/src/i18n/messagebundle_es_MX.properties +224 -0
  648. package/src/i18n/messagebundle_et.properties +224 -0
  649. package/src/i18n/messagebundle_fi.properties +224 -0
  650. package/src/i18n/messagebundle_fr.properties +224 -0
  651. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  652. package/src/i18n/messagebundle_hi.properties +224 -0
  653. package/src/i18n/messagebundle_hr.properties +224 -0
  654. package/src/i18n/messagebundle_hu.properties +224 -0
  655. package/src/i18n/messagebundle_id.properties +224 -0
  656. package/src/i18n/messagebundle_in.properties +172 -0
  657. package/src/i18n/messagebundle_it.properties +224 -0
  658. package/src/i18n/messagebundle_iw.properties +224 -0
  659. package/src/i18n/messagebundle_ja.properties +224 -0
  660. package/src/i18n/messagebundle_kk.properties +224 -0
  661. package/src/i18n/messagebundle_ko.properties +224 -0
  662. package/src/i18n/messagebundle_lt.properties +224 -0
  663. package/src/i18n/messagebundle_lv.properties +224 -0
  664. package/src/i18n/messagebundle_ms.properties +224 -0
  665. package/src/i18n/messagebundle_nl.properties +224 -0
  666. package/src/i18n/messagebundle_no.properties +224 -0
  667. package/src/i18n/messagebundle_pl.properties +224 -0
  668. package/src/i18n/messagebundle_pt.properties +224 -0
  669. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  670. package/src/i18n/messagebundle_ro.properties +224 -0
  671. package/src/i18n/messagebundle_ru.properties +224 -0
  672. package/src/i18n/messagebundle_sh.properties +224 -0
  673. package/src/i18n/messagebundle_sk.properties +224 -0
  674. package/src/i18n/messagebundle_sl.properties +224 -0
  675. package/src/i18n/messagebundle_sv.properties +224 -0
  676. package/src/i18n/messagebundle_th.properties +224 -0
  677. package/src/i18n/messagebundle_tr.properties +224 -0
  678. package/src/i18n/messagebundle_uk.properties +224 -0
  679. package/src/i18n/messagebundle_vi.properties +224 -0
  680. package/src/i18n/messagebundle_zh_CN.properties +224 -0
  681. package/src/i18n/messagebundle_zh_TW.properties +224 -0
  682. package/src/popup-utils/OpenedPopupsRegistry.js +50 -0
  683. package/src/popup-utils/PopoverRegistry.js +145 -0
  684. package/src/timepicker-utils/TimeSlider.js +103 -0
  685. package/src/types/AvatarColorScheme.js +104 -0
  686. package/src/types/AvatarGroupType.js +43 -0
  687. package/src/types/AvatarShape.js +41 -0
  688. package/src/types/AvatarSize.js +67 -0
  689. package/src/types/BreadcrumbsDesign.js +42 -0
  690. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  691. package/src/types/BusyIndicatorSize.js +47 -0
  692. package/src/types/ButtonDesign.js +68 -0
  693. package/src/types/CalendarSelectionMode.js +47 -0
  694. package/src/types/CarouselArrowsPlacement.js +40 -0
  695. package/src/types/GrowingMode.js +48 -0
  696. package/src/types/InputType.js +68 -0
  697. package/src/types/LinkDesign.js +47 -0
  698. package/src/types/ListGrowingMode.js +15 -0
  699. package/src/types/ListItemType.js +47 -0
  700. package/src/types/ListMode.js +77 -0
  701. package/src/types/ListSeparators.js +46 -0
  702. package/src/types/MessageStripDesign.js +54 -0
  703. package/src/types/PanelAccessibleRole.js +48 -0
  704. package/src/types/PopoverHorizontalAlign.js +54 -0
  705. package/src/types/PopoverPlacementType.js +54 -0
  706. package/src/types/PopoverVerticalAlign.js +54 -0
  707. package/src/types/Priority.js +55 -0
  708. package/src/types/SemanticColor.js +61 -0
  709. package/src/types/SwitchDesign.js +40 -0
  710. package/src/types/TabContainerTabsPlacement.js +40 -0
  711. package/src/types/TabLayout.js +40 -0
  712. package/src/types/TableGrowingMode.js +15 -0
  713. package/src/types/TableMode.js +47 -0
  714. package/src/types/TableRowType.js +40 -0
  715. package/src/types/TitleLevel.js +68 -0
  716. package/src/types/ToastPlacement.js +91 -0
  717. package/src/types/WrappingType.js +41 -0
  718. package/dist/Timeline.js +0 -81
  719. package/dist/TimelineItem.js +0 -163
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  722. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  723. package/dist/generated/themes/ComboBoxItem.css.js +0 -9
  724. package/dist/generated/themes/TabContainerPopup.css.js +0 -9
  725. package/dist/generated/themes/Timeline.css.js +0 -9
  726. package/dist/generated/themes/TimelineItem.css.js +0 -9
  727. package/dist/popup-utils/PopupUtils.js +0 -42
  728. package/dist/types/AvatarFitType.js +0 -40
  729. package/dist/webcomponentsjs/package.json +0 -46
  730. package/index.js +0 -2
package/src/Input.js ADDED
@@ -0,0 +1,1381 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
+ import { isIE, isPhone, isSafari } from "@ui5/webcomponents-base/dist/Device.js";
5
+ import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
6
+ import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
7
+ import {
8
+ isUp,
9
+ isDown,
10
+ isSpace,
11
+ isEnter,
12
+ isBackSpace,
13
+ isEscape,
14
+ isTabNext,
15
+ } from "@ui5/webcomponents-base/dist/Keys.js";
16
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
17
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
18
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
19
+ import { getCaretPosition, setCaretPosition } from "@ui5/webcomponents-base/dist/util/Caret.js";
20
+ import "@ui5/webcomponents-icons/dist/decline.js";
21
+ import "@ui5/webcomponents-icons/dist/not-editable.js";
22
+ import InputType from "./types/InputType.js";
23
+ import Popover from "./Popover.js";
24
+ // Templates
25
+ import InputTemplate from "./generated/templates/InputTemplate.lit.js";
26
+ import InputPopoverTemplate from "./generated/templates/InputPopoverTemplate.lit.js";
27
+
28
+ import {
29
+ VALUE_STATE_SUCCESS,
30
+ VALUE_STATE_INFORMATION,
31
+ VALUE_STATE_ERROR,
32
+ VALUE_STATE_WARNING,
33
+ INPUT_SUGGESTIONS,
34
+ INPUT_SUGGESTIONS_TITLE,
35
+ INPUT_SUGGESTIONS_ONE_HIT,
36
+ INPUT_SUGGESTIONS_MORE_HITS,
37
+ INPUT_SUGGESTIONS_NO_HIT,
38
+ } from "./generated/i18n/i18n-defaults.js";
39
+
40
+ // Styles
41
+ import styles from "./generated/themes/Input.css.js";
42
+ import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
43
+ import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
44
+ import SuggestionsCss from "./generated/themes/Suggestions.css.js";
45
+
46
+ const rgxFloat = new RegExp(/(\+|-)?\d+(\.|,)\d+/);
47
+
48
+ /**
49
+ * @public
50
+ */
51
+ const metadata = {
52
+ tag: "ui5-input",
53
+ languageAware: true,
54
+ managedSlots: true,
55
+ slots: /** @lends sap.ui.webcomponents.main.Input.prototype */ {
56
+
57
+ /**
58
+ * Defines the icon to be displayed in the component.
59
+ *
60
+ * @type {sap.ui.webcomponents.main.IIcon[]}
61
+ * @slot
62
+ * @public
63
+ */
64
+ icon: {
65
+ type: HTMLElement,
66
+ },
67
+
68
+ /**
69
+ * Defines the suggestion items.
70
+ * <br><br>
71
+ * Example:
72
+ * <br><br>
73
+ * &lt;ui5-input show-suggestions><br>
74
+ * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-suggestion-item text="Item #1">&lt;/ui5-suggestion-item><br>
75
+ * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-suggestion-item text="Item #2">&lt;/ui5-suggestion-item><br>
76
+ * &lt;/ui5-input>
77
+ * <br>
78
+ * <ui5-input show-suggestions>
79
+ * <ui5-suggestion-group-item text="Group #1"></ui5-suggestion-group-item>
80
+ * <ui5-suggestion-item text="Item #1"></ui5-suggestion-item>
81
+ * <ui5-suggestion-item text="Item #2"></ui5-suggestion-item>
82
+ * <ui5-suggestion-group-item text="Group #2"></ui5-suggestion-group-item>
83
+ * <ui5-suggestion-item text="Item #3"></ui5-suggestion-item>
84
+ * <ui5-suggestion-item text="Item #4"></ui5-suggestion-item>
85
+ * </ui5-input>
86
+ * <br><br>
87
+ * <b>Note:</b> The suggestions would be displayed only if the <code>showSuggestions</code>
88
+ * property is set to <code>true</code>.
89
+ * <br><br>
90
+ * <b>Note:</b> The <code>&lt;ui5-suggestion-item&gt;</code> and <code>&lt;ui5-suggestion-group-item&gt;</code> are recommended to be used as suggestion items.
91
+ * <br><br>
92
+ * <b>Note:</b> Importing the Input Suggestions Support feature:
93
+ * <br>
94
+ * <code>import "@ui5/webcomponents/dist/features/InputSuggestions.js";</code>
95
+ * <br>
96
+ * automatically imports the <code>&lt;ui5-suggestion-item></code> and <code>&lt;ui5-suggestion-group-item></code> for your convenience.
97
+ *
98
+ * @type {sap.ui.webcomponents.main.IInputSuggestionItem[]}
99
+ * @slot suggestionItems
100
+ * @public
101
+ */
102
+ "default": {
103
+ propertyName: "suggestionItems",
104
+ type: HTMLElement,
105
+ },
106
+
107
+ /**
108
+ * The slot is used for native <code>input</code> HTML element to enable form submit,
109
+ * when <code>name</code> property is set.
110
+ * @type {HTMLElement[]}
111
+ * @private
112
+ */
113
+ formSupport: {
114
+ type: HTMLElement,
115
+ },
116
+
117
+ /**
118
+ * Defines the value state message that will be displayed as pop up under the component.
119
+ * <br><br>
120
+ *
121
+ * <b>Note:</b> If not specified, a default text (in the respective language) will be displayed.
122
+ * <br><br>
123
+ * <b>Note:</b> The <code>valueStateMessage</code> would be displayed,
124
+ * when the component is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
125
+ * <br><br>
126
+ * <b>Note:</b> If the component has <code>suggestionItems</code>,
127
+ * the <code>valueStateMessage</code> would be displayed as part of the same popover, if used on desktop, or dialog - on phone.
128
+ * @type {HTMLElement[]}
129
+ * @since 1.0.0-rc.6
130
+ * @slot
131
+ * @public
132
+ */
133
+ valueStateMessage: {
134
+ type: HTMLElement,
135
+ },
136
+ },
137
+ properties: /** @lends sap.ui.webcomponents.main.Input.prototype */ {
138
+
139
+ /**
140
+ * Defines whether the component is in disabled state.
141
+ * <br><br>
142
+ * <b>Note:</b> A disabled component is completely noninteractive.
143
+ *
144
+ * @type {boolean}
145
+ * @defaultvalue false
146
+ * @public
147
+ */
148
+ disabled: {
149
+ type: Boolean,
150
+ },
151
+
152
+ /**
153
+ * Defines if characters within the suggestions are to be highlighted
154
+ * in case the input value matches parts of the suggestions text.
155
+ * <br><br>
156
+ * <b>Note:</b> takes effect when <code>showSuggestions</code> is set to <code>true</code>
157
+ *
158
+ * @type {boolean}
159
+ * @defaultvalue false
160
+ * @private
161
+ * @sicne 1.0.0-rc.8
162
+ */
163
+ highlight: {
164
+ type: Boolean,
165
+ },
166
+
167
+ /**
168
+ * Defines a short hint intended to aid the user with data entry when the
169
+ * component has no value.
170
+ * @type {string}
171
+ * @defaultvalue ""
172
+ * @public
173
+ */
174
+ placeholder: {
175
+ type: String,
176
+ },
177
+
178
+ /**
179
+ * Defines whether the component is read-only.
180
+ * <br><br>
181
+ * <b>Note:</b> A read-only component is not editable,
182
+ * but still provides visual feedback upon user interaction.
183
+ *
184
+ * @type {boolean}
185
+ * @defaultvalue false
186
+ * @public
187
+ */
188
+ readonly: {
189
+ type: Boolean,
190
+ },
191
+
192
+ /**
193
+ * Defines whether the component is required.
194
+ *
195
+ * @type {boolean}
196
+ * @defaultvalue false
197
+ * @public
198
+ * @since 1.0.0-rc.3
199
+ */
200
+ required: {
201
+ type: Boolean,
202
+ },
203
+
204
+ /**
205
+ * Defines the HTML type of the component.
206
+ * Available options are: <code>Text</code>, <code>Email</code>,
207
+ * <code>Number</code>, <code>Password</code>, <code>Tel</code>, and <code>URL</code>.
208
+ * <br><br>
209
+ * <b>Notes:</b>
210
+ * <ul>
211
+ * <li>The particular effect of this property differs depending on the browser
212
+ * and the current language settings, especially for type <code>Number</code>.</li>
213
+ * <li>The property is mostly intended to be used with touch devices
214
+ * that use different soft keyboard layouts depending on the given input type.</li>
215
+ * </ul>
216
+ *
217
+ * @type {InputType}
218
+ * @defaultvalue "Text"
219
+ * @public
220
+ */
221
+ type: {
222
+ type: InputType,
223
+ defaultValue: InputType.Text,
224
+ },
225
+
226
+ /**
227
+ * Defines the value of the component.
228
+ * <br><br>
229
+ * <b>Note:</b> The property is updated upon typing.
230
+ *
231
+ * @type {string}
232
+ * @defaultvalue ""
233
+ * @public
234
+ */
235
+ value: {
236
+ type: String,
237
+ },
238
+
239
+ /**
240
+ * Defines the value state of the component.
241
+ * <br><br>
242
+ * Available options are:
243
+ * <ul>
244
+ * <li><code>None</code></li>
245
+ * <li><code>Error</code></li>
246
+ * <li><code>Warning</code></li>
247
+ * <li><code>Success</code></li>
248
+ * <li><code>Information</code></li>
249
+ * </ul>
250
+ *
251
+ * @type {ValueState}
252
+ * @defaultvalue "None"
253
+ * @public
254
+ */
255
+ valueState: {
256
+ type: ValueState,
257
+ defaultValue: ValueState.None,
258
+ },
259
+
260
+ /**
261
+ * Determines the name with which the component will be submitted in an HTML form.
262
+ *
263
+ * <br><br>
264
+ * <b>Important:</b> For the <code>name</code> property to have effect, you must add the following import to your project:
265
+ * <code>import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";</code>
266
+ *
267
+ * <br><br>
268
+ * <b>Note:</b> When set, a native <code>input</code> HTML element
269
+ * will be created inside the component so that it can be submitted as
270
+ * part of an HTML form. Do not use this property unless you need to submit a form.
271
+ *
272
+ * @type {string}
273
+ * @defaultvalue ""
274
+ * @public
275
+ */
276
+ name: {
277
+ type: String,
278
+ },
279
+
280
+ /**
281
+ * Defines whether the component should show suggestions, if such are present.
282
+ * <br><br>
283
+ * <b>Note:</b> You need to import the <code>InputSuggestions</code> module
284
+ * from <code>"@ui5/webcomponents/dist/features/InputSuggestions.js"</code> to enable this functionality.
285
+ * @type {boolean}
286
+ * @defaultvalue false
287
+ * @public
288
+ */
289
+ showSuggestions: {
290
+ type: Boolean,
291
+ },
292
+
293
+ /**
294
+ * Sets the maximum number of characters available in the input field.
295
+ *
296
+ * @type {Integer}
297
+ * @since 1.0.0-rc.5
298
+ * @public
299
+ */
300
+ maxlength: {
301
+ type: Integer,
302
+ },
303
+
304
+ /**
305
+ * Sets the accessible aria name of the component.
306
+ *
307
+ * @type {String}
308
+ * @public
309
+ * @since 1.0.0-rc.15
310
+ */
311
+ accessibleName: {
312
+ type: String,
313
+ },
314
+
315
+ /**
316
+ * Receives id(or many ids) of the elements that label the input.
317
+ *
318
+ * @type {String}
319
+ * @defaultvalue ""
320
+ * @public
321
+ * @since 1.0.0-rc.15
322
+ */
323
+ accessibleNameRef: {
324
+ type: String,
325
+ defaultValue: "",
326
+ },
327
+
328
+ /**
329
+ * @private
330
+ */
331
+ focused: {
332
+ type: Boolean,
333
+ },
334
+
335
+ /**
336
+ * Indicates whether the visual focus is on the value state header
337
+ * @private
338
+ */
339
+ _isValueStateFocused: {
340
+ type: Boolean,
341
+ },
342
+
343
+ open: {
344
+ type: Boolean,
345
+ },
346
+
347
+ _input: {
348
+ type: Object,
349
+ },
350
+
351
+ _inputAccInfo: {
352
+ type: Object,
353
+ },
354
+
355
+ _nativeInputAttributes: {
356
+ type: Object,
357
+ },
358
+
359
+ _inputWidth: {
360
+ type: Integer,
361
+ },
362
+
363
+ _listWidth: {
364
+ type: Integer,
365
+ },
366
+
367
+ _isPopoverOpen: {
368
+ type: Boolean,
369
+ noAttribute: true,
370
+ },
371
+
372
+ _inputIconFocused: {
373
+ type: Boolean,
374
+ noAttribute: true,
375
+ },
376
+ },
377
+ events: /** @lends sap.ui.webcomponents.main.Input.prototype */ {
378
+ /**
379
+ * Fired when the input operation has finished by pressing Enter or on focusout.
380
+ *
381
+ * @event
382
+ * @public
383
+ */
384
+ change: {},
385
+
386
+ /**
387
+ * Fired when the value of the component changes at each keystroke,
388
+ * and when a suggestion item has been selected.
389
+ *
390
+ * @event
391
+ * @public
392
+ */
393
+ input: {},
394
+
395
+ /**
396
+ * Fired when a suggestion item, that is displayed in the suggestion popup, is selected.
397
+ *
398
+ * @event sap.ui.webcomponents.main.Input#suggestion-item-select
399
+ * @param {HTMLElement} item The selected item.
400
+ * @public
401
+ */
402
+ "suggestion-item-select": {
403
+ detail: {
404
+ item: { type: HTMLElement },
405
+ },
406
+ },
407
+
408
+ /**
409
+ * Fired when the user navigates to a suggestion item via the ARROW keys,
410
+ * as a preview, before the final selection.
411
+ *
412
+ * @event sap.ui.webcomponents.main.Input#suggestion-item-preview
413
+ * @param {HTMLElement} item The previewed suggestion item.
414
+ * @param {HTMLElement} targetRef The DOM ref of the suggestion item.
415
+ * @public
416
+ * @since 1.0.0-rc.8
417
+ */
418
+ "suggestion-item-preview": {
419
+ detail: {
420
+ item: { type: HTMLElement },
421
+ targetRef: { type: HTMLElement },
422
+ },
423
+ },
424
+
425
+ /**
426
+ * Fired when the user scrolls the suggestion popover.
427
+ *
428
+ * @event sap.ui.webcomponents.main.Input#suggestion-scroll
429
+ * @param {Integer} scrollTop The current scroll position.
430
+ * @param {HTMLElement} scrollContainer The scroll container.
431
+ * @protected
432
+ * @since 1.0.0-rc.8
433
+ */
434
+ "suggestion-scroll": {
435
+ detail: {
436
+ scrollTop: { type: Integer },
437
+ scrollContainer: { type: HTMLElement },
438
+ },
439
+ },
440
+ },
441
+ };
442
+
443
+ /**
444
+ * @class
445
+ * <h3 class="comment-api-title">Overview</h3>
446
+ *
447
+ * The <code>ui5-input</code> component allows the user to enter and edit text or numeric values in one line.
448
+ * <br>
449
+ * Additionally, you can provide <code>suggestionItems</code>,
450
+ * that are displayed in a popover right under the input.
451
+ * <br><br>
452
+ * The text field can be editable or read-only (<code>readonly</code> property),
453
+ * and it can be enabled or disabled (<code>disabled</code> property).
454
+ * To visualize semantic states, such as "error" or "warning", the <code>valueState</code> property is provided.
455
+ * When the user makes changes to the text, the change event is fired,
456
+ * which enables you to react on any text change.
457
+ * <br><br>
458
+ * <b>Note:</b> If you are using the <code>ui5-input</code> as a single npm module,
459
+ * don't forget to import the <code>InputSuggestions</code> module from
460
+ * "@ui5/webcomponents/dist/features/InputSuggestions.js"
461
+ * to enable the suggestions functionality.
462
+ *
463
+ * <h3>ES6 Module Import</h3>
464
+ *
465
+ * <code>import "@ui5/webcomponents/dist/Input.js";</code>
466
+ * <br>
467
+ * <code>import "@ui5/webcomponents/dist/features/InputSuggestions.js";</code> (optional - for input suggestions support)
468
+ *
469
+ * @constructor
470
+ * @author SAP SE
471
+ * @alias sap.ui.webcomponents.main.Input
472
+ * @extends sap.ui.webcomponents.base.UI5Element
473
+ * @tagname ui5-input
474
+ * @appenddocs SuggestionItem SuggestionGroupItem
475
+ * @implements sap.ui.webcomponents.main.IInput
476
+ * @public
477
+ */
478
+ class Input extends UI5Element {
479
+ static get metadata() {
480
+ return metadata;
481
+ }
482
+
483
+ static get render() {
484
+ return litRender;
485
+ }
486
+
487
+ static get template() {
488
+ return InputTemplate;
489
+ }
490
+
491
+ static get staticAreaTemplate() {
492
+ return InputPopoverTemplate;
493
+ }
494
+
495
+ static get styles() {
496
+ return styles;
497
+ }
498
+
499
+ static get staticAreaStyles() {
500
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
501
+ }
502
+
503
+ constructor() {
504
+ super();
505
+ // Indicates if there is selected suggestionItem.
506
+ this.hasSuggestionItemSelected = false;
507
+
508
+ // Represents the value before user moves selection from suggestion item to another
509
+ // and its value is updated after each move.
510
+ // Note: Used to register and fire "input" event upon [SPACE] or [ENTER].
511
+ // Note: The property "value" is updated upon selection move and can`t be used.
512
+ this.valueBeforeItemSelection = "";
513
+
514
+ // Represents the value before user moves selection between the suggestion items
515
+ // and its value remains the same when the user navigates up or down the list.
516
+ // Note: Used to cancel selection upon [ESC].
517
+ this.valueBeforeItemPreview = "";
518
+
519
+ // Indicates if the user selection has been canceled with [ESC].
520
+ this.suggestionSelectionCanceled = false;
521
+
522
+ // Indicates if the change event has already been fired
523
+ this._changeFired = false;
524
+
525
+ // tracks the value between focus in and focus out to detect that change event should be fired.
526
+ this.previousValue = undefined;
527
+
528
+ // Indicates, if the component is rendering for first time.
529
+ this.firstRendering = true;
530
+
531
+ // The value that should be highlited.
532
+ this.highlightValue = "";
533
+
534
+ // The last value confirmed by the user with "ENTER"
535
+ this.lastConfirmedValue = "";
536
+
537
+ // Indicates, if the user pressed the BACKSPACE key.
538
+ this._backspaceKeyDown = false;
539
+
540
+ // all sementic events
541
+ this.EVENT_CHANGE = "change";
542
+ this.EVENT_INPUT = "input";
543
+ this.EVENT_SUGGESTION_ITEM_SELECT = "suggestion-item-select";
544
+
545
+ // all user interactions
546
+ this.ACTION_ENTER = "enter";
547
+ this.ACTION_USER_INPUT = "input";
548
+
549
+ // Suggestions array initialization
550
+ this.suggestionsTexts = [];
551
+
552
+ this._handleResizeBound = this._handleResize.bind(this);
553
+ }
554
+
555
+ onEnterDOM() {
556
+ ResizeHandler.register(this, this._handleResizeBound);
557
+ }
558
+
559
+ onExitDOM() {
560
+ ResizeHandler.deregister(this, this._handleResizeBound);
561
+ }
562
+
563
+ onBeforeRendering() {
564
+ if (this.showSuggestions) {
565
+ this.enableSuggestions();
566
+ this.suggestionsTexts = this.Suggestions.defaultSlotProperties(this.highlightValue);
567
+ }
568
+
569
+ this.open = this.open && (!!this.suggestionItems.length || this._isPhone);
570
+
571
+ const FormSupport = getFeature("FormSupport");
572
+
573
+ if (FormSupport) {
574
+ FormSupport.syncNativeHiddenInput(this);
575
+ } else if (this.name) {
576
+ console.warn(`In order for the "name" property to have effect, you should also: import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";`); // eslint-disable-line
577
+ }
578
+ }
579
+
580
+ async onAfterRendering() {
581
+ if (this.Suggestions) {
582
+ this.Suggestions.toggle(this.open, {
583
+ preventFocusRestore: true,
584
+ });
585
+
586
+ this._listWidth = await this.Suggestions._getListWidth();
587
+ }
588
+
589
+ if (this.shouldDisplayOnlyValueStateMessage) {
590
+ this.openPopover();
591
+ } else {
592
+ this.closePopover();
593
+ }
594
+ }
595
+
596
+ _onkeydown(event) {
597
+ if (isUp(event)) {
598
+ return this._handleUp(event);
599
+ }
600
+
601
+ if (isDown(event)) {
602
+ return this._handleDown(event);
603
+ }
604
+
605
+ if (isSpace(event)) {
606
+ return this._handleSpace(event);
607
+ }
608
+
609
+ if (isTabNext(event)) {
610
+ return this._handleTab(event);
611
+ }
612
+
613
+ if (isEnter(event)) {
614
+ return this._handleEnter(event);
615
+ }
616
+
617
+ if (isEscape(event)) {
618
+ return this._handleEscape(event);
619
+ }
620
+
621
+ if (isBackSpace(event)) {
622
+ this._backspaceKeyDown = true;
623
+ this._selectedText = window.getSelection().toString();
624
+ }
625
+
626
+ if (this.showSuggestions) {
627
+ this._clearPopoverFocusAndSelection();
628
+ }
629
+
630
+ this._keyDown = true;
631
+ }
632
+
633
+ _onkeyup(event) {
634
+ this._keyDown = false;
635
+ this._backspaceKeyDown = false;
636
+ }
637
+
638
+ /* Event handling */
639
+ _handleUp(event) {
640
+ if (this.Suggestions && this.Suggestions.isOpened()) {
641
+ this.Suggestions.onUp(event);
642
+ }
643
+ }
644
+
645
+ _handleDown(event) {
646
+ if (this.Suggestions && this.Suggestions.isOpened()) {
647
+ this.Suggestions.onDown(event);
648
+ }
649
+ }
650
+
651
+ _handleSpace(event) {
652
+ if (this.Suggestions) {
653
+ this.Suggestions.onSpace(event);
654
+ }
655
+ }
656
+
657
+ _handleTab(event) {
658
+ if (this.Suggestions && (this.previousValue !== this.value)) {
659
+ this.Suggestions.onTab(event);
660
+ }
661
+ }
662
+
663
+ _handleEnter(event) {
664
+ const itemPressed = !!(this.Suggestions && this.Suggestions.onEnter(event));
665
+
666
+ if (!itemPressed) {
667
+ this.fireEventByAction(this.ACTION_ENTER);
668
+ this.lastConfirmedValue = this.value;
669
+ return;
670
+ }
671
+
672
+ this.focused = true;
673
+ }
674
+
675
+ _handleEscape() {
676
+ const hasSuggestions = this.showSuggestions && !!this.Suggestions;
677
+ const isOpen = hasSuggestions && this.open;
678
+
679
+ if (!isOpen) {
680
+ this.value = this.lastConfirmedValue ? this.lastConfirmedValue : this.previousValue;
681
+ return;
682
+ }
683
+
684
+ if (hasSuggestions && isOpen && this.Suggestions._isItemOnTarget()) {
685
+ // Restore the value.
686
+ this.value = this.valueBeforeItemPreview;
687
+
688
+ // Mark that the selection has been canceled, so the popover can close
689
+ // and not reopen, due to receiving focus.
690
+ this.suggestionSelectionCanceled = true;
691
+ this.focused = true;
692
+ }
693
+
694
+ if (this._isValueStateFocused) {
695
+ this._isValueStateFocused = false;
696
+ this.focused = true;
697
+ }
698
+
699
+ this.open = false;
700
+ }
701
+
702
+ async _onfocusin(event) {
703
+ await this.getInputDOMRef();
704
+
705
+ this.focused = true; // invalidating property
706
+ this.previousValue = this.value;
707
+ this.valueBeforeItemPreview = this.value;
708
+
709
+ this._inputIconFocused = event.target && event.target === this.querySelector("[ui5-icon]");
710
+ }
711
+
712
+ _onfocusout(event) {
713
+ const focusedOutToSuggestions = this.Suggestions && event.relatedTarget && event.relatedTarget.shadowRoot && event.relatedTarget.shadowRoot.contains(this.Suggestions.responsivePopover);
714
+ const focusedOutToValueStateMessage = event.relatedTarget && event.relatedTarget.shadowRoot && event.relatedTarget.shadowRoot.querySelector(".ui5-valuestatemessage-root");
715
+
716
+ // if focusout is triggered by pressing on suggestion item or value state message popover, skip invalidation, because re-rendering
717
+ // will happen before "itemPress" event, which will make item "active" state not visualized
718
+ if (focusedOutToSuggestions || focusedOutToValueStateMessage) {
719
+ event.stopImmediatePropagation();
720
+ return;
721
+ }
722
+
723
+ const toBeFocused = event.relatedTarget;
724
+
725
+ if (toBeFocused && toBeFocused.classList.contains(this._id)) {
726
+ return;
727
+ }
728
+
729
+ this.closePopover();
730
+ this._clearPopoverFocusAndSelection();
731
+
732
+ this.previousValue = "";
733
+ this.lastConfirmedValue = "";
734
+ this.focused = false; // invalidating property
735
+ this.open = false;
736
+ }
737
+
738
+ _clearPopoverFocusAndSelection() {
739
+ if (!this.showSuggestions || !this.Suggestions) {
740
+ return;
741
+ }
742
+
743
+ this._isValueStateFocused = false;
744
+ this.hasSuggestionItemSelected = false;
745
+
746
+ this.Suggestions._deselectItems();
747
+ this.Suggestions._clearItemFocus();
748
+ }
749
+
750
+ _click(event) {
751
+ if (isPhone() && !this.readonly && this.Suggestions) {
752
+ this.blur();
753
+ this.open = true;
754
+ }
755
+ }
756
+
757
+ _handleChange(event) {
758
+ if (!this._changeFired) {
759
+ this.fireEvent(this.EVENT_CHANGE);
760
+ }
761
+
762
+ // Set event as no longer marked
763
+ this._changeFired = false;
764
+ }
765
+
766
+ _scroll(event) {
767
+ const detail = event.detail;
768
+ this.fireEvent("suggestion-scroll", {
769
+ scrollTop: detail.scrollTop,
770
+ scrollContainer: detail.targetRef,
771
+ });
772
+ }
773
+
774
+ async _handleInput(event) {
775
+ const inputDomRef = await this.getInputDOMRef();
776
+ const emptyValueFiredOnNumberInput = this.value && this.isTypeNumber && !inputDomRef.value;
777
+
778
+ this.suggestionSelectionCanceled = false;
779
+
780
+ if (emptyValueFiredOnNumberInput && !this._backspaceKeyDown) {
781
+ // For input with type="Number", if the delimiter is entered second time,
782
+ // the inner input is firing event with empty value
783
+ return;
784
+ }
785
+
786
+ if (emptyValueFiredOnNumberInput && this._backspaceKeyDown) {
787
+ // Issue: when the user removes the character(s) after the delimeter of numeric Input,
788
+ // the native input is firing event with an empty value and we have to manually handle this case,
789
+ // otherwise the entire input will be cleared as we sync the "value".
790
+
791
+ // There are tree scenarios:
792
+ // Example: type "123.4" and press BACKSPACE - the native input is firing event with empty value.
793
+ // Example: type "123.456", select/mark "456" and press BACKSPACE - the native input is firing event with empty value.
794
+ // Example: type "123.456", select/mark "123.456" and press BACKSPACE - the native input is firing event with empty value,
795
+ // but this time that's really the case.
796
+
797
+ // Perform manual handling in case of floating number
798
+ // and if the user did not select the entire input value
799
+ if (rgxFloat.test(this.value) && this._selectedText !== this.value) {
800
+ const newValue = this.removeFractionalPart(this.value);
801
+
802
+ // update state
803
+ this.value = newValue;
804
+ this.highlightValue = newValue;
805
+ this.valueBeforeItemPreview = newValue;
806
+
807
+ // fire events
808
+ this.fireEvent(this.EVENT_INPUT);
809
+ this.fireEvent("value-changed");
810
+ return;
811
+ }
812
+ }
813
+
814
+ if (event.target === inputDomRef) {
815
+ this.focused = true;
816
+
817
+ // stop the native event, as the semantic "input" would be fired.
818
+ event.stopImmediatePropagation();
819
+ }
820
+
821
+ /* skip calling change event when an input with a placeholder is focused on IE
822
+ - value of the host and the internal input should be differnt in case of actual input
823
+ - input is called when a key is pressed => keyup should not be called yet
824
+ */
825
+ const skipFiring = (inputDomRef.value === this.value) && isIE() && !this._keyDown && !!this.placeholder;
826
+
827
+ !skipFiring && this.fireEventByAction(this.ACTION_USER_INPUT);
828
+
829
+ this.hasSuggestionItemSelected = false;
830
+ this._isValueStateFocused = false;
831
+
832
+ if (this.Suggestions) {
833
+ this.Suggestions.updateSelectedItemPosition(null);
834
+
835
+ if (!this._isPhone) {
836
+ this.open = !!inputDomRef.value;
837
+ }
838
+ }
839
+ }
840
+
841
+ _handleResize() {
842
+ this._inputWidth = this.offsetWidth;
843
+ }
844
+
845
+ _closeRespPopover(preventFocusRestore) {
846
+ this.Suggestions.close(preventFocusRestore);
847
+ }
848
+
849
+ async _afterOpenPopover() {
850
+ // Set initial focus to the native input
851
+ if (isPhone()) {
852
+ (await this.getInputDOMRef()).focus();
853
+ }
854
+ }
855
+
856
+ _afterClosePopover() {
857
+ this.announceSelectedItem();
858
+
859
+ // close device's keyboard and prevent further typing
860
+ if (isPhone()) {
861
+ this.blur();
862
+ this.focused = false;
863
+ }
864
+ }
865
+
866
+ /**
867
+ * Checks if the value state popover is open.
868
+ * @returns {boolean} true if the value state popover is open, false otherwise
869
+ */
870
+ isValueStateOpened() {
871
+ return !!this._isPopoverOpen;
872
+ }
873
+
874
+ async openPopover() {
875
+ const popover = await this._getPopover();
876
+
877
+ if (popover) {
878
+ this._isPopoverOpen = true;
879
+ popover.showAt(this);
880
+ }
881
+ }
882
+
883
+ async closePopover() {
884
+ const popover = await this._getPopover();
885
+
886
+ popover && popover.close();
887
+ }
888
+
889
+ async _getPopover() {
890
+ const staticAreaItem = await this.getStaticAreaItemDomRef();
891
+ return staticAreaItem && staticAreaItem.querySelector("[ui5-popover]");
892
+ }
893
+
894
+ enableSuggestions() {
895
+ if (this.Suggestions) {
896
+ return;
897
+ }
898
+
899
+ const Suggestions = getFeature("InputSuggestions");
900
+
901
+ if (Suggestions) {
902
+ this.Suggestions = new Suggestions(this, "suggestionItems", true);
903
+ } else {
904
+ throw new Error(`You have to import "@ui5/webcomponents/dist/features/InputSuggestions.js" module to use ui5-input suggestions`);
905
+ }
906
+ }
907
+
908
+ selectSuggestion(item, keyboardUsed) {
909
+ if (item.group) {
910
+ return;
911
+ }
912
+
913
+ const itemText = item.text || item.textContent; // keep textContent for compatibility
914
+ const fireInput = keyboardUsed
915
+ ? this.valueBeforeItemSelection !== itemText : this.value !== itemText;
916
+
917
+ this.hasSuggestionItemSelected = true;
918
+
919
+ if (fireInput) {
920
+ this.value = itemText;
921
+ this.valueBeforeItemSelection = itemText;
922
+ this.lastConfirmedValue = itemText;
923
+ this.fireEvent(this.EVENT_INPUT);
924
+ this.fireEvent(this.EVENT_CHANGE);
925
+
926
+ // Mark the change event to avoid double firing
927
+ this._changeFired = true;
928
+ }
929
+
930
+ this.valueBeforeItemPreview = "";
931
+ this.suggestionSelectionCanceled = false;
932
+
933
+ this.fireEvent(this.EVENT_SUGGESTION_ITEM_SELECT, { item });
934
+ }
935
+
936
+ previewSuggestion(item) {
937
+ this.valueBeforeItemSelection = this.value;
938
+ this.updateValueOnPreview(item);
939
+ this.announceSelectedItem();
940
+ this._previewItem = item;
941
+ }
942
+
943
+ /**
944
+ * Updates the input value on item preview.
945
+ * @param {Object} item The item that is on preview
946
+ */
947
+ updateValueOnPreview(item) {
948
+ const noPreview = item.type === "Inactive" || item.group;
949
+ const itemValue = noPreview ? this.valueBeforeItemPreview : (item.effectiveTitle || item.textContent);
950
+ this.value = itemValue;
951
+ }
952
+
953
+ /**
954
+ * The suggestion item on preview.
955
+ * @type { ui5-suggestion-item }
956
+ * @readonly
957
+ * @public
958
+ */
959
+ get previewItem() {
960
+ if (!this._previewItem) {
961
+ return null;
962
+ }
963
+
964
+ return this.getSuggestionByListItem(this._previewItem);
965
+ }
966
+
967
+ async fireEventByAction(action) {
968
+ await this.getInputDOMRef();
969
+
970
+ if (this.disabled || this.readonly) {
971
+ return;
972
+ }
973
+
974
+ const inputValue = await this.getInputValue();
975
+ const isUserInput = action === this.ACTION_USER_INPUT;
976
+
977
+ const input = await this.getInputDOMRef();
978
+ const cursorPosition = input.selectionStart;
979
+
980
+ this.value = inputValue;
981
+ this.highlightValue = inputValue;
982
+ this.valueBeforeItemPreview = inputValue;
983
+
984
+ if (isSafari()) {
985
+ // When setting the value by hand, Safari moves the cursor when typing in the middle of the text (See #1761)
986
+ setTimeout(() => {
987
+ input.selectionStart = cursorPosition;
988
+ input.selectionEnd = cursorPosition;
989
+ }, 0);
990
+ }
991
+
992
+ if (isUserInput) { // input
993
+ this.fireEvent(this.EVENT_INPUT);
994
+ // Angular two way data binding
995
+ this.fireEvent("value-changed");
996
+ return;
997
+ }
998
+
999
+ // In IE, pressing the ENTER does not fire change
1000
+ const valueChanged = (this.previousValue !== undefined) && (this.previousValue !== this.value);
1001
+ if (isIE() && action === this.ACTION_ENTER && valueChanged) {
1002
+ this.fireEvent(this.EVENT_CHANGE);
1003
+ }
1004
+ }
1005
+
1006
+ async getInputValue() {
1007
+ const domRef = this.getDomRef();
1008
+
1009
+ if (domRef) {
1010
+ return (await this.getInputDOMRef()).value;
1011
+ }
1012
+ return "";
1013
+ }
1014
+
1015
+ async getInputDOMRef() {
1016
+ if (isPhone() && this.Suggestions) {
1017
+ await this.Suggestions._getSuggestionPopover();
1018
+ return this.Suggestions && this.Suggestions.responsivePopover.querySelector(".ui5-input-inner-phone");
1019
+ }
1020
+
1021
+ return this.nativeInput;
1022
+ }
1023
+
1024
+ /**
1025
+ * Returns a reference to the native input element
1026
+ * @protected
1027
+ */
1028
+ get nativeInput() {
1029
+ return this.getDomRef() && this.getDomRef().querySelector(`input`);
1030
+ }
1031
+
1032
+ get nativeInputWidth() {
1033
+ return this.nativeInput && this.nativeInput.offsetWidth;
1034
+ }
1035
+
1036
+ getLabelableElementId() {
1037
+ return this.getInputId();
1038
+ }
1039
+
1040
+ getSuggestionByListItem(item) {
1041
+ const key = parseInt(item.getAttribute("data-ui5-key"));
1042
+ return this.suggestionItems[key];
1043
+ }
1044
+
1045
+ /**
1046
+ * Returns if the suggestions popover is scrollable.
1047
+ * The method returns <code>Promise</code> that resolves to true,
1048
+ * if the popup is scrollable and false otherwise.
1049
+ * @returns {Promise}
1050
+ */
1051
+ isSuggestionsScrollable() {
1052
+ if (!this.Suggestions) {
1053
+ return Promise.resolve(false);
1054
+ }
1055
+
1056
+ return this.Suggestions._isScrollable();
1057
+ }
1058
+
1059
+ getInputId() {
1060
+ return `${this._id}-inner`;
1061
+ }
1062
+
1063
+ /* Suggestions interface */
1064
+ onItemFocused() {}
1065
+
1066
+ onItemMouseOver(event) {
1067
+ const item = event.target;
1068
+ const suggestion = this.getSuggestionByListItem(item);
1069
+ suggestion && suggestion.fireEvent("mouseover", {
1070
+ item: suggestion,
1071
+ targetRef: item,
1072
+ });
1073
+ }
1074
+
1075
+ onItemMouseOut(event) {
1076
+ const item = event.target;
1077
+ const suggestion = this.getSuggestionByListItem(item);
1078
+ suggestion && suggestion.fireEvent("mouseout", {
1079
+ item: suggestion,
1080
+ targetRef: item,
1081
+ });
1082
+ }
1083
+
1084
+ onItemSelected(item, keyboardUsed) {
1085
+ this.selectSuggestion(item, keyboardUsed);
1086
+ }
1087
+
1088
+ onItemPreviewed(item) {
1089
+ this.previewSuggestion(item);
1090
+ this.fireEvent("suggestion-item-preview", {
1091
+ item: this.getSuggestionByListItem(item),
1092
+ targetRef: item,
1093
+ });
1094
+ }
1095
+
1096
+ onOpen() {}
1097
+
1098
+ onClose() {}
1099
+
1100
+ valueStateTextMappings() {
1101
+ return {
1102
+ "Success": Input.i18nBundle.getText(VALUE_STATE_SUCCESS),
1103
+ "Information": Input.i18nBundle.getText(VALUE_STATE_INFORMATION),
1104
+ "Error": Input.i18nBundle.getText(VALUE_STATE_ERROR),
1105
+ "Warning": Input.i18nBundle.getText(VALUE_STATE_WARNING),
1106
+ };
1107
+ }
1108
+
1109
+ announceSelectedItem() {
1110
+ const invisibleText = this.shadowRoot.querySelector(`#${this._id}-selectionText`);
1111
+
1112
+ if (this.Suggestions && this.Suggestions._isItemOnTarget()) {
1113
+ invisibleText.textContent = this.itemSelectionAnnounce;
1114
+ } else {
1115
+ invisibleText.textContent = "";
1116
+ }
1117
+ }
1118
+
1119
+ get _readonly() {
1120
+ return this.readonly && !this.disabled;
1121
+ }
1122
+
1123
+ get _headerTitleText() {
1124
+ return Input.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
1125
+ }
1126
+
1127
+ get inputType() {
1128
+ return this.type.toLowerCase();
1129
+ }
1130
+
1131
+ get isTypeNumber() {
1132
+ return this.type === InputType.Number;
1133
+ }
1134
+
1135
+ get suggestionsTextId() {
1136
+ return this.showSuggestions ? `${this._id}-suggestionsText` : "";
1137
+ }
1138
+
1139
+ get valueStateTextId() {
1140
+ return this.hasValueState ? `${this._id}-valueStateDesc` : "";
1141
+ }
1142
+
1143
+ get accInfo() {
1144
+ const ariaHasPopupDefault = this.showSuggestions ? "true" : undefined;
1145
+ const ariaAutoCompleteDefault = this.showSuggestions ? "list" : undefined;
1146
+ const ariaDescribedBy = this._inputAccInfo.ariaDescribedBy ? `${this.suggestionsTextId} ${this.valueStateTextId} ${this._inputAccInfo.ariaDescribedBy}`.trim() : `${this.suggestionsTextId} ${this.valueStateTextId}`.trim();
1147
+
1148
+ return {
1149
+ "input": {
1150
+ "ariaRoledescription": this._inputAccInfo && (this._inputAccInfo.ariaRoledescription || undefined),
1151
+ "ariaDescribedBy": ariaDescribedBy || undefined,
1152
+ "ariaInvalid": this.valueState === ValueState.Error ? "true" : undefined,
1153
+ "ariaHasPopup": this._inputAccInfo.ariaHasPopup ? this._inputAccInfo.ariaHasPopup : ariaHasPopupDefault,
1154
+ "ariaAutoComplete": this._inputAccInfo.ariaAutoComplete ? this._inputAccInfo.ariaAutoComplete : ariaAutoCompleteDefault,
1155
+ "role": this._inputAccInfo && this._inputAccInfo.role,
1156
+ "ariaControls": this._inputAccInfo && this._inputAccInfo.ariaControls,
1157
+ "ariaExpanded": this._inputAccInfo && this._inputAccInfo.ariaExpanded,
1158
+ "ariaDescription": this._inputAccInfo && this._inputAccInfo.ariaDescription,
1159
+ "ariaLabel": (this._inputAccInfo && this._inputAccInfo.ariaLabel) || getEffectiveAriaLabelText(this),
1160
+ },
1161
+ };
1162
+ }
1163
+
1164
+ get nativeInputAttributes() {
1165
+ return {
1166
+ "min": this.isTypeNumber ? this._nativeInputAttributes.min : undefined,
1167
+ "max": this.isTypeNumber ? this._nativeInputAttributes.max : undefined,
1168
+ "step": this.isTypeNumber ? (this._nativeInputAttributes.step || "any") : undefined,
1169
+ };
1170
+ }
1171
+
1172
+ get ariaValueStateHiddenText() {
1173
+ if (!this.hasValueStateMessage) {
1174
+ return;
1175
+ }
1176
+
1177
+ if (this.shouldDisplayDefaultValueStateMessage) {
1178
+ return this.valueStateText;
1179
+ }
1180
+
1181
+ return this.valueStateMessageText.map(el => el.textContent).join(" ");
1182
+ }
1183
+
1184
+ get itemSelectionAnnounce() {
1185
+ return this.Suggestions ? this.Suggestions.itemSelectionAnnounce : undefined;
1186
+ }
1187
+
1188
+ get classes() {
1189
+ return {
1190
+ popover: {
1191
+ "ui5-suggestions-popover": !this.isPhone && this.showSuggestions,
1192
+ "ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.showSuggestions && this.hasValueStateMessage,
1193
+ },
1194
+ popoverValueState: {
1195
+ "ui5-valuestatemessage-root": true,
1196
+ "ui5-valuestatemessage-header": true,
1197
+ "ui5-valuestatemessage--success": this.valueState === ValueState.Success,
1198
+ "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
1199
+ "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
1200
+ "ui5-valuestatemessage--information": this.valueState === ValueState.Information,
1201
+ },
1202
+ };
1203
+ }
1204
+
1205
+ get styles() {
1206
+ const remSizeIxPx = parseInt(getComputedStyle(document.documentElement).fontSize);
1207
+
1208
+ const stylesObject = {
1209
+ popoverHeader: {
1210
+ "max-width": `${this._inputWidth}px`,
1211
+ },
1212
+ suggestionPopoverHeader: {
1213
+ "display": this._listWidth === 0 ? "none" : "inline-block",
1214
+ "width": `${this._listWidth}px`,
1215
+ },
1216
+ suggestionsPopover: {
1217
+ "min-width": `${this._inputWidth}px`,
1218
+ "max-width": (this._inputWidth / remSizeIxPx) > 40 ? `${this._inputWidth}px` : "40rem",
1219
+ },
1220
+ innerInput: {},
1221
+ };
1222
+
1223
+ if (this.nativeInputWidth < 48) {
1224
+ stylesObject.innerInput.padding = "0";
1225
+ }
1226
+
1227
+ return stylesObject;
1228
+ }
1229
+
1230
+ get suggestionSeparators() {
1231
+ return "None";
1232
+ }
1233
+
1234
+ get valueStateMessageText() {
1235
+ return this.getSlottedNodes("valueStateMessage").map(el => el.cloneNode(true));
1236
+ }
1237
+
1238
+ get shouldDisplayOnlyValueStateMessage() {
1239
+ return this.hasValueStateMessage && !this.open && this.focused;
1240
+ }
1241
+
1242
+ get shouldDisplayDefaultValueStateMessage() {
1243
+ return !this.valueStateMessage.length && this.hasValueStateMessage;
1244
+ }
1245
+
1246
+ get hasValueState() {
1247
+ return this.valueState !== ValueState.None;
1248
+ }
1249
+
1250
+ get hasValueStateMessage() {
1251
+ return this.hasValueState && this.valueState !== ValueState.Success
1252
+ && (!this._inputIconFocused // Handles the cases when valueStateMessage is forwarded (from datepicker e.g.)
1253
+ || (this._isPhone && this.Suggestions)); // Handles Input with suggestions on mobile
1254
+ }
1255
+
1256
+ get valueStateText() {
1257
+ return this.valueStateTextMappings()[this.valueState];
1258
+ }
1259
+
1260
+ get suggestionsText() {
1261
+ return Input.i18nBundle.getText(INPUT_SUGGESTIONS);
1262
+ }
1263
+
1264
+ get availableSuggestionsCount() {
1265
+ if (this.showSuggestions && (this.value || this.Suggestions.isOpened())) {
1266
+ switch (this.suggestionsTexts.length) {
1267
+ case 0:
1268
+ return Input.i18nBundle.getText(INPUT_SUGGESTIONS_NO_HIT);
1269
+
1270
+ case 1:
1271
+ return Input.i18nBundle.getText(INPUT_SUGGESTIONS_ONE_HIT);
1272
+
1273
+ default:
1274
+ return Input.i18nBundle.getText(INPUT_SUGGESTIONS_MORE_HITS, this.suggestionsTexts.length);
1275
+ }
1276
+ }
1277
+
1278
+ return undefined;
1279
+ }
1280
+
1281
+ get step() {
1282
+ return this.isTypeNumber ? "any" : undefined;
1283
+ }
1284
+
1285
+ get _isPhone() {
1286
+ return isPhone();
1287
+ }
1288
+
1289
+ /**
1290
+ * Returns the placeholder value.
1291
+ * @protected
1292
+ */
1293
+ get _placeholder() {
1294
+ return this.placeholder;
1295
+ }
1296
+
1297
+ /**
1298
+ * This method is relevant for sap_horizon theme only
1299
+ */
1300
+ get _valueStateInputIcon() {
1301
+ const iconPerValueState = {
1302
+ Error: `<path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20ZM7.70711 13.7071C7.31658 14.0976 6.68342 14.0976 6.29289 13.7071C5.90237 13.3166 5.90237 12.6834 6.29289 12.2929L8.58579 10L6.29289 7.70711C5.90237 7.31658 5.90237 6.68342 6.29289 6.29289C6.68342 5.90237 7.31658 5.90237 7.70711 6.29289L10 8.58579L12.2929 6.29289C12.6834 5.90237 13.3166 5.90237 13.7071 6.29289C14.0976 6.68342 14.0976 7.31658 13.7071 7.70711L11.4142 10L13.7071 12.2929C14.0976 12.6834 14.0976 13.3166 13.7071 13.7071C13.3166 14.0976 12.6834 14.0976 12.2929 13.7071L10 11.4142L7.70711 13.7071Z" fill="#EE3939"/>`,
1303
+ Warning: `<path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M11.8619 0.49298C11.6823 0.187541 11.3544 0 11 0C10.6456 0 10.3177 0.187541 10.1381 0.49298L0.138066 17.493C-0.0438112 17.8022 -0.0461447 18.1851 0.13195 18.4965C0.310046 18.8079 0.641283 19 1 19H21C21.3587 19 21.69 18.8079 21.868 18.4965C22.0461 18.1851 22.0438 17.8022 21.8619 17.493L11.8619 0.49298ZM11 6C11.5523 6 12 6.44772 12 7V10C12 10.5523 11.5523 11 11 11C10.4477 11 10 10.5523 10 10V7C10 6.44772 10.4477 6 11 6ZM11 16C11.8284 16 12.5 15.3284 12.5 14.5C12.5 13.6716 11.8284 13 11 13C10.1716 13 9.5 13.6716 9.5 14.5C9.5 15.3284 10.1716 16 11 16Z" fill="#F58B00"/>`,
1304
+ Success: `<path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M0 10C0 15.5228 4.47715 20 10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10ZM14.7071 6.29289C14.3166 5.90237 13.6834 5.90237 13.2929 6.29289L8 11.5858L6.70711 10.2929C6.31658 9.90237 5.68342 9.90237 5.29289 10.2929C4.90237 10.6834 4.90237 11.3166 5.29289 11.7071L7.29289 13.7071C7.68342 14.0976 8.31658 14.0976 8.70711 13.7071L14.7071 7.70711C15.0976 7.31658 15.0976 6.68342 14.7071 6.29289Z" fill="#36A41D"/>`,
1305
+ Information: `<path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M3 0C1.34315 0 0 1.34315 0 3V15C0 16.6569 1.34315 18 3 18H15C16.6569 18 18 16.6569 18 15V3C18 1.34315 16.6569 0 15 0H3ZM9 6.5C9.82843 6.5 10.5 5.82843 10.5 5C10.5 4.17157 9.82843 3.5 9 3.5C8.17157 3.5 7.5 4.17157 7.5 5C7.5 5.82843 8.17157 6.5 9 6.5ZM9 8.5C9.55228 8.5 10 8.94772 10 9.5V13.5C10 14.0523 9.55228 14.5 9 14.5C8.44771 14.5 8 14.0523 8 13.5V9.5C8 8.94772 8.44771 8.5 9 8.5Z" fill="#1B90FF"/>`,
1306
+ };
1307
+
1308
+ const result = `
1309
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="20" viewBox="0 0 20 20" fill="none">
1310
+ ${iconPerValueState[this.valueState]};
1311
+ </svg>
1312
+ `;
1313
+
1314
+ return this.valueState !== ValueState.None ? result : "";
1315
+ }
1316
+
1317
+ /**
1318
+ * This method is relevant for sap_horizon theme only
1319
+ */
1320
+ get _valueStateMessageInputIcon() {
1321
+ const iconPerValueState = {
1322
+ Error: "error",
1323
+ Warning: "alert",
1324
+ Success: "sys-enter-2",
1325
+ Information: "information",
1326
+ };
1327
+
1328
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
1329
+ }
1330
+
1331
+ /**
1332
+ * Returns the caret position inside the native input
1333
+ * @protected
1334
+ */
1335
+ getCaretPosition() {
1336
+ return getCaretPosition(this.nativeInput);
1337
+ }
1338
+
1339
+ /**
1340
+ * Sets the caret to a certain position inside the native input
1341
+ * @protected
1342
+ * @param pos
1343
+ */
1344
+ setCaretPosition(pos) {
1345
+ setCaretPosition(this.nativeInput, pos);
1346
+ }
1347
+
1348
+ /**
1349
+ * Removes the fractional part of floating-point number.
1350
+ * @param {String} value the numeric value of Input of type "Number"
1351
+ */
1352
+ removeFractionalPart(value) {
1353
+ if (value.includes(".")) {
1354
+ return value.slice(0, value.indexOf("."));
1355
+ }
1356
+ if (value.includes(",")) {
1357
+ return value.slice(0, value.indexOf(","));
1358
+ }
1359
+
1360
+ return value;
1361
+ }
1362
+
1363
+ static get dependencies() {
1364
+ const Suggestions = getFeature("InputSuggestions");
1365
+
1366
+ return [Popover].concat(Suggestions ? Suggestions.dependencies : []);
1367
+ }
1368
+
1369
+ static async onDefine() {
1370
+ const Suggestions = getFeature("InputSuggestions");
1371
+
1372
+ [Input.i18nBundle] = await Promise.all([
1373
+ getI18nBundle("@ui5/webcomponents"),
1374
+ Suggestions ? Suggestions.init() : Promise.resolve(),
1375
+ ]);
1376
+ }
1377
+ }
1378
+
1379
+ Input.define();
1380
+
1381
+ export default Input;