@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/src/List.js ADDED
@@ -0,0 +1,1056 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
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";
7
+ import { getLastTabbableElement } from "@ui5/webcomponents-base/dist/util/TabbableElements.js";
8
+ import { isTabNext, isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
9
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
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";
15
+ import ListMode from "./types/ListMode.js";
16
+ import ListGrowingMode from "./types/ListGrowingMode.js";
17
+ import ListSeparators from "./types/ListSeparators.js";
18
+ import BusyIndicator from "./BusyIndicator.js";
19
+
20
+ // Template
21
+ import ListTemplate from "./generated/templates/ListTemplate.lit.js";
22
+
23
+ // Styles
24
+ import listCss from "./generated/themes/List.css.js";
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
+
37
+ /**
38
+ * @public
39
+ */
40
+ const metadata = {
41
+ tag: "ui5-list",
42
+ managedSlots: true,
43
+ slots: /** @lends sap.ui.webcomponents.main.List.prototype */ {
44
+
45
+ /**
46
+ * Defines the component header.
47
+ * <br><br>
48
+ * <b>Note:</b> When <code>header</code> is set, the
49
+ * <code>headerText</code> property is ignored.
50
+ *
51
+ * @type {HTMLElement[]}
52
+ * @slot
53
+ * @public
54
+ */
55
+ header: {
56
+ type: HTMLElement,
57
+ },
58
+
59
+ /**
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.
63
+ *
64
+ * @type {sap.ui.webcomponents.main.IListItem[]}
65
+ * @slot items
66
+ * @public
67
+ */
68
+ "default": {
69
+ propertyName: "items",
70
+ type: HTMLElement,
71
+ },
72
+ },
73
+ properties: /** @lends sap.ui.webcomponents.main.List.prototype */ {
74
+
75
+ /**
76
+ * Defines the component header text.
77
+ * <br><br>
78
+ * <b>Note:</b> If <code>header</code> is set this property is ignored.
79
+ *
80
+ * @type {string}
81
+ * @defaultvalue ""
82
+ * @public
83
+ */
84
+ headerText: {
85
+ type: String,
86
+ },
87
+
88
+ /**
89
+ * Defines the footer text.
90
+ *
91
+ * @type {string}
92
+ * @defaultvalue ""
93
+ * @public
94
+ */
95
+ footerText: {
96
+ type: String,
97
+ },
98
+
99
+ /**
100
+ * Determines whether the component is indented.
101
+ *
102
+ * @type {boolean}
103
+ * @defaultvalue false
104
+ * @public
105
+ */
106
+ indent: {
107
+ type: Boolean,
108
+ },
109
+
110
+ /**
111
+ * Defines the mode of the component.
112
+ * <br><br>
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>.
115
+ *
116
+ * @type {ListMode}
117
+ * @defaultvalue "None"
118
+ * @public
119
+ */
120
+ mode: {
121
+ type: ListMode,
122
+ defaultValue: ListMode.None,
123
+ },
124
+
125
+ /**
126
+ * Defines the text that is displayed when the component contains no items.
127
+ *
128
+ * @type {string}
129
+ * @defaultvalue ""
130
+ * @public
131
+ */
132
+ noDataText: {
133
+ type: String,
134
+ },
135
+
136
+ /**
137
+ * Defines the item separator style that is used.
138
+ * <br><br>
139
+ * <b>Notes:</b>
140
+ * <ul>
141
+ * <li>Avalaible options are <code>All</code>, <code>Inner</code>, and <code>None</code>.</li>
142
+ * <li>When set to <code>None</code>, none of the items are separated by horizontal lines.</li>
143
+ * <li>When set to <code>Inner</code>, the first item doesn't have a top separator and the last
144
+ * item doesn't have a bottom separator.</li>
145
+ * </ul>
146
+ *
147
+ * @type {ListSeparators}
148
+ * @defaultvalue "All"
149
+ * @public
150
+ */
151
+ separators: {
152
+ type: ListSeparators,
153
+ defaultValue: ListSeparators.All,
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
+ },
260
+ },
261
+ events: /** @lends sap.ui.webcomponents.main.List.prototype */ {
262
+
263
+ /**
264
+ * Fired when an item is activated, unless the item's <code>type</code> property
265
+ * is set to <code>Inactive</code>.
266
+ *
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.
301
+ * @public
302
+ * @since 1.0.0-rc.8
303
+ */
304
+ "item-toggle": {
305
+ detail: {
306
+ item: { type: HTMLElement },
307
+ },
308
+ },
309
+
310
+ /**
311
+ * Fired when the Delete button of any item is pressed.
312
+ * <br><br>
313
+ * <b>Note:</b> A Delete button is displayed on each item,
314
+ * when the component <code>mode</code> property is set to <code>Delete</code>.
315
+ *
316
+ * @event sap.ui.webcomponents.main.List#item-delete
317
+ * @param {HTMLElement} item the deleted item.
318
+ * @public
319
+ */
320
+ "item-delete": {
321
+ detail: {
322
+ item: { type: HTMLElement },
323
+ },
324
+ },
325
+
326
+ /**
327
+ * Fired when selection is changed by user interaction
328
+ * in <code>SingleSelect</code>, <code>SingleSelectBegin</code>, <code>SingleSelectEnd</code> and <code>MultiSelect</code> modes.
329
+ *
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.
333
+ * @public
334
+ */
335
+ "selection-change": {
336
+ detail: {
337
+ selectedItems: { type: Array },
338
+ previouslySelectedItems: { type: Array },
339
+ selectionComponentPressed: { type: Boolean }, // protected, indicates if the user used the selection components to change the selection
340
+ },
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": {},
353
+ },
354
+ };
355
+
356
+ /**
357
+ * @class
358
+ *
359
+ * <h3 class="comment-api-title">Overview</h3>
360
+ *
361
+ * The <code>ui5-list</code> component allows displaying a list of items, advanced keyboard
362
+ * handling support for navigating between items, and predefined modes to improve the development efficiency.
363
+ * <br><br>
364
+ * The <code>ui5-list</code> is a container for the available list items:
365
+ * <ul>
366
+ * <li><code>ui5-li</code></li>
367
+ * <li><code>ui5-li-custom</code></li>
368
+ * <li><code>ui5-li-groupheader</code></li>
369
+ * </ul>
370
+ * <br><br>
371
+ * To benefit from the built-in selection mechanism, you can use the available
372
+ * selection modes, such as
373
+ * <code>SingleSelect</code>, <code>MultiSelect</code> and <code>Delete</code>.
374
+ * <br><br>
375
+ * Additionally, the <code>ui5-list</code> provides header, footer, and customization for the list item separators.
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
+ *
398
+ * <h3>ES6 Module Import</h3>
399
+ *
400
+ * <code>import "@ui5/webcomponents/dist/List.js";</code>
401
+ * <br>
402
+ * <code>import "@ui5/webcomponents/dist/StandardListItem.js";</code> (for <code>ui5-li</code>)
403
+ * <br>
404
+ * <code>import "@ui5/webcomponents/dist/CustomListItem.js";</code> (for <code>ui5-li-custom</code>)
405
+ * <br>
406
+ * <code>import "@ui5/webcomponents/dist/GroupHeaderListItem.js";</code> (for <code>ui5-li-groupheader</code>)
407
+ *
408
+ * @constructor
409
+ * @author SAP SE
410
+ * @alias sap.ui.webcomponents.main.List
411
+ * @extends UI5Element
412
+ * @tagname ui5-list
413
+ * @appenddocs StandardListItem CustomListItem GroupHeaderListItem
414
+ * @public
415
+ */
416
+ class List extends UI5Element {
417
+ static get metadata() {
418
+ return metadata;
419
+ }
420
+
421
+ static get render() {
422
+ return litRender;
423
+ }
424
+
425
+ static get template() {
426
+ return ListTemplate;
427
+ }
428
+
429
+ static get styles() {
430
+ return listCss;
431
+ }
432
+
433
+ static async onDefine() {
434
+ List.i18nBundle = await getI18nBundle("@ui5/webcomponents");
435
+ }
436
+
437
+ static get dependencies() {
438
+ return [BusyIndicator];
439
+ }
440
+
441
+ constructor() {
442
+ super();
443
+ this.initItemNavigation();
444
+
445
+ // Stores the last focused item within the internal ul element.
446
+ this._previouslyFocusedItem = null;
447
+
448
+ // Indicates that the List is forwarding the focus before or after the internal ul.
449
+ this._forwardingFocus = false;
450
+
451
+ this._previouslySelectedItem = null;
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
+
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));
462
+ this.addEventListener("ui5-_focused", this.onItemFocused.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
+ }
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
+
618
+ initItemNavigation() {
619
+ this._itemNavigation = new ItemNavigation(this, {
620
+ skipItemsSize: PAGE_UP_DOWN_SIZE, // PAGE_UP and PAGE_DOWN will skip trough 10 items
621
+ navigationMode: NavigationMode.Vertical,
622
+ getItemsCallback: () => this.getEnabledItems(),
623
+ });
624
+ }
625
+
626
+ prepareListItems() {
627
+ const slottedItems = this.getSlottedNodes("items");
628
+
629
+ slottedItems.forEach((item, key) => {
630
+ const isLastChild = key === slottedItems.length - 1;
631
+ const showBottomBorder = this.separators === ListSeparators.All
632
+ || (this.separators === ListSeparators.Inner && !isLastChild);
633
+
634
+ item._mode = this.mode;
635
+ item.hasBorder = showBottomBorder;
636
+ });
637
+
638
+ this._previouslySelectedItem = null;
639
+ }
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
+
669
+ /*
670
+ * ITEM SELECTION BASED ON THE CURRENT MODE
671
+ */
672
+ onSelectionRequested(event) {
673
+ const previouslySelectedItems = this.getSelectedItems();
674
+ let selectionChange = false;
675
+ this._selectionRequested = true;
676
+
677
+ if (this[`handle${this.mode}`]) {
678
+ selectionChange = this[`handle${this.mode}`](event.detail.item, event.detail.selected);
679
+ }
680
+
681
+ if (selectionChange) {
682
+ this.fireEvent("selection-change", {
683
+ selectedItems: this.getSelectedItems(),
684
+ previouslySelectedItems,
685
+ selectionComponentPressed: event.detail.selectionComponentPressed,
686
+ key: event.detail.key,
687
+ });
688
+ }
689
+ }
690
+
691
+ handleSingleSelect(item) {
692
+ if (item.selected) {
693
+ return false;
694
+ }
695
+
696
+ this.deselectSelectedItems();
697
+ item.selected = true;
698
+
699
+ return true;
700
+ }
701
+
702
+ handleSingleSelectBegin(item) {
703
+ return this.handleSingleSelect(item);
704
+ }
705
+
706
+ handleSingleSelectEnd(item) {
707
+ return this.handleSingleSelect(item);
708
+ }
709
+
710
+ handleSingleSelectAuto(item) {
711
+ return this.handleSingleSelect(item);
712
+ }
713
+
714
+ handleMultiSelect(item, selected) {
715
+ item.selected = selected;
716
+ return true;
717
+ }
718
+
719
+ handleDelete(item) {
720
+ this.fireEvent("item-delete", { item });
721
+ }
722
+
723
+ deselectSelectedItems() {
724
+ this.getSelectedItems().forEach(item => { item.selected = false; });
725
+ }
726
+
727
+ getSelectedItems() {
728
+ return this.getSlottedNodes("items").filter(item => item.selected);
729
+ }
730
+
731
+ getEnabledItems() {
732
+ return this.getSlottedNodes("items").filter(item => !item.disabled);
733
+ }
734
+
735
+ _onkeydown(event) {
736
+ if (isTabNext(event)) {
737
+ this._handleTabNext(event);
738
+ }
739
+ }
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
+
785
+ /*
786
+ * KEYBOARD SUPPORT
787
+ */
788
+ _handleTabNext(event) {
789
+ // If forward navigation is performed, we check if the List has headerToolbar.
790
+ // If yes - we check if the target is at the last tabbable element of the headerToolbar
791
+ // to forward correctly the focus to the selected, previously focused or to the first list item.
792
+ let lastTabbableEl;
793
+ const target = this.getNormalizedTarget(event.target);
794
+
795
+ if (this.headerToolbar) {
796
+ lastTabbableEl = this.getHeaderToolbarLastTabbableElement();
797
+ }
798
+
799
+ if (!lastTabbableEl) {
800
+ return;
801
+ }
802
+
803
+ if (lastTabbableEl === target) {
804
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
805
+ this.focusFirstSelectedItem();
806
+ } else if (this.getPreviouslyFocusedItem()) {
807
+ this.focusPreviouslyFocusedItem();
808
+ } else {
809
+ this.focusFirstItem();
810
+ }
811
+
812
+ event.stopImmediatePropagation();
813
+ event.preventDefault();
814
+ }
815
+ }
816
+
817
+ _onfocusin(event) {
818
+ // If the focusin event does not origin from one of the 'triggers' - ignore it.
819
+ if (!this.isForwardElement(this.getNormalizedTarget(event.target))) {
820
+ event.stopImmediatePropagation();
821
+ return;
822
+ }
823
+
824
+ // The focus arrives in the List for the first time.
825
+ // If there is selected item - focus it or focus the first item.
826
+ if (!this.getPreviouslyFocusedItem()) {
827
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
828
+ this.focusFirstSelectedItem();
829
+ } else {
830
+ this.focusFirstItem();
831
+ }
832
+
833
+ event.stopImmediatePropagation();
834
+ return;
835
+ }
836
+
837
+ // The focus returns to the List,
838
+ // focus the first selected item or the previously focused element.
839
+ if (!this.getForwardingFocus()) {
840
+ if (this.getFirstItem(x => x.selected && !x.disabled)) {
841
+ this.focusFirstSelectedItem();
842
+ } else {
843
+ this.focusPreviouslyFocusedItem();
844
+ }
845
+
846
+ event.stopImmediatePropagation();
847
+ }
848
+
849
+ this.setForwardingFocus(false);
850
+ }
851
+
852
+ isForwardElement(node) {
853
+ const nodeId = node.id;
854
+ const afterElement = this.getAfterElement();
855
+ const beforeElement = this.getBeforeElement();
856
+
857
+ if (this._id === nodeId || (beforeElement && beforeElement.id === nodeId)) {
858
+ return true;
859
+ }
860
+
861
+ return afterElement && afterElement.id === nodeId;
862
+ }
863
+
864
+ onItemFocused(event) {
865
+ const target = event.target;
866
+
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
+ }
880
+ }
881
+
882
+ onItemPress(event) {
883
+ const pressedItem = event.detail.item;
884
+
885
+ if (!this._selectionRequested && this.mode !== ListMode.Delete) {
886
+ this._selectionRequested = true;
887
+ this.onSelectionRequested({
888
+ detail: {
889
+ item: pressedItem,
890
+ selectionComponentPressed: false,
891
+ selected: !pressedItem.selected,
892
+ key: event.detail.key,
893
+ },
894
+ });
895
+ }
896
+
897
+ this.fireEvent("item-press", { item: pressedItem });
898
+ this.fireEvent("item-click", { item: pressedItem });
899
+
900
+ this._selectionRequested = false;
901
+ }
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
+
912
+ onForwardBefore(event) {
913
+ this.setPreviouslyFocusedItem(event.target);
914
+ this.focusBeforeElement();
915
+ event.stopImmediatePropagation();
916
+ }
917
+
918
+ onForwardAfter(event) {
919
+ this.setPreviouslyFocusedItem(event.target);
920
+
921
+ if (!this.growsWithButton) {
922
+ this.focusAfterElement();
923
+ }
924
+ }
925
+
926
+ focusBeforeElement() {
927
+ this.setForwardingFocus(true);
928
+ this.getBeforeElement().focus();
929
+ }
930
+
931
+ focusAfterElement() {
932
+ this.setForwardingFocus(true);
933
+ this.getAfterElement().focus();
934
+ }
935
+
936
+ focusFirstItem() {
937
+ // only enabled items are focusable
938
+ const firstItem = this.getFirstItem(x => !x.disabled);
939
+
940
+ if (firstItem) {
941
+ firstItem.focus();
942
+ }
943
+ }
944
+
945
+ focusPreviouslyFocusedItem() {
946
+ const previouslyFocusedItem = this.getPreviouslyFocusedItem();
947
+
948
+ if (previouslyFocusedItem) {
949
+ previouslyFocusedItem.focus();
950
+ }
951
+ }
952
+
953
+ focusFirstSelectedItem() {
954
+ // only enabled items are focusable
955
+ const firstSelectedItem = this.getFirstItem(x => x.selected && !x.disabled);
956
+
957
+ if (firstSelectedItem) {
958
+ firstSelectedItem.focus();
959
+ }
960
+ }
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
+
979
+ setForwardingFocus(forwardingFocus) {
980
+ this._forwardingFocus = forwardingFocus;
981
+ }
982
+
983
+ getForwardingFocus() {
984
+ return this._forwardingFocus;
985
+ }
986
+
987
+ setPreviouslyFocusedItem(item) {
988
+ this._previouslyFocusedItem = item;
989
+ }
990
+
991
+ getPreviouslyFocusedItem() {
992
+ return this._previouslyFocusedItem;
993
+ }
994
+
995
+ getFirstItem(filter) {
996
+ const slottedItems = this.getSlottedNodes("items");
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;
1011
+ }
1012
+
1013
+ getAfterElement() {
1014
+ if (!this._afterElement) {
1015
+ this._afterElement = this.shadowRoot.querySelector(`#${this._id}-after`);
1016
+ }
1017
+ return this._afterElement;
1018
+ }
1019
+
1020
+ getBeforeElement() {
1021
+ if (!this._beforeElement) {
1022
+ this._beforeElement = this.shadowRoot.querySelector(`#${this._id}-before`);
1023
+ }
1024
+ return this._beforeElement;
1025
+ }
1026
+
1027
+ getHeaderToolbarLastTabbableElement() {
1028
+ return getLastTabbableElement(this.headerToolbar.getDomRef()) || this.headerToolbar.getDomRef();
1029
+ }
1030
+
1031
+ getNormalizedTarget(target) {
1032
+ let focused = target;
1033
+
1034
+ if (target.shadowRoot && target.shadowRoot.activeElement) {
1035
+ focused = target.shadowRoot.activeElement;
1036
+ }
1037
+
1038
+ return focused;
1039
+ }
1040
+
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
+ }
1049
+
1050
+ return this.growingIntersectionObserver;
1051
+ }
1052
+ }
1053
+
1054
+ List.define();
1055
+
1056
+ export default List;