@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/DayPicker.js CHANGED
@@ -1,34 +1,43 @@
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 { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
1
+ import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
5
2
  import { getFirstDayOfWeek } from "@ui5/webcomponents-base/dist/config/FormatSettings.js";
6
- import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
7
- import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
8
- import { getFormatLocale } from "@ui5/webcomponents-base/dist/FormatSettings.js";
9
- import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
10
- import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/events/PseudoEvents.js";
3
+ import getCachedLocaleDataInstance from "@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js";
4
+ import {
5
+ isSpace,
6
+ isSpaceShift,
7
+ isEnter,
8
+ isEnterShift,
9
+ isUp,
10
+ isDown,
11
+ isLeft,
12
+ isRight,
13
+ isHome,
14
+ isEnd,
15
+ isHomeCtrl,
16
+ isEndCtrl,
17
+ isPageUp,
18
+ isPageDown,
19
+ isPageUpShift,
20
+ isPageUpAlt,
21
+ isPageUpShiftCtrl,
22
+ isPageDownShift,
23
+ isPageDownAlt,
24
+ isPageDownShiftCtrl,
25
+ } from "@ui5/webcomponents-base/dist/Keys.js";
11
26
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
12
- import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
13
- import CalendarDate from "@ui5/webcomponents-base/dist/dates/CalendarDate.js";
14
- import { calculateWeekNumber } from "@ui5/webcomponents-base/dist/dates/CalendarUtils.js";
15
- import CalendarType from "@ui5/webcomponents-base/dist/dates/CalendarType.js";
16
- import ItemNavigationBehavior from "@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js";
27
+ import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
28
+ import calculateWeekNumber from "@ui5/webcomponents-localization/dist/dates/calculateWeekNumber.js";
29
+ import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
30
+ import CalendarSelectionMode from "./types/CalendarSelectionMode.js";
31
+ import CalendarPart from "./CalendarPart.js";
17
32
  import DayPickerTemplate from "./generated/templates/DayPickerTemplate.lit.js";
18
33
 
19
- // Styles
20
- import dayPickerCSS from "./generated/themes/DayPicker.css.js";
21
-
22
- const monthDiff = (startDate, endDate) => {
23
- let months;
24
- const _startDate = CalendarDate.fromTimestamp(startDate).toLocalJSDate(),
25
- _endDate = CalendarDate.fromTimestamp(endDate).toLocalJSDate();
34
+ import {
35
+ DAY_PICKER_WEEK_NUMBER_TEXT,
36
+ DAY_PICKER_NON_WORKING_DAY,
37
+ DAY_PICKER_TODAY,
38
+ } from "./generated/i18n/i18n-defaults.js";
26
39
 
27
- months = (_endDate.getFullYear() - _startDate.getFullYear()) * 12;
28
- months -= _startDate.getMonth();
29
- months += _endDate.getMonth();
30
- return months;
31
- };
40
+ import dayPickerCSS from "./generated/themes/DayPicker.css.js";
32
41
 
33
42
  /**
34
43
  * @public
@@ -37,91 +46,90 @@ const metadata = {
37
46
  tag: "ui5-daypicker",
38
47
  properties: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
39
48
  /**
40
- * A UNIX timestamp - seconds since 00:00:00 UTC on Jan 1, 1970.
41
- * @type {number}
42
- * @public
43
- */
44
- timestamp: {
45
- type: Integer,
46
- },
47
-
48
- /**
49
- * Sets a calendar type used for display.
50
- * If not set, the calendar type of the global configuration is used.
51
- * @type {string}
52
- * @public
53
- */
54
- primaryCalendarType: {
55
- type: CalendarType,
56
- },
57
-
58
- /**
59
- * Sets the selected dates as UTC timestamps.
49
+ * An array of UTC timestamps representing the selected date or dates depending on the capabilities of the picker component.
60
50
  * @type {Array}
61
51
  * @public
62
52
  */
63
53
  selectedDates: {
64
54
  type: Integer,
65
55
  multiple: true,
56
+ compareValues: true,
66
57
  },
67
58
 
68
59
  /**
69
- * Determines the мinimum date available for selection.
70
- *
71
- * @type {String}
72
- * @defaultvalue ""
73
- * @since 1.0.0-rc.6
60
+ * Defines the type of selection used in the day picker component.
61
+ * Accepted property values are:<br>
62
+ * <ul>
63
+ * <li><code>CalendarSelectionMode.Single</code> - enables a single date selection.(default value)</li>
64
+ * <li><code>CalendarSelectionMode.Range</code> - enables selection of a date range.</li>
65
+ * <li><code>CalendarSelectionMode.Multiple</code> - enables selection of multiple dates.</li>
66
+ * </ul>
67
+ * @type {CalendarSelectionMode}
68
+ * @defaultvalue "Single"
74
69
  * @public
75
70
  */
76
- minDate: {
77
- type: String,
71
+ selectionMode: {
72
+ type: CalendarSelectionMode,
73
+ defaultValue: CalendarSelectionMode.Single,
78
74
  },
79
75
 
80
76
  /**
81
- * Determines the maximum date available for selection.
77
+ * Defines the visibility of the week numbers column.
78
+ * <br><br>
79
+ *
80
+ * <b>Note:<b> For calendars other than Gregorian,
81
+ * the week numbers are not displayed regardless of what is set.
82
82
  *
83
- * @type {String}
84
- * @defaultvalue ""
85
- * @since 1.0.0-rc.6
83
+ * @type {boolean}
84
+ * @defaultvalue false
86
85
  * @public
86
+ * @since 1.0.0-rc.8
87
87
  */
88
- maxDate: {
89
- type: String,
88
+ hideWeekNumbers: {
89
+ type: Boolean,
90
90
  },
91
91
 
92
+ /**
93
+ * @type {Object}
94
+ * @private
95
+ */
92
96
  _weeks: {
93
97
  type: Object,
94
98
  multiple: true,
95
99
  },
96
100
 
97
- _weekNumbers: {
101
+ _dayNames: {
98
102
  type: Object,
99
103
  multiple: true,
100
104
  },
105
+
106
+ /**
107
+ * When set, the component will skip all work in onBeforeRendering and will not automatically set the focus on itself
108
+ * @type {boolean}
109
+ * @private
110
+ */
101
111
  _hidden: {
102
112
  type: Boolean,
103
113
  noAttribute: true,
104
114
  },
115
+
105
116
  /**
106
- * Determines the format, displayed in the input field.
107
- *
108
- * @type {string}
109
- * @defaultvalue ""
110
- * @public
117
+ * When selectionMode="Range" and the first day in the range is selected, this is the currently hovered (when using mouse) or focused (when using keyboard) day by the user
118
+ * @private
111
119
  */
112
- formatPattern: {
120
+ _secondTimestamp: {
113
121
  type: String,
114
122
  },
115
123
  },
116
124
  events: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
117
125
  /**
118
- * Fired when the user selects a new Date on the Web Component.
126
+ * Fired when the selected date(s) change
119
127
  * @public
120
128
  * @event
121
129
  */
122
- selectionChange: {},
130
+ change: {},
123
131
  /**
124
- * Fired when month, year has changed due to item navigation.
132
+ * Fired when the timestamp changes (user navigates with the keyboard) or clicks with the mouse
125
133
  * @public
126
134
  * @event
127
135
  */
@@ -129,8 +137,9 @@ const metadata = {
129
137
  },
130
138
  };
131
139
 
132
- const DEFAULT_MAX_YEAR = 9999;
133
- const DEFAULT_MIN_YEAR = 1;
140
+ const isBetween = (x, num1, num2) => x > Math.min(num1, num2) && x < Math.max(num1, num2);
141
+
142
+ const DAYS_IN_WEEK = 7;
134
143
 
135
144
  /**
136
145
  * @class
@@ -140,19 +149,15 @@ const DEFAULT_MIN_YEAR = 1;
140
149
  * @constructor
141
150
  * @author SAP SE
142
151
  * @alias sap.ui.webcomponents.main.DayPicker
143
- * @extends sap.ui.webcomponents.base.UI5Element
152
+ * @extends CalendarPart
144
153
  * @tagname ui5-daypicker
145
154
  * @public
146
155
  */
147
- class DayPicker extends UI5Element {
156
+ class DayPicker extends CalendarPart {
148
157
  static get metadata() {
149
158
  return metadata;
150
159
  }
151
160
 
152
- static get render() {
153
- return litRender;
154
- }
155
-
156
161
  static get template() {
157
162
  return DayPickerTemplate;
158
163
  }
@@ -161,395 +166,530 @@ class DayPicker extends UI5Element {
161
166
  return dayPickerCSS;
162
167
  }
163
168
 
164
- constructor() {
165
- super();
166
- this._oLocale = getFormatLocale();
167
- this._oLocaleData = new LocaleData(this._oLocale);
168
-
169
- this._itemNav = new ItemNavigation(this, {
170
- rowSize: 7,
171
- pageSize: 42,
172
- behavior: ItemNavigationBehavior.Paging,
173
- });
169
+ onBeforeRendering() {
170
+ const localeData = getCachedLocaleDataInstance(getLocale());
171
+ this._buildWeeks(localeData);
172
+ this._buildDayNames(localeData);
173
+ }
174
174
 
175
- this._itemNav.getItemsCallback = function getItemsCallback() {
176
- return this.focusableDays;
177
- }.bind(this);
175
+ /**
176
+ * Builds the _weeks object that represents the month
177
+ * @param localeData
178
+ * @private
179
+ */
180
+ _buildWeeks(localeData) {
181
+ if (this._hidden) {
182
+ return; // Optimization to not do any work unless the current picker
183
+ }
178
184
 
179
- this._itemNav.attachEvent(
180
- ItemNavigation.BORDER_REACH,
181
- this._handleItemNavigationBorderReach.bind(this)
182
- );
185
+ this._weeks = [];
183
186
 
184
- this._itemNav.attachEvent(
185
- "PageBottom",
186
- this._handleMonthBottomOverflow.bind(this)
187
- );
187
+ const firstDayOfWeek = this._getFirstDayOfWeek();
188
+ const monthsNames = localeData.getMonths("wide", this._primaryCalendarType);
189
+ const secondaryMonthsNames = this.hasSecondaryCalendarType && localeData.getMonths("wide", this.secondaryCalendarType);
190
+ const nonWorkingDayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);
191
+ const todayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_TODAY);
192
+ const tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times
193
+ const todayDate = CalendarDate.fromLocalJSDate(new Date(), this._primaryCalendarType); // current day date - calculate once
194
+ const calendarDate = this._calendarDate; // store the _calendarDate value as this getter is expensive and degrades IE11 perf
195
+ const minDate = this._minDate; // store the _minDate (expensive getter)
196
+ const maxDate = this._maxDate; // store the _maxDate (expensive getter)
188
197
 
189
- this._itemNav.attachEvent(
190
- "PageTop",
191
- this._handleMonthTopOverflow.bind(this)
192
- );
193
- }
198
+ const tempSecondDate = this.hasSecondaryCalendarType && this._getSecondaryDay(tempDate);
194
199
 
195
- onBeforeRendering() {
196
- let oCalDate,
197
- day,
198
- timestamp,
199
- lastWeekNumber = -1,
200
- isDaySelected = false,
201
- todayIndex = 0;
202
- const _aVisibleDays = this._getVisibleDays(this._calendarDate);
203
- this._weeks = [];
204
200
  let week = [];
205
- this._weekNumbers = [];
206
- let weekday;
207
- if (this.minDate) {
208
- this._minDateObject = new Date(this._minDate);
209
- }
201
+ for (let i = 0; i < DAYS_IN_WEEK * 6; i++) { // always show 6 weeks total, 42 days to avoid jumping
202
+ const timestamp = tempDate.valueOf() / 1000; // no need to round because CalendarDate does it
210
203
 
211
- if (this.maxDate) {
212
- this._maxDateObject = new Date(this._maxDate);
213
- }
214
- /* eslint-disable no-loop-func */
215
- for (let i = 0; i < _aVisibleDays.length; i++) {
216
- oCalDate = _aVisibleDays[i];
217
- timestamp = oCalDate.valueOf() / 1000; // no need to round because CalendarDate does it
218
-
219
- // day of the week
220
- weekday = oCalDate.getDay() - this._getFirstDayOfWeek();
221
- if (weekday < 0) {
222
- weekday += 7;
204
+ let dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;
205
+ if (dayOfTheWeek < 0) {
206
+ dayOfTheWeek += DAYS_IN_WEEK;
223
207
  }
224
- day = {
208
+
209
+ const isFocused = tempDate.getMonth() === calendarDate.getMonth() && tempDate.getDate() === calendarDate.getDate();
210
+ const isSelected = this._isDaySelected(timestamp);
211
+ const isSelectedBetween = this._isDayInsideSelectionRange(timestamp);
212
+ const isOtherMonth = tempDate.getMonth() !== calendarDate.getMonth();
213
+ const isWeekend = this._isWeekend(tempDate);
214
+ const isDisabled = tempDate.valueOf() < minDate.valueOf() || tempDate.valueOf() > maxDate.valueOf();
215
+ const isToday = tempDate.isSame(todayDate);
216
+ const isFirstDayOfWeek = tempDate.getDay() === firstDayOfWeek;
217
+
218
+ const nonWorkingAriaLabel = isWeekend ? `${nonWorkingDayLabel} ` : "";
219
+ const todayAriaLabel = isToday ? `${todayLabel} ` : "";
220
+ const ariaLabel = this.hasSecondaryCalendarType
221
+ ? `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}; ${secondaryMonthsNames[tempSecondDate.getMonth()]} ${tempSecondDate.getDate()}, ${tempSecondDate.getYear()}`
222
+ : `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}`;
223
+
224
+ const day = {
225
225
  timestamp: timestamp.toString(),
226
- selected: this._selectedDates.some(d => {
227
- return d === timestamp;
228
- }),
229
- iDay: oCalDate.getDate(),
230
- _index: i.toString(),
231
- classes: `ui5-dp-item ui5-dp-wday${weekday}`,
226
+ focusRef: isFocused,
227
+ _tabIndex: isFocused ? "0" : "-1",
228
+ selected: isSelected,
229
+ day: tempDate.getDate(),
230
+ secondDay: this.hasSecondaryCalendarType && tempSecondDate.getDate(),
231
+ _isSecondaryCalendarType: this.hasSecondaryCalendarType,
232
+ classes: `ui5-dp-item ui5-dp-wday${dayOfTheWeek}`,
233
+ ariaLabel,
234
+ ariaSelected: isSelected ? "true" : "false",
235
+ ariaDisabled: isOtherMonth ? "true" : undefined,
236
+ disabled: isDisabled,
232
237
  };
233
238
 
234
- const weekNumber = calculateWeekNumber(oCalDate.toUTCJSDate(), oCalDate.getYear(), this._oLocale, this._oLocaleData);
235
-
236
- if (lastWeekNumber !== weekNumber) {
237
- this._weekNumbers.push(weekNumber);
238
-
239
- lastWeekNumber = weekNumber;
240
- }
241
-
242
- const isToday = oCalDate.isSame(CalendarDate.fromLocalJSDate(new Date(), this._primaryCalendarType));
243
-
244
- week.push(day);
245
-
246
- if (oCalDate.getDay() === this._getFirstDayOfWeek()) {
239
+ if (isFirstDayOfWeek) {
247
240
  day.classes += " ui5-dp-firstday";
248
241
  }
249
242
 
250
- if (day.selected) {
243
+ if (isSelected) {
251
244
  day.classes += " ui5-dp-item--selected";
252
- isDaySelected = true;
245
+ }
246
+
247
+ if (isSelectedBetween) {
248
+ day.classes += " ui5-dp-item--selected-between";
253
249
  }
254
250
 
255
251
  if (isToday) {
256
252
  day.classes += " ui5-dp-item--now";
257
- todayIndex = i;
258
253
  }
259
254
 
260
- if (oCalDate.getMonth() !== this._month) {
255
+ if (isOtherMonth) {
261
256
  day.classes += " ui5-dp-item--othermonth";
262
257
  }
263
258
 
264
- day.id = `${this._id}-${timestamp}`;
265
-
266
- if (this._isWeekend(oCalDate)) {
259
+ if (isWeekend) {
267
260
  day.classes += " ui5-dp-item--weeekend";
268
261
  }
269
- if ((this.minDate || this.maxDate) && this._isOutOfSelectableRange(oCalDate)) {
262
+
263
+ if (isDisabled) {
270
264
  day.classes += " ui5-dp-item--disabled";
271
- day.disabled = true;
272
265
  }
273
266
 
274
- if (day.classes.indexOf("ui5-dp-wday6") !== -1
275
- || _aVisibleDays.length - 1 === i) {
267
+ if (this.hasSecondaryCalendarType) {
268
+ day.classes += " ui5-dp-item--withsecondtype";
269
+ }
270
+
271
+ week.push(day);
272
+
273
+ if (dayOfTheWeek === DAYS_IN_WEEK - 1) { // 0-indexed so 6 is the last day of the week
274
+ week.unshift({
275
+ weekNum: calculateWeekNumber(getFirstDayOfWeek(), tempDate.toUTCJSDate(), tempDate.getYear(), getLocale(), localeData),
276
+ isHidden: this.shouldHideWeekNumbers,
277
+ });
278
+ }
279
+
280
+ if (week.length === DAYS_IN_WEEK + 1) { // 7 entries for each day + 1 for the week numbers
276
281
  this._weeks.push(week);
277
282
  week = [];
278
283
  }
284
+
285
+ tempDate.setDate(tempDate.getDate() + 1);
286
+ if (this.hasSecondaryCalendarType) {
287
+ tempSecondDate.setDate(tempSecondDate.getDate() + 1);
288
+ }
279
289
  }
280
- while (this._weeks.length < 6) {
281
- this._weeks.push([]);
282
- }
283
- /* eslint-enable no-loop-func */
290
+ }
284
291
 
285
- if (!isDaySelected && todayIndex && this._itemNav.current === 0) {
286
- this._itemNav.current = todayIndex;
292
+ /**
293
+ * Builds the dayNames object (header of the month)
294
+ * @param localeData
295
+ * @private
296
+ */
297
+ _buildDayNames(localeData) {
298
+ if (this._hidden) {
299
+ return; // Optimization to not do any work unless the current picker
287
300
  }
288
301
 
289
- const aDayNamesWide = this._oLocaleData.getDays("wide", this._primaryCalendarType);
290
- const aDayNamesAbbreviated = this._oLocaleData.getDays("abbreviated", this._primaryCalendarType);
291
- const aUltraShortNames = aDayNamesAbbreviated.map(n => n);
302
+ let dayOfTheWeek;
303
+
304
+ const aDayNamesWide = localeData.getDays("wide", this._primaryCalendarType);
305
+ const aDayNamesAbbreviated = localeData.getDays("abbreviated", this._primaryCalendarType);
292
306
  let dayName;
293
307
 
294
308
  this._dayNames = [];
295
- for (let i = 0; i < 7; i++) {
296
- weekday = i + this._getFirstDayOfWeek();
297
- if (weekday > 6) {
298
- weekday -= 7;
309
+ this._dayNames.push({
310
+ classes: "ui5-dp-dayname",
311
+ name: DayPicker.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT),
312
+ });
313
+ for (let i = 0; i < DAYS_IN_WEEK; i++) {
314
+ dayOfTheWeek = i + this._getFirstDayOfWeek();
315
+ if (dayOfTheWeek > DAYS_IN_WEEK - 1) { // 0-indexed so index of 6 is the maximum allowed
316
+ dayOfTheWeek -= DAYS_IN_WEEK;
299
317
  }
300
318
  dayName = {
301
- id: `${this._id}-WH${i.toString()}`,
302
- name: aDayNamesWide[weekday],
303
- ultraShortName: aUltraShortNames[weekday],
319
+ name: aDayNamesWide[dayOfTheWeek],
320
+ ultraShortName: aDayNamesAbbreviated[dayOfTheWeek],
304
321
  classes: "ui5-dp-dayname",
305
322
  };
306
323
 
307
324
  this._dayNames.push(dayName);
308
325
  }
309
326
 
310
- this._dayNames[0].classes += " ui5-dp-firstday";
311
- }
312
-
313
- _onmousedown(event) {
314
- const target = event.target;
315
- const dayPressed = this._isDayPressed(target);
316
-
317
- if (dayPressed) {
318
- const targetDate = parseInt(target.getAttribute("data-sap-timestamp"));
319
-
320
- // findIndex, give it to item navigation
321
- for (let i = 0; i < this._weeks.length; i++) {
322
- for (let j = 0; j < this._weeks[i].length; j++) {
323
- if (parseInt(this._weeks[i][j].timestamp) === targetDate) {
324
- let index = parseInt(target.getAttribute("data-sap-index"));
325
- if (this.minDate || this.maxDate) {
326
- const focusableItem = this.focusableDays.find(item => parseInt(item._index) === index);
327
- index = focusableItem ? this.focusableDays.indexOf(focusableItem) : index;
328
- }
329
-
330
- this._itemNav.current = index;
331
- this._itemNav.update();
332
- break;
333
- }
334
- }
335
- }
327
+ this._dayNames[1].classes += " ui5-dp-firstday";
336
328
 
337
- this.targetDate = targetDate;
329
+ if (this.shouldHideWeekNumbers) {
330
+ this._dayNames.shift();
338
331
  }
339
332
  }
340
333
 
341
- _onmouseup(event) {
342
- const dayPressed = this._isDayPressed(event.target);
343
- if (this.targetDate) {
344
- this._modifySelectionAndNotifySubscribers(this.targetDate, event.ctrlKey);
345
- this.targetDate = null;
346
- }
347
-
348
- if (!dayPressed) {
349
- this._itemNav.focusCurrent();
334
+ onAfterRendering() {
335
+ if (this._autoFocus && !this._hidden) {
336
+ this.focus();
350
337
  }
351
338
  }
352
339
 
353
- _onkeydown(event) {
354
- if (isEnter(event)) {
355
- return this._handleEnter(event);
356
- }
357
-
358
- if (isSpace(event)) {
359
- return this._handleSpace(event);
360
- }
340
+ _onfocusin() {
341
+ this._autoFocus = true;
361
342
  }
362
343
 
363
- _handleEnter(event) {
364
- event.preventDefault();
365
- if (event.target.className.indexOf("ui5-dp-item") > -1) {
366
- const targetDate = parseInt(event.target.getAttribute("data-sap-timestamp"));
367
- this._modifySelectionAndNotifySubscribers(targetDate, event.ctrlKey);
368
- }
344
+ _onfocusout() {
345
+ this._autoFocus = false;
369
346
  }
370
347
 
371
- _handleSpace(event) {
372
- event.preventDefault();
373
- if (event.target.className.indexOf("ui5-dp-item") > -1) {
374
- const targetDate = parseInt(event.target.getAttribute("data-sap-timestamp"));
375
- this._modifySelectionAndNotifySubscribers(targetDate, event.ctrlKey);
348
+ /**
349
+ * Tells if the day is selected (dark blue)
350
+ * @param timestamp
351
+ * @returns {boolean}
352
+ * @private
353
+ */
354
+ _isDaySelected(timestamp) {
355
+ if (this.selectionMode === CalendarSelectionMode.Single) {
356
+ return timestamp === this.selectedDates[0];
376
357
  }
377
- }
378
358
 
379
- get showWeekNumbers() {
380
- return this.primaryCalendarType === CalendarType.Gregorian;
359
+ // Multiple, Range
360
+ return this.selectedDates.includes(timestamp);
381
361
  }
382
362
 
383
- get _timestamp() {
384
- return this.timestamp !== undefined ? this.timestamp : Math.floor(new Date().getTime() / 1000);
385
- }
363
+ /**
364
+ * Tells if the day is inside a selection range (light blue)
365
+ * @param timestamp
366
+ * @returns {*}
367
+ * @private
368
+ */
369
+ _isDayInsideSelectionRange(timestamp) {
370
+ // No selection at all (or not in range selection mode)
371
+ if (this.selectionMode !== CalendarSelectionMode.Range || !this.selectedDates.length) {
372
+ return false;
373
+ }
386
374
 
387
- get _localDate() {
388
- return new Date(this._timestamp * 1000);
389
- }
375
+ // Only one date selected - the user is hovering with the mouse or navigating with the keyboard to select the second one
376
+ if (this.selectedDates.length === 1 && this._secondTimestamp) {
377
+ return isBetween(timestamp, this.selectedDates[0], this._secondTimestamp);
378
+ }
390
379
 
391
- get _calendarDate() {
392
- return CalendarDate.fromTimestamp(this._localDate.getTime(), this._primaryCalendarType);
380
+ // Two dates selected - stable range
381
+ return isBetween(timestamp, this.selectedDates[0], this.selectedDates[1]);
393
382
  }
394
383
 
395
- get _formatPattern() {
396
- return this.formatPattern || "medium"; // get from config
397
- }
384
+ /**
385
+ * Selects/deselects a day
386
+ * @param event
387
+ * @param isShift true if the user did Click+Shift or Enter+Shift (but not Space+Shift)
388
+ * @private
389
+ */
390
+ _selectDate(event, isShift) {
391
+ const target = event.target;
398
392
 
399
- get _month() {
400
- return this._calendarDate.getMonth();
401
- }
393
+ if (!this._isDayPressed(target)) {
394
+ return;
395
+ }
402
396
 
403
- get _year() {
404
- return this._calendarDate.getYear();
405
- }
397
+ const timestamp = this._getTimestampFromDom(target);
406
398
 
407
- get _currentCalendarDate() {
408
- return CalendarDate.fromTimestamp(new Date().getTime(), this._primaryCalendarType);
409
- }
399
+ this._safelySetTimestamp(timestamp);
400
+ this._updateSecondTimestamp();
410
401
 
411
- get _selectedDates() {
412
- return this.selectedDates || [];
413
- }
402
+ if (this.selectionMode === CalendarSelectionMode.Single) {
403
+ this.selectedDates = [timestamp];
404
+ } else if (this.selectionMode === CalendarSelectionMode.Multiple) {
405
+ if (this.selectedDates.length > 0 && isShift) {
406
+ this._multipleSelection(timestamp);
407
+ } else {
408
+ this._toggleTimestampInSelection(timestamp);
409
+ }
410
+ } else {
411
+ this.selectedDates = (this.selectedDates.length === 1) ? [...this.selectedDates, timestamp] : [timestamp];
412
+ }
414
413
 
415
- get _primaryCalendarType() {
416
- return this.primaryCalendarType || getCalendarType() || LocaleData.getInstance(getLocale()).getPreferredCalendarType();
414
+ this.fireEvent("change", {
415
+ timestamp: this.timestamp,
416
+ dates: this.selectedDates,
417
+ });
417
418
  }
418
419
 
419
- get focusableDays() {
420
- const focusableDays = [];
421
-
422
- for (let i = 0; i < this._weeks.length; i++) {
423
- const week = this._weeks[i].filter(x => !x.disabled);
424
- focusableDays.push(week);
425
- }
420
+ /**
421
+ * Selects/deselects the whole row (week)
422
+ * @param event
423
+ * @private
424
+ */
425
+ _selectWeek(event) {
426
+ this._weeks.forEach(week => {
427
+ const dayInThisWeek = week.findIndex(item => {
428
+ const date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);
429
+ return date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();
430
+ }) !== -1;
431
+ if (dayInThisWeek) { // The current day is in this week
432
+ const notAllDaysOfThisWeekSelected = week.some(item => item.timestamp && !this.selectedDates.includes(parseInt(item.timestamp)));
433
+ if (notAllDaysOfThisWeekSelected) { // even if one day is not selected, select the whole week
434
+ week.filter(item => item.timestamp).forEach(item => {
435
+ this._addTimestampToSelection(parseInt(item.timestamp));
436
+ });
437
+ } else { // only if all days of this week are selected, deselect them
438
+ week.filter(item => item.timestamp).forEach(item => {
439
+ this._removeTimestampFromSelection(parseInt(item.timestamp));
440
+ });
441
+ }
442
+ }
443
+ });
426
444
 
427
- return [].concat(...focusableDays);
445
+ this.fireEvent("change", {
446
+ timestamp: this.timestamp,
447
+ dates: this.selectedDates,
448
+ });
428
449
  }
429
450
 
430
- _modifySelectionAndNotifySubscribers(sNewDate, bAdd) {
431
- if (bAdd) {
432
- this.selectedDates = [...this._selectedDates, sNewDate];
451
+ _toggleTimestampInSelection(timestamp) {
452
+ if (this.selectedDates.includes(timestamp)) {
453
+ this._removeTimestampFromSelection(timestamp);
433
454
  } else {
434
- this.selectedDates = [sNewDate];
455
+ this._addTimestampToSelection(timestamp);
435
456
  }
436
-
437
- this.fireEvent("selectionChange", { dates: [...this._selectedDates] });
438
457
  }
439
458
 
440
- _handleMonthBottomOverflow(event) {
441
- this._itemNav.hasNextPage = this._hasNextMonth();
459
+ _addTimestampToSelection(timestamp) {
460
+ if (!this.selectedDates.includes(timestamp)) {
461
+ this.selectedDates = [...this.selectedDates, timestamp];
462
+ }
442
463
  }
443
464
 
444
- _handleMonthTopOverflow(event) {
445
- this._itemNav.hasPrevPage = this._hasPrevMonth();
465
+ _removeTimestampFromSelection(timestamp) {
466
+ this.selectedDates = this.selectedDates.filter(value => value !== timestamp);
446
467
  }
447
468
 
448
- _hasNextMonth() {
449
- let newMonth = this._month + 1;
450
- let newYear = this._year;
469
+ /**
470
+ * When at least one day is selected and the user pressed shift
471
+ * @param timestamp
472
+ * @private
473
+ */
474
+ _multipleSelection(timestamp) {
475
+ const min = Math.min(...this.selectedDates);
476
+ const max = Math.max(...this.selectedDates);
477
+ let start;
478
+ let end;
479
+ let toggle = false;
480
+
481
+ if (timestamp < min) {
482
+ start = timestamp;
483
+ end = min;
484
+ } else if (timestamp >= min && timestamp <= max) { // inside the current range - toggle all between the selected and focused
485
+ const distanceToMin = Math.abs(timestamp - min);
486
+ const distanceToMax = Math.abs(timestamp - max);
451
487
 
452
- if (newMonth > 11) {
453
- newMonth = 0;
454
- newYear++;
488
+ if (distanceToMin < distanceToMax) {
489
+ start = timestamp;
490
+ end = max;
491
+ } else {
492
+ start = min;
493
+ end = timestamp;
494
+ }
495
+ toggle = true;
496
+ } else {
497
+ start = max;
498
+ end = timestamp;
455
499
  }
456
500
 
457
- if (newYear > DEFAULT_MAX_YEAR && newMonth === 0) {
458
- return false;
501
+ const startDate = CalendarDate.fromTimestamp(start * 1000);
502
+ const endDate = CalendarDate.fromTimestamp(end * 1000);
503
+
504
+ while (startDate.valueOf() <= endDate.valueOf()) {
505
+ this[toggle ? "_toggleTimestampInSelection" : "_addTimestampToSelection"](startDate.valueOf() / 1000);
506
+ startDate.setDate(startDate.getDate() + 1);
459
507
  }
508
+ }
460
509
 
461
- if (!this.maxDate) {
462
- return true;
510
+ /**
511
+ * Set the hovered day as the _secondTimestamp
512
+ * @param event
513
+ * @private
514
+ */
515
+ _onmouseover(event) {
516
+ const hoveredItem = event.target.closest(".ui5-dp-item");
517
+ if (hoveredItem && this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {
518
+ this._secondTimestamp = this._getTimestampFromDom(hoveredItem);
463
519
  }
520
+ }
464
521
 
465
- const oNewDate = this._calendarDate;
466
- oNewDate.setDate(oNewDate.getDate());
467
- oNewDate.setYear(newYear);
468
- oNewDate.setMonth(newMonth);
522
+ _onkeydown(event) {
523
+ let preventDefault = true;
524
+
525
+ if (isEnter(event) || isEnterShift(event)) {
526
+ this._selectDate(event, isEnterShift(event));
527
+ } else if (isSpace(event) || isSpaceShift(event)) {
528
+ event.preventDefault();
529
+ } else if (isLeft(event)) {
530
+ this._modifyTimestampBy(-1, "day");
531
+ } else if (isRight(event)) {
532
+ this._modifyTimestampBy(1, "day");
533
+ } else if (isUp(event)) {
534
+ this._modifyTimestampBy(-7, "day");
535
+ } else if (isDown(event)) {
536
+ this._modifyTimestampBy(7, "day");
537
+ } else if (isPageUp(event)) {
538
+ this._modifyTimestampBy(-1, "month");
539
+ } else if (isPageDown(event)) {
540
+ this._modifyTimestampBy(1, "month");
541
+ } else if (isPageUpShift(event) || isPageUpAlt(event)) {
542
+ this._modifyTimestampBy(-1, "year");
543
+ } else if (isPageDownShift(event) || isPageDownAlt(event)) {
544
+ this._modifyTimestampBy(1, "year");
545
+ } else if (isPageUpShiftCtrl(event)) {
546
+ this._modifyTimestampBy(-10, "year");
547
+ } else if (isPageDownShiftCtrl(event)) {
548
+ this._modifyTimestampBy(10, "year");
549
+ } else if (isHome(event) || isEnd(event)) {
550
+ this._onHomeOrEnd(isHome(event));
551
+ } else if (isHomeCtrl(event)) {
552
+ const tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);
553
+ tempDate.setDate(1); // Set the first day of the month
554
+ this._setTimestamp(tempDate.valueOf() / 1000);
555
+ } else if (isEndCtrl(event)) {
556
+ const tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);
557
+ tempDate.setMonth(tempDate.getMonth() + 1);
558
+ tempDate.setDate(0); // Set the last day of the month (0th day of next month)
559
+ this._setTimestamp(tempDate.valueOf() / 1000);
560
+ } else {
561
+ preventDefault = false;
562
+ }
469
563
 
470
- const monthsBetween = monthDiff(oNewDate.valueOf(), this._maxDate);
471
- if (monthsBetween < 0) {
472
- return false;
564
+ if (preventDefault) {
565
+ event.preventDefault();
473
566
  }
567
+ }
474
568
 
475
- const lastFocusableDay = this.focusableDays[this.focusableDays.length - 1].iDay;
476
- if (monthsBetween === 0 && CalendarDate.fromTimestamp(this._maxDate).toLocalJSDate().getDate() === lastFocusableDay) {
477
- return false;
569
+ _onkeyup(event) {
570
+ // Even if Space+Shift was pressed, ignore the shift unless in Multiple selection
571
+ if (isSpace(event) || (isSpaceShift(event) && this.selectionMode !== CalendarSelectionMode.Multiple)) {
572
+ this._selectDate(event, false);
573
+ } else if (isSpaceShift(event)) {
574
+ this._selectWeek(event);
478
575
  }
576
+ }
479
577
 
480
- return true;
578
+ /**
579
+ * Click is the same as Enter: Click+Shift has the same effect as Enter+Shift
580
+ * @param event
581
+ * @private
582
+ */
583
+ _onclick(event) {
584
+ this._selectDate(event, event.shiftKey);
481
585
  }
482
586
 
483
- _hasPrevMonth() {
484
- let newMonth = this._month - 1;
485
- let newYear = this._year;
587
+ /**
588
+ * One Home or End, move the focus to the first or last item in the row
589
+ * @param homePressed
590
+ * @private
591
+ */
592
+ _onHomeOrEnd(homePressed) {
593
+ this._weeks.forEach(week => {
594
+ const dayInThisWeek = week.findIndex(item => {
595
+ const date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);
596
+ return date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();
597
+ }) !== -1;
598
+ if (dayInThisWeek) { // The current day is in this week
599
+ const index = homePressed ? 1 : 7; // select the first (if Home) or last (if End) day of the week
600
+ this._setTimestamp(parseInt(week[index].timestamp));
601
+ }
602
+ });
603
+ }
486
604
 
487
- if (newMonth < 0) {
488
- newMonth = 11;
489
- newYear--;
490
- }
605
+ /**
606
+ * Called from Calendar.js
607
+ * @protected
608
+ */
609
+ _hasPreviousPage() {
610
+ return !(this._calendarDate.getMonth() === this._minDate.getMonth() && this._calendarDate.getYear() === this._minDate.getYear());
611
+ }
491
612
 
492
- if (newYear < DEFAULT_MIN_YEAR && newMonth === 11) {
493
- return false;
494
- }
613
+ /**
614
+ * Called from Calendar.js
615
+ * @protected
616
+ */
617
+ _hasNextPage() {
618
+ return !(this._calendarDate.getMonth() === this._maxDate.getMonth() && this._calendarDate.getYear() === this._maxDate.getYear());
619
+ }
495
620
 
496
- if (!this.minDate) {
497
- return true;
498
- }
621
+ /**
622
+ * Called from Calendar.js
623
+ * Same as PageUp
624
+ * @protected
625
+ */
626
+ _showPreviousPage() {
627
+ this._modifyTimestampBy(-1, "month");
628
+ }
499
629
 
500
- const oNewDate = this._calendarDate;
501
- oNewDate.setDate(oNewDate.getDate());
502
- oNewDate.setYear(newYear);
503
- oNewDate.setMonth(newMonth);
630
+ /**
631
+ * Called from Calendar.js
632
+ * Same as PageDown
633
+ * @protected
634
+ */
635
+ _showNextPage() {
636
+ this._modifyTimestampBy(1, "month");
637
+ }
504
638
 
505
- const monthsBetween = monthDiff(this._minDate, oNewDate.valueOf());
506
- if (this.minDate && monthsBetween < 0) {
507
- return false;
508
- }
639
+ /**
640
+ * Modifies the timestamp by a certain amount of days/months/years
641
+ * @param amount
642
+ * @param unit
643
+ * @private
644
+ */
645
+ _modifyTimestampBy(amount, unit) {
646
+ // Modify the current timestamp
647
+ this._safelyModifyTimestampBy(amount, unit);
648
+ this._updateSecondTimestamp();
509
649
 
510
- return true;
511
- }
512
-
513
- _handleItemNavigationBorderReach(event) {
514
- const currentMonth = this._month,
515
- currentYear = this._year;
516
- let newMonth,
517
- newYear,
518
- newDate,
519
- currentDate;
520
-
521
- if (event.end) {
522
- currentDate = new Date(this._weeks[this._weeks.length - 1][event.offset].timestamp * 1000);
523
- newMonth = currentMonth < 11 ? currentMonth + 1 : 0;
524
- newYear = currentMonth < 11 ? currentYear : currentYear + 1;
525
- newDate = currentDate.getMonth() === newMonth ? currentDate.getDate() : currentDate.getDate() + 7;
526
- } else if (event.start) {
527
- currentDate = new Date(this._weeks[0][event.offset].timestamp * 1000);
528
- newMonth = currentMonth > 0 ? currentMonth - 1 : 11;
529
- newYear = currentMonth > 0 ? currentYear : currentYear - 1;
530
- newDate = currentDate.getMonth() === newMonth ? currentDate.getDate() : currentDate.getDate() - 7;
531
- }
650
+ // Notify the calendar to update its timestamp
651
+ this.fireEvent("navigate", { timestamp: this.timestamp });
652
+ }
532
653
 
533
- const oNewDate = this._calendarDate;
534
- oNewDate.setDate(newDate);
535
- oNewDate.setYear(newYear);
536
- oNewDate.setMonth(newMonth);
654
+ /**
655
+ * Sets the timestamp to an absolute value
656
+ * @param value
657
+ * @private
658
+ */
659
+ _setTimestamp(value) {
660
+ this._safelySetTimestamp(value);
661
+ this._updateSecondTimestamp();
662
+ this.fireEvent("navigate", { timestamp: this.timestamp });
663
+ }
537
664
 
538
- if (oNewDate.getYear() < DEFAULT_MIN_YEAR || oNewDate.getYear() > DEFAULT_MAX_YEAR) {
539
- return;
665
+ /**
666
+ * During range selection, when the user is navigating with the keyboard, the currently focused day is considered the "second day"
667
+ * @private
668
+ */
669
+ _updateSecondTimestamp() {
670
+ if (this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {
671
+ this._secondTimestamp = this.timestamp;
540
672
  }
673
+ }
541
674
 
542
- if (this._isOutOfSelectableRange(oNewDate._oUDate.oDate)) {
543
- return;
675
+ get shouldHideWeekNumbers() {
676
+ if (this._primaryCalendarType !== CalendarType.Gregorian) {
677
+ return true;
544
678
  }
545
679
 
546
- this.fireEvent("navigate", { timestamp: (oNewDate.valueOf() / 1000) });
680
+ return this.hideWeekNumbers;
681
+ }
682
+
683
+ get hasSecondaryCalendarType() {
684
+ return !!this.secondaryCalendarType;
547
685
  }
548
686
 
549
687
  _isWeekend(oDate) {
688
+ const localeData = getCachedLocaleDataInstance(getLocale());
689
+
550
690
  const iWeekDay = oDate.getDay(),
551
- iWeekendStart = this._oLocaleData.getWeekendStart(),
552
- iWeekendEnd = this._oLocaleData.getWeekendEnd();
691
+ iWeekendStart = localeData.getWeekendStart(),
692
+ iWeekendEnd = localeData.getWeekendEnd();
553
693
 
554
694
  return (iWeekDay >= iWeekendStart && iWeekDay <= iWeekendEnd)
555
695
  || (iWeekendEnd < iWeekendStart && (iWeekDay >= iWeekendStart || iWeekDay <= iWeekendEnd));
@@ -557,107 +697,44 @@ class DayPicker extends UI5Element {
557
697
 
558
698
  _isDayPressed(target) {
559
699
  const targetParent = target.parentNode;
560
- return (target.className.indexOf("ui5-dp-item") > -1) || (targetParent && target.parentNode.classList.contains("ui5-dp-item"));
700
+ return (target.className.indexOf("ui5-dp-item") > -1) || (targetParent && targetParent.classList && targetParent.classList.contains("ui5-dp-item"));
561
701
  }
562
702
 
563
- _isOutOfSelectableRange(date) {
564
- const currentDate = date._oUDate ? date.toLocalJSDate() : CalendarDate.fromTimestamp(date).toLocalJSDate();
565
-
566
- return currentDate > this._maxDateObject || currentDate < this._minDateObject;
567
- }
568
-
569
- get _maxDate() {
570
- if (this.maxDate) {
571
- const jsDate = new Date(this.getFormat().parse(this.maxDate).getFullYear(), this.getFormat().parse(this.maxDate).getMonth(), this.getFormat().parse(this.maxDate).getDate());
572
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
573
- return oCalDate.valueOf();
574
- }
575
- return this.maxDate;
576
- }
577
-
578
- get _minDate() {
579
- if (this.minDate) {
580
- const jsDate = new Date(this.getFormat().parse(this.minDate).getFullYear(), this.getFormat().parse(this.minDate).getMonth(), this.getFormat().parse(this.minDate).getDate());
581
- const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
582
- return oCalDate.valueOf();
583
- }
584
- return this.minDate;
585
- }
586
-
587
- getFormat() {
588
- if (this._isPattern) {
589
- this._oDateFormat = DateFormat.getInstance({
590
- pattern: this._formatPattern,
591
- calendarType: this._primaryCalendarType,
592
- });
593
- } else {
594
- this._oDateFormat = DateFormat.getInstance({
595
- style: this._formatPattern,
596
- calendarType: this._primaryCalendarType,
597
- });
598
- }
599
- return this._oDateFormat;
600
- }
601
-
602
- get _isPattern() {
603
- return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
703
+ _getSecondaryDay(tempDate) {
704
+ return new CalendarDate(tempDate, this.secondaryCalendarType);
604
705
  }
605
706
 
606
- _getVisibleDays(oStartDate, bIncludeBCDates) {
607
- let oCalDate,
608
- iDaysOldMonth,
609
- iYear;
610
-
611
- const _aVisibleDays = [];
612
-
613
- // If date passed generate days for new start date else return the current one
614
- if (!oStartDate) {
615
- return _aVisibleDays;
616
- }
707
+ _getFirstDay() {
708
+ let daysFromPreviousMonth;
617
709
 
618
- const iFirstDayOfWeek = this._getFirstDayOfWeek();
710
+ const firstDayOfWeek = this._getFirstDayOfWeek();
619
711
 
620
712
  // determine weekday of first day in month
621
- const oFirstDay = new CalendarDate(oStartDate, this._primaryCalendarType);
622
- oFirstDay.setDate(1);
623
- iDaysOldMonth = oFirstDay.getDay() - iFirstDayOfWeek;
624
- if (iDaysOldMonth < 0) {
625
- iDaysOldMonth = 7 + iDaysOldMonth;
713
+ const firstDay = new CalendarDate(this._calendarDate, this._primaryCalendarType);
714
+ firstDay.setDate(1);
715
+ daysFromPreviousMonth = firstDay.getDay() - firstDayOfWeek;
716
+ if (daysFromPreviousMonth < 0) {
717
+ daysFromPreviousMonth = 7 + daysFromPreviousMonth;
626
718
  }
627
719
 
628
- if (iDaysOldMonth > 0) {
629
- // determine first day for display
630
- oFirstDay.setDate(1 - iDaysOldMonth);
720
+ if (daysFromPreviousMonth > 0) {
721
+ firstDay.setDate(1 - daysFromPreviousMonth);
631
722
  }
632
723
 
633
- const oDay = new CalendarDate(oFirstDay);
634
- for (let i = 0; i < 42; i++) {
635
- iYear = oDay.getYear();
636
- oCalDate = new CalendarDate(oDay, this._primaryCalendarType);
637
- if (bIncludeBCDates && iYear < DEFAULT_MIN_YEAR) {
638
- // For dates before 0001-01-01 we should render only empty squares to keep
639
- // the month square matrix correct.
640
- oCalDate._bBeforeFirstYear = true;
641
- _aVisibleDays.push(oCalDate);
642
- } else if (iYear >= DEFAULT_MIN_YEAR && iYear <= DEFAULT_MAX_YEAR) {
643
- // Days before 0001-01-01 or after 9999-12-31 should not be rendered.
644
- _aVisibleDays.push(oCalDate);
645
- }
646
- oDay.setDate(oDay.getDate() + 1);
647
- }
648
-
649
- return _aVisibleDays;
724
+ return firstDay;
650
725
  }
651
726
 
652
727
  _getFirstDayOfWeek() {
728
+ const localeData = getCachedLocaleDataInstance(getLocale());
653
729
  const confFirstDayOfWeek = getFirstDayOfWeek();
654
- return Number.isInteger(confFirstDayOfWeek) ? confFirstDayOfWeek : this._oLocaleData.getFirstDayOfWeek();
730
+ return Number.isInteger(confFirstDayOfWeek) ? confFirstDayOfWeek : localeData.getFirstDayOfWeek();
655
731
  }
656
732
 
657
733
  get styles() {
658
734
  return {
659
735
  wrapper: {
660
736
  display: this._hidden ? "none" : "flex",
737
+ "justify-content": "center",
661
738
  },
662
739
  main: {
663
740
  width: "100%",
@@ -665,12 +742,10 @@ class DayPicker extends UI5Element {
665
742
  };
666
743
  }
667
744
 
668
- static async define(...params) {
669
- await Promise.all([
670
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
671
- ]);
672
-
673
- super.define(...params);
745
+ get ariaRoledescription() {
746
+ return this.hasSecondaryCalendarType
747
+ ? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType} calendar`
748
+ : `${this._primaryCalendarType} calendar`;
674
749
  }
675
750
  }
676
751