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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. package/CHANGELOG.md +717 -1
  2. package/README.md +144 -41
  3. package/csp.js +7 -0
  4. package/customI18n.js +50 -0
  5. package/dist/Assets-static.js +6 -0
  6. package/dist/Assets.js +3 -2
  7. package/dist/Avatar.js +224 -40
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +48 -28
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +172 -19
  13. package/dist/Button.js +180 -49
  14. package/dist/Calendar.js +345 -554
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -64
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +47 -161
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +681 -0
  21. package/dist/CheckBox.js +154 -54
  22. package/dist/ColorPalette.js +493 -0
  23. package/dist/ColorPaletteItem.js +137 -0
  24. package/dist/ColorPalettePopover.js +219 -0
  25. package/dist/ColorPicker.js +524 -0
  26. package/dist/ComboBox.js +664 -107
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +33 -30
  30. package/dist/CustomListItem.js +38 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +468 -384
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +430 -0
  35. package/dist/DayPicker.js +513 -438
  36. package/dist/Dialog.js +501 -47
  37. package/dist/DurationPicker.js +312 -0
  38. package/dist/FileUploader.js +532 -0
  39. package/dist/GroupHeaderListItem.js +36 -8
  40. package/dist/Icon.js +221 -43
  41. package/dist/Input.js +796 -127
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +143 -35
  45. package/dist/List.js +560 -73
  46. package/dist/ListItem.js +139 -30
  47. package/dist/ListItemBase.js +53 -9
  48. package/dist/MessageStrip.js +82 -93
  49. package/dist/MonthPicker.js +181 -184
  50. package/dist/MultiComboBox.js +625 -200
  51. package/dist/MultiComboBoxItem.js +43 -0
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +123 -41
  55. package/dist/Popover.js +314 -234
  56. package/dist/Popup.js +382 -287
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +153 -66
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +291 -0
  62. package/dist/ResponsivePopover.js +117 -61
  63. package/dist/SegmentedButton.js +290 -0
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +500 -110
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +46 -24
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +146 -0
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +62 -48
  74. package/dist/Tab.js +184 -18
  75. package/dist/TabContainer.js +337 -235
  76. package/dist/TabSeparator.js +2 -1
  77. package/dist/Table.js +492 -39
  78. package/dist/TableCell.js +13 -15
  79. package/dist/TableColumn.js +18 -7
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +254 -31
  82. package/dist/TextArea.js +314 -38
  83. package/dist/TimePicker.js +166 -0
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +18 -10
  87. package/dist/Toast.js +63 -37
  88. package/dist/ToggleButton.js +21 -13
  89. package/dist/Token.js +87 -49
  90. package/dist/Tokenizer.js +250 -65
  91. package/dist/Tree.js +443 -0
  92. package/dist/TreeItem.js +168 -0
  93. package/dist/TreeListItem.js +332 -0
  94. package/dist/WheelSlider.js +435 -0
  95. package/dist/YearPicker.js +201 -258
  96. package/dist/api.json +6877 -0
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +35 -1
  99. package/dist/features/InputSuggestions.js +294 -52
  100. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
  105. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
  110. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  112. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  113. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
  115. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
  119. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
  123. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
  136. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  148. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -0
  151. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -0
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -0
  155. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
  156. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
  157. package/dist/generated/i18n/i18n-defaults.js +2 -2
  158. package/dist/generated/json-imports/Themes-static.js +35 -0
  159. package/dist/generated/json-imports/Themes.js +23 -13
  160. package/dist/generated/json-imports/i18n-static.js +162 -0
  161. package/dist/generated/json-imports/i18n.js +113 -89
  162. package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
  163. package/dist/generated/templates/AvatarTemplate.lit.js +9 -9
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -6
  165. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
  166. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
  167. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -5
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -6
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -4
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -4
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -8
  173. package/dist/generated/templates/CarouselTemplate.lit.js +16 -0
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -7
  175. package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
  176. package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
  177. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
  178. package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
  179. package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
  180. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -5
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -5
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -12
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -4
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +12 -0
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -8
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +10 -0
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -4
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -6
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -6
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -8
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -4
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -5
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -12
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -8
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +6 -22
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -7
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -8
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +16 -0
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -6
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -9
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +7 -0
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -4
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +17 -0
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -7
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +14 -0
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -11
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +7 -0
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -4
  216. package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
  217. package/dist/generated/templates/SliderTemplate.lit.js +12 -0
  218. package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -18
  219. package/dist/generated/templates/StepInputTemplate.lit.js +10 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +27 -0
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -6
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -8
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -18
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +9 -0
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +11 -0
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -4
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -4
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -4
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -4
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -6
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +11 -0
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +7 -0
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +9 -0
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -10
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -4
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -6
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -5
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +12 -0
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -6
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +21 -0
  245. package/dist/generated/templates/TreeTemplate.lit.js +8 -0
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +10 -0
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +6 -7
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +6 -7
  251. package/dist/generated/themes/Breadcrumbs.css.js +8 -0
  252. package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
  253. package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
  254. package/dist/generated/themes/BusyIndicator.css.js +6 -7
  255. package/dist/generated/themes/Button.css.js +6 -7
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +6 -7
  258. package/dist/generated/themes/CalendarHeader.css.js +6 -7
  259. package/dist/generated/themes/Card.css.js +6 -7
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +8 -0
  262. package/dist/generated/themes/CheckBox.css.js +6 -7
  263. package/dist/generated/themes/ColorPalette.css.js +8 -0
  264. package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
  265. package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
  266. package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
  267. package/dist/generated/themes/ColorPicker.css.js +8 -0
  268. package/dist/generated/themes/ComboBox.css.js +6 -7
  269. package/dist/generated/themes/ComboBoxPopover.css.js +6 -7
  270. package/dist/generated/themes/CustomListItem.css.js +6 -7
  271. package/dist/generated/themes/DatePicker.css.js +6 -7
  272. package/dist/generated/themes/DatePickerPopover.css.js +6 -7
  273. package/dist/generated/themes/DateRangePicker.css.js +8 -0
  274. package/dist/generated/themes/DateTimePicker.css.js +8 -0
  275. package/dist/generated/themes/DateTimePickerPopover.css.js +8 -0
  276. package/dist/generated/themes/DayPicker.css.js +6 -7
  277. package/dist/generated/themes/Dialog.css.js +6 -7
  278. package/dist/generated/themes/FileUploader.css.js +8 -0
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +6 -7
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +6 -7
  282. package/dist/generated/themes/Input.css.js +6 -7
  283. package/dist/generated/themes/InputIcon.css.js +6 -7
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +6 -7
  285. package/dist/generated/themes/Label.css.js +6 -7
  286. package/dist/generated/themes/Link.css.js +6 -7
  287. package/dist/generated/themes/List.css.js +6 -7
  288. package/dist/generated/themes/ListItem.css.js +6 -7
  289. package/dist/generated/themes/ListItemBase.css.js +6 -7
  290. package/dist/generated/themes/MessageStrip.css.js +6 -7
  291. package/dist/generated/themes/MonthPicker.css.js +6 -7
  292. package/dist/generated/themes/MultiComboBox.css.js +6 -7
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +6 -7
  295. package/dist/generated/themes/Popover.css.js +6 -7
  296. package/dist/generated/themes/Popup.css.js +6 -7
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +8 -0
  299. package/dist/generated/themes/PopupsCommon.css.js +8 -0
  300. package/dist/generated/themes/ProgressIndicator.css.js +8 -0
  301. package/dist/generated/themes/RadioButton.css.js +6 -7
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +6 -7
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +6 -7
  305. package/dist/generated/themes/SegmentedButton.css.js +8 -0
  306. package/dist/generated/themes/Select.css.js +6 -7
  307. package/dist/generated/themes/SelectPopover.css.js +8 -0
  308. package/dist/generated/themes/SliderBase.css.js +8 -0
  309. package/dist/generated/themes/StepInput.css.js +8 -0
  310. package/dist/generated/themes/Suggestions.css.js +8 -0
  311. package/dist/generated/themes/Switch.css.js +6 -7
  312. package/dist/generated/themes/Tab.css.js +6 -7
  313. package/dist/generated/themes/TabContainer.css.js +6 -7
  314. package/dist/generated/themes/TabInOverflow.css.js +8 -0
  315. package/dist/generated/themes/TabInStrip.css.js +8 -0
  316. package/dist/generated/themes/Table.css.js +6 -7
  317. package/dist/generated/themes/TableCell.css.js +6 -7
  318. package/dist/generated/themes/TableColumn.css.js +6 -7
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +6 -7
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +6 -7
  323. package/dist/generated/themes/TimePicker.css.js +8 -0
  324. package/dist/generated/themes/TimePickerPopover.css.js +8 -0
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +6 -7
  327. package/dist/generated/themes/Toast.css.js +6 -7
  328. package/dist/generated/themes/ToggleButton.css.js +6 -7
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +6 -7
  331. package/dist/generated/themes/Tokenizer.css.js +6 -7
  332. package/dist/generated/themes/Tree.css.js +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  334. package/dist/generated/themes/ValueStateMessage.css.js +8 -0
  335. package/dist/generated/themes/WheelSlider.css.js +8 -0
  336. package/dist/generated/themes/YearPicker.css.js +6 -7
  337. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  338. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -0
  340. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  342. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -0
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -0
  344. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
  345. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
  346. package/dist/i18n/messagebundle.properties +335 -0
  347. package/dist/i18n/messagebundle_ar.properties +224 -0
  348. package/dist/i18n/messagebundle_bg.properties +224 -0
  349. package/dist/i18n/messagebundle_ca.properties +224 -0
  350. package/dist/i18n/messagebundle_cs.properties +224 -0
  351. package/dist/i18n/messagebundle_cy.properties +224 -0
  352. package/dist/i18n/messagebundle_da.properties +224 -0
  353. package/dist/i18n/messagebundle_de.properties +224 -0
  354. package/dist/i18n/messagebundle_el.properties +224 -0
  355. package/dist/i18n/messagebundle_en.properties +224 -0
  356. package/dist/i18n/messagebundle_en_GB.properties +224 -0
  357. package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
  358. package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
  359. package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
  360. package/dist/i18n/messagebundle_es.properties +224 -0
  361. package/dist/i18n/messagebundle_es_MX.properties +224 -0
  362. package/dist/i18n/messagebundle_et.properties +224 -0
  363. package/dist/i18n/messagebundle_fi.properties +224 -0
  364. package/dist/i18n/messagebundle_fr.properties +224 -0
  365. package/dist/i18n/messagebundle_fr_CA.properties +224 -0
  366. package/dist/i18n/messagebundle_hi.properties +224 -0
  367. package/dist/i18n/messagebundle_hr.properties +224 -0
  368. package/dist/i18n/messagebundle_hu.properties +224 -0
  369. package/dist/i18n/messagebundle_id.properties +224 -0
  370. package/dist/i18n/messagebundle_in.properties +172 -0
  371. package/dist/i18n/messagebundle_it.properties +224 -0
  372. package/dist/i18n/messagebundle_iw.properties +224 -0
  373. package/dist/i18n/messagebundle_ja.properties +224 -0
  374. package/dist/i18n/messagebundle_kk.properties +224 -0
  375. package/dist/i18n/messagebundle_ko.properties +224 -0
  376. package/dist/i18n/messagebundle_lt.properties +224 -0
  377. package/dist/i18n/messagebundle_lv.properties +224 -0
  378. package/dist/i18n/messagebundle_ms.properties +224 -0
  379. package/dist/i18n/messagebundle_nl.properties +224 -0
  380. package/dist/i18n/messagebundle_no.properties +224 -0
  381. package/dist/i18n/messagebundle_pl.properties +224 -0
  382. package/dist/i18n/messagebundle_pt.properties +224 -0
  383. package/dist/i18n/messagebundle_pt_PT.properties +224 -0
  384. package/dist/i18n/messagebundle_ro.properties +224 -0
  385. package/dist/i18n/messagebundle_ru.properties +224 -0
  386. package/dist/i18n/messagebundle_sh.properties +224 -0
  387. package/dist/i18n/messagebundle_sk.properties +224 -0
  388. package/dist/i18n/messagebundle_sl.properties +224 -0
  389. package/dist/i18n/messagebundle_sv.properties +224 -0
  390. package/dist/i18n/messagebundle_th.properties +224 -0
  391. package/dist/i18n/messagebundle_tr.properties +224 -0
  392. package/dist/i18n/messagebundle_uk.properties +224 -0
  393. package/dist/i18n/messagebundle_vi.properties +224 -0
  394. package/dist/i18n/messagebundle_zh_CN.properties +224 -0
  395. package/dist/i18n/messagebundle_zh_TW.properties +224 -0
  396. package/dist/popup-utils/OpenedPopupsRegistry.js +18 -13
  397. package/dist/popup-utils/PopoverRegistry.js +55 -21
  398. package/dist/timepicker-utils/TimeSlider.js +103 -0
  399. package/dist/types/{AvatarBackgroundColor.js → AvatarColorScheme.js} +9 -9
  400. package/dist/types/AvatarGroupType.js +43 -0
  401. package/dist/types/AvatarShape.js +1 -1
  402. package/dist/types/AvatarSize.js +1 -1
  403. package/dist/types/BreadcrumbsDesign.js +42 -0
  404. package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
  405. package/dist/types/BusyIndicatorSize.js +1 -1
  406. package/dist/types/ButtonDesign.js +8 -1
  407. package/dist/types/CalendarSelectionMode.js +47 -0
  408. package/dist/types/CarouselArrowsPlacement.js +40 -0
  409. package/dist/types/GrowingMode.js +48 -0
  410. package/dist/types/InputType.js +7 -7
  411. package/dist/types/LinkDesign.js +1 -1
  412. package/dist/types/ListGrowingMode.js +15 -0
  413. package/dist/types/ListItemType.js +8 -1
  414. package/dist/types/ListMode.js +9 -1
  415. package/dist/types/ListSeparators.js +1 -1
  416. package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  417. package/dist/types/PanelAccessibleRole.js +1 -1
  418. package/dist/types/PopoverHorizontalAlign.js +1 -1
  419. package/dist/types/PopoverPlacementType.js +2 -2
  420. package/dist/types/PopoverVerticalAlign.js +1 -2
  421. package/dist/types/Priority.js +55 -0
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +40 -0
  425. package/dist/types/TabLayout.js +40 -0
  426. package/dist/types/TableGrowingMode.js +15 -0
  427. package/dist/types/TableMode.js +47 -0
  428. package/dist/types/TableRowType.js +40 -0
  429. package/dist/types/TitleLevel.js +1 -1
  430. package/dist/types/ToastPlacement.js +1 -2
  431. package/dist/types/WrappingType.js +41 -0
  432. package/dist/webcomponentsjs/CHANGELOG.md +61 -0
  433. package/dist/webcomponentsjs/README.md +64 -47
  434. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
  435. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
  436. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
  437. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  438. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  439. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  440. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
  441. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
  442. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
  443. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
  444. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
  445. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
  446. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
  447. package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
  448. package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
  449. package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
  450. package/package-scripts.js +1 -0
  451. package/package.json +23 -8
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +7 -0
  454. package/src/Avatar.hbs +20 -0
  455. package/src/Avatar.js +392 -0
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +14 -0
  459. package/src/Badge.js +165 -0
  460. package/src/Breadcrumbs.hbs +42 -0
  461. package/src/Breadcrumbs.js +563 -0
  462. package/src/BreadcrumbsItem.js +109 -0
  463. package/src/BreadcrumbsPopover.hbs +28 -0
  464. package/src/BusyIndicator.hbs +32 -0
  465. package/src/BusyIndicator.js +269 -0
  466. package/src/Button.hbs +45 -0
  467. package/src/Button.js +463 -0
  468. package/src/Calendar.hbs +69 -0
  469. package/src/Calendar.js +489 -0
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +54 -0
  472. package/src/CalendarHeader.js +209 -0
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +14 -0
  475. package/src/Card.js +160 -0
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +85 -0
  479. package/src/Carousel.js +681 -0
  480. package/src/CheckBox.hbs +44 -0
  481. package/src/CheckBox.js +424 -0
  482. package/src/ColorPalette.hbs +52 -0
  483. package/src/ColorPalette.js +493 -0
  484. package/src/ColorPaletteDialog.hbs +18 -0
  485. package/src/ColorPaletteItem.hbs +11 -0
  486. package/src/ColorPaletteItem.js +137 -0
  487. package/src/ColorPalettePopover.hbs +29 -0
  488. package/src/ColorPalettePopover.js +219 -0
  489. package/src/ColorPicker.hbs +98 -0
  490. package/src/ColorPicker.js +524 -0
  491. package/src/ComboBox.hbs +49 -0
  492. package/src/ComboBox.js +1041 -0
  493. package/src/ComboBoxFilters.js +40 -0
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +49 -0
  496. package/src/ComboBoxPopover.hbs +125 -0
  497. package/src/CustomListItem.hbs +5 -0
  498. package/src/CustomListItem.js +99 -0
  499. package/src/DateComponentBase.js +170 -0
  500. package/src/DatePicker.hbs +44 -0
  501. package/src/DatePicker.js +823 -0
  502. package/src/DatePickerPopover.hbs +63 -0
  503. package/src/DateRangePicker.js +328 -0
  504. package/src/DateTimePicker.js +430 -0
  505. package/src/DateTimePickerPopover.hbs +74 -0
  506. package/src/DayPicker.hbs +66 -0
  507. package/src/DayPicker.js +754 -0
  508. package/src/Dialog.hbs +35 -0
  509. package/src/Dialog.js +601 -0
  510. package/src/DurationPicker.js +312 -0
  511. package/src/FileUploader.hbs +40 -0
  512. package/src/FileUploader.js +532 -0
  513. package/src/FileUploaderPopover.hbs +25 -0
  514. package/src/GroupHeaderListItem.hbs +15 -0
  515. package/src/GroupHeaderListItem.js +94 -0
  516. package/src/Icon.hbs +25 -0
  517. package/src/Icon.js +373 -0
  518. package/src/Input.hbs +78 -0
  519. package/src/Input.js +1381 -0
  520. package/src/InputPopover.hbs +118 -0
  521. package/src/Interfaces.js +192 -0
  522. package/src/Label.hbs +13 -0
  523. package/src/Label.js +152 -0
  524. package/src/Link.hbs +20 -0
  525. package/src/Link.js +349 -0
  526. package/src/List.hbs +89 -0
  527. package/src/List.js +1056 -0
  528. package/src/ListItem.hbs +102 -0
  529. package/src/ListItem.js +371 -0
  530. package/src/ListItemBase.js +179 -0
  531. package/src/MessageStrip.hbs +34 -0
  532. package/src/MessageStrip.js +227 -0
  533. package/src/MonthPicker.hbs +29 -0
  534. package/src/MonthPicker.js +299 -0
  535. package/src/MultiComboBox.hbs +78 -0
  536. package/src/MultiComboBox.js +1091 -0
  537. package/src/MultiComboBoxItem.js +43 -0
  538. package/src/MultiComboBoxPopover.hbs +133 -0
  539. package/src/MultiInput.hbs +41 -0
  540. package/src/MultiInput.js +301 -0
  541. package/src/Option.js +115 -0
  542. package/src/Panel.hbs +63 -0
  543. package/src/Panel.js +462 -0
  544. package/src/Popover.hbs +25 -0
  545. package/src/Popover.js +786 -0
  546. package/src/Popup.hbs +34 -0
  547. package/src/Popup.js +567 -0
  548. package/src/PopupBlockLayer.hbs +7 -0
  549. package/src/ProgressIndicator.hbs +35 -0
  550. package/src/ProgressIndicator.js +235 -0
  551. package/src/RadioButton.hbs +33 -0
  552. package/src/RadioButton.js +494 -0
  553. package/src/RadioButtonGroup.js +205 -0
  554. package/src/RangeSlider.hbs +70 -0
  555. package/src/RangeSlider.js +769 -0
  556. package/src/RatingIndicator.hbs +33 -0
  557. package/src/RatingIndicator.js +291 -0
  558. package/src/ResponsivePopover.hbs +39 -0
  559. package/src/ResponsivePopover.js +206 -0
  560. package/src/SegmentedButton.hbs +17 -0
  561. package/src/SegmentedButton.js +290 -0
  562. package/src/SegmentedButtonItem.hbs +42 -0
  563. package/src/SegmentedButtonItem.js +109 -0
  564. package/src/Select.hbs +45 -0
  565. package/src/Select.js +834 -0
  566. package/src/SelectPopover.hbs +89 -0
  567. package/src/Slider.hbs +42 -0
  568. package/src/Slider.js +320 -0
  569. package/src/SliderBase.hbs +38 -0
  570. package/src/SliderBase.js +842 -0
  571. package/src/StandardListItem.hbs +44 -0
  572. package/src/StandardListItem.js +191 -0
  573. package/src/StepInput.hbs +80 -0
  574. package/src/StepInput.js +684 -0
  575. package/src/SuggestionGroupItem.js +64 -0
  576. package/src/SuggestionItem.js +146 -0
  577. package/src/SuggestionListItem.hbs +33 -0
  578. package/src/SuggestionListItem.js +76 -0
  579. package/src/Switch.hbs +50 -0
  580. package/src/Switch.js +262 -0
  581. package/src/Tab.hbs +3 -0
  582. package/src/Tab.js +334 -0
  583. package/src/TabContainer.hbs +93 -0
  584. package/src/TabContainer.js +679 -0
  585. package/src/TabContainerPopover.hbs +24 -0
  586. package/src/TabInOverflow.hbs +22 -0
  587. package/src/TabInStrip.hbs +43 -0
  588. package/src/TabSeparator.hbs +1 -0
  589. package/src/TabSeparator.js +44 -0
  590. package/src/Table.hbs +99 -0
  591. package/src/Table.js +761 -0
  592. package/src/TableCell.hbs +7 -0
  593. package/src/TableCell.js +88 -0
  594. package/src/TableColumn.hbs +8 -0
  595. package/src/TableColumn.js +136 -0
  596. package/src/TableGroupRow.hbs +12 -0
  597. package/src/TableGroupRow.js +160 -0
  598. package/src/TableRow.hbs +61 -0
  599. package/src/TableRow.js +388 -0
  600. package/src/TextArea.hbs +50 -0
  601. package/src/TextArea.js +691 -0
  602. package/src/TextAreaPopover.hbs +28 -0
  603. package/src/TimePicker.hbs +35 -0
  604. package/src/TimePicker.js +166 -0
  605. package/src/TimePickerBase.js +463 -0
  606. package/src/TimePickerPopover.hbs +34 -0
  607. package/src/TimeSelection.hbs +60 -0
  608. package/src/TimeSelection.js +493 -0
  609. package/src/Title.hbs +47 -0
  610. package/src/Title.js +132 -0
  611. package/src/Toast.hbs +13 -0
  612. package/src/Toast.js +243 -0
  613. package/src/ToggleButton.hbs +5 -0
  614. package/src/ToggleButton.js +84 -0
  615. package/src/Token.hbs +30 -0
  616. package/src/Token.js +219 -0
  617. package/src/Tokenizer.hbs +27 -0
  618. package/src/Tokenizer.js +414 -0
  619. package/src/TokenizerPopover.hbs +50 -0
  620. package/src/Tree.hbs +42 -0
  621. package/src/Tree.js +443 -0
  622. package/src/TreeItem.js +168 -0
  623. package/src/TreeListItem.hbs +48 -0
  624. package/src/TreeListItem.js +332 -0
  625. package/src/WheelSlider.hbs +48 -0
  626. package/src/WheelSlider.js +435 -0
  627. package/src/YearPicker.hbs +27 -0
  628. package/src/YearPicker.js +324 -0
  629. package/src/features/ColorPaletteMoreColors.js +42 -0
  630. package/src/features/InputElementsFormSupport.js +88 -0
  631. package/src/features/InputSuggestions.js +530 -0
  632. package/src/i18n/messagebundle.properties +335 -0
  633. package/src/i18n/messagebundle_ar.properties +224 -0
  634. package/src/i18n/messagebundle_bg.properties +224 -0
  635. package/src/i18n/messagebundle_ca.properties +224 -0
  636. package/src/i18n/messagebundle_cs.properties +224 -0
  637. package/src/i18n/messagebundle_cy.properties +224 -0
  638. package/src/i18n/messagebundle_da.properties +224 -0
  639. package/src/i18n/messagebundle_de.properties +224 -0
  640. package/src/i18n/messagebundle_el.properties +224 -0
  641. package/src/i18n/messagebundle_en.properties +224 -0
  642. package/src/i18n/messagebundle_en_GB.properties +224 -0
  643. package/src/i18n/messagebundle_en_US_sappsd.properties +224 -0
  644. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  645. package/src/i18n/messagebundle_en_US_saptrc.properties +224 -0
  646. package/src/i18n/messagebundle_es.properties +224 -0
  647. package/src/i18n/messagebundle_es_MX.properties +224 -0
  648. package/src/i18n/messagebundle_et.properties +224 -0
  649. package/src/i18n/messagebundle_fi.properties +224 -0
  650. package/src/i18n/messagebundle_fr.properties +224 -0
  651. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  652. package/src/i18n/messagebundle_hi.properties +224 -0
  653. package/src/i18n/messagebundle_hr.properties +224 -0
  654. package/src/i18n/messagebundle_hu.properties +224 -0
  655. package/src/i18n/messagebundle_id.properties +224 -0
  656. package/src/i18n/messagebundle_in.properties +172 -0
  657. package/src/i18n/messagebundle_it.properties +224 -0
  658. package/src/i18n/messagebundle_iw.properties +224 -0
  659. package/src/i18n/messagebundle_ja.properties +224 -0
  660. package/src/i18n/messagebundle_kk.properties +224 -0
  661. package/src/i18n/messagebundle_ko.properties +224 -0
  662. package/src/i18n/messagebundle_lt.properties +224 -0
  663. package/src/i18n/messagebundle_lv.properties +224 -0
  664. package/src/i18n/messagebundle_ms.properties +224 -0
  665. package/src/i18n/messagebundle_nl.properties +224 -0
  666. package/src/i18n/messagebundle_no.properties +224 -0
  667. package/src/i18n/messagebundle_pl.properties +224 -0
  668. package/src/i18n/messagebundle_pt.properties +224 -0
  669. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  670. package/src/i18n/messagebundle_ro.properties +224 -0
  671. package/src/i18n/messagebundle_ru.properties +224 -0
  672. package/src/i18n/messagebundle_sh.properties +224 -0
  673. package/src/i18n/messagebundle_sk.properties +224 -0
  674. package/src/i18n/messagebundle_sl.properties +224 -0
  675. package/src/i18n/messagebundle_sv.properties +224 -0
  676. package/src/i18n/messagebundle_th.properties +224 -0
  677. package/src/i18n/messagebundle_tr.properties +224 -0
  678. package/src/i18n/messagebundle_uk.properties +224 -0
  679. package/src/i18n/messagebundle_vi.properties +224 -0
  680. package/src/i18n/messagebundle_zh_CN.properties +224 -0
  681. package/src/i18n/messagebundle_zh_TW.properties +224 -0
  682. package/src/popup-utils/OpenedPopupsRegistry.js +50 -0
  683. package/src/popup-utils/PopoverRegistry.js +145 -0
  684. package/src/timepicker-utils/TimeSlider.js +103 -0
  685. package/src/types/AvatarColorScheme.js +104 -0
  686. package/src/types/AvatarGroupType.js +43 -0
  687. package/src/types/AvatarShape.js +41 -0
  688. package/src/types/AvatarSize.js +67 -0
  689. package/src/types/BreadcrumbsDesign.js +42 -0
  690. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  691. package/src/types/BusyIndicatorSize.js +47 -0
  692. package/src/types/ButtonDesign.js +68 -0
  693. package/src/types/CalendarSelectionMode.js +47 -0
  694. package/src/types/CarouselArrowsPlacement.js +40 -0
  695. package/src/types/GrowingMode.js +48 -0
  696. package/src/types/InputType.js +68 -0
  697. package/src/types/LinkDesign.js +47 -0
  698. package/src/types/ListGrowingMode.js +15 -0
  699. package/src/types/ListItemType.js +47 -0
  700. package/src/types/ListMode.js +77 -0
  701. package/src/types/ListSeparators.js +46 -0
  702. package/src/types/MessageStripDesign.js +54 -0
  703. package/src/types/PanelAccessibleRole.js +48 -0
  704. package/src/types/PopoverHorizontalAlign.js +54 -0
  705. package/src/types/PopoverPlacementType.js +54 -0
  706. package/src/types/PopoverVerticalAlign.js +54 -0
  707. package/src/types/Priority.js +55 -0
  708. package/src/types/SemanticColor.js +61 -0
  709. package/src/types/SwitchDesign.js +40 -0
  710. package/src/types/TabContainerTabsPlacement.js +40 -0
  711. package/src/types/TabLayout.js +40 -0
  712. package/src/types/TableGrowingMode.js +15 -0
  713. package/src/types/TableMode.js +47 -0
  714. package/src/types/TableRowType.js +40 -0
  715. package/src/types/TitleLevel.js +68 -0
  716. package/src/types/ToastPlacement.js +91 -0
  717. package/src/types/WrappingType.js +41 -0
  718. package/dist/Timeline.js +0 -81
  719. package/dist/TimelineItem.js +0 -163
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  722. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  723. package/dist/generated/themes/ComboBoxItem.css.js +0 -9
  724. package/dist/generated/themes/TabContainerPopup.css.js +0 -9
  725. package/dist/generated/themes/Timeline.css.js +0 -9
  726. package/dist/generated/themes/TimelineItem.css.js +0 -9
  727. package/dist/popup-utils/PopupUtils.js +0 -42
  728. package/dist/types/AvatarFitType.js +0 -40
  729. package/dist/webcomponentsjs/package.json +0 -46
  730. package/index.js +0 -2
package/dist/Calendar.js CHANGED
@@ -1,23 +1,22 @@
1
- import "@ui5/webcomponents-base/dist/shims/jquery-shim.js";
2
- import "@ui5/webcomponents-base/dist/shims/Core-shim.js";
3
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
- import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
6
- import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
7
- import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
8
- import { getFormatLocale } from "@ui5/webcomponents-base/dist/FormatSettings.js";
9
- import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
10
- import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
11
- import CalendarDate from "@ui5/webcomponents-base/dist/dates/CalendarDate.js";
12
- import CalendarType from "@ui5/webcomponents-base/dist/dates/CalendarType.js";
13
- import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
1
+ import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
2
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
3
+ import {
4
+ isF4,
5
+ isF4Shift,
6
+ } from "@ui5/webcomponents-base/dist/Keys.js";
7
+ import getCachedLocaleDataInstance from "@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js";
8
+ import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
9
+ import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
10
+ import * as CalendarDateComponent from "./CalendarDate.js";
11
+ import CalendarPart from "./CalendarPart.js";
14
12
  import CalendarHeader from "./CalendarHeader.js";
15
13
  import DayPicker from "./DayPicker.js";
16
14
  import MonthPicker from "./MonthPicker.js";
17
15
  import YearPicker from "./YearPicker.js";
16
+ import CalendarSelectionMode from "./types/CalendarSelectionMode.js";
18
17
 
19
18
  // Default calendar for bundling
20
- import "@ui5/webcomponents-utils/dist/sap/ui/core/date/Gregorian.js";
19
+ import "@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js";
21
20
 
22
21
  // Template
23
22
  import CalendarTemplate from "./generated/templates/CalendarTemplate.lit.js";
@@ -32,122 +31,213 @@ const metadata = {
32
31
  tag: "ui5-calendar",
33
32
  properties: /** @lends sap.ui.webcomponents.main.Calendar.prototype */ {
34
33
  /**
35
- * Defines the UNIX timestamp - seconds since 00:00:00 UTC on Jan 1, 1970.
36
- * @type {Integer}
37
- * @public
38
- */
39
- timestamp: {
40
- type: Integer,
41
- },
42
-
43
- /**
44
- * Defines the calendar type used for display.
45
- * If not defined, the calendar type of the global configuration is used.
46
- * Available options are: "Gregorian", "Islamic", "Japanese", "Buddhist" and "Persian".
47
- * @type {string}
48
- * @public
49
- */
50
- primaryCalendarType: {
51
- type: CalendarType,
52
- },
53
-
54
- /**
55
- * Defines the selected dates as UTC timestamps.
56
- * @type {Array}
34
+ * Defines the type of selection used in the calendar component.
35
+ * Accepted property values are:<br>
36
+ * <ul>
37
+ * <li><code>CalendarSelectionMode.Single</code> - enables a single date selection.(default value)</li>
38
+ * <li><code>CalendarSelectionMode.Range</code> - enables selection of a date range.</li>
39
+ * <li><code>CalendarSelectionMode.Multiple</code> - enables selection of multiple dates.</li>
40
+ * </ul>
41
+ * @type {CalendarSelectionMode}
42
+ * @defaultvalue "Single"
57
43
  * @public
58
44
  */
59
- selectedDates: {
60
- type: Integer,
61
- multiple: true,
45
+ selectionMode: {
46
+ type: CalendarSelectionMode,
47
+ defaultValue: CalendarSelectionMode.Single,
62
48
  },
63
49
 
64
50
  /**
65
- * Determines the мinimum date available for selection.
51
+ * Defines the visibility of the week numbers column.
52
+ * <br><br>
66
53
  *
67
- * @type {String}
68
- * @defaultvalue ""
69
- * @since 1.0.0-rc.6
54
+ * <b>Note:</b> For calendars other than Gregorian,
55
+ * the week numbers are not displayed regardless of what is set.
56
+ *
57
+ * @type {boolean}
58
+ * @defaultvalue false
70
59
  * @public
71
60
  */
72
- minDate: {
73
- type: String,
61
+ hideWeekNumbers: {
62
+ type: Boolean,
74
63
  },
75
64
 
76
65
  /**
77
- * Determines the maximum date available for selection.
78
- *
79
- * @type {String}
80
- * @defaultvalue ""
81
- * @since 1.0.0-rc.6
82
- * @public
66
+ * Which picker is currently visible to the user: day/month/year
83
67
  */
84
- maxDate: {
68
+ _currentPicker: {
85
69
  type: String,
70
+ defaultValue: "day",
86
71
  },
87
72
 
88
- _header: {
89
- type: Object,
90
- },
91
-
92
- _oMonth: {
93
- type: Object,
73
+ _previousButtonDisabled: {
74
+ type: Boolean,
94
75
  },
95
76
 
96
- _monthPicker: {
97
- type: Object,
77
+ _nextButtonDisabled: {
78
+ type: Boolean,
98
79
  },
99
80
 
100
- _yearPicker: {
101
- type: Object,
102
- },
103
-
104
- _calendarWidth: {
81
+ _headerMonthButtonText: {
105
82
  type: String,
106
- noAttribute: true,
107
83
  },
108
84
 
109
- _calendarHeight: {
85
+ _headerYearButtonText: {
110
86
  type: String,
111
- noAttribute: true,
112
87
  },
113
-
114
- formatPattern: {
115
- type: String,
88
+ },
89
+ managedSlots: true,
90
+ slots: /** @lends sap.ui.webcomponents.main.Calendar.prototype */ {
91
+ /**
92
+ * Defines the selected date or dates (depending on the <code>selectionMode</code> property) for this calendar as instances of <code>ui5-date</code>
93
+ *
94
+ * @type {sap.ui.webcomponents.main.ICalendarDate[]}
95
+ * @slot dates
96
+ * @public
97
+ */
98
+ "default": {
99
+ propertyName: "dates",
100
+ type: HTMLElement,
101
+ invalidateOnChildChange: true,
116
102
  },
117
103
  },
118
104
  events: /** @lends sap.ui.webcomponents.main.Calendar.prototype */ {
119
105
  /**
120
- * Fired when the selected dates changed.
121
- * @event
122
- * @param {Array} dates The selected dates' timestamps
106
+ * Fired when the selected dates change.
107
+ * <b>Note:</b> If you call <code>preventDefault()</code> for this event, the component will not
108
+ * create instances of <code>ui5-date</code> for the newly selected dates. In that case you should do this manually.
109
+ *
110
+ * @event sap.ui.webcomponents.main.Calendar#selected-dates-change
111
+ * @allowPreventDefault
112
+ * @param {Array} values The selected dates
113
+ * @param {Array} dates The selected dates as UTC timestamps
123
114
  * @public
124
115
  */
125
- selectedDatesChange: { type: Array },
116
+ "selected-dates-change": {
117
+ detail: {
118
+ dates: { type: Array },
119
+ values: { type: Array },
120
+ },
121
+ },
122
+
123
+ "show-month-press": {},
124
+ "show-year-press": {},
126
125
  },
127
126
  };
128
127
 
129
128
  /**
130
129
  * @class
131
130
  *
132
- * The <code>ui5-calendar</code> can be used standale to display the years, months, weeks and days,
133
- * but the main purpose of the <code>ui5-calendar</code> is to be used within a <code>ui5-datepicker</code>.
131
+ * <h3 class="comment-api-title">Overview</h3>
132
+ *
133
+ * The <code>ui5-calendar</code> component allows users to select one or more dates.
134
+ * <br><br>
135
+ * Currently selected dates are represented with instances of <code>ui5-date</code> as
136
+ * children of the <code>ui5-calendar</code>. The value property of each <code>ui5-date</code> must be a
137
+ * date string, correctly formatted according to the <code>ui5-calendar</code>'s <code>formatPattern</code> property.
138
+ * Whenever the user changes the date selection, <code>ui5-calendar</code> will automatically create/remove instances
139
+ * of <code>ui5-date</code> in itself, unless you prevent this behavior by calling <code>preventDefault()</code> for the
140
+ * <code>selected-dates-change</code> event. This is useful if you want to control the selected dates externally.
141
+ * <br><br>
142
+ *
143
+ * <h3>Usage</h3>
144
+ *
145
+ * The user can navigate to a particular date by:
146
+ * <br>
147
+ * <ul>
148
+ * <li>Pressing over a month inside the months view</li>
149
+ * <li>Pressing over an year inside the years view</li>
150
+ * </ul>
151
+ * <br>
152
+ * The user can confirm a date selection by pressing over a date inside the days view.
153
+ * <br><br>
154
+ *
155
+ * <h3>Keyboard Handling</h3>
156
+ * The <code>ui5-calendar</code> provides advanced keyboard handling.
157
+ * When a picker is showed and focused the user can use the following keyboard
158
+ * shortcuts in order to perform a navigation:
159
+ * <br>
160
+ * - Day picker: <br>
161
+ * <ul>
162
+ * <li>[F4] - Shows month picker</li>
163
+ * <li>[SHIFT] + [F4] - Shows year picker</li>
164
+ * <li>[PAGEUP] - Navigate to the previous month</li>
165
+ * <li>[PAGEDOWN] - Navigate to the next month</li>
166
+ * <li>[SHIFT] + [PAGEUP] - Navigate to the previous year</li>
167
+ * <li>[SHIFT] + [PAGEDOWN] - Navigate to the next year</li>
168
+ * <li>[CTRL] + [SHIFT] + [PAGEUP] - Navigate ten years backwards</li>
169
+ * <li>[CTRL] + [SHIFT] + [PAGEDOWN] - Navigate ten years forwards</li>
170
+ * <li>[HOME] - Navigate to the first day of the week</li>
171
+ * <li>[END] - Navigate to the last day of the week</li>
172
+ * <li>[CTRL] + [HOME] - Navigate to the first day of the month</li>
173
+ * <li>[CTRL] + [END] - Navigate to the last day of the month</li>
174
+ * </ul>
175
+ * <br>
176
+ * - Month picker: <br>
177
+ * <ul>
178
+ * <li>[PAGEUP] - Navigate to the previous year</li>
179
+ * <li>[PAGEDOWN] - Navigate to the next year</li>
180
+ * <li>[HOME] - Navigate to the first month of the current row</li>
181
+ * <li>[END] - Navigate to the last month of the current row</li>
182
+ * <li>[CTRL] + [HOME] - Navigate to the first month of the current year</li>
183
+ * <li>[CTRL] + [END] - Navigate to the last month of the year</li>
184
+ * </ul>
185
+ * <br>
186
+ * - Year picker: <br>
187
+ * <ul>
188
+ * <li>[PAGEUP] - Navigate to the previous year range</li>
189
+ * <li>[PAGEDOWN] - Navigate the next year range</li>
190
+ * <li>[HOME] - Navigate to the first year of the current row</li>
191
+ * <li>[END] - Navigate to the last year of the current row</li>
192
+ * <li>[CTRL] + [HOME] - Navigate to the first year of the current year range</li>
193
+ * <li>[CTRL] + [END] - Navigate to the last year of the current year range</li>
194
+ * </ul>
195
+ * <br>
196
+ *
197
+ * <h3>Calendar types</h3>
198
+ * The component supports several calendar types - Gregorian, Buddhist, Islamic, Japanese and Persian.
199
+ * By default the Gregorian Calendar is used. In order to use the Buddhist, Islamic, Japanese or Persian calendar,
200
+ * you need to set the <code>primaryCalendarType</code> property and import one or more of the following modules:
201
+ * <br><br>
202
+ *
203
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js";</code>
204
+ * <br>
205
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Islamic.js";</code>
206
+ * <br>
207
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Japanese.js";</code>
208
+ * <br>
209
+ * <code>import "@ui5/webcomponents-localization/dist/features/calendar/Persian.js";</code>
210
+ * <br><br>
211
+ *
212
+ * Or, you can use the global configuration and set the <code>calendarType</code> key:
213
+ * <br>
214
+ * <code>
215
+ * &lt;script data-id="sap-ui-config" type="application/json"&gt;
216
+ * {
217
+ * "calendarType": "Japanese"
218
+ * }
219
+ * &lt;/script&gt;
220
+ * </code>
221
+ *
222
+ *
223
+ * <h3>ES6 Module Import</h3>
224
+ *
225
+ * <code>import "@ui5/webcomponents/dist/Calendar";</code>
134
226
  *
135
227
  * @constructor
136
228
  * @author SAP SE
137
229
  * @alias sap.ui.webcomponents.main.Calendar
138
- * @extends sap.ui.webcomponents.base.UI5Element
230
+ * @extends CalendarPart
139
231
  * @tagname ui5-calendar
232
+ * @appenddocs CalendarDate
140
233
  * @public
234
+ * @since 1.0.0-rc.11
141
235
  */
142
- class Calendar extends UI5Element {
236
+ class Calendar extends CalendarPart {
143
237
  static get metadata() {
144
238
  return metadata;
145
239
  }
146
240
 
147
- static get render() {
148
- return litRender;
149
- }
150
-
151
241
  static get template() {
152
242
  return CalendarTemplate;
153
243
  }
@@ -156,540 +246,241 @@ class Calendar extends UI5Element {
156
246
  return calendarCSS;
157
247
  }
158
248
 
159
- constructor() {
160
- super();
161
- this._oLocale = getFormatLocale();
162
- this._oLocaleData = new LocaleData(this._oLocale);
163
- this._header = {};
164
- this._header.onPressPrevious = this._handlePrevious.bind(this);
165
- this._header.onPressNext = this._handleNext.bind(this);
166
- this._header.onBtn1Press = this._handleMonthButtonPress.bind(this);
167
- this._header.onBtn2Press = this._handleYearButtonPress.bind(this);
168
-
169
- this._oMonth = {};
170
- this._oMonth.onSelectedDatesChange = this._handleSelectedDatesChange.bind(this);
171
- this._oMonth.onNavigate = this._handleMonthNavigate.bind(this);
172
-
173
- this._monthPicker = {};
174
- this._monthPicker._hidden = true;
175
- this._monthPicker.onSelectedMonthChange = this._handleSelectedMonthChange.bind(this);
176
-
177
- this._yearPicker = {};
178
- this._yearPicker._hidden = true;
179
- this._yearPicker.onSelectedYearChange = this._handleSelectedYearChange.bind(this);
180
-
181
- this._isShiftingYears = false;
249
+ /**
250
+ * @private
251
+ */
252
+ get _selectedDatesTimestamps() {
253
+ return this.dates.map(date => {
254
+ const value = date.value;
255
+ return value && !!this.getFormat().parse(value) ? this._getTimeStampFromString(value) / 1000 : undefined;
256
+ }).filter(date => !!date);
182
257
  }
183
258
 
184
- onBeforeRendering() {
185
- const oYearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this._primaryCalendarType });
186
- const minDateParsed = this.minDate && this.getFormat().parse(this.minDate);
187
- const maxDateParsed = this.maxDate && this.getFormat().parse(this.maxDate);
188
- const firstDayOfCalendarTimeStamp = -62135596800000;
189
- let currentMonth = 0;
190
- let currentYear = 1;
191
-
192
- if ((this.minDate || this.maxDate) && this._timestamp && !this.isInValidRange(this._timestamp * 1000)) {
193
- if (this._minDate) {
194
- this.timestamp = this._minDate / 1000;
195
- } else {
196
- this.timestamp = (new Date(firstDayOfCalendarTimeStamp)).getTime() / 1000;
197
- }
198
- }
199
-
200
- this._oMonth.formatPattern = this._formatPattern;
201
- this._oMonth.timestamp = this._timestamp;
202
- this._oMonth.selectedDates = [...this._selectedDates];
203
- this._oMonth.primaryCalendarType = this._primaryCalendarType;
204
- this._oMonth.minDate = this.minDate;
205
- this._oMonth.maxDate = this.maxDate;
206
- this._header.monthText = this._oLocaleData.getMonths("wide", this._primaryCalendarType)[this._month];
207
- this._header.yearText = oYearFormat.format(this._localDate);
208
- currentMonth = this.timestamp && CalendarDate.fromTimestamp(this.timestamp * 1000).getMonth();
209
- currentYear = this.timestamp && CalendarDate.fromTimestamp(this.timestamp * 1000).getYear();
210
-
211
- // month picker
212
- this._monthPicker.primaryCalendarType = this._primaryCalendarType;
213
- this._monthPicker.timestamp = this._timestamp;
214
-
215
- this._yearPicker.primaryCalendarType = this._primaryCalendarType;
216
-
217
- if (!this._isShiftingYears) {
218
- // year picker
219
- this._yearPicker.timestamp = this._timestamp;
220
- }
259
+ /**
260
+ * @private
261
+ */
262
+ _setSelectedDates(selectedDates) {
263
+ const selectedValues = selectedDates.map(timestamp => this.getFormat().format(new Date(timestamp * 1000), true)); // Format as UTC
264
+ const valuesInDOM = [...this.dates].map(dateElement => dateElement.value);
221
265
 
222
- this._isShiftingYears = false;
223
-
224
- if (!this._oMonth._hidden) {
225
- if (this.minDate
226
- && minDateParsed.getMonth() === currentMonth
227
- && minDateParsed.getFullYear() === currentYear) {
228
- this._header._isPrevButtonDisabled = true;
229
- } else {
230
- this._header._isPrevButtonDisabled = false;
231
- }
232
-
233
- if (this.maxDate
234
- && maxDateParsed.getMonth() === currentMonth
235
- && maxDateParsed.getFullYear() === currentYear) {
236
- this._header._isNextButtonDisabled = true;
237
- } else {
238
- this._header._isNextButtonDisabled = false;
239
- }
240
- }
266
+ // Remove all elements for dates that are no longer selected
267
+ this.dates.filter(dateElement => !selectedValues.includes(dateElement.value)).forEach(dateElement => {
268
+ this.removeChild(dateElement);
269
+ });
241
270
 
242
- if (!this._yearPicker._hidden) {
243
- currentYear = this._yearPicker.timestamp && CalendarDate.fromTimestamp(this._yearPicker.timestamp * 1000).getYear();
244
- if (this.minDate
245
- && (currentYear - minDateParsed.getFullYear()) < 1) {
246
- this._header._isPrevButtonDisabled = true;
247
- } else {
248
- this._header._isPrevButtonDisabled = false;
249
- }
250
-
251
- if (this.maxDate
252
- && (maxDateParsed.getFullYear() - currentYear) < 1) {
253
- this._header._isNextButtonDisabled = true;
254
- } else {
255
- this._header._isNextButtonDisabled = false;
256
- }
257
- }
271
+ // Create tags for the selected dates that don't already exist in DOM
272
+ selectedValues.filter(value => !valuesInDOM.includes(value)).forEach(value => {
273
+ const dateElement = document.createElement("ui5-date");
274
+ dateElement.value = value;
275
+ this.appendChild(dateElement);
276
+ });
258
277
  }
259
278
 
260
- get _timestamp() {
261
- return this.timestamp !== undefined ? this.timestamp : Math.floor(new Date().getTime() / 1000);
262
- }
279
+ async onAfterRendering() {
280
+ await renderFinished(); // Await for the current picker to render and then ask if it has previous/next pages
281
+ this._previousButtonDisabled = !this._currentPickerDOM._hasPreviousPage();
282
+ this._nextButtonDisabled = !this._currentPickerDOM._hasNextPage();
263
283
 
264
- get _localDate() {
265
- return new Date(this._timestamp * 1000);
266
- }
284
+ const yearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this.primaryCalendarType });
285
+ const localeData = getCachedLocaleDataInstance(getLocale());
286
+ this._headerMonthButtonText = localeData.getMonths("wide", this.primaryCalendarType)[this._calendarDate.getMonth()];
267
287
 
268
- get _calendarDate() {
269
- return CalendarDate.fromTimestamp(this._localDate.getTime(), this._primaryCalendarType);
270
- }
288
+ if (this._currentPicker === "year") {
289
+ const rangeStart = new CalendarDate(this._calendarDate, this._primaryCalendarType);
290
+ const rangeEnd = new CalendarDate(this._calendarDate, this._primaryCalendarType);
291
+ rangeStart.setYear(this._currentPickerDOM._firstYear);
292
+ rangeEnd.setYear(this._currentPickerDOM._lastYear);
271
293
 
272
- get _month() {
273
- return this._calendarDate.getMonth();
294
+ this._headerYearButtonText = `${yearFormat.format(rangeStart.toLocalJSDate(), true)} - ${yearFormat.format(rangeEnd.toLocalJSDate(), true)}`;
295
+ } else {
296
+ this._headerYearButtonText = String(yearFormat.format(this._localDate, true));
297
+ }
274
298
  }
275
299
 
276
- get _primaryCalendarType() {
277
- return this.primaryCalendarType || getCalendarType() || LocaleData.getInstance(getLocale()).getPreferredCalendarType();
300
+ /**
301
+ * The user clicked the "month" button in the header
302
+ */
303
+ onHeaderShowMonthPress(event) {
304
+ this._currentPickerDOM._autoFocus = false;
305
+ this._currentPicker = "month";
306
+ this.fireEvent("show-month-press", event);
278
307
  }
279
308
 
280
- get _formatPattern() {
281
- return this.formatPattern || "medium"; // get from config
309
+ /**
310
+ * The user clicked the "year" button in the header
311
+ */
312
+ onHeaderShowYearPress(event) {
313
+ this._currentPickerDOM._autoFocus = false;
314
+ this._currentPicker = "year";
315
+ this.fireEvent("show-year-press", event);
282
316
  }
283
317
 
284
- get _isPattern() {
285
- return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
318
+ get _currentPickerDOM() {
319
+ return this.shadowRoot.querySelector(`[ui5-${this._currentPicker}picker]`);
286
320
  }
287
321
 
288
- get _selectedDates() {
289
- return this.selectedDates || [];
322
+ /**
323
+ * The year clicked the "Previous" button in the header
324
+ */
325
+ onHeaderPreviousPress() {
326
+ this._currentPickerDOM._showPreviousPage();
290
327
  }
291
328
 
292
- get _maxDate() {
293
- if (this.maxDate) {
294
- const jsDate = new Date(this.getFormat().parse(this.maxDate).getFullYear(), this.getFormat().parse(this.maxDate).getMonth(), this.getFormat().parse(this.maxDate).getDate());
295
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
296
- return oCalDate.valueOf();
297
- }
298
-
299
- return this.maxDate;
329
+ /**
330
+ * The year clicked the "Next" button in the header
331
+ */
332
+ onHeaderNextPress() {
333
+ this._currentPickerDOM._showNextPage();
300
334
  }
301
335
 
302
- get _minDate() {
303
- if (this.minDate) {
304
- const jsDate = new Date(this.getFormat().parse(this.minDate).getFullYear(), this.getFormat().parse(this.minDate).getMonth(), this.getFormat().parse(this.minDate).getDate());
305
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
306
- return oCalDate.valueOf();
336
+ get secondaryCalendarTypeButtonText() {
337
+ if (!this.secondaryCalendarType) {
338
+ return;
307
339
  }
308
- return this.minDate;
309
- }
310
-
311
- _handleSelectedDatesChange(event) {
312
- this.selectedDates = [...event.detail.dates];
313
340
 
314
- this.fireEvent("selectedDatesChange", { dates: event.detail.dates });
315
- }
316
-
317
- _handleMonthNavigate(event) {
318
- this.timestamp = event.detail.timestamp;
341
+ const localDate = new Date(this._timestamp * 1000);
342
+ const secondYearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this.secondaryCalendarType });
343
+ const secondMonthInfo = this._getDisplayedSecondaryMonthText();
344
+ const secondYearText = secondYearFormat.format(localDate, true);
345
+ return {
346
+ yearButtonText: secondYearText,
347
+ monthButtonText: secondMonthInfo.text,
348
+ monthButtonInfo: secondMonthInfo.info,
349
+ };
319
350
  }
320
351
 
321
- _handleSelectedMonthChange(event) {
322
- const oNewDate = this._calendarDate;
323
- const newMonthIndex = CalendarDate.fromTimestamp(
324
- event.detail.timestamp * 1000,
325
- this._primaryCalendarType
326
- ).getMonth();
327
-
328
- oNewDate.setMonth(newMonthIndex);
329
- this.timestamp = oNewDate.valueOf() / 1000;
352
+ _getDisplayedSecondaryMonthText() {
353
+ const month = this._getDisplayedSecondaryMonths();
354
+ const localeData = getCachedLocaleDataInstance(getLocale());
355
+ const pattern = localeData.getIntervalPattern();
356
+ const secondaryMonthsNames = getCachedLocaleDataInstance(getLocale()).getMonthsStandAlone("abbreviated", this.secondaryCalendarType);
357
+ const secondaryMonthsNamesWide = getCachedLocaleDataInstance(getLocale()).getMonthsStandAlone("wide", this.secondaryCalendarType);
330
358
 
331
- this._hideMonthPicker();
359
+ if (month.startMonth === month.endMonth) {
360
+ return {
361
+ text: localeData.getMonths("abbreviated", this.secondaryCalendarType)[month.startMonth],
362
+ textInfo: localeData.getMonths("wide", this.secondaryCalendarType)[month.startMonth],
363
+ };
364
+ }
332
365
 
333
- this._focusFirstDayOfMonth(oNewDate);
366
+ return {
367
+ text: pattern.replace(/\{0\}/, secondaryMonthsNames[month.startMonth]).replace(/\{1\}/, secondaryMonthsNames[month.endMonth]),
368
+ textInfo: pattern.replace(/\{0\}/, secondaryMonthsNamesWide[month.startMonth]).replace(/\{1\}/, secondaryMonthsNamesWide[month.endMonth]),
369
+ };
334
370
  }
335
371
 
336
- _focusFirstDayOfMonth(targetDate) {
337
- let fistDayOfMonthIndex = -1;
372
+ _getDisplayedSecondaryMonths() {
373
+ const localDate = new Date(this._timestamp * 1000);
374
+ let firstDate = CalendarDate.fromLocalJSDate(localDate, this._primaryCalendarType);
375
+ firstDate.setDate(1);
376
+ firstDate = new CalendarDate(firstDate, this.secondaryCalendarType);
377
+ const startMonth = firstDate.getMonth();
338
378
 
339
- // focus first day of the month
340
- const dayPicker = this.shadowRoot.querySelector("ui5-daypicker");
379
+ let lastDate = CalendarDate.fromLocalJSDate(localDate, this._primaryCalendarType);
380
+ lastDate.setDate(this._getDaysInMonth(lastDate));
381
+ lastDate = new CalendarDate(lastDate, this.secondaryCalendarType);
382
+ const endMonth = lastDate.getMonth();
341
383
 
342
- dayPicker._getVisibleDays(targetDate).forEach((date, index) => {
343
- if (date.getDate() === 1 && (fistDayOfMonthIndex === -1)) {
344
- fistDayOfMonthIndex = index;
345
- }
346
- });
347
-
348
- dayPicker._itemNav.currentIndex = fistDayOfMonthIndex;
349
- dayPicker._itemNav.focusCurrent();
384
+ return { startMonth, endMonth };
350
385
  }
351
386
 
352
- _handleSelectedYearChange(event) {
353
- const oNewDate = CalendarDate.fromTimestamp(
354
- event.detail.timestamp * 1000,
355
- this._primaryCalendarType
356
- );
357
- oNewDate.setMonth(0);
358
- oNewDate.setDate(1);
359
-
360
- this.timestamp = oNewDate.valueOf() / 1000;
361
-
362
- this._hideYearPicker();
363
-
364
- this._focusFirstDayOfMonth(oNewDate);
387
+ _getDaysInMonth(date) {
388
+ const tempCalendarDate = new CalendarDate(date);
389
+ tempCalendarDate.setDate(1);
390
+ tempCalendarDate.setMonth(tempCalendarDate.getMonth() + 1);
391
+ tempCalendarDate.setDate(0);
392
+ return tempCalendarDate.getDate();
365
393
  }
366
394
 
367
- _handleMonthButtonPress() {
368
- this._hideYearPicker();
369
-
370
- this[`_${this._monthPicker._hidden ? "show" : "hide"}MonthPicker`]();
395
+ /**
396
+ * The month button is hidden when the month picker or year picker is shown
397
+ * @returns {boolean}
398
+ * @private
399
+ */
400
+ get _isHeaderMonthButtonHidden() {
401
+ return this._currentPicker === "month" || this._currentPicker === "year";
371
402
  }
372
403
 
373
- _handleYearButtonPress() {
374
- this._hideMonthPicker();
375
-
376
- this[`_${this._yearPicker._hidden ? "show" : "hide"}YearPicker`]();
404
+ get _isDayPickerHidden() {
405
+ return this._currentPicker !== "day";
377
406
  }
378
407
 
379
- _handlePrevious() {
380
- if (this._monthPicker._hidden && this._yearPicker._hidden) {
381
- this._showPrevMonth();
382
- } else if (this._monthPicker._hidden && !this._yearPicker._hidden) {
383
- this._showPrevPageYears();
384
- } else if (!this._monthPicker._hidden && this._yearPicker._hidden) {
385
- this._showPrevYear();
386
- }
408
+ get _isMonthPickerHidden() {
409
+ return this._currentPicker !== "month";
387
410
  }
388
411
 
389
- _handleNext() {
390
- if (this._monthPicker._hidden && this._yearPicker._hidden) {
391
- this._showNextMonth();
392
- } else if (this._monthPicker._hidden && !this._yearPicker._hidden) {
393
- this._showNextPageYears();
394
- } else if (!this._monthPicker._hidden && this._yearPicker._hidden) {
395
- this._showNextYear();
396
- }
412
+ get _isYearPickerHidden() {
413
+ return this._currentPicker !== "year";
397
414
  }
398
415
 
399
- _showNextMonth() {
400
- const nextMonth = this._calendarDate;
401
- nextMonth.setDate(1);
402
- nextMonth.setMonth(nextMonth.getMonth() + 1);
403
-
404
- if (nextMonth.getYear() > YearPicker._MAX_YEAR) {
405
- return;
406
- }
407
-
408
- if (!this.isInValidRange(nextMonth.toLocalJSDate().valueOf())) {
409
- return;
410
- }
411
-
412
- this._focusFirstDayOfMonth(nextMonth);
413
- this.timestamp = nextMonth.valueOf() / 1000;
414
- }
415
-
416
- _showPrevMonth() {
417
- let iNewMonth = this._month - 1,
418
- iNewYear = this._calendarDate.getYear();
419
-
420
- // focus first day of the month
421
- const dayPicker = this.shadowRoot.querySelector("ui5-daypicker");
422
- const currentMonthDate = dayPicker._calendarDate.setMonth(dayPicker._calendarDate.getMonth());
423
- const lastMonthDate = dayPicker._calendarDate.setMonth(dayPicker._calendarDate.getMonth() - 1);
424
-
425
- // set the date to last day of last month
426
- currentMonthDate.setDate(-1);
427
-
428
- // find the index of the last day
429
- let lastDayOfMonthIndex = -1;
430
-
431
- if (!this.isInValidRange(currentMonthDate.toLocalJSDate().valueOf())) {
432
- return;
433
- }
434
-
435
- dayPicker._getVisibleDays(lastMonthDate).forEach((date, index) => {
436
- const isSameDate = currentMonthDate.getDate() === date.getDate();
437
- const isSameMonth = currentMonthDate.getMonth() === date.getMonth();
438
-
439
- if (isSameDate && isSameMonth) {
440
- lastDayOfMonthIndex = (index + 1);
441
- }
416
+ onSelectedDatesChange(event) {
417
+ const timestamp = event.detail.timestamp;
418
+ const selectedDates = event.detail.dates;
419
+ const datesValues = selectedDates.map(ts => {
420
+ const calendarDate = CalendarDate.fromTimestamp(ts * 1000, this._primaryCalendarType);
421
+ return this.getFormat().format(calendarDate.toUTCJSDate(), true);
442
422
  });
443
423
 
444
- const weekDaysCount = 7;
445
-
446
- if (lastDayOfMonthIndex !== -1) {
447
- // find the DOM for the last day index
448
- const lastDay = dayPicker.shadowRoot.querySelector(".ui5-dp-items-container").children[parseInt(lastDayOfMonthIndex / weekDaysCount)].children[(lastDayOfMonthIndex % weekDaysCount)];
449
-
450
- // update current item in ItemNavigation
451
- dayPicker._itemNav.current = lastDayOfMonthIndex;
452
-
453
- // focus the item
454
- lastDay.focus();
455
- }
456
-
457
- if (iNewMonth > 11) {
458
- iNewMonth = 0;
459
- iNewYear = this._calendarDate.getYear() + 1;
460
- }
461
-
462
- if (iNewMonth < 0) {
463
- iNewMonth = 11;
464
- iNewYear = this._calendarDate.getYear() - 1;
424
+ this.timestamp = timestamp;
425
+ const defaultPrevented = !this.fireEvent("selected-dates-change", { timestamp, dates: [...selectedDates], values: datesValues }, true);
426
+ if (!defaultPrevented) {
427
+ this._setSelectedDates(selectedDates);
465
428
  }
466
-
467
- const oNewDate = this._calendarDate;
468
- oNewDate.setYear(iNewYear);
469
- oNewDate.setMonth(iNewMonth);
470
-
471
-
472
- if (oNewDate.getYear() < YearPicker._MIN_YEAR) {
473
- return;
474
- }
475
- this.timestamp = oNewDate.valueOf() / 1000;
476
429
  }
477
430
 
478
- _showNextYear() {
479
- if (this._calendarDate.getYear() === YearPicker._MAX_YEAR) {
480
- return;
481
- }
482
-
483
- const oNewDate = this._calendarDate;
484
- oNewDate.setYear(this._calendarDate.getYear() + 1);
485
-
486
- this.timestamp = oNewDate.valueOf() / 1000;
431
+ onSelectedMonthChange(event) {
432
+ this.timestamp = event.detail.timestamp;
433
+ this._currentPicker = "day";
434
+ this._currentPickerDOM._autoFocus = true;
487
435
  }
488
436
 
489
- _showPrevYear() {
490
- if (this._calendarDate.getYear() === YearPicker._MIN_YEAR) {
491
- return;
492
- }
493
-
494
- const oNewDate = this._calendarDate;
495
- oNewDate.setYear(this._calendarDate.getYear() - 1);
496
-
497
- this.timestamp = oNewDate.valueOf() / 1000;
437
+ onSelectedYearChange(event) {
438
+ this.timestamp = event.detail.timestamp;
439
+ this._currentPicker = "day";
440
+ this._currentPickerDOM._autoFocus = true;
498
441
  }
499
442
 
500
- _showNextPageYears() {
501
- if (!this._isYearInRange(this._yearPicker.timestamp,
502
- YearPicker._ITEMS_COUNT - YearPicker._MIDDLE_ITEM_INDEX,
503
- YearPicker._MIN_YEAR,
504
- YearPicker._MAX_YEAR)) {
505
- return;
506
- }
507
-
508
- if (this.minDate && !this._isYearInRange(this._yearPicker.timestamp,
509
- YearPicker._ITEMS_COUNT - YearPicker._MIDDLE_ITEM_INDEX,
510
- this.getFormat().parse(this.minDate).getFullYear(),
511
- YearPicker._MAX_YEAR)) {
512
- return;
513
- }
514
-
515
- if (this.maxDate && !this._isYearInRange(this._yearPicker.timestamp,
516
- YearPicker._ITEMS_COUNT - YearPicker._MIDDLE_ITEM_INDEX,
517
- YearPicker._MIN_YEAR,
518
- this.getFormat().parse(this.maxDate).getFullYear())) {
519
- return;
520
- }
521
-
522
- this._yearPicker = Object.assign({}, this._yearPicker, {
523
- timestamp: this._yearPicker.timestamp + (31536000 * YearPicker._ITEMS_COUNT),
524
- });
525
-
526
- this._isShiftingYears = true;
443
+ onNavigate(event) {
444
+ this.timestamp = event.detail.timestamp;
527
445
  }
528
446
 
529
- _showPrevPageYears() {
530
- if (!this._isYearInRange(this._yearPicker.timestamp,
531
- -YearPicker._MIDDLE_ITEM_INDEX - 1,
532
- YearPicker._MIN_YEAR,
533
- YearPicker._MAX_YEAR)) {
534
- return;
535
- }
536
-
537
- if (this.minDate && !this._isYearInRange(this._yearPicker.timestamp,
538
- -YearPicker._MIDDLE_ITEM_INDEX - 1,
539
- this.getFormat().parse(this.minDate).getFullYear(),
540
- YearPicker._MAX_YEAR)) {
541
- return;
447
+ _onkeydown(event) {
448
+ if (isF4(event) && this._currentPicker !== "month") {
449
+ this._currentPicker = "month";
542
450
  }
543
451
 
544
- if (this.maxDate && !this._isYearInRange(this._yearPicker.timestamp,
545
- -YearPicker._MIDDLE_ITEM_INDEX - 1,
546
- YearPicker._MIN_YEAR,
547
- this.getFormat().parse(this.maxDate).getFullYear())) {
548
- return;
452
+ if (isF4Shift(event) && this._currentPicker !== "year") {
453
+ this._currentPicker = "year";
549
454
  }
550
-
551
- this._yearPicker = Object.assign({}, this._yearPicker, {
552
- timestamp: this._yearPicker.timestamp - (31536000 * YearPicker._ITEMS_COUNT),
553
- });
554
-
555
- this._isShiftingYears = true;
556
- }
557
-
558
- _showMonthPicker() {
559
- this._monthPicker = Object.assign({}, this._monthPicker);
560
- this._oMonth = Object.assign({}, this._oMonth);
561
-
562
- this._monthPicker.timestamp = this._timestamp;
563
- this._monthPicker._hidden = false;
564
- this._oMonth._hidden = true;
565
-
566
- const calendarRect = this.shadowRoot.querySelector(".ui5-cal-root").getBoundingClientRect();
567
-
568
- this._calendarWidth = calendarRect.width.toString();
569
- this._calendarHeight = calendarRect.height.toString();
570
- }
571
-
572
- _showYearPicker() {
573
- this._yearPicker = Object.assign({}, this._yearPicker);
574
- this._oMonth = Object.assign({}, this._oMonth);
575
-
576
- this._yearPicker.timestamp = this._timestamp;
577
- this._yearPicker._selectedYear = this._calendarDate.getYear();
578
- this._yearPicker._hidden = false;
579
- this._oMonth._hidden = true;
580
-
581
- const calendarRect = this.shadowRoot.querySelector(".ui5-cal-root").getBoundingClientRect();
582
-
583
- this._calendarWidth = calendarRect.width.toString();
584
- this._calendarHeight = calendarRect.height.toString();
585
- }
586
-
587
- _hideMonthPicker() {
588
- this._monthPicker = Object.assign({}, this._monthPicker);
589
- this._oMonth = Object.assign({}, this._oMonth);
590
-
591
- this._monthPicker._hidden = true;
592
- this._oMonth._hidden = false;
593
- }
594
-
595
- _hideYearPicker() {
596
- this._yearPicker = Object.assign({}, this._yearPicker);
597
- this._oMonth = Object.assign({}, this._oMonth);
598
-
599
- this._yearPicker._hidden = true;
600
- this._oMonth._hidden = false;
601
- }
602
-
603
- _isYearInRange(timestamp, yearsoffset, min, max) {
604
- if (timestamp) {
605
- const oCalDate = CalendarDate.fromTimestamp(timestamp * 1000, this._primaryCalendarType);
606
- oCalDate.setMonth(0);
607
- oCalDate.setDate(1);
608
- oCalDate.setYear(oCalDate.getYear() + yearsoffset);
609
- return oCalDate.getYear() >= min && oCalDate.getYear() <= max;
610
- }
611
- }
612
-
613
- get classes() {
614
- return {
615
- main: {
616
- "ui5-cal-root": true,
617
- },
618
- dayPicker: {
619
- ".ui5-daypicker--hidden": !this._yearPicker._hidden || !this._monthPicker._hidden,
620
- },
621
- yearPicker: {
622
- "ui5-yearpicker--hidden": this._yearPicker._hidden,
623
- },
624
- monthPicker: {
625
- "ui5-monthpicker--hidden": this._monthPicker._hidden,
626
- },
627
- };
628
455
  }
629
456
 
630
457
  /**
631
- * Checks if a date is in range between minimum and maximum date
632
- * @param {object} value
633
- * @public
458
+ * Returns an array of UTC timestamps, representing the selected dates.
459
+ * @protected
460
+ * @deprecated
634
461
  */
635
- isInValidRange(value = "") {
636
- const pickedDate = CalendarDate.fromTimestamp(value).toLocalJSDate(),
637
- minDate = this._minDate && new Date(this._minDate),
638
- maxDate = this._maxDate && new Date(this._maxDate);
639
-
640
- if (minDate && maxDate) {
641
- if (minDate <= pickedDate && maxDate >= pickedDate) {
642
- return true;
643
- }
644
- } else if (minDate && !maxDate) {
645
- if (minDate <= pickedDate) {
646
- return true;
647
- }
648
- } else if (maxDate && !minDate) {
649
- if (maxDate >= pickedDate) {
650
- return true;
651
- }
652
- } else if (!maxDate && !minDate) {
653
- return true;
654
- }
655
-
656
- return false;
462
+ get selectedDates() {
463
+ return this._selectedDatesTimestamps;
657
464
  }
658
465
 
659
- getFormat() {
660
- if (this._isPattern) {
661
- this._oDateFormat = DateFormat.getInstance({
662
- pattern: this._formatPattern,
663
- calendarType: this._primaryCalendarType,
664
- });
665
- } else {
666
- this._oDateFormat = DateFormat.getInstance({
667
- style: this._formatPattern,
668
- calendarType: this._primaryCalendarType,
669
- });
670
- }
671
- return this._oDateFormat;
672
- }
673
-
674
- get styles() {
675
- return {
676
- main: {
677
- "height": `${this._calendarHeight ? `${this._calendarHeight}px` : "auto"}`,
678
- "width": `${this._calendarWidth ? `${this._calendarWidth}px` : "auto"}`,
679
- },
680
- };
681
- }
682
-
683
- static async define(...params) {
684
- await Promise.all([
685
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
686
- CalendarHeader.define(),
687
- DayPicker.define(),
688
- MonthPicker.define(),
689
- YearPicker.define(),
690
- ]);
691
-
692
- super.define(...params);
466
+ /**
467
+ * Creates instances of <code>ui5-date</code> inside this <code>ui5-calendar</code> with values, equal to the provided UTC timestamps
468
+ * @protected
469
+ * @deprecated
470
+ * @param selectedDates Array of UTC timestamps
471
+ */
472
+ set selectedDates(selectedDates) {
473
+ this._setSelectedDates(selectedDates);
474
+ }
475
+
476
+ static get dependencies() {
477
+ return [
478
+ CalendarDateComponent.default,
479
+ CalendarHeader,
480
+ DayPicker,
481
+ MonthPicker,
482
+ YearPicker,
483
+ ];
693
484
  }
694
485
  }
695
486