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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. package/CHANGELOG.md +717 -1
  2. package/README.md +144 -41
  3. package/csp.js +7 -0
  4. package/customI18n.js +50 -0
  5. package/dist/Assets-static.js +6 -0
  6. package/dist/Assets.js +3 -2
  7. package/dist/Avatar.js +224 -40
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +48 -28
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +172 -19
  13. package/dist/Button.js +180 -49
  14. package/dist/Calendar.js +345 -554
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -64
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +47 -161
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +681 -0
  21. package/dist/CheckBox.js +154 -54
  22. package/dist/ColorPalette.js +493 -0
  23. package/dist/ColorPaletteItem.js +137 -0
  24. package/dist/ColorPalettePopover.js +219 -0
  25. package/dist/ColorPicker.js +524 -0
  26. package/dist/ComboBox.js +664 -107
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +33 -30
  30. package/dist/CustomListItem.js +38 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +468 -384
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +430 -0
  35. package/dist/DayPicker.js +513 -438
  36. package/dist/Dialog.js +501 -47
  37. package/dist/DurationPicker.js +312 -0
  38. package/dist/FileUploader.js +532 -0
  39. package/dist/GroupHeaderListItem.js +36 -8
  40. package/dist/Icon.js +221 -43
  41. package/dist/Input.js +796 -127
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +143 -35
  45. package/dist/List.js +560 -73
  46. package/dist/ListItem.js +139 -30
  47. package/dist/ListItemBase.js +53 -9
  48. package/dist/MessageStrip.js +82 -93
  49. package/dist/MonthPicker.js +181 -184
  50. package/dist/MultiComboBox.js +625 -200
  51. package/dist/MultiComboBoxItem.js +43 -0
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +123 -41
  55. package/dist/Popover.js +314 -234
  56. package/dist/Popup.js +382 -287
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +153 -66
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +291 -0
  62. package/dist/ResponsivePopover.js +117 -61
  63. package/dist/SegmentedButton.js +290 -0
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +500 -110
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +46 -24
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +146 -0
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +62 -48
  74. package/dist/Tab.js +184 -18
  75. package/dist/TabContainer.js +337 -235
  76. package/dist/TabSeparator.js +2 -1
  77. package/dist/Table.js +492 -39
  78. package/dist/TableCell.js +13 -15
  79. package/dist/TableColumn.js +18 -7
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +254 -31
  82. package/dist/TextArea.js +314 -38
  83. package/dist/TimePicker.js +166 -0
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +18 -10
  87. package/dist/Toast.js +63 -37
  88. package/dist/ToggleButton.js +21 -13
  89. package/dist/Token.js +87 -49
  90. package/dist/Tokenizer.js +250 -65
  91. package/dist/Tree.js +443 -0
  92. package/dist/TreeItem.js +168 -0
  93. package/dist/TreeListItem.js +332 -0
  94. package/dist/WheelSlider.js +435 -0
  95. package/dist/YearPicker.js +201 -258
  96. package/dist/api.json +6877 -0
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +35 -1
  99. package/dist/features/InputSuggestions.js +294 -52
  100. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
  105. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
  110. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  112. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  113. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
  115. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
  119. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
  123. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
  136. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  148. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -0
  151. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -0
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -0
  155. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
  156. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
  157. package/dist/generated/i18n/i18n-defaults.js +2 -2
  158. package/dist/generated/json-imports/Themes-static.js +35 -0
  159. package/dist/generated/json-imports/Themes.js +23 -13
  160. package/dist/generated/json-imports/i18n-static.js +162 -0
  161. package/dist/generated/json-imports/i18n.js +113 -89
  162. package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
  163. package/dist/generated/templates/AvatarTemplate.lit.js +9 -9
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -6
  165. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
  166. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
  167. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -5
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -6
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -4
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -4
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -8
  173. package/dist/generated/templates/CarouselTemplate.lit.js +16 -0
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -7
  175. package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
  176. package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
  177. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
  178. package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
  179. package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
  180. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -5
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -5
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -12
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -4
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +12 -0
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -8
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +10 -0
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -4
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -6
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -6
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -8
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -4
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -5
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -12
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -8
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +6 -22
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -7
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -8
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +16 -0
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -6
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -9
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +7 -0
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -4
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +17 -0
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -7
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +14 -0
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -11
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +7 -0
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -4
  216. package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
  217. package/dist/generated/templates/SliderTemplate.lit.js +12 -0
  218. package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -18
  219. package/dist/generated/templates/StepInputTemplate.lit.js +10 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +27 -0
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -6
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -8
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -18
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +9 -0
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +11 -0
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -4
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -4
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -4
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -4
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -6
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +11 -0
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +7 -0
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +9 -0
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -10
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -4
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -6
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -5
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +12 -0
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -6
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +21 -0
  245. package/dist/generated/templates/TreeTemplate.lit.js +8 -0
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +10 -0
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +6 -7
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +6 -7
  251. package/dist/generated/themes/Breadcrumbs.css.js +8 -0
  252. package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
  253. package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
  254. package/dist/generated/themes/BusyIndicator.css.js +6 -7
  255. package/dist/generated/themes/Button.css.js +6 -7
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +6 -7
  258. package/dist/generated/themes/CalendarHeader.css.js +6 -7
  259. package/dist/generated/themes/Card.css.js +6 -7
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +8 -0
  262. package/dist/generated/themes/CheckBox.css.js +6 -7
  263. package/dist/generated/themes/ColorPalette.css.js +8 -0
  264. package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
  265. package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
  266. package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
  267. package/dist/generated/themes/ColorPicker.css.js +8 -0
  268. package/dist/generated/themes/ComboBox.css.js +6 -7
  269. package/dist/generated/themes/ComboBoxPopover.css.js +6 -7
  270. package/dist/generated/themes/CustomListItem.css.js +6 -7
  271. package/dist/generated/themes/DatePicker.css.js +6 -7
  272. package/dist/generated/themes/DatePickerPopover.css.js +6 -7
  273. package/dist/generated/themes/DateRangePicker.css.js +8 -0
  274. package/dist/generated/themes/DateTimePicker.css.js +8 -0
  275. package/dist/generated/themes/DateTimePickerPopover.css.js +8 -0
  276. package/dist/generated/themes/DayPicker.css.js +6 -7
  277. package/dist/generated/themes/Dialog.css.js +6 -7
  278. package/dist/generated/themes/FileUploader.css.js +8 -0
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +6 -7
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +6 -7
  282. package/dist/generated/themes/Input.css.js +6 -7
  283. package/dist/generated/themes/InputIcon.css.js +6 -7
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +6 -7
  285. package/dist/generated/themes/Label.css.js +6 -7
  286. package/dist/generated/themes/Link.css.js +6 -7
  287. package/dist/generated/themes/List.css.js +6 -7
  288. package/dist/generated/themes/ListItem.css.js +6 -7
  289. package/dist/generated/themes/ListItemBase.css.js +6 -7
  290. package/dist/generated/themes/MessageStrip.css.js +6 -7
  291. package/dist/generated/themes/MonthPicker.css.js +6 -7
  292. package/dist/generated/themes/MultiComboBox.css.js +6 -7
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +6 -7
  295. package/dist/generated/themes/Popover.css.js +6 -7
  296. package/dist/generated/themes/Popup.css.js +6 -7
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +8 -0
  299. package/dist/generated/themes/PopupsCommon.css.js +8 -0
  300. package/dist/generated/themes/ProgressIndicator.css.js +8 -0
  301. package/dist/generated/themes/RadioButton.css.js +6 -7
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +6 -7
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +6 -7
  305. package/dist/generated/themes/SegmentedButton.css.js +8 -0
  306. package/dist/generated/themes/Select.css.js +6 -7
  307. package/dist/generated/themes/SelectPopover.css.js +8 -0
  308. package/dist/generated/themes/SliderBase.css.js +8 -0
  309. package/dist/generated/themes/StepInput.css.js +8 -0
  310. package/dist/generated/themes/Suggestions.css.js +8 -0
  311. package/dist/generated/themes/Switch.css.js +6 -7
  312. package/dist/generated/themes/Tab.css.js +6 -7
  313. package/dist/generated/themes/TabContainer.css.js +6 -7
  314. package/dist/generated/themes/TabInOverflow.css.js +8 -0
  315. package/dist/generated/themes/TabInStrip.css.js +8 -0
  316. package/dist/generated/themes/Table.css.js +6 -7
  317. package/dist/generated/themes/TableCell.css.js +6 -7
  318. package/dist/generated/themes/TableColumn.css.js +6 -7
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +6 -7
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +6 -7
  323. package/dist/generated/themes/TimePicker.css.js +8 -0
  324. package/dist/generated/themes/TimePickerPopover.css.js +8 -0
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +6 -7
  327. package/dist/generated/themes/Toast.css.js +6 -7
  328. package/dist/generated/themes/ToggleButton.css.js +6 -7
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +6 -7
  331. package/dist/generated/themes/Tokenizer.css.js +6 -7
  332. package/dist/generated/themes/Tree.css.js +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  334. package/dist/generated/themes/ValueStateMessage.css.js +8 -0
  335. package/dist/generated/themes/WheelSlider.css.js +8 -0
  336. package/dist/generated/themes/YearPicker.css.js +6 -7
  337. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  338. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -0
  340. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  342. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -0
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -0
  344. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
  345. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
  346. package/dist/i18n/messagebundle.properties +335 -0
  347. package/dist/i18n/messagebundle_ar.properties +224 -0
  348. package/dist/i18n/messagebundle_bg.properties +224 -0
  349. package/dist/i18n/messagebundle_ca.properties +224 -0
  350. package/dist/i18n/messagebundle_cs.properties +224 -0
  351. package/dist/i18n/messagebundle_cy.properties +224 -0
  352. package/dist/i18n/messagebundle_da.properties +224 -0
  353. package/dist/i18n/messagebundle_de.properties +224 -0
  354. package/dist/i18n/messagebundle_el.properties +224 -0
  355. package/dist/i18n/messagebundle_en.properties +224 -0
  356. package/dist/i18n/messagebundle_en_GB.properties +224 -0
  357. package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
  358. package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
  359. package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
  360. package/dist/i18n/messagebundle_es.properties +224 -0
  361. package/dist/i18n/messagebundle_es_MX.properties +224 -0
  362. package/dist/i18n/messagebundle_et.properties +224 -0
  363. package/dist/i18n/messagebundle_fi.properties +224 -0
  364. package/dist/i18n/messagebundle_fr.properties +224 -0
  365. package/dist/i18n/messagebundle_fr_CA.properties +224 -0
  366. package/dist/i18n/messagebundle_hi.properties +224 -0
  367. package/dist/i18n/messagebundle_hr.properties +224 -0
  368. package/dist/i18n/messagebundle_hu.properties +224 -0
  369. package/dist/i18n/messagebundle_id.properties +224 -0
  370. package/dist/i18n/messagebundle_in.properties +172 -0
  371. package/dist/i18n/messagebundle_it.properties +224 -0
  372. package/dist/i18n/messagebundle_iw.properties +224 -0
  373. package/dist/i18n/messagebundle_ja.properties +224 -0
  374. package/dist/i18n/messagebundle_kk.properties +224 -0
  375. package/dist/i18n/messagebundle_ko.properties +224 -0
  376. package/dist/i18n/messagebundle_lt.properties +224 -0
  377. package/dist/i18n/messagebundle_lv.properties +224 -0
  378. package/dist/i18n/messagebundle_ms.properties +224 -0
  379. package/dist/i18n/messagebundle_nl.properties +224 -0
  380. package/dist/i18n/messagebundle_no.properties +224 -0
  381. package/dist/i18n/messagebundle_pl.properties +224 -0
  382. package/dist/i18n/messagebundle_pt.properties +224 -0
  383. package/dist/i18n/messagebundle_pt_PT.properties +224 -0
  384. package/dist/i18n/messagebundle_ro.properties +224 -0
  385. package/dist/i18n/messagebundle_ru.properties +224 -0
  386. package/dist/i18n/messagebundle_sh.properties +224 -0
  387. package/dist/i18n/messagebundle_sk.properties +224 -0
  388. package/dist/i18n/messagebundle_sl.properties +224 -0
  389. package/dist/i18n/messagebundle_sv.properties +224 -0
  390. package/dist/i18n/messagebundle_th.properties +224 -0
  391. package/dist/i18n/messagebundle_tr.properties +224 -0
  392. package/dist/i18n/messagebundle_uk.properties +224 -0
  393. package/dist/i18n/messagebundle_vi.properties +224 -0
  394. package/dist/i18n/messagebundle_zh_CN.properties +224 -0
  395. package/dist/i18n/messagebundle_zh_TW.properties +224 -0
  396. package/dist/popup-utils/OpenedPopupsRegistry.js +18 -13
  397. package/dist/popup-utils/PopoverRegistry.js +55 -21
  398. package/dist/timepicker-utils/TimeSlider.js +103 -0
  399. package/dist/types/{AvatarBackgroundColor.js → AvatarColorScheme.js} +9 -9
  400. package/dist/types/AvatarGroupType.js +43 -0
  401. package/dist/types/AvatarShape.js +1 -1
  402. package/dist/types/AvatarSize.js +1 -1
  403. package/dist/types/BreadcrumbsDesign.js +42 -0
  404. package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
  405. package/dist/types/BusyIndicatorSize.js +1 -1
  406. package/dist/types/ButtonDesign.js +8 -1
  407. package/dist/types/CalendarSelectionMode.js +47 -0
  408. package/dist/types/CarouselArrowsPlacement.js +40 -0
  409. package/dist/types/GrowingMode.js +48 -0
  410. package/dist/types/InputType.js +7 -7
  411. package/dist/types/LinkDesign.js +1 -1
  412. package/dist/types/ListGrowingMode.js +15 -0
  413. package/dist/types/ListItemType.js +8 -1
  414. package/dist/types/ListMode.js +9 -1
  415. package/dist/types/ListSeparators.js +1 -1
  416. package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  417. package/dist/types/PanelAccessibleRole.js +1 -1
  418. package/dist/types/PopoverHorizontalAlign.js +1 -1
  419. package/dist/types/PopoverPlacementType.js +2 -2
  420. package/dist/types/PopoverVerticalAlign.js +1 -2
  421. package/dist/types/Priority.js +55 -0
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +40 -0
  425. package/dist/types/TabLayout.js +40 -0
  426. package/dist/types/TableGrowingMode.js +15 -0
  427. package/dist/types/TableMode.js +47 -0
  428. package/dist/types/TableRowType.js +40 -0
  429. package/dist/types/TitleLevel.js +1 -1
  430. package/dist/types/ToastPlacement.js +1 -2
  431. package/dist/types/WrappingType.js +41 -0
  432. package/dist/webcomponentsjs/CHANGELOG.md +61 -0
  433. package/dist/webcomponentsjs/README.md +64 -47
  434. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
  435. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
  436. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
  437. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  438. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  439. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  440. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
  441. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
  442. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
  443. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
  444. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
  445. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
  446. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
  447. package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
  448. package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
  449. package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
  450. package/package-scripts.js +1 -0
  451. package/package.json +23 -8
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +7 -0
  454. package/src/Avatar.hbs +20 -0
  455. package/src/Avatar.js +392 -0
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +14 -0
  459. package/src/Badge.js +165 -0
  460. package/src/Breadcrumbs.hbs +42 -0
  461. package/src/Breadcrumbs.js +563 -0
  462. package/src/BreadcrumbsItem.js +109 -0
  463. package/src/BreadcrumbsPopover.hbs +28 -0
  464. package/src/BusyIndicator.hbs +32 -0
  465. package/src/BusyIndicator.js +269 -0
  466. package/src/Button.hbs +45 -0
  467. package/src/Button.js +463 -0
  468. package/src/Calendar.hbs +69 -0
  469. package/src/Calendar.js +489 -0
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +54 -0
  472. package/src/CalendarHeader.js +209 -0
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +14 -0
  475. package/src/Card.js +160 -0
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +85 -0
  479. package/src/Carousel.js +681 -0
  480. package/src/CheckBox.hbs +44 -0
  481. package/src/CheckBox.js +424 -0
  482. package/src/ColorPalette.hbs +52 -0
  483. package/src/ColorPalette.js +493 -0
  484. package/src/ColorPaletteDialog.hbs +18 -0
  485. package/src/ColorPaletteItem.hbs +11 -0
  486. package/src/ColorPaletteItem.js +137 -0
  487. package/src/ColorPalettePopover.hbs +29 -0
  488. package/src/ColorPalettePopover.js +219 -0
  489. package/src/ColorPicker.hbs +98 -0
  490. package/src/ColorPicker.js +524 -0
  491. package/src/ComboBox.hbs +49 -0
  492. package/src/ComboBox.js +1041 -0
  493. package/src/ComboBoxFilters.js +40 -0
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +49 -0
  496. package/src/ComboBoxPopover.hbs +125 -0
  497. package/src/CustomListItem.hbs +5 -0
  498. package/src/CustomListItem.js +99 -0
  499. package/src/DateComponentBase.js +170 -0
  500. package/src/DatePicker.hbs +44 -0
  501. package/src/DatePicker.js +823 -0
  502. package/src/DatePickerPopover.hbs +63 -0
  503. package/src/DateRangePicker.js +328 -0
  504. package/src/DateTimePicker.js +430 -0
  505. package/src/DateTimePickerPopover.hbs +74 -0
  506. package/src/DayPicker.hbs +66 -0
  507. package/src/DayPicker.js +754 -0
  508. package/src/Dialog.hbs +35 -0
  509. package/src/Dialog.js +601 -0
  510. package/src/DurationPicker.js +312 -0
  511. package/src/FileUploader.hbs +40 -0
  512. package/src/FileUploader.js +532 -0
  513. package/src/FileUploaderPopover.hbs +25 -0
  514. package/src/GroupHeaderListItem.hbs +15 -0
  515. package/src/GroupHeaderListItem.js +94 -0
  516. package/src/Icon.hbs +25 -0
  517. package/src/Icon.js +373 -0
  518. package/src/Input.hbs +78 -0
  519. package/src/Input.js +1381 -0
  520. package/src/InputPopover.hbs +118 -0
  521. package/src/Interfaces.js +192 -0
  522. package/src/Label.hbs +13 -0
  523. package/src/Label.js +152 -0
  524. package/src/Link.hbs +20 -0
  525. package/src/Link.js +349 -0
  526. package/src/List.hbs +89 -0
  527. package/src/List.js +1056 -0
  528. package/src/ListItem.hbs +102 -0
  529. package/src/ListItem.js +371 -0
  530. package/src/ListItemBase.js +179 -0
  531. package/src/MessageStrip.hbs +34 -0
  532. package/src/MessageStrip.js +227 -0
  533. package/src/MonthPicker.hbs +29 -0
  534. package/src/MonthPicker.js +299 -0
  535. package/src/MultiComboBox.hbs +78 -0
  536. package/src/MultiComboBox.js +1091 -0
  537. package/src/MultiComboBoxItem.js +43 -0
  538. package/src/MultiComboBoxPopover.hbs +133 -0
  539. package/src/MultiInput.hbs +41 -0
  540. package/src/MultiInput.js +301 -0
  541. package/src/Option.js +115 -0
  542. package/src/Panel.hbs +63 -0
  543. package/src/Panel.js +462 -0
  544. package/src/Popover.hbs +25 -0
  545. package/src/Popover.js +786 -0
  546. package/src/Popup.hbs +34 -0
  547. package/src/Popup.js +567 -0
  548. package/src/PopupBlockLayer.hbs +7 -0
  549. package/src/ProgressIndicator.hbs +35 -0
  550. package/src/ProgressIndicator.js +235 -0
  551. package/src/RadioButton.hbs +33 -0
  552. package/src/RadioButton.js +494 -0
  553. package/src/RadioButtonGroup.js +205 -0
  554. package/src/RangeSlider.hbs +70 -0
  555. package/src/RangeSlider.js +769 -0
  556. package/src/RatingIndicator.hbs +33 -0
  557. package/src/RatingIndicator.js +291 -0
  558. package/src/ResponsivePopover.hbs +39 -0
  559. package/src/ResponsivePopover.js +206 -0
  560. package/src/SegmentedButton.hbs +17 -0
  561. package/src/SegmentedButton.js +290 -0
  562. package/src/SegmentedButtonItem.hbs +42 -0
  563. package/src/SegmentedButtonItem.js +109 -0
  564. package/src/Select.hbs +45 -0
  565. package/src/Select.js +834 -0
  566. package/src/SelectPopover.hbs +89 -0
  567. package/src/Slider.hbs +42 -0
  568. package/src/Slider.js +320 -0
  569. package/src/SliderBase.hbs +38 -0
  570. package/src/SliderBase.js +842 -0
  571. package/src/StandardListItem.hbs +44 -0
  572. package/src/StandardListItem.js +191 -0
  573. package/src/StepInput.hbs +80 -0
  574. package/src/StepInput.js +684 -0
  575. package/src/SuggestionGroupItem.js +64 -0
  576. package/src/SuggestionItem.js +146 -0
  577. package/src/SuggestionListItem.hbs +33 -0
  578. package/src/SuggestionListItem.js +76 -0
  579. package/src/Switch.hbs +50 -0
  580. package/src/Switch.js +262 -0
  581. package/src/Tab.hbs +3 -0
  582. package/src/Tab.js +334 -0
  583. package/src/TabContainer.hbs +93 -0
  584. package/src/TabContainer.js +679 -0
  585. package/src/TabContainerPopover.hbs +24 -0
  586. package/src/TabInOverflow.hbs +22 -0
  587. package/src/TabInStrip.hbs +43 -0
  588. package/src/TabSeparator.hbs +1 -0
  589. package/src/TabSeparator.js +44 -0
  590. package/src/Table.hbs +99 -0
  591. package/src/Table.js +761 -0
  592. package/src/TableCell.hbs +7 -0
  593. package/src/TableCell.js +88 -0
  594. package/src/TableColumn.hbs +8 -0
  595. package/src/TableColumn.js +136 -0
  596. package/src/TableGroupRow.hbs +12 -0
  597. package/src/TableGroupRow.js +160 -0
  598. package/src/TableRow.hbs +61 -0
  599. package/src/TableRow.js +388 -0
  600. package/src/TextArea.hbs +50 -0
  601. package/src/TextArea.js +691 -0
  602. package/src/TextAreaPopover.hbs +28 -0
  603. package/src/TimePicker.hbs +35 -0
  604. package/src/TimePicker.js +166 -0
  605. package/src/TimePickerBase.js +463 -0
  606. package/src/TimePickerPopover.hbs +34 -0
  607. package/src/TimeSelection.hbs +60 -0
  608. package/src/TimeSelection.js +493 -0
  609. package/src/Title.hbs +47 -0
  610. package/src/Title.js +132 -0
  611. package/src/Toast.hbs +13 -0
  612. package/src/Toast.js +243 -0
  613. package/src/ToggleButton.hbs +5 -0
  614. package/src/ToggleButton.js +84 -0
  615. package/src/Token.hbs +30 -0
  616. package/src/Token.js +219 -0
  617. package/src/Tokenizer.hbs +27 -0
  618. package/src/Tokenizer.js +414 -0
  619. package/src/TokenizerPopover.hbs +50 -0
  620. package/src/Tree.hbs +42 -0
  621. package/src/Tree.js +443 -0
  622. package/src/TreeItem.js +168 -0
  623. package/src/TreeListItem.hbs +48 -0
  624. package/src/TreeListItem.js +332 -0
  625. package/src/WheelSlider.hbs +48 -0
  626. package/src/WheelSlider.js +435 -0
  627. package/src/YearPicker.hbs +27 -0
  628. package/src/YearPicker.js +324 -0
  629. package/src/features/ColorPaletteMoreColors.js +42 -0
  630. package/src/features/InputElementsFormSupport.js +88 -0
  631. package/src/features/InputSuggestions.js +530 -0
  632. package/src/i18n/messagebundle.properties +335 -0
  633. package/src/i18n/messagebundle_ar.properties +224 -0
  634. package/src/i18n/messagebundle_bg.properties +224 -0
  635. package/src/i18n/messagebundle_ca.properties +224 -0
  636. package/src/i18n/messagebundle_cs.properties +224 -0
  637. package/src/i18n/messagebundle_cy.properties +224 -0
  638. package/src/i18n/messagebundle_da.properties +224 -0
  639. package/src/i18n/messagebundle_de.properties +224 -0
  640. package/src/i18n/messagebundle_el.properties +224 -0
  641. package/src/i18n/messagebundle_en.properties +224 -0
  642. package/src/i18n/messagebundle_en_GB.properties +224 -0
  643. package/src/i18n/messagebundle_en_US_sappsd.properties +224 -0
  644. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  645. package/src/i18n/messagebundle_en_US_saptrc.properties +224 -0
  646. package/src/i18n/messagebundle_es.properties +224 -0
  647. package/src/i18n/messagebundle_es_MX.properties +224 -0
  648. package/src/i18n/messagebundle_et.properties +224 -0
  649. package/src/i18n/messagebundle_fi.properties +224 -0
  650. package/src/i18n/messagebundle_fr.properties +224 -0
  651. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  652. package/src/i18n/messagebundle_hi.properties +224 -0
  653. package/src/i18n/messagebundle_hr.properties +224 -0
  654. package/src/i18n/messagebundle_hu.properties +224 -0
  655. package/src/i18n/messagebundle_id.properties +224 -0
  656. package/src/i18n/messagebundle_in.properties +172 -0
  657. package/src/i18n/messagebundle_it.properties +224 -0
  658. package/src/i18n/messagebundle_iw.properties +224 -0
  659. package/src/i18n/messagebundle_ja.properties +224 -0
  660. package/src/i18n/messagebundle_kk.properties +224 -0
  661. package/src/i18n/messagebundle_ko.properties +224 -0
  662. package/src/i18n/messagebundle_lt.properties +224 -0
  663. package/src/i18n/messagebundle_lv.properties +224 -0
  664. package/src/i18n/messagebundle_ms.properties +224 -0
  665. package/src/i18n/messagebundle_nl.properties +224 -0
  666. package/src/i18n/messagebundle_no.properties +224 -0
  667. package/src/i18n/messagebundle_pl.properties +224 -0
  668. package/src/i18n/messagebundle_pt.properties +224 -0
  669. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  670. package/src/i18n/messagebundle_ro.properties +224 -0
  671. package/src/i18n/messagebundle_ru.properties +224 -0
  672. package/src/i18n/messagebundle_sh.properties +224 -0
  673. package/src/i18n/messagebundle_sk.properties +224 -0
  674. package/src/i18n/messagebundle_sl.properties +224 -0
  675. package/src/i18n/messagebundle_sv.properties +224 -0
  676. package/src/i18n/messagebundle_th.properties +224 -0
  677. package/src/i18n/messagebundle_tr.properties +224 -0
  678. package/src/i18n/messagebundle_uk.properties +224 -0
  679. package/src/i18n/messagebundle_vi.properties +224 -0
  680. package/src/i18n/messagebundle_zh_CN.properties +224 -0
  681. package/src/i18n/messagebundle_zh_TW.properties +224 -0
  682. package/src/popup-utils/OpenedPopupsRegistry.js +50 -0
  683. package/src/popup-utils/PopoverRegistry.js +145 -0
  684. package/src/timepicker-utils/TimeSlider.js +103 -0
  685. package/src/types/AvatarColorScheme.js +104 -0
  686. package/src/types/AvatarGroupType.js +43 -0
  687. package/src/types/AvatarShape.js +41 -0
  688. package/src/types/AvatarSize.js +67 -0
  689. package/src/types/BreadcrumbsDesign.js +42 -0
  690. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  691. package/src/types/BusyIndicatorSize.js +47 -0
  692. package/src/types/ButtonDesign.js +68 -0
  693. package/src/types/CalendarSelectionMode.js +47 -0
  694. package/src/types/CarouselArrowsPlacement.js +40 -0
  695. package/src/types/GrowingMode.js +48 -0
  696. package/src/types/InputType.js +68 -0
  697. package/src/types/LinkDesign.js +47 -0
  698. package/src/types/ListGrowingMode.js +15 -0
  699. package/src/types/ListItemType.js +47 -0
  700. package/src/types/ListMode.js +77 -0
  701. package/src/types/ListSeparators.js +46 -0
  702. package/src/types/MessageStripDesign.js +54 -0
  703. package/src/types/PanelAccessibleRole.js +48 -0
  704. package/src/types/PopoverHorizontalAlign.js +54 -0
  705. package/src/types/PopoverPlacementType.js +54 -0
  706. package/src/types/PopoverVerticalAlign.js +54 -0
  707. package/src/types/Priority.js +55 -0
  708. package/src/types/SemanticColor.js +61 -0
  709. package/src/types/SwitchDesign.js +40 -0
  710. package/src/types/TabContainerTabsPlacement.js +40 -0
  711. package/src/types/TabLayout.js +40 -0
  712. package/src/types/TableGrowingMode.js +15 -0
  713. package/src/types/TableMode.js +47 -0
  714. package/src/types/TableRowType.js +40 -0
  715. package/src/types/TitleLevel.js +68 -0
  716. package/src/types/ToastPlacement.js +91 -0
  717. package/src/types/WrappingType.js +41 -0
  718. package/dist/Timeline.js +0 -81
  719. package/dist/TimelineItem.js +0 -163
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  722. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  723. package/dist/generated/themes/ComboBoxItem.css.js +0 -9
  724. package/dist/generated/themes/TabContainerPopup.css.js +0 -9
  725. package/dist/generated/themes/Timeline.css.js +0 -9
  726. package/dist/generated/themes/TimelineItem.css.js +0 -9
  727. package/dist/popup-utils/PopupUtils.js +0 -42
  728. package/dist/types/AvatarFitType.js +0 -40
  729. package/dist/webcomponentsjs/package.json +0 -46
  730. package/index.js +0 -2
package/dist/List.js CHANGED
@@ -1,11 +1,21 @@
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/events/PseudoEvents.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";
18
+ import BusyIndicator from "./BusyIndicator.js";
9
19
 
10
20
  // Template
11
21
  import ListTemplate from "./generated/templates/ListTemplate.lit.js";
@@ -13,15 +23,28 @@ import ListTemplate from "./generated/templates/ListTemplate.lit.js";
13
23
  // Styles
14
24
  import listCss from "./generated/themes/List.css.js";
15
25
 
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
+
33
+ const INFINITE_SCROLL_DEBOUNCE_RATE = 250; // ms
34
+
35
+ const PAGE_UP_DOWN_SIZE = 10;
36
+
16
37
  /**
17
38
  * @public
18
39
  */
19
40
  const metadata = {
20
41
  tag: "ui5-list",
42
+ managedSlots: true,
21
43
  slots: /** @lends sap.ui.webcomponents.main.List.prototype */ {
22
44
 
23
45
  /**
24
- * Defines the <code>ui5-li</code> header.
46
+ * Defines the component header.
47
+ * <br><br>
25
48
  * <b>Note:</b> When <code>header</code> is set, the
26
49
  * <code>headerText</code> property is ignored.
27
50
  *
@@ -34,11 +57,12 @@ const metadata = {
34
57
  },
35
58
 
36
59
  /**
37
- * Defines the items of the <code>ui5-list</code>.
38
- * <br><b>Note:</b> Use <code>ui5-li</code>, <code>ui5-li-custom</code> and <code>ui5-li-groupheader</code> for the intended design.
60
+ * Defines the items of the component.
61
+ * <br><br>
62
+ * <b>Note:</b> Use <code>ui5-li</code>, <code>ui5-li-custom</code>, and <code>ui5-li-groupheader</code> for the intended design.
39
63
  *
40
- * @type {HTMLElement[]}
41
- * @slot
64
+ * @type {sap.ui.webcomponents.main.IListItem[]}
65
+ * @slot items
42
66
  * @public
43
67
  */
44
68
  "default": {
@@ -49,12 +73,12 @@ const metadata = {
49
73
  properties: /** @lends sap.ui.webcomponents.main.List.prototype */ {
50
74
 
51
75
  /**
52
- * Defines the <code>ui5-list</code> header text.
76
+ * Defines the component header text.
53
77
  * <br><br>
54
78
  * <b>Note:</b> If <code>header</code> is set this property is ignored.
55
79
  *
56
80
  * @type {string}
57
- * @defaultvalue: ""
81
+ * @defaultvalue ""
58
82
  * @public
59
83
  */
60
84
  headerText: {
@@ -65,7 +89,7 @@ const metadata = {
65
89
  * Defines the footer text.
66
90
  *
67
91
  * @type {string}
68
- * @defaultvalue: ""
92
+ * @defaultvalue ""
69
93
  * @public
70
94
  */
71
95
  footerText: {
@@ -73,23 +97,23 @@ const metadata = {
73
97
  },
74
98
 
75
99
  /**
76
- * Determines whether the list items are indented.
100
+ * Determines whether the component is indented.
77
101
  *
78
102
  * @type {boolean}
79
103
  * @defaultvalue false
80
104
  * @public
81
105
  */
82
- inset: {
106
+ indent: {
83
107
  type: Boolean,
84
108
  },
85
109
 
86
110
  /**
87
- * Defines the mode of the <code>ui5-list</code>.
111
+ * Defines the mode of the component.
88
112
  * <br><br>
89
- * <b>Note:</b> Avalaible options are <code>None</code>, <code>SingleSelect</code>,
90
- * <code>MultiSelect</code>, and <code>Delete</code>.
113
+ * <b>Note:</b> Available options are <code>None</code>, <code>SingleSelect</code>, <code>SingleSelectBegin</code>,
114
+ * <code>SingleSelectEnd</code>, <code>MultiSelect</code>, and <code>Delete</code>.
91
115
  *
92
- * @type {string}
116
+ * @type {ListMode}
93
117
  * @defaultvalue "None"
94
118
  * @public
95
119
  */
@@ -99,10 +123,10 @@ const metadata = {
99
123
  },
100
124
 
101
125
  /**
102
- * 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.
103
127
  *
104
128
  * @type {string}
105
- * @defaultvalue: ""
129
+ * @defaultvalue ""
106
130
  * @public
107
131
  */
108
132
  noDataText: {
@@ -115,12 +139,12 @@ const metadata = {
115
139
  * <b>Notes:</b>
116
140
  * <ul>
117
141
  * <li>Avalaible options are <code>All</code>, <code>Inner</code>, and <code>None</code>.</li>
118
- * <li>When set to <code>None</code>, none of the items is separated by horizontal lines.</li>
142
+ * <li>When set to <code>None</code>, none of the items are separated by horizontal lines.</li>
119
143
  * <li>When set to <code>Inner</code>, the first item doesn't have a top separator and the last
120
144
  * item doesn't have a bottom separator.</li>
121
145
  * </ul>
122
146
  *
123
- * @type {string}
147
+ * @type {ListSeparators}
124
148
  * @defaultvalue "All"
125
149
  * @public
126
150
  */
@@ -128,6 +152,111 @@ const metadata = {
128
152
  type: ListSeparators,
129
153
  defaultValue: ListSeparators.All,
130
154
  },
155
+
156
+ /**
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>
160
+ *
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
176
+ * @public
177
+ */
178
+ growing: {
179
+ type: ListGrowingMode,
180
+ defaultValue: ListGrowingMode.None,
181
+ },
182
+
183
+ /**
184
+ * Defines if the component would display a loading indicator over the list.
185
+ *
186
+ * @type {boolean}
187
+ * @defaultvalue false
188
+ * @public
189
+ * @since 1.0.0-rc.6
190
+ */
191
+ busy: {
192
+ type: Boolean,
193
+ },
194
+
195
+ /**
196
+ * Defines the delay in milliseconds, after which the busy indicator will show up for this component.
197
+ *
198
+ * @type {Integer}
199
+ * @defaultValue 1000
200
+ * @public
201
+ */
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: {
216
+ type: String,
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,
259
+ },
131
260
  },
132
261
  events: /** @lends sap.ui.webcomponents.main.List.prototype */ {
133
262
 
@@ -135,11 +264,44 @@ const metadata = {
135
264
  * Fired when an item is activated, unless the item's <code>type</code> property
136
265
  * is set to <code>Inactive</code>.
137
266
  *
138
- * @event
139
- * @param {HTMLElement} item the clicked item.
267
+ * @event sap.ui.webcomponents.main.List#item-click
268
+ * @param {HTMLElement} item The clicked item.
269
+ * @public
270
+ */
271
+ "item-click": {
272
+ detail: {
273
+ item: { type: HTMLElement },
274
+ },
275
+ },
276
+
277
+ /**
278
+ * Fired when the <code>Close</code> button of any item is clicked
279
+ * <br><br>
280
+ * <b>Note:</b> This event is applicable to <code>ui5-li-notification</code> items only,
281
+ * not to be confused with <code>item-delete</code>.
282
+ *
283
+ * @event sap.ui.webcomponents.main.List#item-close
284
+ * @param {HTMLElement} item the item about to be closed.
285
+ * @public
286
+ * @since 1.0.0-rc.8
287
+ */
288
+ "item-close": {
289
+ detail: {
290
+ item: { type: HTMLElement },
291
+ },
292
+ },
293
+
294
+ /**
295
+ * Fired when the <code>Toggle</code> button of any item is clicked.
296
+ * <br><br>
297
+ * <b>Note:</b> This event is applicable to <code>ui5-li-notification-group</code> items only.
298
+ *
299
+ * @event sap.ui.webcomponents.main.List#item-toggle
300
+ * @param {HTMLElement} item the toggled item.
140
301
  * @public
302
+ * @since 1.0.0-rc.8
141
303
  */
142
- itemClick: {
304
+ "item-toggle": {
143
305
  detail: {
144
306
  item: { type: HTMLElement },
145
307
  },
@@ -149,12 +311,13 @@ const metadata = {
149
311
  * Fired when the Delete button of any item is pressed.
150
312
  * <br><br>
151
313
  * <b>Note:</b> A Delete button is displayed on each item,
152
- * when the <code>ui5-list</code> <code>mode</code> property is set to <code>Delete</code>.
153
- * @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
154
317
  * @param {HTMLElement} item the deleted item.
155
318
  * @public
156
319
  */
157
- itemDelete: {
320
+ "item-delete": {
158
321
  detail: {
159
322
  item: { type: HTMLElement },
160
323
  },
@@ -162,36 +325,47 @@ const metadata = {
162
325
 
163
326
  /**
164
327
  * Fired when selection is changed by user interaction
165
- * in <code>SingleSelect</code> and <code>MultiSelect</code> modes.
328
+ * in <code>SingleSelect</code>, <code>SingleSelectBegin</code>, <code>SingleSelectEnd</code> and <code>MultiSelect</code> modes.
166
329
  *
167
- * @event
168
- * @param {Array} selectedItems an array of the selected items.
169
- * @param {Array} previouslySelectedItems an array of the previously selected items.
330
+ * @event sap.ui.webcomponents.main.List#selection-change
331
+ * @param {Array} selectedItems An array of the selected items.
332
+ * @param {Array} previouslySelectedItems An array of the previously selected items.
170
333
  * @public
171
334
  */
172
- selectionChange: {
335
+ "selection-change": {
173
336
  detail: {
174
337
  selectedItems: { type: Array },
175
338
  previouslySelectedItems: { type: Array },
176
339
  selectionComponentPressed: { type: Boolean }, // protected, indicates if the user used the selection components to change the selection
177
340
  },
178
341
  },
342
+
343
+ /**
344
+ * Fired when the user scrolls to the bottom of the list.
345
+ * <br><br>
346
+ * <b>Note:</b> The event is fired when the <code>growing='Scroll'</code> property is enabled.
347
+ *
348
+ * @event sap.ui.webcomponents.main.List#load-more
349
+ * @public
350
+ * @since 1.0.0-rc.6
351
+ */
352
+ "load-more": {},
179
353
  },
180
354
  };
181
355
 
182
356
  /**
183
357
  * @class
184
358
  *
185
- * <h3 class="comment-api-title"> Overview </h3>
359
+ * <h3 class="comment-api-title">Overview</h3>
186
360
  *
187
361
  * The <code>ui5-list</code> component allows displaying a list of items, advanced keyboard
188
362
  * handling support for navigating between items, and predefined modes to improve the development efficiency.
189
363
  * <br><br>
190
- * 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:
191
365
  * <ul>
192
366
  * <li><code>ui5-li</code></li>
193
367
  * <li><code>ui5-li-custom</code></li>
194
- * <li><code>ui5-li-group-header</code></li>
368
+ * <li><code>ui5-li-groupheader</code></li>
195
369
  * </ul>
196
370
  * <br><br>
197
371
  * To benefit from the built-in selection mechanism, you can use the available
@@ -200,6 +374,27 @@ const metadata = {
200
374
  * <br><br>
201
375
  * Additionally, the <code>ui5-list</code> provides header, footer, and customization for the list item separators.
202
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
+ *
203
398
  * <h3>ES6 Module Import</h3>
204
399
  *
205
400
  * <code>import "@ui5/webcomponents/dist/List.js";</code>
@@ -208,7 +403,7 @@ const metadata = {
208
403
  * <br>
209
404
  * <code>import "@ui5/webcomponents/dist/CustomListItem.js";</code> (for <code>ui5-li-custom</code>)
210
405
  * <br>
211
- * <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>)
212
407
  *
213
408
  * @constructor
214
409
  * @author SAP SE
@@ -235,6 +430,14 @@ class List extends UI5Element {
235
430
  return listCss;
236
431
  }
237
432
 
433
+ static async onDefine() {
434
+ List.i18nBundle = await getI18nBundle("@ui5/webcomponents");
435
+ }
436
+
437
+ static get dependencies() {
438
+ return [BusyIndicator];
439
+ }
440
+
238
441
  constructor() {
239
442
  super();
240
443
  this.initItemNavigation();
@@ -247,23 +450,177 @@ class List extends UI5Element {
247
450
 
248
451
  this._previouslySelectedItem = null;
249
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
+
250
459
  this.addEventListener("ui5-_press", this.onItemPress.bind(this));
460
+ this.addEventListener("ui5-close", this.onItemClose.bind(this));
461
+ this.addEventListener("ui5-toggle", this.onItemToggle.bind(this));
251
462
  this.addEventListener("ui5-_focused", this.onItemFocused.bind(this));
252
- this.addEventListener("ui5-_forwardAfter", this.onForwardAfter.bind(this));
253
- this.addEventListener("ui5-_forwardBefore", this.onForwardBefore.bind(this));
254
- 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);
255
479
  }
256
480
 
257
481
  onBeforeRendering() {
258
482
  this.prepareListItems();
259
483
  }
260
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
+ }
503
+ }
504
+
505
+ get shouldRenderH1() {
506
+ return !this.header.length && this.headerText;
507
+ }
508
+
509
+ get headerID() {
510
+ return `${this._id}-header`;
511
+ }
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
+
525
+ get showNoDataText() {
526
+ return !this.hasData && this.noDataText;
527
+ }
528
+
529
+ get isDelete() {
530
+ return this.mode === ListMode.Delete;
531
+ }
532
+
533
+ get isSingleSelect() {
534
+ return [
535
+ ListMode.SingleSelect,
536
+ ListMode.SingleSelectBegin,
537
+ ListMode.SingleSelectEnd,
538
+ ListMode.SingleSelectAuto,
539
+ ].includes(this.mode);
540
+ }
541
+
542
+ get isMultiSelect() {
543
+ return this.mode === ListMode.MultiSelect;
544
+ }
545
+
546
+ get ariaLabelledBy() {
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;
561
+ }
562
+
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
+ };
616
+ }
617
+
261
618
  initItemNavigation() {
262
619
  this._itemNavigation = new ItemNavigation(this, {
620
+ skipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items
263
621
  navigationMode: NavigationMode.Vertical,
622
+ getItemsCallback: () => this.getEnabledItems(),
264
623
  });
265
-
266
- this._itemNavigation.getItemsCallback = () => this.getSlottedNodes("items");
267
624
  }
268
625
 
269
626
  prepareListItems() {
@@ -281,6 +638,34 @@ class List extends UI5Element {
281
638
  this._previouslySelectedItem = null;
282
639
  }
283
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
+
284
669
  /*
285
670
  * ITEM SELECTION BASED ON THE CURRENT MODE
286
671
  */
@@ -294,7 +679,7 @@ class List extends UI5Element {
294
679
  }
295
680
 
296
681
  if (selectionChange) {
297
- this.fireEvent("selectionChange", {
682
+ this.fireEvent("selection-change", {
298
683
  selectedItems: this.getSelectedItems(),
299
684
  previouslySelectedItems,
300
685
  selectionComponentPressed: event.detail.selectionComponentPressed,
@@ -322,13 +707,17 @@ class List extends UI5Element {
322
707
  return this.handleSingleSelect(item);
323
708
  }
324
709
 
710
+ handleSingleSelectAuto(item) {
711
+ return this.handleSingleSelect(item);
712
+ }
713
+
325
714
  handleMultiSelect(item, selected) {
326
715
  item.selected = selected;
327
716
  return true;
328
717
  }
329
718
 
330
719
  handleDelete(item) {
331
- this.fireEvent("itemDelete", { item });
720
+ this.fireEvent("item-delete", { item });
332
721
  }
333
722
 
334
723
  deselectSelectedItems() {
@@ -339,18 +728,8 @@ class List extends UI5Element {
339
728
  return this.getSlottedNodes("items").filter(item => item.selected);
340
729
  }
341
730
 
342
- getFirstSelectedItem() {
343
- const slottedItems = this.getSlottedNodes("items");
344
- let firstSelectedItem = null;
345
-
346
- for (let i = 0; i < slottedItems.length; i++) {
347
- if (slottedItems[i].selected) {
348
- firstSelectedItem = slottedItems[i];
349
- break;
350
- }
351
- }
352
-
353
- return firstSelectedItem;
731
+ getEnabledItems() {
732
+ return this.getSlottedNodes("items").filter(item => !item.disabled);
354
733
  }
355
734
 
356
735
  _onkeydown(event) {
@@ -359,6 +738,50 @@ class List extends UI5Element {
359
738
  }
360
739
  }
361
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
+
362
785
  /*
363
786
  * KEYBOARD SUPPORT
364
787
  */
@@ -378,7 +801,7 @@ class List extends UI5Element {
378
801
  }
379
802
 
380
803
  if (lastTabbableEl === target) {
381
- if (this.getFirstSelectedItem()) {
804
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
382
805
  this.focusFirstSelectedItem();
383
806
  } else if (this.getPreviouslyFocusedItem()) {
384
807
  this.focusPreviouslyFocusedItem();
@@ -401,7 +824,7 @@ class List extends UI5Element {
401
824
  // The focus arrives in the List for the first time.
402
825
  // If there is selected item - focus it or focus the first item.
403
826
  if (!this.getPreviouslyFocusedItem()) {
404
- if (this.getFirstSelectedItem()) {
827
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
405
828
  this.focusFirstSelectedItem();
406
829
  } else {
407
830
  this.focusFirstItem();
@@ -414,11 +837,13 @@ class List extends UI5Element {
414
837
  // The focus returns to the List,
415
838
  // focus the first selected item or the previously focused element.
416
839
  if (!this.getForwardingFocus()) {
417
- if (this.getFirstSelectedItem()) {
840
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
418
841
  this.focusFirstSelectedItem();
419
842
  } else {
420
843
  this.focusPreviouslyFocusedItem();
421
844
  }
845
+
846
+ event.stopImmediatePropagation();
422
847
  }
423
848
 
424
849
  this.setForwardingFocus(false);
@@ -426,27 +851,37 @@ class List extends UI5Element {
426
851
 
427
852
  isForwardElement(node) {
428
853
  const nodeId = node.id;
854
+ const afterElement = this.getAfterElement();
855
+ const beforeElement = this.getBeforeElement();
429
856
 
430
- if (this._id === nodeId || this.getBeforeElement().id === nodeId) {
857
+ if (this._id === nodeId || (beforeElement && beforeElement.id === nodeId)) {
431
858
  return true;
432
859
  }
433
860
 
434
- return this.getAfterElement().id === nodeId;
861
+ return afterElement && afterElement.id === nodeId;
435
862
  }
436
863
 
437
864
  onItemFocused(event) {
438
865
  const target = event.target;
439
866
 
440
- this._itemNavigation.update(target);
441
- 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
+ }
442
880
  }
443
881
 
444
882
  onItemPress(event) {
445
883
  const pressedItem = event.detail.item;
446
884
 
447
- this.fireEvent("itemPress", { item: pressedItem });
448
- this.fireEvent("itemClick", { item: pressedItem });
449
-
450
885
  if (!this._selectionRequested && this.mode !== ListMode.Delete) {
451
886
  this._selectionRequested = true;
452
887
  this.onSelectionRequested({
@@ -459,17 +894,33 @@ class List extends UI5Element {
459
894
  });
460
895
  }
461
896
 
897
+ this.fireEvent("item-press", { item: pressedItem });
898
+ this.fireEvent("item-click", { item: pressedItem });
899
+
462
900
  this._selectionRequested = false;
463
901
  }
464
902
 
903
+ // This is applicable to NoficationListItem
904
+ onItemClose(event) {
905
+ this.fireEvent("item-close", { item: event.detail.item });
906
+ }
907
+
908
+ onItemToggle(event) {
909
+ this.fireEvent("item-toggle", { item: event.detail.item });
910
+ }
911
+
465
912
  onForwardBefore(event) {
466
913
  this.setPreviouslyFocusedItem(event.target);
467
914
  this.focusBeforeElement();
915
+ event.stopImmediatePropagation();
468
916
  }
469
917
 
470
918
  onForwardAfter(event) {
471
919
  this.setPreviouslyFocusedItem(event.target);
472
- this.focusAfterElement();
920
+
921
+ if (!this.growsWithButton) {
922
+ this.focusAfterElement();
923
+ }
473
924
  }
474
925
 
475
926
  focusBeforeElement() {
@@ -483,7 +934,8 @@ class List extends UI5Element {
483
934
  }
484
935
 
485
936
  focusFirstItem() {
486
- const firstItem = this.getFirstItem();
937
+ // only enabled items are focusable
938
+ const firstItem = this.getFirstItem(x => !x.disabled);
487
939
 
488
940
  if (firstItem) {
489
941
  firstItem.focus();
@@ -499,13 +951,31 @@ class List extends UI5Element {
499
951
  }
500
952
 
501
953
  focusFirstSelectedItem() {
502
- const firstSelectedItem = this.getFirstSelectedItem();
954
+ // only enabled items are focusable
955
+ const firstSelectedItem = this.getFirstItem(x => x.selected && !x.disabled);
503
956
 
504
957
  if (firstSelectedItem) {
505
958
  firstSelectedItem.focus();
506
959
  }
507
960
  }
508
961
 
962
+ /**
963
+ * Focuses a list item and sets its tabindex to "0" via the ItemNavigation
964
+ * @protected
965
+ * @param item
966
+ */
967
+ focusItem(item) {
968
+ this._itemNavigation.setCurrentItem(item);
969
+ item.focus();
970
+ }
971
+
972
+ focusUploadCollectionItem(event) {
973
+ setTimeout(() => {
974
+ this.setPreviouslyFocusedItem(event.target);
975
+ this.focusPreviouslyFocusedItem();
976
+ }, 0);
977
+ }
978
+
509
979
  setForwardingFocus(forwardingFocus) {
510
980
  this._forwardingFocus = forwardingFocus;
511
981
  }
@@ -522,9 +992,22 @@ class List extends UI5Element {
522
992
  return this._previouslyFocusedItem;
523
993
  }
524
994
 
525
- getFirstItem() {
995
+ getFirstItem(filter) {
526
996
  const slottedItems = this.getSlottedNodes("items");
527
- 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;
528
1011
  }
529
1012
 
530
1013
  getAfterElement() {
@@ -555,12 +1038,16 @@ class List extends UI5Element {
555
1038
  return focused;
556
1039
  }
557
1040
 
558
- get shouldRenderH1() {
559
- return !this.header.length && this.headerText;
560
- }
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
+ });
1048
+ }
561
1049
 
562
- get showNoDataText() {
563
- return this.items.length === 0 && this.noDataText;
1050
+ return this.growingIntersectionObserver;
564
1051
  }
565
1052
  }
566
1053