@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/dist/ComboBox.js CHANGED
@@ -1,14 +1,36 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
4
- import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
5
- import "@ui5/webcomponents-icons/dist/icons/slim-arrow-down.js";
4
+ import { isPhone, isSafari } from "@ui5/webcomponents-base/dist/Device.js";
5
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
6
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
7
+ import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
8
+ import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
9
+ import "@ui5/webcomponents-icons/dist/decline.js";
10
+ import "@ui5/webcomponents-icons/dist/not-editable.js";
6
11
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
- import { isBackSpace, isDelete, isShow } from "@ui5/webcomponents-base/dist/events/PseudoEvents.js";
12
+ import {
13
+ isBackSpace,
14
+ isDelete,
15
+ isShow,
16
+ isUp,
17
+ isDown,
18
+ isEnter,
19
+ isEscape,
20
+ isTabNext,
21
+ isTabPrevious,
22
+ } from "@ui5/webcomponents-base/dist/Keys.js";
8
23
  import * as Filters from "./ComboBoxFilters.js";
9
24
 
10
25
  import {
26
+ VALUE_STATE_SUCCESS,
27
+ VALUE_STATE_ERROR,
28
+ VALUE_STATE_WARNING,
29
+ VALUE_STATE_INFORMATION,
11
30
  INPUT_SUGGESTIONS_TITLE,
31
+ SELECT_OPTIONS,
32
+ LIST_ITEM_POSITION,
33
+ LIST_ITEM_SELECTED,
12
34
  } from "./generated/i18n/i18n-defaults.js";
13
35
 
14
36
  // Templates
@@ -19,20 +41,28 @@ import ComboBoxPopoverTemplate from "./generated/templates/ComboBoxPopoverTempla
19
41
  import ComboBoxCss from "./generated/themes/ComboBox.css.js";
20
42
  import ComboBoxPopoverCss from "./generated/themes/ComboBoxPopover.css.js";
21
43
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
44
+ import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
45
+ import SuggestionsCss from "./generated/themes/Suggestions.css.js";
22
46
 
23
47
  import ComboBoxItem from "./ComboBoxItem.js";
24
48
  import Icon from "./Icon.js";
49
+ import Popover from "./Popover.js";
25
50
  import ResponsivePopover from "./ResponsivePopover.js";
26
51
  import List from "./List.js";
27
52
  import BusyIndicator from "./BusyIndicator.js";
53
+ import Button from "./Button.js";
28
54
  import StandardListItem from "./StandardListItem.js";
55
+ import ComboBoxGroupItem from "./ComboBoxGroupItem.js";
29
56
 
57
+ /**
58
+ * @public
59
+ */
30
60
  const metadata = {
31
61
  tag: "ui5-combobox",
32
- defaultSlot: "items",
33
- properties: {
62
+ languageAware: true,
63
+ properties: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
34
64
  /**
35
- * Defines the value of the <code>ui5-combobox</code>.
65
+ * Defines the value of the component.
36
66
  *
37
67
  * @type {string}
38
68
  * @defaultvalue ""
@@ -44,14 +74,16 @@ const metadata = {
44
74
  },
45
75
 
46
76
  /**
47
- * Defines the "live" value of the <code>ui5-combobox</code>.
77
+ * Defines the "live" value of the component.
78
+ * <br><br>
79
+ * <b>Note:</b> If we have an item e.g. "Bulgaria", "B" is typed, "ulgaria" is typed ahead, value will be "Bulgaria", filterValue will be "B".
80
+ *
48
81
  * <br><br>
49
- * <b>Note:</b> The property is updated upon typing.
50
82
  * <b>Note:</b> Initially the filter value is synced with value.
51
83
  *
52
84
  * @type {string}
53
85
  * @defaultvalue ""
54
- * @public
86
+ * @private
55
87
  */
56
88
  filterValue: {
57
89
  type: String,
@@ -60,7 +92,7 @@ const metadata = {
60
92
 
61
93
  /**
62
94
  * Defines a short hint intended to aid the user with data entry when the
63
- * <code>ui5-combobox</code> has no value.
95
+ * component has no value.
64
96
  * @type {string}
65
97
  * @defaultvalue ""
66
98
  * @public
@@ -71,9 +103,9 @@ const metadata = {
71
103
  },
72
104
 
73
105
  /**
74
- * Defines whether <code>ui5-combobox</code> is in disabled state.
106
+ * Defines whether the component is in disabled state.
75
107
  * <br><br>
76
- * <b>Note:</b> A disabled <code>ui5-combobox</code> is completely uninteractive.
108
+ * <b>Note:</b> A disabled component is completely noninteractive.
77
109
  *
78
110
  * @type {boolean}
79
111
  * @defaultvalue false
@@ -84,10 +116,18 @@ const metadata = {
84
116
  },
85
117
 
86
118
  /**
87
- * Defines the value state of the <code>ui5-combobox</code>.
88
- * Available options are: <code>None</code>, <code>Success</code>, <code>Warning</code>, and <code>Error</code>.
119
+ * Defines the value state of the component.
120
+ * <br><br>
121
+ * Available options are:
122
+ * <ul>
123
+ * <li><code>None</code></li>
124
+ * <li><code>Error</code></li>
125
+ * <li><code>Warning</code></li>
126
+ * <li><code>Success</code></li>
127
+ * <li><code>Information</code></li>
128
+ * </ul>
89
129
  *
90
- * @type {string}
130
+ * @type {ValueState}
91
131
  * @defaultvalue "None"
92
132
  * @public
93
133
  */
@@ -97,9 +137,9 @@ const metadata = {
97
137
  },
98
138
 
99
139
  /**
100
- * Defines whether the <code>ui5-combobox</code> is readonly.
140
+ * Defines whether the component is read-only.
101
141
  * <br><br>
102
- * <b>Note:</b> A read-only <code>ui5-combobox</code> is not editable,
142
+ * <b>Note:</b> A read-only component is not editable,
103
143
  * but still provides visual feedback upon user interaction.
104
144
  *
105
145
  * @type {boolean}
@@ -111,19 +151,21 @@ const metadata = {
111
151
  },
112
152
 
113
153
  /**
114
- * Defines whether the <code>ui5-combobox</code> is required.
154
+ * Defines whether the component is required.
115
155
  *
116
156
  * @type {boolean}
117
157
  * @defaultvalue false
118
158
  * @public
119
- * @since 1.0.0-rc.5
120
159
  */
121
160
  required: {
122
161
  type: Boolean,
123
162
  },
124
163
 
125
164
  /**
126
- * Indicates whether a loading indicator should be shown in the picker
165
+ * Indicates whether a loading indicator should be shown in the picker.
166
+ *
167
+ * @type {boolean}
168
+ * @defaultvalue false
127
169
  * @public
128
170
  */
129
171
  loading: {
@@ -131,7 +173,7 @@ const metadata = {
131
173
  },
132
174
 
133
175
  /**
134
- * Defines the filter type of the <code>ui5-combobox</code>.
176
+ * Defines the filter type of the component.
135
177
  * Available options are: <code>StartsWithPerTerm</code>, <code>StartsWith</code> and <code>Contains</code>.
136
178
  *
137
179
  * @type {string}
@@ -151,42 +193,99 @@ const metadata = {
151
193
  type: Boolean,
152
194
  },
153
195
 
154
- _iconPressed: {
196
+ /**
197
+ * Indicates whether the visual focus is on the value state header
198
+ * @private
199
+ */
200
+ _isValueStateFocused: {
155
201
  type: Boolean,
156
- noAttribute: true,
157
202
  },
158
203
 
159
- _tempValue: {
204
+ /**
205
+ * Sets the accessible aria name of the component.
206
+ *
207
+ * @type {String}
208
+ * @defaultvalue: ""
209
+ * @public
210
+ * @since 1.0.0-rc.15
211
+ */
212
+ accessibleName: {
213
+ type: String,
214
+ defaultValue: undefined,
215
+ },
216
+
217
+ /**
218
+ * Receives id(or many ids) of the elements that label the combo box
219
+ * @type {String}
220
+ * @defaultvalue ""
221
+ * @public
222
+ * @since 1.0.0-rc.15
223
+ */
224
+ accessibleNameRef: {
160
225
  type: String,
161
226
  defaultValue: "",
162
227
  },
163
228
 
229
+ _iconPressed: {
230
+ type: Boolean,
231
+ noAttribute: true,
232
+ },
233
+
164
234
  _filteredItems: {
165
235
  type: Object,
166
236
  },
237
+
238
+ _listWidth: {
239
+ type: Integer,
240
+ defaultValue: 0,
241
+ noAttribute: true,
242
+ },
167
243
  },
168
- slots: {
244
+ managedSlots: true,
245
+ slots: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
246
+ /**
247
+ * Defines the component items.
248
+ *
249
+ * @type {sap.ui.webcomponents.main.IComboBoxItem[]}
250
+ * @slot items
251
+ * @public
252
+ */
253
+ "default": {
254
+ propertyName: "items",
255
+ type: HTMLElement,
256
+ invalidateOnChildChange: true,
257
+ },
258
+
169
259
  /**
170
- * Defines the <code>ui5-combobox</code> items.
260
+ * Defines the value state message that will be displayed as pop up under the component.
171
261
  * <br><br>
172
- * Example: <br>
173
- * &lt;ui5-combobox><br>
174
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-li>Item #1&lt;/ui5-li><br>
175
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-li>Item #2&lt;/ui5-li><br>
176
- * &lt;/ui5-combobox>
177
- * <br> <br>
178
262
  *
263
+ * <b>Note:</b> If not specified, a default text (in the respective language) will be displayed.
264
+ * <br>
265
+ * <b>Note:</b> The <code>valueStateMessage</code> would be displayed,
266
+ * when the <code>ui5-combobox</code> is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
179
267
  * @type {HTMLElement[]}
268
+ * @since 1.0.0-rc.9
180
269
  * @slot
181
270
  * @public
182
271
  */
183
- "default": {
184
- propertyName: "items",
272
+ valueStateMessage: {
273
+ type: HTMLElement,
274
+ },
275
+
276
+ /**
277
+ * Defines the icon to be displayed in the input field.
278
+ *
279
+ * @type {sap.ui.webcomponents.main.IIcon}
280
+ * @slot
281
+ * @public
282
+ * @since 1.0.0-rc.9
283
+ */
284
+ icon: {
185
285
  type: HTMLElement,
186
- listenFor: { include: ["*"] },
187
286
  },
188
287
  },
189
- events: {
288
+ events: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
190
289
  /**
191
290
  * Fired when the input operation has finished by pressing Enter, focusout or an item is selected.
192
291
  *
@@ -203,6 +302,19 @@ const metadata = {
203
302
  * @public
204
303
  */
205
304
  input: {},
305
+
306
+ /**
307
+ * Fired when selection is changed by user interaction
308
+ *
309
+ * @event sap.ui.webcomponents.main.ComboBox#selection-change
310
+ * @param {HTMLElement} item item to be selected.
311
+ * @public
312
+ */
313
+ "selection-change": {
314
+ detail: {
315
+ item: { type: HTMLElement },
316
+ },
317
+ },
206
318
  },
207
319
  };
208
320
 
@@ -211,11 +323,9 @@ const metadata = {
211
323
  *
212
324
  * <h3 class="comment-api-title">Overview</h3>
213
325
  *
214
- * The <code>ui5-combobox</code> represents a drop-down menu with a list of the available options and a text input field to narrow down the options.
326
+ * The <code>ui5-combobox</code> component represents a drop-down menu with a list of the available options and a text input field to narrow down the options.
215
327
  *
216
- * A drop-down list for selecting and filtering values.
217
- * <h3>Description</h3>
218
- * The <code>ui5-combobox</code> component is commonly used to enable users to select one or more options from a predefined list. The control provides an editable input field to filter the list, and a dropdown arrow of available options.
328
+ * It is commonly used to enable users to select an option from a predefined list.
219
329
  * <h3>Structure</h3>
220
330
  * The <code>ui5-combobox</code> consists of the following elements:
221
331
  * <ul>
@@ -227,7 +337,7 @@ const metadata = {
227
337
  *
228
338
  * The <code>ui5-combobox</code> provides advanced keyboard handling.
229
339
  *
230
- * <h2>Picker</h2>
340
+ * <h4>Picker</h4>
231
341
  * If the <code>ui5-combobox</code> is focused,
232
342
  * you can open or close the drop-down by pressing <code>F4</code>, <code>ALT+UP</code> or <code>ALT+DOWN</code> keys.
233
343
  * <br>
@@ -243,6 +353,7 @@ const metadata = {
243
353
  * @alias sap.ui.webcomponents.main.ComboBox
244
354
  * @extends UI5Element
245
355
  * @tagname ui5-combobox
356
+ * @appenddocs ComboBoxItem ComboBoxGroupItem
246
357
  * @public
247
358
  * @since 1.0.0-rc.6
248
359
  */
@@ -260,7 +371,7 @@ class ComboBox extends UI5Element {
260
371
  }
261
372
 
262
373
  static get staticAreaStyles() {
263
- return [ComboBoxPopoverCss, ResponsivePopoverCommonCss];
374
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss, SuggestionsCss];
264
375
  }
265
376
 
266
377
  static get template() {
@@ -276,18 +387,13 @@ class ComboBox extends UI5Element {
276
387
 
277
388
  this._filteredItems = [];
278
389
  this._initialRendering = true;
279
- this.i18nBundle = getI18nBundle("@ui5/webcomponents");
390
+ this._itemFocused = false;
391
+ this._selectionChanged = false;
280
392
  }
281
393
 
282
394
  onBeforeRendering() {
283
- const domValue = this._initialRendering ? this.value : this.filterValue;
284
-
285
- this._filteredItems = this._filterItems(domValue);
286
-
287
- if (this._autocomplete && domValue !== "") {
288
- this._autoCompleteValue(domValue);
289
- } else {
290
- this._tempValue = domValue;
395
+ if (this._initialRendering) {
396
+ this._filteredItems = this.items;
291
397
  }
292
398
 
293
399
  if (!this._initialRendering && this.popover && document.activeElement === this && !this._filteredItems.length) {
@@ -298,25 +404,60 @@ class ComboBox extends UI5Element {
298
404
  this._initialRendering = false;
299
405
  }
300
406
 
301
- onAfterRendering() {
302
- if (isPhone() && this._respPopover.opened) {
407
+ async onAfterRendering() {
408
+ await this._respPopover();
409
+ if (isPhone() && this.responsivePopover.opened) {
303
410
  // Set initial focus to the native input
304
411
  this.inner.focus();
305
412
  }
413
+
414
+ if (this.shouldClosePopover() && !isPhone()) {
415
+ this.responsivePopover.close(false, false, true);
416
+ this._clearFocus();
417
+ this._itemFocused = false;
418
+ }
419
+
420
+ this.toggleValueStatePopover(this.shouldOpenValueStateMessagePopover);
421
+ this.storeResponsivePopoverWidth();
422
+
423
+ // Safari is quite slow and does not preserve text highlighting on control rerendering.
424
+ // That's why we need to restore it "manually".
425
+ if (isSafari() && this._autocomplete && this.filterValue !== this.value) {
426
+ this.inner.setSelectionRange(
427
+ (this._isKeyNavigation ? 0 : this.filterValue.length),
428
+ this.value.length,
429
+ );
430
+ }
431
+ }
432
+
433
+ shouldClosePopover() {
434
+ return this.responsivePopover.opened && !this.focused && !this._itemFocused && !this._isValueStateFocused;
306
435
  }
307
436
 
308
437
  _focusin(event) {
309
438
  this.focused = true;
310
439
 
311
- if (this.filterValue !== this.value) {
312
- this.filterValue = this.value;
313
- }
440
+ this._lastValue = this.value;
441
+
442
+ this._autocomplete = false;
314
443
 
315
- event.target.setSelectionRange(0, this.value.length);
444
+ !isPhone() && event.target.setSelectionRange(0, this.value.length);
316
445
  }
317
446
 
318
- _focusout() {
319
- this.focused = false;
447
+ _focusout(event) {
448
+ const focusedOutToValueStateMessage = event.relatedTarget && event.relatedTarget.shadowRoot && event.relatedTarget.shadowRoot.querySelector(".ui5-valuestatemessage-root");
449
+
450
+ this._fireChangeEvent();
451
+
452
+ if (focusedOutToValueStateMessage) {
453
+ event.stopImmediatePropagation();
454
+ return;
455
+ }
456
+
457
+ if (!this.shadowRoot.contains(event.relatedTarget)) {
458
+ this.focused = false;
459
+ !isPhone() && this._closeRespPopover(event);
460
+ }
320
461
  }
321
462
 
322
463
  _afterOpenPopover() {
@@ -325,21 +466,56 @@ class ComboBox extends UI5Element {
325
466
 
326
467
  _afterClosePopover() {
327
468
  this._iconPressed = false;
469
+ this._filteredItems = this.items;
328
470
 
329
471
  // close device's keyboard and prevent further typing
330
472
  if (isPhone()) {
331
473
  this.blur();
332
474
  }
475
+
476
+ if (this._selectionPerformed) {
477
+ this._lastValue = this.value;
478
+ this._selectionPerformed = false;
479
+ }
333
480
  }
334
481
 
335
482
  _toggleRespPopover() {
336
- if (this._respPopover.opened) {
337
- this._respPopover.close();
483
+ if (this.responsivePopover.opened) {
484
+ this._closeRespPopover();
338
485
  } else {
339
- this._respPopover.open(this);
486
+ this._openRespPopover();
340
487
  }
341
488
  }
342
489
 
490
+ storeResponsivePopoverWidth() {
491
+ if (this.open && !this._listWidth) {
492
+ this._listWidth = this.responsivePopover.offsetWidth;
493
+ }
494
+ }
495
+
496
+ toggleValueStatePopover(open) {
497
+ if (open) {
498
+ this.openValueStatePopover();
499
+ } else {
500
+ this.closeValueStatePopover();
501
+ }
502
+ }
503
+
504
+ async openValueStatePopover() {
505
+ this.popover = await this._getPopover();
506
+ this.popover && this.popover.showAt(this);
507
+ }
508
+
509
+ async closeValueStatePopover() {
510
+ this.popover = await this._getPopover();
511
+ this.popover && this.popover.close();
512
+ }
513
+
514
+ async _getPopover() {
515
+ const staticAreaItem = await this.getStaticAreaItemDomRef();
516
+ return staticAreaItem.querySelector(".ui5-valuestatemessage-popover");
517
+ }
518
+
343
519
  _resetFilter() {
344
520
  this._filteredItems = this._filterItems("");
345
521
  this._selectMatchingItem();
@@ -352,130 +528,511 @@ class ComboBox extends UI5Element {
352
528
  this._toggleRespPopover();
353
529
  }
354
530
 
531
+ _readonlyIconClick() {
532
+ this.inner.focus();
533
+ }
534
+
355
535
  _input(event) {
356
536
  const { value } = event.target;
357
537
 
358
538
  if (event.target === this.inner) {
359
539
  // stop the native event, as the semantic "input" would be fired.
360
540
  event.stopImmediatePropagation();
541
+ this.focused = true;
542
+ this._isValueStateFocused = false;
361
543
  }
362
544
 
545
+ this._filteredItems = this._filterItems(value);
546
+
547
+ this.value = value;
363
548
  this.filterValue = value;
549
+
550
+ this._clearFocus();
551
+
552
+ // autocomplete
553
+ if (this._autocomplete) {
554
+ const item = this._getFirstMatchingItem(value);
555
+ this._applyAtomicValueAndSelection(item, value, true);
556
+
557
+ if (value !== "" && !this._selectionChanged && (item && !item.selected && !item.isGroupItem)) {
558
+ this.fireEvent("selection-change", {
559
+ item,
560
+ });
561
+
562
+ this._selectionChanged = false;
563
+ }
564
+ }
565
+
364
566
  this.fireEvent("input");
365
567
 
366
- this._respPopover.open(this);
568
+ if (isPhone()) {
569
+ return;
570
+ }
571
+
572
+ if (!this._filteredItems.length || value === "") {
573
+ this._closeRespPopover();
574
+ } else {
575
+ this._openRespPopover();
576
+ }
367
577
  }
368
578
 
369
579
  _startsWithMatchingItems(str) {
370
580
  return Filters.StartsWith(str, this._filteredItems);
371
581
  }
372
582
 
583
+ _clearFocus() {
584
+ this._filteredItems.map(item => {
585
+ item.focused = false;
586
+
587
+ return item;
588
+ });
589
+ }
590
+
591
+ async handleArrowKeyPress(event) {
592
+ if (this.readonly || !this._filteredItems.length) {
593
+ return;
594
+ }
595
+
596
+ const isOpen = this.open;
597
+ const isArrowDown = isDown(event);
598
+ const isArrowUp = isUp(event);
599
+ const currentItem = this._filteredItems.find(item => {
600
+ return isOpen ? item.focused : item.selected;
601
+ });
602
+ const indexOfItem = this._filteredItems.indexOf(currentItem);
603
+
604
+ event.preventDefault();
605
+
606
+ if ((this.focused === true && isArrowUp && isOpen) || (this._filteredItems.length - 1 === indexOfItem && isArrowDown)) {
607
+ return;
608
+ }
609
+
610
+ this._isKeyNavigation = true;
611
+
612
+ if (isArrowDown) {
613
+ this._handleArrowDown(event, indexOfItem);
614
+ }
615
+
616
+ if (isArrowUp) {
617
+ this._handleArrowUp(event, indexOfItem);
618
+ }
619
+ }
620
+
621
+ _handleItemNavigation(event, indexOfItem, isForward) {
622
+ const isOpen = this.open;
623
+ const currentItem = this._filteredItems[indexOfItem];
624
+ const nextItem = isForward ? this._filteredItems[indexOfItem + 1] : this._filteredItems[indexOfItem - 1];
625
+ const isGroupItem = currentItem && currentItem.isGroupItem;
626
+
627
+ if ((!isOpen) && ((isGroupItem && !nextItem) || (!isGroupItem && !currentItem))) {
628
+ return;
629
+ }
630
+
631
+ this._clearFocus();
632
+
633
+ if (isOpen) {
634
+ this._itemFocused = true;
635
+ this.value = isGroupItem ? this.filterValue : currentItem.text;
636
+ this.focused = false;
637
+ currentItem.focused = true;
638
+ } else {
639
+ this.focused = true;
640
+ this.value = isGroupItem ? nextItem.text : currentItem.text;
641
+ currentItem.focused = false;
642
+ }
643
+
644
+ this._isValueStateFocused = false;
645
+ this._selectionChanged = true;
646
+
647
+ if (isGroupItem && isOpen) {
648
+ return;
649
+ }
650
+
651
+ this._announceSelectedItem(indexOfItem);
652
+
653
+ // autocomplete
654
+ const item = this._getFirstMatchingItem(this.value);
655
+ this._applyAtomicValueAndSelection(item, "", true);
656
+
657
+ if ((item && !item.selected)) {
658
+ this.fireEvent("selection-change", {
659
+ item,
660
+ });
661
+ }
662
+
663
+ this.fireEvent("input");
664
+ this._fireChangeEvent();
665
+ }
666
+
667
+ _handleArrowDown(event, indexOfItem) {
668
+ const isOpen = this.open;
669
+
670
+ if (this.focused && indexOfItem === -1 && this.hasValueStateText && isOpen) {
671
+ this._isValueStateFocused = true;
672
+ this.focused = false;
673
+ return;
674
+ }
675
+
676
+ indexOfItem = !isOpen && this.hasValueState && indexOfItem === -1 ? 0 : indexOfItem;
677
+
678
+ this._handleItemNavigation(event, ++indexOfItem, true /* isForward */);
679
+ }
680
+
681
+ _handleArrowUp(event, indexOfItem) {
682
+ const isOpen = this.open;
683
+
684
+ if (indexOfItem === 0 && !this.hasValueStateText) {
685
+ this._clearFocus();
686
+ this.focused = true;
687
+ this._itemFocused = false;
688
+ return;
689
+ }
690
+
691
+ if (indexOfItem === 0 && this.hasValueStateText && isOpen) {
692
+ this._clearFocus();
693
+ this._itemFocused = false;
694
+ this._isValueStateFocused = true;
695
+ this._filteredItems[0].selected = false;
696
+ return;
697
+ }
698
+
699
+ if (this._isValueStateFocused) {
700
+ this.focused = true;
701
+ this._isValueStateFocused = false;
702
+ return;
703
+ }
704
+
705
+ indexOfItem = !isOpen && this.hasValueState && indexOfItem === -1 ? 0 : indexOfItem;
706
+ this._handleItemNavigation(event, --indexOfItem, false /* isForward */);
707
+ }
708
+
373
709
  _keydown(event) {
710
+ const isArrowKey = isDown(event) || isUp(event);
374
711
  this._autocomplete = !(isBackSpace(event) || isDelete(event));
712
+ this._isKeyNavigation = false;
713
+
714
+ if (isArrowKey) {
715
+ this.handleArrowKeyPress(event);
716
+ }
717
+
718
+ if (isEnter(event)) {
719
+ this._fireChangeEvent();
720
+ this._closeRespPopover();
721
+ this.focused = true;
722
+ }
723
+
724
+ if (isEscape(event)) {
725
+ this.focused = true;
726
+ this.value = !this.open ? this._lastValue : this.value;
727
+ this._isValueStateFocused = false;
728
+ }
729
+
730
+ if ((isTabNext(event) || isTabPrevious(event)) && this.open) {
731
+ this._closeRespPopover();
732
+ }
375
733
 
376
734
  if (isShow(event) && !this.readonly && !this.disabled) {
377
735
  event.preventDefault();
736
+
378
737
  this._resetFilter();
379
738
  this._toggleRespPopover();
739
+
740
+ const selectedItem = this._filteredItems.find(item => {
741
+ return item.selected;
742
+ });
743
+
744
+ if (selectedItem && this.open) {
745
+ this._itemFocused = true;
746
+ selectedItem.focused = true;
747
+ this.focused = false;
748
+ } else {
749
+ this.focused = true;
750
+ }
380
751
  }
381
752
  }
382
753
 
383
754
  _click(event) {
384
755
  if (isPhone() && !this.readonly) {
385
- this._respPopover.open(this);
756
+ this._openRespPopover();
386
757
  }
387
758
  }
388
759
 
389
- _closeRespPopover() {
390
- this._respPopover.close();
760
+ _closeRespPopover(event) {
761
+ if (isPhone() && event && event.target.classList.contains("ui5-responsive-popover-close-btn") && this._selectedItemText) {
762
+ this.value = this._selectedItemText;
763
+ this.filterValue = this._selectedItemText;
764
+ }
765
+
766
+ this._isValueStateFocused = false;
767
+ this._clearFocus();
768
+
769
+ this.responsivePopover.close();
770
+ }
771
+
772
+ _openRespPopover() {
773
+ this.responsivePopover.showAt(this);
391
774
  }
392
775
 
393
776
  _filterItems(str) {
394
- return (Filters[this.filter] || Filters.StartsWithPerTerm)(str, this.items);
777
+ const itemsToFilter = this.items.filter(item => !item.isGroupItem);
778
+ const filteredItems = (Filters[this.filter] || Filters.StartsWithPerTerm)(str, itemsToFilter);
779
+
780
+ // Return the filtered items and their group items
781
+ return this.items.filter((item, idx, allItems) => ComboBox._groupItemFilter(item, ++idx, allItems, filteredItems) || filteredItems.indexOf(item) !== -1);
782
+ }
783
+
784
+ /**
785
+ * Returns true if the group header should be shown (if there is a filtered suggestion item for this group item)
786
+ *
787
+ * @private
788
+ */
789
+ static _groupItemFilter(item, idx, allItems, filteredItems) {
790
+ if (item.isGroupItem) {
791
+ let groupHasFilteredItems;
792
+
793
+ while (allItems[idx] && !allItems[idx].isGroupItem && !groupHasFilteredItems) {
794
+ groupHasFilteredItems = filteredItems.indexOf(allItems[idx]) !== -1;
795
+ idx++;
796
+ }
797
+
798
+ return groupHasFilteredItems;
799
+ }
395
800
  }
396
801
 
397
- _autoCompleteValue(current) {
398
- const currentValue = current;
399
- const matchingItems = this._startsWithMatchingItems(currentValue);
802
+ _getFirstMatchingItem(current) {
803
+ const currentlyFocusedItem = this.items.find(item => item.focused === true);
804
+
805
+ if (currentlyFocusedItem && currentlyFocusedItem.isGroupItem) {
806
+ this.value = this.filterValue;
807
+ return;
808
+ }
809
+
810
+ const matchingItems = this._startsWithMatchingItems(current).filter(item => !item.isGroupItem);
400
811
 
401
812
  if (matchingItems.length) {
402
- this._tempValue = matchingItems[0] ? matchingItems[0].text : current;
403
- } else {
404
- this._tempValue = current;
813
+ return matchingItems[0];
814
+ }
815
+ }
816
+
817
+ _applyAtomicValueAndSelection(item, filterValue, highlightValue) {
818
+ if (!item) {
819
+ return;
405
820
  }
406
821
 
407
- if (matchingItems.length && (currentValue !== this._tempValue)) {
408
- setTimeout(() => {
409
- this.inner.setSelectionRange(currentValue.length, this._tempValue.length);
410
- }, 0);
822
+ const value = (item && item.text) || "";
823
+ this.inner.value = value;
824
+ if (highlightValue) {
825
+ this.inner.setSelectionRange(filterValue.length, value.length);
411
826
  }
827
+ this.value = value;
412
828
  }
413
829
 
414
830
  _selectMatchingItem() {
415
- this._filteredItems = this._filteredItems.map(item => {
416
- item.selected = (item.text === this._tempValue);
831
+ const currentlyFocusedItem = this.items.find(item => item.focused);
832
+ const shouldSelectionBeCleared = currentlyFocusedItem && currentlyFocusedItem.isGroupItem;
417
833
 
834
+ this._filteredItems = this._filteredItems.map(item => {
835
+ item.selected = !item.isGroupItem && (item.text === this.value) && !shouldSelectionBeCleared;
418
836
  return item;
419
837
  });
420
838
  }
421
839
 
422
- _inputChange() {
423
- if (this.value !== this._tempValue) {
424
- this.value = this._tempValue;
840
+ _fireChangeEvent() {
841
+ if (this.value !== this._lastValue) {
425
842
  this.fireEvent("change");
426
- this.inner.setSelectionRange(this.value.length, this.value.length);
843
+ this._lastValue = this.value;
427
844
  }
428
845
  }
429
846
 
847
+ _inputChange(event) {
848
+ event.preventDefault();
849
+ }
850
+
851
+ _itemMousedown(event) {
852
+ event.preventDefault();
853
+ }
854
+
430
855
  _selectItem(event) {
431
856
  const listItem = event.detail.item;
432
857
 
433
- this._tempValue = listItem.mappedItem.text;
434
- this.filterValue = this._tempValue;
858
+ this._selectedItemText = listItem.mappedItem.text;
859
+ this._selectionPerformed = true;
435
860
 
436
- this._filteredItems.map(item => {
437
- item.selected = (item === listItem.mappedItem);
861
+ const sameItemSelected = this.value === this._selectedItemText;
862
+ const sameSelectionPerformed = this.value.toLowerCase() === this.filterValue.toLowerCase();
863
+
864
+ if (sameItemSelected && sameSelectionPerformed) {
865
+ return this._closeRespPopover();
866
+ }
867
+
868
+ this.value = this._selectedItemText;
869
+
870
+ if (!listItem.mappedItem.selected) {
871
+ this.fireEvent("selection-change", {
872
+ item: listItem.mappedItem,
873
+ });
874
+
875
+ this._selectionChanged = true;
876
+ }
438
877
 
878
+ this._filteredItems.map(item => {
879
+ item.selected = (item === listItem.mappedItem && !item.isGroupItem);
439
880
  return item;
440
881
  });
441
882
 
442
- this._inputChange();
443
- this._respPopover.close();
883
+ this._fireChangeEvent();
884
+ this._closeRespPopover();
885
+
886
+ // reset selection
887
+ this.inner.setSelectionRange(this.value.length, this.value.length);
444
888
  }
445
889
 
446
- get _filteredItems() {
447
- return !this.items.length ? [] : this.items.filter(item => {
448
- return item.text.toLowerCase().startsWith(this.value.toLowerCase());
449
- });
890
+ _onItemFocus(event) {
891
+ this._itemFocused = true;
892
+ }
893
+
894
+ _announceSelectedItem(indexOfItem) {
895
+ const itemPositionText = ComboBox.i18nBundle.getText(LIST_ITEM_POSITION, indexOfItem + 1, this._filteredItems.length);
896
+ const itemSelectionText = ComboBox.i18nBundle.getText(LIST_ITEM_SELECTED);
897
+
898
+ announce(`${itemPositionText} ${itemSelectionText}`, "Polite");
450
899
  }
451
900
 
452
901
  get _headerTitleText() {
453
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
902
+ return ComboBox.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
903
+ }
904
+
905
+ get _iconAccessibleNameText() {
906
+ return ComboBox.i18nBundle.getText(SELECT_OPTIONS);
454
907
  }
455
908
 
456
909
  get inner() {
457
- return isPhone() ? this._respPopover.querySelector(".ui5-input-inner-phone") : this.shadowRoot.querySelector("[inner-input]");
910
+ return isPhone() ? this.responsivePopover.querySelector(".ui5-input-inner-phone") : this.shadowRoot.querySelector("[inner-input]");
458
911
  }
459
912
 
460
- get _respPopover() {
461
- return this.getStaticAreaItemDomRef().querySelector("ui5-responsive-popover");
913
+ async _respPopover() {
914
+ const staticAreaItem = await this.getStaticAreaItemDomRef();
915
+ this.responsivePopover = staticAreaItem.querySelector("[ui5-responsive-popover]");
916
+ return this.responsivePopover;
462
917
  }
463
918
 
464
919
  get editable() {
465
920
  return !this.readonly;
466
921
  }
467
922
 
468
- static async define(...params) {
469
- await Promise.all([
470
- ComboBoxItem.define(),
471
- Icon.define(),
472
- ResponsivePopover.define(),
473
- List.define(),
474
- BusyIndicator.define(),
475
- StandardListItem.define(),
476
- ]);
923
+ get hasValueState() {
924
+ return this.valueState !== ValueState.None;
925
+ }
926
+
927
+ get hasValueStateText() {
928
+ return this.hasValueState && this.valueState !== ValueState.Success;
929
+ }
930
+
931
+ get valueStateText() {
932
+ return this.valueStateTextMappings[this.valueState];
933
+ }
934
+
935
+ get valueStateMessageText() {
936
+ return this.getSlottedNodes("valueStateMessage").map(el => el.cloneNode(true));
937
+ }
938
+
939
+ get valueStateTextId() {
940
+ return this.hasValueState ? `${this._id}-valueStateDesc` : undefined;
941
+ }
942
+
943
+ get valueStateTextMappings() {
944
+ return {
945
+ "Success": ComboBox.i18nBundle.getText(VALUE_STATE_SUCCESS),
946
+ "Error": ComboBox.i18nBundle.getText(VALUE_STATE_ERROR),
947
+ "Warning": ComboBox.i18nBundle.getText(VALUE_STATE_WARNING),
948
+ "Information": ComboBox.i18nBundle.getText(VALUE_STATE_INFORMATION),
949
+ };
950
+ }
951
+
952
+ get shouldOpenValueStateMessagePopover() {
953
+ return this.focused && this.hasValueStateText && !this._iconPressed
954
+ && !this.open && !this._isPhone;
955
+ }
956
+
957
+ get shouldDisplayDefaultValueStateMessage() {
958
+ return !this.valueStateMessage.length && this.hasValueStateText;
959
+ }
960
+
961
+ /**
962
+ * This method is relevant for sap_horizon theme only
963
+ */
964
+ get _valueStateMessageIcon() {
965
+ const iconPerValueState = {
966
+ Error: "error",
967
+ Warning: "alert",
968
+ Success: "sys-enter-2",
969
+ Information: "information",
970
+ };
971
+
972
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
973
+ }
974
+
975
+ get open() {
976
+ return this.responsivePopover ? this.responsivePopover.opened : false;
977
+ }
978
+
979
+ get _isPhone() {
980
+ return isPhone();
981
+ }
982
+
983
+ get itemTabIndex() {
984
+ return undefined;
985
+ }
986
+
987
+ get ariaLabelText() {
988
+ return getEffectiveAriaLabelText(this);
989
+ }
990
+
991
+ static get dependencies() {
992
+ return [
993
+ ComboBoxItem,
994
+ Icon,
995
+ ResponsivePopover,
996
+ List,
997
+ BusyIndicator,
998
+ Button,
999
+ StandardListItem,
1000
+ Popover,
1001
+ ComboBoxGroupItem,
1002
+ ];
1003
+ }
1004
+
1005
+ static async onDefine() {
1006
+ ComboBox.i18nBundle = await getI18nBundle("@ui5/webcomponents");
1007
+ }
1008
+
1009
+ get styles() {
1010
+ return {
1011
+ popoverHeader: {
1012
+ "width": `${this.offsetWidth}px`,
1013
+ },
1014
+ suggestionPopoverHeader: {
1015
+ "display": this._listWidth === 0 ? "none" : "inline-block",
1016
+ "width": `${this._listWidth}px`,
1017
+ },
1018
+ };
1019
+ }
477
1020
 
478
- super.define(...params);
1021
+ get classes() {
1022
+ return {
1023
+ popover: {
1024
+ "ui5-suggestions-popover": !this.isPhone,
1025
+ "ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.hasValueStateText,
1026
+ },
1027
+ popoverValueState: {
1028
+ "ui5-valuestatemessage-header": true,
1029
+ "ui5-valuestatemessage-root": true,
1030
+ "ui5-valuestatemessage--success": this.valueState === ValueState.Success,
1031
+ "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
1032
+ "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
1033
+ "ui5-valuestatemessage--information": this.valueState === ValueState.Information,
1034
+ },
1035
+ };
479
1036
  }
480
1037
  }
481
1038