@ui5/webcomponents 0.0.0-d849bec2c → 0.0.0-dc3ccac50

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