@ui5/webcomponents 0.0.0-39bd3067f → 0.0.0-4180fe799

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