@ui5/webcomponents 0.0.0-934b4df24 → 0.0.0-b053ad005

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 (732) hide show
  1. package/CHANGELOG.md +552 -1
  2. package/README.md +144 -52
  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 +2 -1
  7. package/dist/Avatar.js +197 -46
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +44 -22
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +141 -37
  13. package/dist/Button.js +124 -68
  14. package/dist/Calendar.js +342 -546
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -62
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +44 -158
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +267 -100
  21. package/dist/CheckBox.js +149 -49
  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 +599 -94
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +12 -24
  30. package/dist/CustomListItem.js +38 -4
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +392 -409
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +111 -384
  35. package/dist/DayPicker.js +509 -431
  36. package/dist/Dialog.js +496 -44
  37. package/dist/DurationPicker.js +135 -400
  38. package/dist/FileUploader.js +213 -25
  39. package/dist/GroupHeaderListItem.js +24 -14
  40. package/dist/Icon.js +141 -49
  41. package/dist/Input.js +614 -163
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -17
  44. package/dist/Link.js +123 -29
  45. package/dist/List.js +451 -117
  46. package/dist/ListItem.js +96 -26
  47. package/dist/ListItemBase.js +31 -8
  48. package/dist/MessageStrip.js +56 -70
  49. package/dist/MonthPicker.js +180 -182
  50. package/dist/MultiComboBox.js +574 -161
  51. package/dist/MultiComboBoxItem.js +8 -2
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +100 -37
  55. package/dist/Popover.js +255 -169
  56. package/dist/Popup.js +370 -96
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +131 -51
  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 +67 -53
  63. package/dist/SegmentedButton.js +112 -76
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +441 -108
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +44 -13
  69. package/dist/StepInput.js +681 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +37 -31
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +59 -42
  74. package/dist/Tab.js +55 -24
  75. package/dist/TabContainer.js +145 -65
  76. package/dist/TabSeparator.js +1 -0
  77. package/dist/Table.js +480 -27
  78. package/dist/TableCell.js +11 -9
  79. package/dist/TableColumn.js +13 -3
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +243 -10
  82. package/dist/TextArea.js +139 -41
  83. package/dist/TimePicker.js +55 -675
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +16 -9
  87. package/dist/Toast.js +24 -13
  88. package/dist/ToggleButton.js +21 -8
  89. package/dist/Token.js +84 -47
  90. package/dist/Tokenizer.js +246 -64
  91. package/dist/Tree.js +150 -63
  92. package/dist/TreeItem.js +44 -9
  93. package/dist/TreeListItem.js +136 -14
  94. package/dist/WheelSlider.js +79 -59
  95. package/dist/YearPicker.js +199 -255
  96. package/dist/api.json +6877 -1
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +0 -1
  99. package/dist/features/InputSuggestions.js +251 -57
  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 -1
  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 -15
  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 -6
  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 +13 -12
  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 -6
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -13
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -6
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -6
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +9 -12
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -9
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +7 -7
  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 -23
  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 -13
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -9
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +8 -17
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -5
  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 +4 -4
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -9
  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 -14
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +4 -9
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -5
  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 -20
  219. package/dist/generated/templates/StepInputTemplate.lit.js +8 -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 -6
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -14
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -13
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +8 -21
  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 -11
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +8 -8
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -7
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -8
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +6 -6
  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 +18 -16
  245. package/dist/generated/templates/TreeTemplate.lit.js +5 -5
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +7 -7
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +5 -5
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +5 -5
  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 +5 -5
  255. package/dist/generated/themes/Button.css.js +5 -5
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +5 -5
  258. package/dist/generated/themes/CalendarHeader.css.js +5 -5
  259. package/dist/generated/themes/Card.css.js +5 -5
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +5 -5
  262. package/dist/generated/themes/CheckBox.css.js +5 -5
  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 +5 -5
  269. package/dist/generated/themes/ComboBoxPopover.css.js +5 -5
  270. package/dist/generated/themes/CustomListItem.css.js +5 -5
  271. package/dist/generated/themes/DatePicker.css.js +5 -5
  272. package/dist/generated/themes/DatePickerPopover.css.js +5 -5
  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 +5 -5
  276. package/dist/generated/themes/DayPicker.css.js +5 -5
  277. package/dist/generated/themes/Dialog.css.js +5 -5
  278. package/dist/generated/themes/FileUploader.css.js +5 -5
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +5 -5
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +5 -5
  282. package/dist/generated/themes/Input.css.js +5 -5
  283. package/dist/generated/themes/InputIcon.css.js +5 -5
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +5 -5
  285. package/dist/generated/themes/Label.css.js +5 -5
  286. package/dist/generated/themes/Link.css.js +5 -5
  287. package/dist/generated/themes/List.css.js +5 -5
  288. package/dist/generated/themes/ListItem.css.js +5 -5
  289. package/dist/generated/themes/ListItemBase.css.js +5 -5
  290. package/dist/generated/themes/MessageStrip.css.js +5 -5
  291. package/dist/generated/themes/MonthPicker.css.js +5 -5
  292. package/dist/generated/themes/MultiComboBox.css.js +5 -5
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +5 -5
  295. package/dist/generated/themes/Popover.css.js +5 -5
  296. package/dist/generated/themes/Popup.css.js +5 -5
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +5 -5
  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 +5 -5
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +5 -5
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +5 -5
  305. package/dist/generated/themes/SegmentedButton.css.js +5 -5
  306. package/dist/generated/themes/Select.css.js +5 -5
  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 +5 -5
  312. package/dist/generated/themes/Tab.css.js +5 -5
  313. package/dist/generated/themes/TabContainer.css.js +5 -5
  314. package/dist/generated/themes/TabInOverflow.css.js +5 -5
  315. package/dist/generated/themes/TabInStrip.css.js +5 -5
  316. package/dist/generated/themes/Table.css.js +5 -5
  317. package/dist/generated/themes/TableCell.css.js +5 -5
  318. package/dist/generated/themes/TableColumn.css.js +5 -5
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +5 -5
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +5 -5
  323. package/dist/generated/themes/TimePicker.css.js +5 -5
  324. package/dist/generated/themes/TimePickerPopover.css.js +5 -5
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +5 -5
  327. package/dist/generated/themes/Toast.css.js +5 -5
  328. package/dist/generated/themes/ToggleButton.css.js +5 -5
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +5 -5
  331. package/dist/generated/themes/Tokenizer.css.js +5 -5
  332. package/dist/generated/themes/Tree.css.js +5 -5
  333. package/dist/generated/themes/TreeListItem.css.js +5 -5
  334. package/dist/generated/themes/ValueStateMessage.css.js +5 -5
  335. package/dist/generated/themes/WheelSlider.css.js +5 -5
  336. package/dist/generated/themes/YearPicker.css.js +5 -5
  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 -1
  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 +49 -15
  398. package/dist/timepicker-utils/TimeSlider.js +15 -13
  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 +3 -3
  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 +2 -2
  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 +1 -1
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +5 -5
  425. package/dist/types/TabLayout.js +1 -1
  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 -7
  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 +77 -0
  574. package/src/StepInput.js +681 -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 +261 -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 -97
  719. package/dist/TimelineItem.js +0 -161
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/DurationPickerPopoverTemplate.lit.js +0 -10
  722. package/dist/generated/templates/DurationPickerTemplate.lit.js +0 -8
  723. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  724. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  725. package/dist/generated/themes/ComboBoxItem.css.js +0 -8
  726. package/dist/generated/themes/DurationPicker.css.js +0 -8
  727. package/dist/generated/themes/DurationPickerPopover.css.js +0 -8
  728. package/dist/generated/themes/Timeline.css.js +0 -8
  729. package/dist/generated/themes/TimelineItem.css.js +0 -8
  730. package/dist/popup-utils/PopupUtils.js +0 -55
  731. package/dist/types/AvatarFitType.js +0 -40
  732. package/dist/webcomponentsjs/package.json +0 -46
package/dist/ComboBox.js CHANGED
@@ -1,19 +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";
6
- import "@ui5/webcomponents-icons/dist/icons/decline.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";
7
11
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
- import { isBackSpace, isDelete, isShow } from "@ui5/webcomponents-base/dist/Keys.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";
9
23
  import * as Filters from "./ComboBoxFilters.js";
10
24
 
11
25
  import {
12
26
  VALUE_STATE_SUCCESS,
13
27
  VALUE_STATE_ERROR,
14
28
  VALUE_STATE_WARNING,
29
+ VALUE_STATE_INFORMATION,
15
30
  INPUT_SUGGESTIONS_TITLE,
16
- ICON_ACCESSIBLE_NAME,
31
+ SELECT_OPTIONS,
32
+ LIST_ITEM_POSITION,
33
+ LIST_ITEM_SELECTED,
17
34
  } from "./generated/i18n/i18n-defaults.js";
18
35
 
19
36
  // Templates
@@ -24,24 +41,28 @@ import ComboBoxPopoverTemplate from "./generated/templates/ComboBoxPopoverTempla
24
41
  import ComboBoxCss from "./generated/themes/ComboBox.css.js";
25
42
  import ComboBoxPopoverCss from "./generated/themes/ComboBoxPopover.css.js";
26
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";
27
46
 
28
47
  import ComboBoxItem from "./ComboBoxItem.js";
29
48
  import Icon from "./Icon.js";
49
+ import Popover from "./Popover.js";
30
50
  import ResponsivePopover from "./ResponsivePopover.js";
31
51
  import List from "./List.js";
32
52
  import BusyIndicator from "./BusyIndicator.js";
33
53
  import Button from "./Button.js";
34
54
  import StandardListItem from "./StandardListItem.js";
55
+ import ComboBoxGroupItem from "./ComboBoxGroupItem.js";
35
56
 
36
57
  /**
37
58
  * @public
38
59
  */
39
60
  const metadata = {
40
61
  tag: "ui5-combobox",
41
- defaultSlot: "items",
62
+ languageAware: true,
42
63
  properties: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
43
64
  /**
44
- * Defines the value of the <code>ui5-combobox</code>.
65
+ * Defines the value of the component.
45
66
  *
46
67
  * @type {string}
47
68
  * @defaultvalue ""
@@ -53,16 +74,16 @@ const metadata = {
53
74
  },
54
75
 
55
76
  /**
56
- * Defines the "live" value of the <code>ui5-combobox</code>.
77
+ * Defines the "live" value of the component.
57
78
  * <br><br>
58
- * <b>Note:</b> The property is updated upon typing.
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".
59
80
  *
60
81
  * <br><br>
61
82
  * <b>Note:</b> Initially the filter value is synced with value.
62
83
  *
63
84
  * @type {string}
64
85
  * @defaultvalue ""
65
- * @public
86
+ * @private
66
87
  */
67
88
  filterValue: {
68
89
  type: String,
@@ -71,7 +92,7 @@ const metadata = {
71
92
 
72
93
  /**
73
94
  * Defines a short hint intended to aid the user with data entry when the
74
- * <code>ui5-combobox</code> has no value.
95
+ * component has no value.
75
96
  * @type {string}
76
97
  * @defaultvalue ""
77
98
  * @public
@@ -82,9 +103,9 @@ const metadata = {
82
103
  },
83
104
 
84
105
  /**
85
- * Defines whether <code>ui5-combobox</code> is in disabled state.
106
+ * Defines whether the component is in disabled state.
86
107
  * <br><br>
87
- * <b>Note:</b> A disabled <code>ui5-combobox</code> is completely uninteractive.
108
+ * <b>Note:</b> A disabled component is completely noninteractive.
88
109
  *
89
110
  * @type {boolean}
90
111
  * @defaultvalue false
@@ -95,7 +116,7 @@ const metadata = {
95
116
  },
96
117
 
97
118
  /**
98
- * Defines the value state of the <code>ui5-combobox</code>.
119
+ * Defines the value state of the component.
99
120
  * <br><br>
100
121
  * Available options are:
101
122
  * <ul>
@@ -116,9 +137,9 @@ const metadata = {
116
137
  },
117
138
 
118
139
  /**
119
- * Defines whether the <code>ui5-combobox</code> is readonly.
140
+ * Defines whether the component is read-only.
120
141
  * <br><br>
121
- * <b>Note:</b> A read-only <code>ui5-combobox</code> is not editable,
142
+ * <b>Note:</b> A read-only component is not editable,
122
143
  * but still provides visual feedback upon user interaction.
123
144
  *
124
145
  * @type {boolean}
@@ -130,7 +151,7 @@ const metadata = {
130
151
  },
131
152
 
132
153
  /**
133
- * Defines whether the <code>ui5-combobox</code> is required.
154
+ * Defines whether the component is required.
134
155
  *
135
156
  * @type {boolean}
136
157
  * @defaultvalue false
@@ -152,7 +173,7 @@ const metadata = {
152
173
  },
153
174
 
154
175
  /**
155
- * Defines the filter type of the <code>ui5-combobox</code>.
176
+ * Defines the filter type of the component.
156
177
  * Available options are: <code>StartsWithPerTerm</code>, <code>StartsWith</code> and <code>Contains</code>.
157
178
  *
158
179
  * @type {string}
@@ -172,40 +193,96 @@ const metadata = {
172
193
  type: Boolean,
173
194
  },
174
195
 
175
- _iconPressed: {
196
+ /**
197
+ * Indicates whether the visual focus is on the value state header
198
+ * @private
199
+ */
200
+ _isValueStateFocused: {
176
201
  type: Boolean,
177
- noAttribute: true,
178
202
  },
179
203
 
180
- _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: {
181
225
  type: String,
182
226
  defaultValue: "",
183
227
  },
184
228
 
229
+ _iconPressed: {
230
+ type: Boolean,
231
+ noAttribute: true,
232
+ },
233
+
185
234
  _filteredItems: {
186
235
  type: Object,
187
236
  },
237
+
238
+ _listWidth: {
239
+ type: Integer,
240
+ defaultValue: 0,
241
+ noAttribute: true,
242
+ },
188
243
  },
189
244
  managedSlots: true,
190
245
  slots: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
191
246
  /**
192
- * Defines the <code>ui5-combobox</code> items.
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
+
259
+ /**
260
+ * Defines the value state message that will be displayed as pop up under the component.
193
261
  * <br><br>
194
- * Example: <br>
195
- * &lt;ui5-combobox><br>
196
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-li>Item #1&lt;/ui5-li><br>
197
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ui5-li>Item #2&lt;/ui5-li><br>
198
- * &lt;/ui5-combobox>
199
- * <br> <br>
200
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.
201
267
  * @type {HTMLElement[]}
268
+ * @since 1.0.0-rc.9
202
269
  * @slot
203
270
  * @public
204
271
  */
205
- "default": {
206
- 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: {
207
285
  type: HTMLElement,
208
- listenFor: { include: ["*"] },
209
286
  },
210
287
  },
211
288
  events: /** @lends sap.ui.webcomponents.main.ComboBox.prototype */ {
@@ -225,6 +302,19 @@ const metadata = {
225
302
  * @public
226
303
  */
227
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
+ },
228
318
  },
229
319
  };
230
320
 
@@ -235,7 +325,7 @@ const metadata = {
235
325
  *
236
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.
237
327
  *
238
- * It is commonly used to enable users to select one or more options from a predefined list.
328
+ * It is commonly used to enable users to select an option from a predefined list.
239
329
  * <h3>Structure</h3>
240
330
  * The <code>ui5-combobox</code> consists of the following elements:
241
331
  * <ul>
@@ -263,7 +353,7 @@ const metadata = {
263
353
  * @alias sap.ui.webcomponents.main.ComboBox
264
354
  * @extends UI5Element
265
355
  * @tagname ui5-combobox
266
- * @appenddocs ComboBoxItem
356
+ * @appenddocs ComboBoxItem ComboBoxGroupItem
267
357
  * @public
268
358
  * @since 1.0.0-rc.6
269
359
  */
@@ -281,7 +371,7 @@ class ComboBox extends UI5Element {
281
371
  }
282
372
 
283
373
  static get staticAreaStyles() {
284
- return [ResponsivePopoverCommonCss, ComboBoxPopoverCss];
374
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss, SuggestionsCss];
285
375
  }
286
376
 
287
377
  static get template() {
@@ -297,18 +387,13 @@ class ComboBox extends UI5Element {
297
387
 
298
388
  this._filteredItems = [];
299
389
  this._initialRendering = true;
300
- this.i18nBundle = getI18nBundle("@ui5/webcomponents");
390
+ this._itemFocused = false;
391
+ this._selectionChanged = false;
301
392
  }
302
393
 
303
394
  onBeforeRendering() {
304
- const domValue = this._initialRendering ? this.value : this.filterValue;
305
-
306
- this._filteredItems = this._filterItems(domValue);
307
-
308
- if (this._autocomplete && domValue !== "") {
309
- this._autoCompleteValue(domValue);
310
- } else {
311
- this._tempValue = domValue;
395
+ if (this._initialRendering) {
396
+ this._filteredItems = this.items;
312
397
  }
313
398
 
314
399
  if (!this._initialRendering && this.popover && document.activeElement === this && !this._filteredItems.length) {
@@ -325,20 +410,54 @@ class ComboBox extends UI5Element {
325
410
  // Set initial focus to the native input
326
411
  this.inner.focus();
327
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;
328
435
  }
329
436
 
330
437
  _focusin(event) {
331
438
  this.focused = true;
332
439
 
333
- if (this.filterValue !== this.value) {
334
- this.filterValue = this.value;
335
- }
440
+ this._lastValue = this.value;
441
+
442
+ this._autocomplete = false;
336
443
 
337
- event.target.setSelectionRange(0, this.value.length);
444
+ !isPhone() && event.target.setSelectionRange(0, this.value.length);
338
445
  }
339
446
 
340
- _focusout() {
341
- 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
+ }
342
461
  }
343
462
 
344
463
  _afterOpenPopover() {
@@ -347,11 +466,17 @@ class ComboBox extends UI5Element {
347
466
 
348
467
  _afterClosePopover() {
349
468
  this._iconPressed = false;
469
+ this._filteredItems = this.items;
350
470
 
351
471
  // close device's keyboard and prevent further typing
352
472
  if (isPhone()) {
353
473
  this.blur();
354
474
  }
475
+
476
+ if (this._selectionPerformed) {
477
+ this._lastValue = this.value;
478
+ this._selectionPerformed = false;
479
+ }
355
480
  }
356
481
 
357
482
  _toggleRespPopover() {
@@ -362,6 +487,35 @@ class ComboBox extends UI5Element {
362
487
  }
363
488
  }
364
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
+
365
519
  _resetFilter() {
366
520
  this._filteredItems = this._filterItems("");
367
521
  this._selectMatchingItem();
@@ -374,31 +528,226 @@ class ComboBox extends UI5Element {
374
528
  this._toggleRespPopover();
375
529
  }
376
530
 
531
+ _readonlyIconClick() {
532
+ this.inner.focus();
533
+ }
534
+
377
535
  _input(event) {
378
536
  const { value } = event.target;
379
537
 
380
538
  if (event.target === this.inner) {
381
539
  // stop the native event, as the semantic "input" would be fired.
382
540
  event.stopImmediatePropagation();
541
+ this.focused = true;
542
+ this._isValueStateFocused = false;
383
543
  }
384
544
 
545
+ this._filteredItems = this._filterItems(value);
546
+
547
+ this.value = value;
385
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
+
386
566
  this.fireEvent("input");
387
567
 
388
- this._openRespPopover();
568
+ if (isPhone()) {
569
+ return;
570
+ }
571
+
572
+ if (!this._filteredItems.length || value === "") {
573
+ this._closeRespPopover();
574
+ } else {
575
+ this._openRespPopover();
576
+ }
389
577
  }
390
578
 
391
579
  _startsWithMatchingItems(str) {
392
580
  return Filters.StartsWith(str, this._filteredItems);
393
581
  }
394
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
+
395
709
  _keydown(event) {
710
+ const isArrowKey = isDown(event) || isUp(event);
396
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
+ }
397
733
 
398
734
  if (isShow(event) && !this.readonly && !this.disabled) {
399
735
  event.preventDefault();
736
+
400
737
  this._resetFilter();
401
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
+ }
402
751
  }
403
752
  }
404
753
 
@@ -408,80 +757,153 @@ class ComboBox extends UI5Element {
408
757
  }
409
758
  }
410
759
 
411
- _closeRespPopover() {
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
+
412
769
  this.responsivePopover.close();
413
770
  }
414
771
 
415
772
  _openRespPopover() {
416
- this.updateStaticAreaItemContentDensity();
417
- this.responsivePopover.open(this);
773
+ this.responsivePopover.showAt(this);
418
774
  }
419
775
 
420
776
  _filterItems(str) {
421
- 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
+ }
422
800
  }
423
801
 
424
- _autoCompleteValue(current) {
425
- const currentValue = current;
426
- 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);
427
811
 
428
812
  if (matchingItems.length) {
429
- this._tempValue = matchingItems[0] ? matchingItems[0].text : current;
430
- } else {
431
- this._tempValue = current;
813
+ return matchingItems[0];
814
+ }
815
+ }
816
+
817
+ _applyAtomicValueAndSelection(item, filterValue, highlightValue) {
818
+ if (!item) {
819
+ return;
432
820
  }
433
821
 
434
- if (matchingItems.length && (currentValue !== this._tempValue)) {
435
- setTimeout(() => {
436
- this.inner.setSelectionRange(currentValue.length, this._tempValue.length);
437
- }, 0);
822
+ const value = (item && item.text) || "";
823
+ this.inner.value = value;
824
+ if (highlightValue) {
825
+ this.inner.setSelectionRange(filterValue.length, value.length);
438
826
  }
827
+ this.value = value;
439
828
  }
440
829
 
441
830
  _selectMatchingItem() {
442
- this._filteredItems = this._filteredItems.map(item => {
443
- item.selected = (item.text === this._tempValue);
831
+ const currentlyFocusedItem = this.items.find(item => item.focused);
832
+ const shouldSelectionBeCleared = currentlyFocusedItem && currentlyFocusedItem.isGroupItem;
444
833
 
834
+ this._filteredItems = this._filteredItems.map(item => {
835
+ item.selected = !item.isGroupItem && (item.text === this.value) && !shouldSelectionBeCleared;
445
836
  return item;
446
837
  });
447
838
  }
448
839
 
449
- _inputChange() {
450
- if (this.value !== this._tempValue) {
451
- this.value = this._tempValue;
840
+ _fireChangeEvent() {
841
+ if (this.value !== this._lastValue) {
452
842
  this.fireEvent("change");
453
- this.inner.setSelectionRange(this.value.length, this.value.length);
843
+ this._lastValue = this.value;
454
844
  }
455
845
  }
456
846
 
847
+ _inputChange(event) {
848
+ event.preventDefault();
849
+ }
850
+
851
+ _itemMousedown(event) {
852
+ event.preventDefault();
853
+ }
854
+
457
855
  _selectItem(event) {
458
856
  const listItem = event.detail.item;
459
857
 
460
- this._tempValue = listItem.mappedItem.text;
461
- this.filterValue = this._tempValue;
858
+ this._selectedItemText = listItem.mappedItem.text;
859
+ this._selectionPerformed = true;
462
860
 
463
- this._filteredItems.map(item => {
464
- item.selected = (item === listItem.mappedItem);
861
+ const sameItemSelected = this.value === this._selectedItemText;
862
+ const sameSelectionPerformed = this.value.toLowerCase() === this.filterValue.toLowerCase();
465
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
+ }
877
+
878
+ this._filteredItems.map(item => {
879
+ item.selected = (item === listItem.mappedItem && !item.isGroupItem);
466
880
  return item;
467
881
  });
468
882
 
469
- this._inputChange();
883
+ this._fireChangeEvent();
470
884
  this._closeRespPopover();
885
+
886
+ // reset selection
887
+ this.inner.setSelectionRange(this.value.length, this.value.length);
471
888
  }
472
889
 
473
- get _filteredItems() {
474
- return !this.items.length ? [] : this.items.filter(item => {
475
- return item.text.toLowerCase().startsWith(this.value.toLowerCase());
476
- });
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");
477
899
  }
478
900
 
479
901
  get _headerTitleText() {
480
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
902
+ return ComboBox.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
481
903
  }
482
904
 
483
905
  get _iconAccessibleNameText() {
484
- return this.i18nBundle.getText(ICON_ACCESSIBLE_NAME);
906
+ return ComboBox.i18nBundle.getText(SELECT_OPTIONS);
485
907
  }
486
908
 
487
909
  get inner() {
@@ -490,7 +912,7 @@ class ComboBox extends UI5Element {
490
912
 
491
913
  async _respPopover() {
492
914
  const staticAreaItem = await this.getStaticAreaItemDomRef();
493
- this.responsivePopover = staticAreaItem.querySelector("ui5-responsive-popover");
915
+ this.responsivePopover = staticAreaItem.querySelector("[ui5-responsive-popover]");
494
916
  return this.responsivePopover;
495
917
  }
496
918
 
@@ -502,32 +924,115 @@ class ComboBox extends UI5Element {
502
924
  return this.valueState !== ValueState.None;
503
925
  }
504
926
 
927
+ get hasValueStateText() {
928
+ return this.hasValueState && this.valueState !== ValueState.Success;
929
+ }
930
+
505
931
  get valueStateText() {
506
932
  return this.valueStateTextMappings[this.valueState];
507
933
  }
508
934
 
935
+ get valueStateMessageText() {
936
+ return this.getSlottedNodes("valueStateMessage").map(el => el.cloneNode(true));
937
+ }
938
+
509
939
  get valueStateTextId() {
510
940
  return this.hasValueState ? `${this._id}-valueStateDesc` : undefined;
511
941
  }
512
942
 
513
943
  get valueStateTextMappings() {
514
944
  return {
515
- "Success": this.i18nBundle.getText(VALUE_STATE_SUCCESS),
516
- "Error": this.i18nBundle.getText(VALUE_STATE_ERROR),
517
- "Warning": this.i18nBundle.getText(VALUE_STATE_WARNING),
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",
518
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
+ ];
519
1003
  }
520
1004
 
521
1005
  static async onDefine() {
522
- await Promise.all([
523
- ComboBoxItem.define(),
524
- Icon.define(),
525
- ResponsivePopover.define(),
526
- List.define(),
527
- BusyIndicator.define(),
528
- Button.define(),
529
- StandardListItem.define(),
530
- ]);
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
+ }
1020
+
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
+ };
531
1036
  }
532
1037
  }
533
1038