@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/List.js CHANGED
@@ -1,10 +1,19 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
3
4
  import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
5
+ import { isIE } from "@ui5/webcomponents-base/dist/Device.js";
6
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
4
7
  import { getLastTabbableElement } from "@ui5/webcomponents-base/dist/util/TabbableElements.js";
5
- import { isTabNext } from "@ui5/webcomponents-base/dist/Keys.js";
8
+ import { isTabNext, isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
9
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
6
10
  import NavigationMode from "@ui5/webcomponents-base/dist/types/NavigationMode.js";
11
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
12
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
13
+ import debounce from "@ui5/webcomponents-base/dist/util/debounce.js";
14
+ import isElementInView from "@ui5/webcomponents-base/dist/util/isElementInView.js";
7
15
  import ListMode from "./types/ListMode.js";
16
+ import ListGrowingMode from "./types/ListGrowingMode.js";
8
17
  import ListSeparators from "./types/ListSeparators.js";
9
18
  import BusyIndicator from "./BusyIndicator.js";
10
19
 
@@ -14,9 +23,17 @@ import ListTemplate from "./generated/templates/ListTemplate.lit.js";
14
23
  // Styles
15
24
  import listCss from "./generated/themes/List.css.js";
16
25
 
17
- const BUSYINDICATOR_HEIGHT = 48; // px
26
+ // Texts
27
+ import {
28
+ LOAD_MORE_TEXT, ARIA_LABEL_LIST_SELECTABLE,
29
+ ARIA_LABEL_LIST_MULTISELECTABLE,
30
+ ARIA_LABEL_LIST_DELETABLE,
31
+ } from "./generated/i18n/i18n-defaults.js";
32
+
18
33
  const INFINITE_SCROLL_DEBOUNCE_RATE = 250; // ms
19
34
 
35
+ const PAGE_UP_DOWN_SIZE = 10;
36
+
20
37
  /**
21
38
  * @public
22
39
  */
@@ -26,7 +43,7 @@ const metadata = {
26
43
  slots: /** @lends sap.ui.webcomponents.main.List.prototype */ {
27
44
 
28
45
  /**
29
- * Defines the <code>ui5-list</code> header.
46
+ * Defines the component header.
30
47
  * <br><br>
31
48
  * <b>Note:</b> When <code>header</code> is set, the
32
49
  * <code>headerText</code> property is ignored.
@@ -40,12 +57,12 @@ const metadata = {
40
57
  },
41
58
 
42
59
  /**
43
- * Defines the items of the <code>ui5-list</code>.
60
+ * Defines the items of the component.
44
61
  * <br><br>
45
62
  * <b>Note:</b> Use <code>ui5-li</code>, <code>ui5-li-custom</code>, and <code>ui5-li-groupheader</code> for the intended design.
46
63
  *
47
- * @type {HTMLElement[]}
48
- * @slot
64
+ * @type {sap.ui.webcomponents.main.IListItem[]}
65
+ * @slot items
49
66
  * @public
50
67
  */
51
68
  "default": {
@@ -56,7 +73,7 @@ const metadata = {
56
73
  properties: /** @lends sap.ui.webcomponents.main.List.prototype */ {
57
74
 
58
75
  /**
59
- * Defines the <code>ui5-list</code> header text.
76
+ * Defines the component header text.
60
77
  * <br><br>
61
78
  * <b>Note:</b> If <code>header</code> is set this property is ignored.
62
79
  *
@@ -80,18 +97,18 @@ const metadata = {
80
97
  },
81
98
 
82
99
  /**
83
- * Determines whether the list items are indented.
100
+ * Determines whether the component is indented.
84
101
  *
85
102
  * @type {boolean}
86
103
  * @defaultvalue false
87
104
  * @public
88
105
  */
89
- inset: {
106
+ indent: {
90
107
  type: Boolean,
91
108
  },
92
109
 
93
110
  /**
94
- * Defines the mode of the <code>ui5-list</code>.
111
+ * Defines the mode of the component.
95
112
  * <br><br>
96
113
  * <b>Note:</b> Available options are <code>None</code>, <code>SingleSelect</code>, <code>SingleSelectBegin</code>,
97
114
  * <code>SingleSelectEnd</code>, <code>MultiSelect</code>, and <code>Delete</code>.
@@ -106,7 +123,7 @@ const metadata = {
106
123
  },
107
124
 
108
125
  /**
109
- * Defines the text that is displayed when the <code>ui5-list</code> contains no items.
126
+ * Defines the text that is displayed when the component contains no items.
110
127
  *
111
128
  * @type {string}
112
129
  * @defaultvalue ""
@@ -137,22 +154,34 @@ const metadata = {
137
154
  },
138
155
 
139
156
  /**
140
- * Defines if the component would fire the <code>loadMore</code> event
141
- * when the user scrolls to the bottom of the list, and helps achieving an "infinite scroll" effect
142
- * by adding new items each time.
157
+ * Defines whether the component will have growing capability either by pressing a <code>More</code> button,
158
+ * or via user scroll. In both cases <code>load-more</code> event is fired.
159
+ * <br><br>
143
160
  *
144
- * @type {boolean}
145
- * @defaultvalue false
161
+ * Available options:
162
+ * <br><br>
163
+ * <code>Button</code> - Shows a <code>More</code> button at the bottom of the list,
164
+ * pressing of which triggers the <code>load-more</code> event.
165
+ * <br>
166
+ * <code>Scroll</code> - The <code>load-more</code> event is triggered when the user scrolls to the bottom of the list;
167
+ * <br>
168
+ * <code>None</code> (default) - The growing is off.
169
+ * <br><br>
170
+ *
171
+ * <b>Limitations:</b> <code>growing="Scroll"</code> is not supported for Internet Explorer,
172
+ * on IE the component will fallback to <code>growing="Button"</code>.
173
+ * @type {ListGrowingMode}
174
+ * @defaultvalue "None"
175
+ * @since 1.0.0-rc.13
146
176
  * @public
147
- * @since 1.0.0-rc.6
148
177
  */
149
- infiniteScroll: {
150
- type: Boolean,
178
+ growing: {
179
+ type: ListGrowingMode,
180
+ defaultValue: ListGrowingMode.None,
151
181
  },
152
182
 
153
183
  /**
154
- * Defines if the component would display a loading indicator at the bottom of the list.
155
- * It's especially useful, when combined with <code>infiniteScroll</code>.
184
+ * Defines if the component would display a loading indicator over the list.
156
185
  *
157
186
  * @type {boolean}
158
187
  * @defaultvalue false
@@ -164,14 +193,69 @@ const metadata = {
164
193
  },
165
194
 
166
195
  /**
167
- * Used to externally manipulate the role of the list
196
+ * Defines the delay in milliseconds, after which the busy indicator will show up for this component.
168
197
  *
169
- * @private
198
+ * @type {Integer}
199
+ * @defaultValue 1000
200
+ * @public
170
201
  */
171
- _role: {
202
+ busyDelay: {
203
+ type: Integer,
204
+ defaultValue: 1000,
205
+ },
206
+
207
+ /**
208
+ * Defines the accessible name of the component.
209
+ *
210
+ * @type {String}
211
+ * @defaultvalue ""
212
+ * @public
213
+ * @since 1.0.0-rc.15
214
+ */
215
+ accessibleName: {
172
216
  type: String,
173
- defaultValue: "listbox",
174
- noAttribute: true,
217
+ },
218
+
219
+ /**
220
+ * Defines the IDs of the elements that label the input.
221
+ *
222
+ * @type {String}
223
+ * @defaultvalue ""
224
+ * @public
225
+ * @since 1.0.0-rc.15
226
+ */
227
+ accessibleNameRef: {
228
+ type: String,
229
+ defaultValue: "",
230
+ },
231
+
232
+ /**
233
+ * Defines the accessible role of the component.
234
+ * <br><br>
235
+ * @public
236
+ * @type {String}
237
+ * @defaultvalue "list"
238
+ * @since 1.0.0-rc.15
239
+ */
240
+ accessibleRole: {
241
+ type: String,
242
+ defaultValue: "list",
243
+ },
244
+
245
+ /**
246
+ * Defines if the entire list is in view port.
247
+ * @private
248
+ */
249
+ _inViewport: {
250
+ type: Boolean,
251
+ },
252
+
253
+ /**
254
+ * Defines the active state of the <code>More</code> button.
255
+ * @private
256
+ */
257
+ _loadMoreActive: {
258
+ type: Boolean,
175
259
  },
176
260
  },
177
261
  events: /** @lends sap.ui.webcomponents.main.List.prototype */ {
@@ -180,11 +264,11 @@ const metadata = {
180
264
  * Fired when an item is activated, unless the item's <code>type</code> property
181
265
  * is set to <code>Inactive</code>.
182
266
  *
183
- * @event
184
- * @param {HTMLElement} item the clicked item.
267
+ * @event sap.ui.webcomponents.main.List#item-click
268
+ * @param {HTMLElement} item The clicked item.
185
269
  * @public
186
270
  */
187
- itemClick: {
271
+ "item-click": {
188
272
  detail: {
189
273
  item: { type: HTMLElement },
190
274
  },
@@ -194,13 +278,14 @@ const metadata = {
194
278
  * Fired when the <code>Close</code> button of any item is clicked
195
279
  * <br><br>
196
280
  * <b>Note:</b> This event is applicable to <code>ui5-li-notification</code> items only,
197
- * not to be confused with <code>itemDelete</code>.
198
- * @event
281
+ * not to be confused with <code>item-delete</code>.
282
+ *
283
+ * @event sap.ui.webcomponents.main.List#item-close
199
284
  * @param {HTMLElement} item the item about to be closed.
200
285
  * @public
201
286
  * @since 1.0.0-rc.8
202
287
  */
203
- itemClose: {
288
+ "item-close": {
204
289
  detail: {
205
290
  item: { type: HTMLElement },
206
291
  },
@@ -210,12 +295,13 @@ const metadata = {
210
295
  * Fired when the <code>Toggle</code> button of any item is clicked.
211
296
  * <br><br>
212
297
  * <b>Note:</b> This event is applicable to <code>ui5-li-notification-group</code> items only.
213
- * @event
298
+ *
299
+ * @event sap.ui.webcomponents.main.List#item-toggle
214
300
  * @param {HTMLElement} item the toggled item.
215
301
  * @public
216
302
  * @since 1.0.0-rc.8
217
303
  */
218
- itemToggle: {
304
+ "item-toggle": {
219
305
  detail: {
220
306
  item: { type: HTMLElement },
221
307
  },
@@ -225,12 +311,13 @@ const metadata = {
225
311
  * Fired when the Delete button of any item is pressed.
226
312
  * <br><br>
227
313
  * <b>Note:</b> A Delete button is displayed on each item,
228
- * when the <code>ui5-list</code> <code>mode</code> property is set to <code>Delete</code>.
229
- * @event
314
+ * when the component <code>mode</code> property is set to <code>Delete</code>.
315
+ *
316
+ * @event sap.ui.webcomponents.main.List#item-delete
230
317
  * @param {HTMLElement} item the deleted item.
231
318
  * @public
232
319
  */
233
- itemDelete: {
320
+ "item-delete": {
234
321
  detail: {
235
322
  item: { type: HTMLElement },
236
323
  },
@@ -240,12 +327,12 @@ const metadata = {
240
327
  * Fired when selection is changed by user interaction
241
328
  * in <code>SingleSelect</code>, <code>SingleSelectBegin</code>, <code>SingleSelectEnd</code> and <code>MultiSelect</code> modes.
242
329
  *
243
- * @event
330
+ * @event sap.ui.webcomponents.main.List#selection-change
244
331
  * @param {Array} selectedItems An array of the selected items.
245
332
  * @param {Array} previouslySelectedItems An array of the previously selected items.
246
333
  * @public
247
334
  */
248
- selectionChange: {
335
+ "selection-change": {
249
336
  detail: {
250
337
  selectedItems: { type: Array },
251
338
  previouslySelectedItems: { type: Array },
@@ -256,13 +343,13 @@ const metadata = {
256
343
  /**
257
344
  * Fired when the user scrolls to the bottom of the list.
258
345
  * <br><br>
259
- * <b>Note:</b> The event is fired when the <code>infiniteScroll</code> property is enabled.
346
+ * <b>Note:</b> The event is fired when the <code>growing='Scroll'</code> property is enabled.
260
347
  *
261
- * @event
348
+ * @event sap.ui.webcomponents.main.List#load-more
262
349
  * @public
263
350
  * @since 1.0.0-rc.6
264
351
  */
265
- loadMore: {},
352
+ "load-more": {},
266
353
  },
267
354
  };
268
355
 
@@ -274,11 +361,11 @@ const metadata = {
274
361
  * The <code>ui5-list</code> component allows displaying a list of items, advanced keyboard
275
362
  * handling support for navigating between items, and predefined modes to improve the development efficiency.
276
363
  * <br><br>
277
- * The <code>ui5-list</code> is а container for the available list items:
364
+ * The <code>ui5-list</code> is a container for the available list items:
278
365
  * <ul>
279
366
  * <li><code>ui5-li</code></li>
280
367
  * <li><code>ui5-li-custom</code></li>
281
- * <li><code>ui5-li-group-header</code></li>
368
+ * <li><code>ui5-li-groupheader</code></li>
282
369
  * </ul>
283
370
  * <br><br>
284
371
  * To benefit from the built-in selection mechanism, you can use the available
@@ -287,6 +374,27 @@ const metadata = {
287
374
  * <br><br>
288
375
  * Additionally, the <code>ui5-list</code> provides header, footer, and customization for the list item separators.
289
376
  *
377
+ * <br><br>
378
+ * <h3>Keyboard Handling</h3>
379
+ * The <code>ui5-list</code> provides advanced keyboard handling.
380
+ * When a list is focused the user can use the following keyboard
381
+ * shortcuts in order to perform a navigation:
382
+ * <br>
383
+ *
384
+ * <ul>
385
+ * <li>[UP/DOWN] - Navigates up and down the items</li>
386
+ * <li>[HOME] - Navigates to first item</li>
387
+ * <li>[END] - Navigates to the last item</li>
388
+ * </ul>
389
+ *
390
+ * The user can use the following keyboard shortcuts to perform actions (such as select, delete),
391
+ * when the <code>mode</code> property is in use:
392
+ * <ul>
393
+ * <li>[SPACE] - Select an item (if <code>type</code> is 'Active') when <code>mode</code> is selection</li>
394
+ * <li>[DELETE] - Delete an item if <code>mode</code> property is <code>Delete</code></li>
395
+ * </ul>
396
+ * <br><br>
397
+ *
290
398
  * <h3>ES6 Module Import</h3>
291
399
  *
292
400
  * <code>import "@ui5/webcomponents/dist/List.js";</code>
@@ -295,7 +403,7 @@ const metadata = {
295
403
  * <br>
296
404
  * <code>import "@ui5/webcomponents/dist/CustomListItem.js";</code> (for <code>ui5-li-custom</code>)
297
405
  * <br>
298
- * <code>import "@ui5/webcomponents/dist/GroupHeaderListItem.js";</code> (for <code>ui5-li-group-header</code>)
406
+ * <code>import "@ui5/webcomponents/dist/GroupHeaderListItem.js";</code> (for <code>ui5-li-groupheader</code>)
299
407
  *
300
408
  * @constructor
301
409
  * @author SAP SE
@@ -322,6 +430,14 @@ class List extends UI5Element {
322
430
  return listCss;
323
431
  }
324
432
 
433
+ static async onDefine() {
434
+ List.i18nBundle = await getI18nBundle("@ui5/webcomponents");
435
+ }
436
+
437
+ static get dependencies() {
438
+ return [BusyIndicator];
439
+ }
440
+
325
441
  constructor() {
326
442
  super();
327
443
  this.initItemNavigation();
@@ -334,13 +450,56 @@ class List extends UI5Element {
334
450
 
335
451
  this._previouslySelectedItem = null;
336
452
 
453
+ // Indicates that the List has already subscribed for resize.
454
+ this.resizeListenerAttached = false;
455
+
456
+ // Indicates if the IntersectionObserver started observing the List
457
+ this.listEndObserved = false;
458
+
337
459
  this.addEventListener("ui5-_press", this.onItemPress.bind(this));
338
460
  this.addEventListener("ui5-close", this.onItemClose.bind(this));
339
461
  this.addEventListener("ui5-toggle", this.onItemToggle.bind(this));
340
462
  this.addEventListener("ui5-_focused", this.onItemFocused.bind(this));
341
- this.addEventListener("ui5-_forwardAfter", this.onForwardAfter.bind(this));
342
- this.addEventListener("ui5-_forwardBefore", this.onForwardBefore.bind(this));
343
- this.addEventListener("ui5-_selectionRequested", this.onSelectionRequested.bind(this));
463
+ this.addEventListener("ui5-_forward-after", this.onForwardAfter.bind(this));
464
+ this.addEventListener("ui5-_forward-before", this.onForwardBefore.bind(this));
465
+ this.addEventListener("ui5-_selection-requested", this.onSelectionRequested.bind(this));
466
+ this.addEventListener("ui5-_focus-requested", this.focusUploadCollectionItem.bind(this));
467
+
468
+ this._handleResize = this.checkListInViewport.bind(this);
469
+
470
+ // Indicates the List bottom most part has been detected by the IntersectionObserver
471
+ // for the first time.
472
+ this.initialIntersection = true;
473
+ }
474
+
475
+ onExitDOM() {
476
+ this.unobserveListEnd();
477
+ this.resizeListenerAttached = false;
478
+ ResizeHandler.deregister(this.getDomRef(), this._handleResize);
479
+ }
480
+
481
+ onBeforeRendering() {
482
+ this.prepareListItems();
483
+ }
484
+
485
+ onAfterRendering() {
486
+ if (this.growsOnScroll) {
487
+ this.observeListEnd();
488
+ } else if (this.listEndObserved) {
489
+ this.unobserveListEnd();
490
+ }
491
+
492
+ if (this.grows) {
493
+ this.checkListInViewport();
494
+ this.attachForResize();
495
+ }
496
+ }
497
+
498
+ attachForResize() {
499
+ if (!this.resizeListenerAttached) {
500
+ this.resizeListenerAttached = true;
501
+ ResizeHandler.register(this.getDomRef(), this._handleResize);
502
+ }
344
503
  }
345
504
 
346
505
  get shouldRenderH1() {
@@ -351,12 +510,33 @@ class List extends UI5Element {
351
510
  return `${this._id}-header`;
352
511
  }
353
512
 
513
+ get modeLabelID() {
514
+ return `${this._id}-modeLabel`;
515
+ }
516
+
517
+ get listEndDOM() {
518
+ return this.shadowRoot.querySelector(".ui5-list-end-marker");
519
+ }
520
+
521
+ get hasData() {
522
+ return this.getSlottedNodes("items").length !== 0;
523
+ }
524
+
354
525
  get showNoDataText() {
355
- return this.items.length === 0 && this.noDataText;
526
+ return !this.hasData && this.noDataText;
527
+ }
528
+
529
+ get isDelete() {
530
+ return this.mode === ListMode.Delete;
356
531
  }
357
532
 
358
- get showBusy() {
359
- return this.busy || this.infiniteScroll;
533
+ get isSingleSelect() {
534
+ return [
535
+ ListMode.SingleSelect,
536
+ ListMode.SingleSelectBegin,
537
+ ListMode.SingleSelectEnd,
538
+ ListMode.SingleSelectAuto,
539
+ ].includes(this.mode);
360
540
  }
361
541
 
362
542
  get isMultiSelect() {
@@ -364,19 +544,83 @@ class List extends UI5Element {
364
544
  }
365
545
 
366
546
  get ariaLabelledBy() {
367
- return this.shouldRenderH1 ? this.headerID : undefined;
547
+ if (this.accessibleNameRef || this.accessibleName) {
548
+ return undefined;
549
+ }
550
+ const ids = [];
551
+
552
+ if (this.isMultiSelect || this.isSingleSelect || this.isDelete) {
553
+ ids.push(this.modeLabelID);
554
+ }
555
+
556
+ if (this.shouldRenderH1) {
557
+ ids.push(this.headerID);
558
+ }
559
+
560
+ return ids.length ? ids.join(" ") : undefined;
368
561
  }
369
562
 
370
- onBeforeRendering() {
371
- this.prepareListItems();
563
+ get ariaLabelTxt() {
564
+ return getEffectiveAriaLabelText(this);
565
+ }
566
+
567
+ get ariaLabelModeText() {
568
+ if (this.isMultiSelect) {
569
+ return List.i18nBundle.getText(ARIA_LABEL_LIST_MULTISELECTABLE);
570
+ }
571
+ if (this.isSingleSelect) {
572
+ return List.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);
573
+ }
574
+ if (this.isDelete) {
575
+ return List.i18nBundle.getText(ARIA_LABEL_LIST_DELETABLE);
576
+ }
577
+
578
+ return undefined;
579
+ }
580
+
581
+ get grows() {
582
+ return this.growing !== ListGrowingMode.None;
583
+ }
584
+
585
+ get growsOnScroll() {
586
+ return this.growing === ListGrowingMode.Scroll && !isIE();
587
+ }
588
+
589
+ get growsWithButton() {
590
+ if (isIE()) {
591
+ // On IE fallback to "More" button, even if growing of type "Scroll" is set.
592
+ return this.grows;
593
+ }
594
+
595
+ return this.growing === ListGrowingMode.Button;
596
+ }
597
+
598
+ get _growingButtonText() {
599
+ return List.i18nBundle.getText(LOAD_MORE_TEXT);
600
+ }
601
+
602
+ get busyIndPosition() {
603
+ if (isIE() || !this.grows) {
604
+ return "absolute";
605
+ }
606
+
607
+ return this._inViewport ? "absolute" : "sticky";
608
+ }
609
+
610
+ get styles() {
611
+ return {
612
+ busyInd: {
613
+ position: this.busyIndPosition,
614
+ },
615
+ };
372
616
  }
373
617
 
374
618
  initItemNavigation() {
375
619
  this._itemNavigation = new ItemNavigation(this, {
620
+ skipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items
376
621
  navigationMode: NavigationMode.Vertical,
622
+ getItemsCallback: () => this.getEnabledItems(),
377
623
  });
378
-
379
- this._itemNavigation.getItemsCallback = () => this.getSlottedNodes("items");
380
624
  }
381
625
 
382
626
  prepareListItems() {
@@ -394,6 +638,34 @@ class List extends UI5Element {
394
638
  this._previouslySelectedItem = null;
395
639
  }
396
640
 
641
+ async observeListEnd() {
642
+ if (!this.listEndObserved) {
643
+ await renderFinished();
644
+ this.getIntersectionObserver().observe(this.listEndDOM);
645
+ this.listEndObserved = true;
646
+ }
647
+ }
648
+
649
+ unobserveListEnd() {
650
+ if (this.growingIntersectionObserver) {
651
+ this.growingIntersectionObserver.disconnect();
652
+ this.growingIntersectionObserver = null;
653
+ this.listEndObserved = false;
654
+ }
655
+ }
656
+
657
+ onInteresection(entries) {
658
+ if (this.initialIntersection) {
659
+ this.initialIntersection = false;
660
+ return;
661
+ }
662
+ entries.forEach(entry => {
663
+ if (entry.isIntersecting) {
664
+ debounce(this.loadMore.bind(this), INFINITE_SCROLL_DEBOUNCE_RATE);
665
+ }
666
+ });
667
+ }
668
+
397
669
  /*
398
670
  * ITEM SELECTION BASED ON THE CURRENT MODE
399
671
  */
@@ -407,7 +679,7 @@ class List extends UI5Element {
407
679
  }
408
680
 
409
681
  if (selectionChange) {
410
- this.fireEvent("selectionChange", {
682
+ this.fireEvent("selection-change", {
411
683
  selectedItems: this.getSelectedItems(),
412
684
  previouslySelectedItems,
413
685
  selectionComponentPressed: event.detail.selectionComponentPressed,
@@ -435,13 +707,17 @@ class List extends UI5Element {
435
707
  return this.handleSingleSelect(item);
436
708
  }
437
709
 
710
+ handleSingleSelectAuto(item) {
711
+ return this.handleSingleSelect(item);
712
+ }
713
+
438
714
  handleMultiSelect(item, selected) {
439
715
  item.selected = selected;
440
716
  return true;
441
717
  }
442
718
 
443
719
  handleDelete(item) {
444
- this.fireEvent("itemDelete", { item });
720
+ this.fireEvent("item-delete", { item });
445
721
  }
446
722
 
447
723
  deselectSelectedItems() {
@@ -452,18 +728,8 @@ class List extends UI5Element {
452
728
  return this.getSlottedNodes("items").filter(item => item.selected);
453
729
  }
454
730
 
455
- getFirstSelectedItem() {
456
- const slottedItems = this.getSlottedNodes("items");
457
- let firstSelectedItem = null;
458
-
459
- for (let i = 0; i < slottedItems.length; i++) {
460
- if (slottedItems[i].selected) {
461
- firstSelectedItem = slottedItems[i];
462
- break;
463
- }
464
- }
465
-
466
- return firstSelectedItem;
731
+ getEnabledItems() {
732
+ return this.getSlottedNodes("items").filter(item => !item.disabled);
467
733
  }
468
734
 
469
735
  _onkeydown(event) {
@@ -472,6 +738,50 @@ class List extends UI5Element {
472
738
  }
473
739
  }
474
740
 
741
+ _onLoadMoreKeydown(event) {
742
+ if (isSpace(event)) {
743
+ event.preventDefault();
744
+ this._loadMoreActive = true;
745
+ }
746
+
747
+ if (isEnter(event)) {
748
+ this._onLoadMoreClick();
749
+ this._loadMoreActive = true;
750
+ }
751
+
752
+ if (isTabNext(event)) {
753
+ this.setPreviouslyFocusedItem(event.target);
754
+ this.focusAfterElement();
755
+ }
756
+ }
757
+
758
+ _onLoadMoreKeyup(event) {
759
+ if (isSpace(event)) {
760
+ this._onLoadMoreClick();
761
+ }
762
+ this._loadMoreActive = false;
763
+ }
764
+
765
+ _onLoadMoreMousedown() {
766
+ this._loadMoreActive = true;
767
+ }
768
+
769
+ _onLoadMoreMouseup() {
770
+ this._loadMoreActive = false;
771
+ }
772
+
773
+ _onLoadMoreClick() {
774
+ this.loadMore();
775
+ }
776
+
777
+ checkListInViewport() {
778
+ this._inViewport = isElementInView(this.getDomRef());
779
+ }
780
+
781
+ loadMore() {
782
+ this.fireEvent("load-more");
783
+ }
784
+
475
785
  /*
476
786
  * KEYBOARD SUPPORT
477
787
  */
@@ -491,7 +801,7 @@ class List extends UI5Element {
491
801
  }
492
802
 
493
803
  if (lastTabbableEl === target) {
494
- if (this.getFirstSelectedItem()) {
804
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
495
805
  this.focusFirstSelectedItem();
496
806
  } else if (this.getPreviouslyFocusedItem()) {
497
807
  this.focusPreviouslyFocusedItem();
@@ -504,13 +814,6 @@ class List extends UI5Element {
504
814
  }
505
815
  }
506
816
 
507
- _onScroll(event) {
508
- if (!this.infiniteScroll) {
509
- return;
510
- }
511
- this.debounce(this.loadMore.bind(this, event.target), INFINITE_SCROLL_DEBOUNCE_RATE);
512
- }
513
-
514
817
  _onfocusin(event) {
515
818
  // If the focusin event does not origin from one of the 'triggers' - ignore it.
516
819
  if (!this.isForwardElement(this.getNormalizedTarget(event.target))) {
@@ -521,7 +824,7 @@ class List extends UI5Element {
521
824
  // The focus arrives in the List for the first time.
522
825
  // If there is selected item - focus it or focus the first item.
523
826
  if (!this.getPreviouslyFocusedItem()) {
524
- if (this.getFirstSelectedItem()) {
827
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
525
828
  this.focusFirstSelectedItem();
526
829
  } else {
527
830
  this.focusFirstItem();
@@ -534,11 +837,13 @@ class List extends UI5Element {
534
837
  // The focus returns to the List,
535
838
  // focus the first selected item or the previously focused element.
536
839
  if (!this.getForwardingFocus()) {
537
- if (this.getFirstSelectedItem()) {
840
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
538
841
  this.focusFirstSelectedItem();
539
842
  } else {
540
843
  this.focusPreviouslyFocusedItem();
541
844
  }
845
+
846
+ event.stopImmediatePropagation();
542
847
  }
543
848
 
544
849
  this.setForwardingFocus(false);
@@ -546,19 +851,32 @@ class List extends UI5Element {
546
851
 
547
852
  isForwardElement(node) {
548
853
  const nodeId = node.id;
854
+ const afterElement = this.getAfterElement();
855
+ const beforeElement = this.getBeforeElement();
549
856
 
550
- if (this._id === nodeId || this.getBeforeElement().id === nodeId) {
857
+ if (this._id === nodeId || (beforeElement && beforeElement.id === nodeId)) {
551
858
  return true;
552
859
  }
553
860
 
554
- return this.getAfterElement().id === nodeId;
861
+ return afterElement && afterElement.id === nodeId;
555
862
  }
556
863
 
557
864
  onItemFocused(event) {
558
865
  const target = event.target;
559
866
 
560
- this._itemNavigation.update(target);
561
- this.fireEvent("itemFocused", { item: target });
867
+ this._itemNavigation.setCurrentItem(target);
868
+ this.fireEvent("item-focused", { item: target });
869
+
870
+ if (this.mode === ListMode.SingleSelectAuto) {
871
+ this.onSelectionRequested({
872
+ detail: {
873
+ item: target,
874
+ selectionComponentPressed: false,
875
+ selected: true,
876
+ key: event.detail.key,
877
+ },
878
+ });
879
+ }
562
880
  }
563
881
 
564
882
  onItemPress(event) {
@@ -576,29 +894,33 @@ class List extends UI5Element {
576
894
  });
577
895
  }
578
896
 
579
- this.fireEvent("itemPress", { item: pressedItem });
580
- this.fireEvent("itemClick", { item: pressedItem });
897
+ this.fireEvent("item-press", { item: pressedItem });
898
+ this.fireEvent("item-click", { item: pressedItem });
581
899
 
582
900
  this._selectionRequested = false;
583
901
  }
584
902
 
585
903
  // This is applicable to NoficationListItem
586
904
  onItemClose(event) {
587
- this.fireEvent("itemClose", { item: event.detail.item });
905
+ this.fireEvent("item-close", { item: event.detail.item });
588
906
  }
589
907
 
590
908
  onItemToggle(event) {
591
- this.fireEvent("itemToggle", { item: event.detail.item });
909
+ this.fireEvent("item-toggle", { item: event.detail.item });
592
910
  }
593
911
 
594
912
  onForwardBefore(event) {
595
913
  this.setPreviouslyFocusedItem(event.target);
596
914
  this.focusBeforeElement();
915
+ event.stopImmediatePropagation();
597
916
  }
598
917
 
599
918
  onForwardAfter(event) {
600
919
  this.setPreviouslyFocusedItem(event.target);
601
- this.focusAfterElement();
920
+
921
+ if (!this.growsWithButton) {
922
+ this.focusAfterElement();
923
+ }
602
924
  }
603
925
 
604
926
  focusBeforeElement() {
@@ -612,7 +934,8 @@ class List extends UI5Element {
612
934
  }
613
935
 
614
936
  focusFirstItem() {
615
- const firstItem = this.getFirstItem();
937
+ // only enabled items are focusable
938
+ const firstItem = this.getFirstItem(x => !x.disabled);
616
939
 
617
940
  if (firstItem) {
618
941
  firstItem.focus();
@@ -628,17 +951,31 @@ class List extends UI5Element {
628
951
  }
629
952
 
630
953
  focusFirstSelectedItem() {
631
- const firstSelectedItem = this.getFirstSelectedItem();
954
+ // only enabled items are focusable
955
+ const firstSelectedItem = this.getFirstItem(x => x.selected && !x.disabled);
632
956
 
633
957
  if (firstSelectedItem) {
634
958
  firstSelectedItem.focus();
635
959
  }
636
960
  }
637
961
 
962
+ /**
963
+ * Focuses a list item and sets its tabindex to "0" via the ItemNavigation
964
+ * @protected
965
+ * @param item
966
+ */
638
967
  focusItem(item) {
968
+ this._itemNavigation.setCurrentItem(item);
639
969
  item.focus();
640
970
  }
641
971
 
972
+ focusUploadCollectionItem(event) {
973
+ setTimeout(() => {
974
+ this.setPreviouslyFocusedItem(event.target);
975
+ this.focusPreviouslyFocusedItem();
976
+ }, 0);
977
+ }
978
+
642
979
  setForwardingFocus(forwardingFocus) {
643
980
  this._forwardingFocus = forwardingFocus;
644
981
  }
@@ -655,9 +992,22 @@ class List extends UI5Element {
655
992
  return this._previouslyFocusedItem;
656
993
  }
657
994
 
658
- getFirstItem() {
995
+ getFirstItem(filter) {
659
996
  const slottedItems = this.getSlottedNodes("items");
660
- return !!slottedItems.length && slottedItems[0];
997
+ let firstItem = null;
998
+
999
+ if (!filter) {
1000
+ return !!slottedItems.length && slottedItems[0];
1001
+ }
1002
+
1003
+ for (let i = 0; i < slottedItems.length; i++) {
1004
+ if (filter(slottedItems[i])) {
1005
+ firstItem = slottedItems[i];
1006
+ break;
1007
+ }
1008
+ }
1009
+
1010
+ return firstItem;
661
1011
  }
662
1012
 
663
1013
  getAfterElement() {
@@ -688,32 +1038,16 @@ class List extends UI5Element {
688
1038
  return focused;
689
1039
  }
690
1040
 
691
- loadMore(el) {
692
- const scrollTop = el.scrollTop;
693
- const height = el.offsetHeight;
694
- const scrollHeight = el.scrollHeight;
695
-
696
- if (this.previousScrollPosition > scrollTop) { // skip scrolling upwards
697
- this.previousScrollPosition = scrollTop;
698
- return;
699
- }
700
- this.previousScrollPosition = scrollTop;
701
-
702
- if (scrollHeight - BUSYINDICATOR_HEIGHT <= height + scrollTop) {
703
- this.fireEvent("loadMore");
1041
+ getIntersectionObserver() {
1042
+ if (!this.growingIntersectionObserver) {
1043
+ this.growingIntersectionObserver = new IntersectionObserver(this.onInteresection.bind(this), {
1044
+ root: null,
1045
+ rootMargin: "0px",
1046
+ threshold: 1.0,
1047
+ });
704
1048
  }
705
- }
706
1049
 
707
- debounce(fn, delay) {
708
- clearTimeout(this.debounceInterval);
709
- this.debounceInterval = setTimeout(() => {
710
- this.debounceInterval = null;
711
- fn();
712
- }, delay);
713
- }
714
-
715
- static async onDefine() {
716
- await BusyIndicator.define();
1050
+ return this.growingIntersectionObserver;
717
1051
  }
718
1052
  }
719
1053