@ui5/webcomponents 0.0.0-39bd3067f → 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 (732) hide show
  1. package/CHANGELOG.md +610 -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 +159 -20
  13. package/dist/Button.js +132 -69
  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 +272 -76
  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 +603 -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 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +418 -403
  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 +497 -50
  37. package/dist/DurationPicker.js +170 -317
  38. package/dist/FileUploader.js +217 -24
  39. package/dist/GroupHeaderListItem.js +24 -19
  40. package/dist/Icon.js +197 -36
  41. package/dist/Input.js +660 -167
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +138 -28
  45. package/dist/List.js +501 -110
  46. package/dist/ListItem.js +110 -28
  47. package/dist/ListItemBase.js +42 -8
  48. package/dist/MessageStrip.js +56 -70
  49. package/dist/MonthPicker.js +180 -182
  50. package/dist/MultiComboBox.js +583 -207
  51. package/dist/MultiComboBoxItem.js +8 -5
  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 -224
  56. package/dist/Popup.js +381 -284
  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 +73 -46
  63. package/dist/SegmentedButton.js +127 -60
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +448 -107
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +44 -22
  69. package/dist/StepInput.js +684 -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 +60 -42
  74. package/dist/Tab.js +55 -24
  75. package/dist/TabContainer.js +241 -82
  76. package/dist/TabSeparator.js +1 -0
  77. package/dist/Table.js +480 -35
  78. package/dist/TableCell.js +11 -13
  79. package/dist/TableColumn.js +13 -3
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +244 -18
  82. package/dist/TextArea.js +153 -55
  83. package/dist/TimePicker.js +55 -644
  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 -13
  89. package/dist/Token.js +84 -45
  90. package/dist/Tokenizer.js +246 -64
  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 +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 +276 -53
  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 -5
  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 -8
  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 +6 -27
  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 -14
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +4 -11
  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 -19
  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 -6
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -14
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -17
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +6 -30
  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 -10
  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 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -8
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +6 -5
  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 +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 +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 +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 +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  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 +55 -21
  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 +55 -0
  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 -6
  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 -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 -8
  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/Select.js CHANGED
@@ -6,27 +6,37 @@ import {
6
6
  isDown,
7
7
  isEnter,
8
8
  isEscape,
9
+ isHome,
10
+ isEnd,
9
11
  isShow,
12
+ isTabNext,
13
+ isTabPrevious,
10
14
  } from "@ui5/webcomponents-base/dist/Keys.js";
15
+ import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
16
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
11
17
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
12
- import { getRTL } from "@ui5/webcomponents-base/dist/config/RTL.js";
18
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
13
19
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
14
- import "@ui5/webcomponents-icons/dist/icons/slim-arrow-down.js";
20
+ import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
21
+ import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
15
22
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
16
- import "@ui5/webcomponents-icons/dist/icons/decline.js";
23
+ import "@ui5/webcomponents-icons/dist/decline.js";
17
24
  import {
18
25
  VALUE_STATE_SUCCESS,
19
26
  VALUE_STATE_INFORMATION,
20
27
  VALUE_STATE_ERROR,
21
28
  VALUE_STATE_WARNING,
22
29
  INPUT_SUGGESTIONS_TITLE,
30
+ LIST_ITEM_POSITION,
23
31
  } from "./generated/i18n/i18n-defaults.js";
24
32
  import Option from "./Option.js";
25
33
  import Label from "./Label.js";
26
34
  import ResponsivePopover from "./ResponsivePopover.js";
35
+ import Popover from "./Popover.js";
27
36
  import List from "./List.js";
28
37
  import StandardListItem from "./StandardListItem.js";
29
38
  import Icon from "./Icon.js";
39
+ import Button from "./Button.js";
30
40
 
31
41
  // Templates
32
42
  import SelectTemplate from "./generated/templates/SelectTemplate.lit.js";
@@ -35,17 +45,20 @@ import SelectPopoverTemplate from "./generated/templates/SelectPopoverTemplate.l
35
45
  // Styles
36
46
  import selectCss from "./generated/themes/Select.css.js";
37
47
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
48
+ import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
49
+ import SelectPopoverCss from "./generated/themes/SelectPopover.css.js";
38
50
 
39
51
  /**
40
52
  * @public
41
53
  */
42
54
  const metadata = {
43
55
  tag: "ui5-select",
56
+ languageAware: true,
44
57
  managedSlots: true,
45
58
  slots: /** @lends sap.ui.webcomponents.main.Select.prototype */ {
46
59
 
47
60
  /**
48
- * Defines the <code>ui5-select</code> options.
61
+ * Defines the component options.
49
62
  *
50
63
  * <br><br>
51
64
  * <b>Note:</b> Only one selected option is allowed.
@@ -53,22 +66,50 @@ const metadata = {
53
66
  *
54
67
  * <br><br>
55
68
  * <b>Note:</b> Use the <code>ui5-option</code> component to define the desired options.
56
- * @type {HTMLElement[]}
57
- * @slot
69
+ * @type {sap.ui.webcomponents.main.ISelectOption[]}
70
+ * @slot options
58
71
  * @public
59
72
  */
60
73
  "default": {
61
74
  propertyName: "options",
62
75
  type: HTMLElement,
63
- listenFor: { include: ["*"] },
76
+ invalidateOnChildChange: true,
77
+ },
78
+
79
+ /**
80
+ * Defines the value state message that will be displayed as pop up under the component.
81
+ * <br><br>
82
+ *
83
+ * <b>Note:</b> If not specified, a default text (in the respective language) will be displayed.
84
+ * <br>
85
+ * <b>Note:</b> The <code>valueStateMessage</code> would be displayed,
86
+ * when the component is in <code>Information</code>, <code>Warning</code> or <code>Error</code> value state.
87
+ * @type {HTMLElement[]}
88
+ * @since 1.0.0-rc.9
89
+ * @slot
90
+ * @public
91
+ */
92
+ valueStateMessage: {
93
+ type: HTMLElement,
94
+ },
95
+
96
+ /**
97
+ * The slot is used to render native <code>input</code> HTML element within Light DOM to enable form submit,
98
+ * when <code>name</code> property is set.
99
+ * @type {HTMLElement[]}
100
+ * @slot
101
+ * @private
102
+ */
103
+ formSupport: {
104
+ type: HTMLElement,
64
105
  },
65
106
  },
66
107
  properties: /** @lends sap.ui.webcomponents.main.Select.prototype */ {
67
108
 
68
109
  /**
69
- * Defines whether <code>ui5-select</code> is in disabled state.
110
+ * Defines whether the component is in disabled state.
70
111
  * <br><br>
71
- * <b>Note:</b> A disabled <code>ui5-select</code> is noninteractive.
112
+ * <b>Note:</b> A disabled component is noninteractive.
72
113
  *
73
114
  * @type {boolean}
74
115
  * @defaultvalue false
@@ -79,8 +120,8 @@ const metadata = {
79
120
  },
80
121
 
81
122
  /**
82
- * Determines the name with which the <code>ui5-select</code> will be submitted in an HTML form.
83
- * The value of the <code>ui5-select</code> will be the value of the currently selected <code>ui5-option</code>.
123
+ * Determines the name with which the component will be submitted in an HTML form.
124
+ * The value of the component will be the value of the currently selected <code>ui5-option</code>.
84
125
  *
85
126
  * <br><br>
86
127
  * <b>Important:</b> For the <code>name</code> property to have effect, you must add the following import to your project:
@@ -100,7 +141,7 @@ const metadata = {
100
141
  },
101
142
 
102
143
  /**
103
- * Defines the value state of the <code>ui5-select</code>.
144
+ * Defines the value state of the component.
104
145
  * <br><br>
105
146
  * Available options are:
106
147
  * <ul>
@@ -120,6 +161,43 @@ const metadata = {
120
161
  defaultValue: ValueState.None,
121
162
  },
122
163
 
164
+ /**
165
+ * Defines whether the component is required.
166
+ *
167
+ * @since 1.0.0-rc.9
168
+ * @type {boolean}
169
+ * @defaultvalue false
170
+ * @public
171
+ */
172
+ required: {
173
+ type: Boolean,
174
+ },
175
+
176
+ /**
177
+ * Sets the accessible aria name of the component.
178
+ *
179
+ * @type {String}
180
+ * @since 1.0.0-rc.9
181
+ * @public
182
+ * @since 1.0.0-rc.15
183
+ */
184
+ accessibleName: {
185
+ type: String,
186
+ },
187
+
188
+ /**
189
+ * Receives id(or many ids) of the elements that label the select.
190
+ *
191
+ * @type {String}
192
+ * @defaultvalue ""
193
+ * @public
194
+ * @since 1.0.0-rc.15
195
+ */
196
+ accessibleNameRef: {
197
+ type: String,
198
+ defaultValue: "",
199
+ },
200
+
123
201
  _text: {
124
202
  type: String,
125
203
  noAttribute: true,
@@ -137,6 +215,12 @@ const metadata = {
137
215
  type: Boolean,
138
216
  },
139
217
 
218
+ _listWidth: {
219
+ type: Integer,
220
+ defaultValue: 0,
221
+ noAttribute: true,
222
+ },
223
+
140
224
  /**
141
225
  * @private
142
226
  */
@@ -169,11 +253,17 @@ const metadata = {
169
253
  *
170
254
  * <h3>Keyboard Handling</h3>
171
255
  * The <code>ui5-select</code> provides advanced keyboard handling.
172
- * If the <code>ui5-select</code> is focused,
173
- * you can open or close the drop-down by pressing <code>F4</code>, <code>ALT+UP</code> or <code>ALT+DOWN</code> keys.
174
- * Once the drop-down is opened, you can use the <code>UP</code> and <code>DOWN</code> arrow keys
175
- * to navigate through the available options and select one by pressing the <code>Space</code> or <code>Enter</code> keys.
176
256
  * <br>
257
+ * <ul>
258
+ * <li>[F4, ALT+UP, ALT+DOWN, SPACE, ENTER] - Opens/closes the drop-down.</li>
259
+ * <li>[UP, DOWN] - If the drop-down is closed - changes selection to the next or the previous option. If the drop-down is opened - moves focus to the next or the previous option.</li>
260
+ * <li>[SPACE, ENTER] - If the drop-down is opened - selects the focused option.</li>
261
+ * <li>[ESC] - Closes the drop-down without changing the selection.</li>
262
+ * <li>[HOME] - Navigates to first option</li>
263
+ * <li>[END] - Navigates to the last option</li>
264
+ * </ul>
265
+ * <br>
266
+ *
177
267
  * <h3>ES6 Module Import</h3>
178
268
  * <code>import "@ui5/webcomponents/dist/Select";</code>
179
269
  * <br>
@@ -209,7 +299,7 @@ class Select extends UI5Element {
209
299
  }
210
300
 
211
301
  static get staticAreaStyles() {
212
- return ResponsivePopoverCommonCss;
302
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, SelectPopoverCss];
213
303
  }
214
304
 
215
305
  constructor() {
@@ -220,7 +310,8 @@ class Select extends UI5Element {
220
310
  this._selectedIndexBeforeOpen = -1;
221
311
  this._escapePressed = false;
222
312
  this._lastSelectedOption = null;
223
- this.i18nBundle = getI18nBundle("@ui5/webcomponents");
313
+ this._typedChars = "";
314
+ this._typingTimeoutID = -1;
224
315
  }
225
316
 
226
317
  onBeforeRendering() {
@@ -228,6 +319,18 @@ class Select extends UI5Element {
228
319
  this._enableFormSupport();
229
320
  }
230
321
 
322
+ onAfterRendering() {
323
+ this.toggleValueStatePopover(this.shouldOpenValueStateMessagePopover);
324
+
325
+ if (this._isPickerOpen) {
326
+ if (!this._listWidth) {
327
+ this._listWidth = this.responsivePopover.offsetWidth;
328
+ }
329
+ }
330
+
331
+ this._attachRealDomRefs();
332
+ }
333
+
231
334
  _onfocusin() {
232
335
  this.focused = true;
233
336
  }
@@ -237,13 +340,12 @@ class Select extends UI5Element {
237
340
  }
238
341
 
239
342
  get _isPickerOpen() {
240
- return this.responsivePopover && this.responsivePopover.opened;
343
+ return !!this.responsivePopover && this.responsivePopover.opened;
241
344
  }
242
345
 
243
346
  async _respPopover() {
244
- this._iconPressed = true;
245
347
  const staticAreaItem = await this.getStaticAreaItemDomRef();
246
- return staticAreaItem.querySelector("ui5-responsive-popover");
348
+ return staticAreaItem.querySelector("[ui5-responsive-popover]");
247
349
  }
248
350
 
249
351
  /**
@@ -253,60 +355,79 @@ class Select extends UI5Element {
253
355
  * @public
254
356
  */
255
357
  get selectedOption() {
256
- return this.options.find(option => option.selected);
358
+ return this._filteredItems.find(option => option.selected);
257
359
  }
258
360
 
259
361
  async _toggleRespPopover() {
362
+ this._iconPressed = true;
260
363
  this.responsivePopover = await this._respPopover();
261
364
  if (this.disabled) {
262
365
  return;
263
366
  }
264
367
 
265
- this.updateStaticAreaItemContentDensity();
266
-
267
368
  if (this._isPickerOpen) {
268
369
  this.responsivePopover.close();
269
370
  } else {
270
- this.responsivePopover.open(this);
371
+ this.responsivePopover.showAt(this);
271
372
  }
272
373
  }
273
374
 
375
+ async _attachRealDomRefs() {
376
+ this.responsivePopover = await this._respPopover();
377
+
378
+ this.options.forEach(option => {
379
+ option._getRealDomRef = () => this.responsivePopover.querySelector(`*[data-ui5-stable=${option.stableDomRef}]`);
380
+ });
381
+ }
382
+
274
383
  _syncSelection() {
275
- let lastSelectedOptionIndex = -1;
276
- const opts = this.options.map((opt, index) => {
277
- if (opt.selected) {
384
+ let lastSelectedOptionIndex = -1,
385
+ firstEnabledOptionIndex = -1;
386
+ const options = this._filteredItems;
387
+ const syncOpts = options.map((opt, index) => {
388
+ if (opt.selected || opt.textContent === this.value) {
389
+ // The second condition in the IF statement is added because of Angular Reactive Forms Support(Two way data binding)
278
390
  lastSelectedOptionIndex = index;
279
391
  }
392
+ if (firstEnabledOptionIndex === -1) {
393
+ firstEnabledOptionIndex = index;
394
+ }
280
395
 
281
396
  opt.selected = false;
397
+ opt._focused = false;
282
398
 
283
399
  return {
284
400
  selected: false,
401
+ _focused: false,
285
402
  icon: opt.icon,
286
403
  value: opt.value,
287
404
  textContent: opt.textContent,
288
405
  id: opt._id,
406
+ stableDomRef: opt.stableDomRef,
289
407
  };
290
408
  });
291
409
 
292
- if (lastSelectedOptionIndex > -1) {
293
- opts[lastSelectedOptionIndex].selected = true;
294
- this.options[lastSelectedOptionIndex].selected = true;
295
- this._text = opts[lastSelectedOptionIndex].textContent;
410
+ if (lastSelectedOptionIndex > -1 && !syncOpts[lastSelectedOptionIndex].disabled) {
411
+ syncOpts[lastSelectedOptionIndex].selected = true;
412
+ syncOpts[lastSelectedOptionIndex]._focused = true;
413
+ options[lastSelectedOptionIndex].selected = true;
414
+ options[lastSelectedOptionIndex]._focused = true;
415
+ this._text = syncOpts[lastSelectedOptionIndex].textContent;
296
416
  this._selectedIndex = lastSelectedOptionIndex;
297
417
  } else {
298
418
  this._text = "";
299
419
  this._selectedIndex = -1;
420
+ if (syncOpts[firstEnabledOptionIndex]) {
421
+ syncOpts[firstEnabledOptionIndex].selected = true;
422
+ syncOpts[firstEnabledOptionIndex]._focused = true;
423
+ options[firstEnabledOptionIndex].selected = true;
424
+ options[firstEnabledOptionIndex]._focused = true;
425
+ this._selectedIndex = firstEnabledOptionIndex;
426
+ this._text = options[firstEnabledOptionIndex].textContent;
427
+ }
300
428
  }
301
429
 
302
- if (lastSelectedOptionIndex === -1 && opts[0]) {
303
- opts[0].selected = true;
304
- this.options[0].selected = true;
305
- this._selectedIndex = 0;
306
- this._text = this.options[0].textContent;
307
- }
308
-
309
- this._syncedOptions = opts;
430
+ this._syncedOptions = syncOpts;
310
431
  }
311
432
 
312
433
  _enableFormSupport() {
@@ -314,7 +435,7 @@ class Select extends UI5Element {
314
435
  if (FormSupport) {
315
436
  FormSupport.syncNativeHiddenInput(this, (element, nativeInput) => {
316
437
  nativeInput.disabled = element.disabled;
317
- nativeInput.value = element._currentlySelectedOption.value;
438
+ nativeInput.value = element._currentlySelectedOption ? element._currentlySelectedOption.value : "";
318
439
  });
319
440
  } else if (this.name) {
320
441
  console.warn(`In order for the "name" property to have effect, you should also: import "@ui5/webcomponents/dist/features/InputElementsFormSupport.js";`); // eslint-disable-line
@@ -322,22 +443,99 @@ class Select extends UI5Element {
322
443
  }
323
444
 
324
445
  _onkeydown(event) {
446
+ const isTab = (isTabNext(event) || isTabPrevious(event));
447
+
448
+ if (isTab && this.responsivePopover && this.responsivePopover.opened) {
449
+ this.responsivePopover.close();
450
+ }
451
+
325
452
  if (isShow(event)) {
453
+ event.preventDefault();
326
454
  this._toggleRespPopover();
455
+ } else if (isSpace(event)) {
456
+ event.preventDefault();
457
+ } else if (isEscape(event) && this._isPickerOpen) {
458
+ this._escapePressed = true;
459
+ } else if (isHome(event)) {
460
+ this._handleHomeKey(event);
461
+ } else if (isEnd(event)) {
462
+ this._handleEndKey(event);
463
+ } else if (isEnter(event)) {
464
+ this._handleSelectionChange();
465
+ } else if (isUp(event) || isDown(event)) {
466
+ this._handleArrowNavigation(event);
327
467
  }
468
+ }
328
469
 
329
- if (isSpace(event)) {
330
- event.preventDefault();
470
+ _handleKeyboardNavigation(event) {
471
+ if (isEnter(event)) {
472
+ return;
331
473
  }
332
474
 
333
- if (!this._isPickerOpen) {
334
- this._handleArrowNavigation(event, true);
475
+ const typedCharacter = event.key.toLowerCase();
476
+
477
+ this._typedChars += typedCharacter;
478
+
479
+ // We check if we have more than one characters and they are all duplicate, we set the
480
+ // text to be the last input character (typedCharacter). If not, we set the text to be
481
+ // the whole input string.
482
+
483
+ const text = (/^(.)\1+$/i).test(this._typedChars) ? typedCharacter : this._typedChars;
484
+
485
+ clearTimeout(this._typingTimeoutID);
486
+
487
+ this._typingTimeoutID = setTimeout(() => {
488
+ this._typedChars = "";
489
+ this._typingTimeoutID = -1;
490
+ }, 1000);
491
+
492
+ this._selectTypedItem(text);
493
+ }
494
+
495
+ _selectTypedItem(text) {
496
+ const currentIndex = this._selectedIndex;
497
+ const itemToSelect = this._searchNextItemByText(text);
498
+
499
+ if (itemToSelect) {
500
+ const nextIndex = this._getSelectedItemIndex(itemToSelect);
501
+
502
+ this._changeSelectedItem(this._selectedIndex, nextIndex);
503
+
504
+ if (currentIndex !== this._selectedIndex) {
505
+ this.itemSelectionAnnounce();
506
+ }
335
507
  }
336
508
  }
337
509
 
510
+ _searchNextItemByText(text) {
511
+ let orderedOptions = this._filteredItems.slice(0);
512
+ const optionsAfterSelected = orderedOptions.splice(this._selectedIndex + 1, orderedOptions.length - this._selectedIndex);
513
+ const optionsBeforeSelected = orderedOptions.splice(0, orderedOptions.length - 1);
514
+
515
+ orderedOptions = optionsAfterSelected.concat(optionsBeforeSelected);
516
+
517
+ return orderedOptions.find(option => option.textContent.toLowerCase().startsWith(text));
518
+ }
519
+
520
+ _handleHomeKey(event) {
521
+ event.preventDefault();
522
+ this._changeSelectedItem(this._selectedIndex, 0);
523
+ }
524
+
525
+ _handleEndKey(event) {
526
+ const lastIndex = this._filteredItems.length - 1;
527
+
528
+ event.preventDefault();
529
+ this._changeSelectedItem(this._selectedIndex, lastIndex);
530
+ }
531
+
338
532
  _onkeyup(event) {
339
- if (isSpace(event) && !this._isPickerOpen) {
340
- this._toggleRespPopover();
533
+ if (isSpace(event)) {
534
+ if (this._isPickerOpen) {
535
+ this._handleSelectionChange();
536
+ } else {
537
+ this._toggleRespPopover();
538
+ }
341
539
  }
342
540
  }
343
541
 
@@ -346,61 +544,78 @@ class Select extends UI5Element {
346
544
  }
347
545
 
348
546
  _select(index) {
349
- this.options[this._selectedIndex].selected = false;
547
+ this._filteredItems[this._selectedIndex].selected = false;
350
548
  this._selectedIndex = index;
351
- this.options[index].selected = true;
549
+ this._filteredItems[index].selected = true;
352
550
  }
353
551
 
354
- _selectionChange(event) {
355
- const selectedItemIndex = this._getSelectedItemIndex(event.detail.item);
552
+ /**
553
+ * The user clicked on an item from the list
554
+ * @private
555
+ */
556
+ _handleItemPress(event) {
557
+ const item = event.detail.item;
558
+ const selectedItemIndex = this._getSelectedItemIndex(item);
356
559
 
357
- this._select(selectedItemIndex);
358
- this._toggleRespPopover();
560
+ this._handleSelectionChange(selectedItemIndex);
359
561
  }
360
562
 
361
- _applyFocusAfterOpen() {
362
- if (!this._currentlySelectedOption) {
363
- return;
364
- }
365
-
366
- const li = this.responsivePopover.querySelector(`#${this._currentlySelectedOption._id}-li`);
563
+ _itemMousedown(event) {
564
+ // prevent actual focus of items
565
+ event.preventDefault();
566
+ }
367
567
 
368
- li.parentElement._itemNavigation.currentIndex = this._selectedIndex;
369
- li && li.focus();
568
+ _onclick(event) {
569
+ this.getFocusDomRef().focus();
570
+ this._toggleRespPopover();
370
571
  }
371
572
 
372
- _handlePickerKeydown(event) {
373
- this._handleArrowNavigation(event, false);
573
+ /**
574
+ * The user selected an item with Enter or Space
575
+ * @private
576
+ */
577
+ _handleSelectionChange(index = this._selectedIndex) {
578
+ this._select(index);
579
+
580
+ this._toggleRespPopover();
374
581
  }
375
582
 
376
- _handleArrowNavigation(event, shouldFireEvent) {
583
+ _handleArrowNavigation(event) {
377
584
  let nextIndex = -1;
585
+ const currentIndex = this._selectedIndex;
378
586
  const isDownKey = isDown(event);
379
- const isUpKey = isUp(event);
380
587
 
381
- if (isDownKey || isUpKey) {
382
- event.preventDefault();
383
- if (isDownKey) {
384
- nextIndex = this._getNextOptionIndex();
385
- } else {
386
- nextIndex = this._getPreviousOptionIndex();
387
- }
588
+ event.preventDefault();
589
+ if (isDownKey) {
590
+ nextIndex = this._getNextOptionIndex();
591
+ } else {
592
+ nextIndex = this._getPreviousOptionIndex();
593
+ }
388
594
 
389
- this.options[this._selectedIndex].selected = false;
390
- this.options[nextIndex].selected = true;
391
- this._selectedIndex = nextIndex === -1 ? this._selectedIndex : nextIndex;
595
+ this._changeSelectedItem(this._selectedIndex, nextIndex);
392
596
 
393
- if (shouldFireEvent) {
394
- this.fireEvent("change", { selectedOption: this.options[nextIndex] });
395
- }
597
+ if (currentIndex !== this._selectedIndex) {
598
+ // Announce new item even if picker is opened.
599
+ // The aria-activedescendents attribute can't be used,
600
+ // because listitem elements are in different shadow dom
601
+ this.itemSelectionAnnounce();
396
602
  }
603
+ }
397
604
 
398
- if (isEscape(event)) {
399
- this._escapePressed = true;
400
- }
605
+ _changeSelectedItem(oldIndex, newIndex) {
606
+ const options = this._filteredItems;
607
+
608
+ options[oldIndex].selected = false;
609
+ options[oldIndex]._focused = false;
610
+
611
+ options[newIndex].selected = true;
612
+ options[newIndex]._focused = true;
613
+
614
+ this._selectedIndex = newIndex;
401
615
 
402
- if (isEnter(event) || isSpace(event)) {
403
- this._shouldClosePopover = true;
616
+ if (!this._isPickerOpen) {
617
+ // arrow pressed on closed picker - do selection change
618
+ this._fireChangeEvent(options[newIndex]);
404
619
  }
405
620
  }
406
621
 
@@ -414,29 +629,41 @@ class Select extends UI5Element {
414
629
 
415
630
  _beforeOpen() {
416
631
  this._selectedIndexBeforeOpen = this._selectedIndex;
417
- this._lastSelectedOption = this.options[this._selectedIndex];
632
+ this._lastSelectedOption = this._filteredItems[this._selectedIndex];
633
+ }
634
+
635
+ _afterOpen() {
636
+ this.opened = true;
418
637
  }
419
638
 
420
639
  _afterClose() {
640
+ this.opened = false;
421
641
  this._iconPressed = false;
642
+ this._listWidth = 0;
422
643
 
423
644
  if (this._escapePressed) {
424
645
  this._select(this._selectedIndexBeforeOpen);
425
646
  this._escapePressed = false;
426
- } else if (this._lastSelectedOption !== this.options[this._selectedIndex]) {
427
- this.fireEvent("change", { selectedOption: this.options[this._selectedIndex] });
428
- this._lastSelectedOption = this.options[this._selectedIndex];
647
+ } else if (this._lastSelectedOption !== this._filteredItems[this._selectedIndex]) {
648
+ this._fireChangeEvent(this._filteredItems[this._selectedIndex]);
649
+ this._lastSelectedOption = this._filteredItems[this._selectedIndex];
429
650
  }
430
651
  }
431
652
 
432
- get valueStateTextMappings() {
433
- const i18nBundle = this.i18nBundle;
653
+ _fireChangeEvent(selectedOption) {
654
+ this.fireEvent("change", { selectedOption });
655
+
656
+ // Angular two way data binding
657
+ this.selectedItem = selectedOption.textContent;
658
+ this.fireEvent("selected-item-changed");
659
+ }
434
660
 
661
+ get valueStateTextMappings() {
435
662
  return {
436
- "Success": i18nBundle.getText(VALUE_STATE_SUCCESS),
437
- "Information": i18nBundle.getText(VALUE_STATE_INFORMATION),
438
- "Error": i18nBundle.getText(VALUE_STATE_ERROR),
439
- "Warning": i18nBundle.getText(VALUE_STATE_WARNING),
663
+ "Success": Select.i18nBundle.getText(VALUE_STATE_SUCCESS),
664
+ "Information": Select.i18nBundle.getText(VALUE_STATE_INFORMATION),
665
+ "Error": Select.i18nBundle.getText(VALUE_STATE_ERROR),
666
+ "Warning": Select.i18nBundle.getText(VALUE_STATE_WARNING),
440
667
  };
441
668
  }
442
669
 
@@ -457,34 +684,148 @@ class Select extends UI5Element {
457
684
  }
458
685
 
459
686
  get _headerTitleText() {
460
- return this.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
687
+ return Select.i18nBundle.getText(INPUT_SUGGESTIONS_TITLE);
461
688
  }
462
689
 
463
690
  get _currentSelectedItem() {
464
- return this.shadowRoot.querySelector(`#${this.options[this._selectedIndex]._id}-li`);
691
+ return this.shadowRoot.querySelector(`#${this._filteredItems[this._selectedIndex]._id}-li`);
465
692
  }
466
693
 
467
694
  get _currentlySelectedOption() {
468
- return this.options[this._selectedIndex];
695
+ return this._filteredItems[this._selectedIndex];
469
696
  }
470
697
 
471
698
  get tabIndex() {
472
- return this.disabled ? "-1" : "0";
699
+ return this.disabled
700
+ || (this.responsivePopover // Handles focus on Tab/Shift + Tab when the popover is opened
701
+ && this.responsivePopover.opened) ? "-1" : "0";
702
+ }
703
+
704
+ /**
705
+ * This method is relevant for sap_horizon theme only
706
+ */
707
+ get _valueStateMessageInputIcon() {
708
+ const iconPerValueState = {
709
+ Error: "error",
710
+ Warning: "alert",
711
+ Success: "sys-enter-2",
712
+ Information: "information",
713
+ };
714
+
715
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
716
+ }
717
+
718
+ get classes() {
719
+ return {
720
+ popoverValueState: {
721
+ "ui5-valuestatemessage-root": true,
722
+ "ui5-valuestatemessage--success": this.valueState === ValueState.Success,
723
+ "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
724
+ "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
725
+ "ui5-valuestatemessage--information": this.valueState === ValueState.Information,
726
+ },
727
+ popover: {
728
+ "ui5-valuestatemessage-popover": this.hasValueState,
729
+ },
730
+ };
731
+ }
732
+
733
+ get styles() {
734
+ return {
735
+ popoverHeader: {
736
+ "max-width": `${this.offsetWidth}px`,
737
+ },
738
+ responsivePopoverHeader: {
739
+ "display": this._filteredItems.length && this._listWidth === 0 ? "none" : "inline-block",
740
+ "width": `${this._filteredItems.length ? this._listWidth : this.offsetWidth}px`,
741
+ },
742
+ };
743
+ }
744
+
745
+ get ariaLabelText() {
746
+ return getEffectiveAriaLabelText(this);
747
+ }
748
+
749
+ get valueStateMessageText() {
750
+ return this.getSlottedNodes("valueStateMessage").map(el => el.cloneNode(true));
751
+ }
752
+
753
+ get shouldDisplayDefaultValueStateMessage() {
754
+ return !this.valueStateMessage.length && this.hasValueStateText;
755
+ }
756
+
757
+ get hasValueStateText() {
758
+ return this.hasValueState && this.valueState !== ValueState.Success;
759
+ }
760
+
761
+ get shouldOpenValueStateMessagePopover() {
762
+ return this.focused && this.hasValueStateText && !this._iconPressed
763
+ && !this._isPickerOpen && !this._isPhone;
764
+ }
765
+
766
+ get _isPhone() {
767
+ return isPhone();
768
+ }
769
+
770
+ get _filteredItems() {
771
+ return this.options.filter(option => !option.disabled);
772
+ }
773
+
774
+ itemSelectionAnnounce() {
775
+ let text;
776
+ const optionsCount = this._filteredItems.length;
777
+ const itemPositionText = Select.i18nBundle.getText(LIST_ITEM_POSITION, this._selectedIndex + 1, optionsCount);
778
+
779
+ if (this.focused && this._currentlySelectedOption) {
780
+ text = `${this._currentlySelectedOption.textContent} ${this._isPickerOpen ? itemPositionText : ""}`;
781
+
782
+ announce(text, "Polite");
783
+ }
784
+ }
785
+
786
+ async openValueStatePopover() {
787
+ this.popover = await this._getPopover();
788
+ if (this.popover) {
789
+ this.popover.showAt(this);
790
+ }
791
+ }
792
+
793
+ closeValueStatePopover() {
794
+ this.popover && this.popover.close();
795
+ }
796
+
797
+ toggleValueStatePopover(open) {
798
+ if (open) {
799
+ this.openValueStatePopover();
800
+ } else {
801
+ this.closeValueStatePopover();
802
+ }
803
+ }
804
+
805
+ get selectedOptionIcon() {
806
+ return this.selectedOption && this.selectedOption.icon;
807
+ }
808
+
809
+ async _getPopover() {
810
+ const staticAreaItem = await this.getStaticAreaItemDomRef();
811
+ return staticAreaItem.querySelector("[ui5-popover]");
473
812
  }
474
813
 
475
- get dir() {
476
- return getRTL() ? "rtl" : "ltr";
814
+ static get dependencies() {
815
+ return [
816
+ Option,
817
+ Label,
818
+ ResponsivePopover,
819
+ Popover,
820
+ List,
821
+ StandardListItem,
822
+ Icon,
823
+ Button,
824
+ ];
477
825
  }
478
826
 
479
827
  static async onDefine() {
480
- await Promise.all([
481
- Option.define(),
482
- Label.define(),
483
- ResponsivePopover.define(),
484
- List.define(),
485
- StandardListItem.define(),
486
- Icon.define(),
487
- ]);
828
+ Select.i18nBundle = await getI18nBundle("@ui5/webcomponents");
488
829
  }
489
830
  }
490
831