@ui5/webcomponents 0.0.0-aeb93167c → 0.0.0-b053ad005

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 (742) hide show
  1. package/CHANGELOG.md +343 -0
  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 +189 -49
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +45 -19
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +121 -34
  13. package/dist/Button.js +110 -66
  14. package/dist/Calendar.js +324 -648
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +110 -59
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +38 -198
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +253 -94
  21. package/dist/CheckBox.js +138 -70
  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 +348 -144
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +11 -24
  30. package/dist/CustomListItem.js +36 -2
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +264 -519
  33. package/dist/DateRangePicker.js +162 -426
  34. package/dist/DateTimePicker.js +94 -413
  35. package/dist/DayPicker.js +443 -648
  36. package/dist/Dialog.js +220 -58
  37. package/dist/DurationPicker.js +109 -511
  38. package/dist/FileUploader.js +70 -31
  39. package/dist/GroupHeaderListItem.js +22 -13
  40. package/dist/Icon.js +103 -41
  41. package/dist/Input.js +346 -155
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +105 -43
  45. package/dist/List.js +377 -104
  46. package/dist/ListItem.js +60 -13
  47. package/dist/ListItemBase.js +29 -2
  48. package/dist/MessageStrip.js +47 -46
  49. package/dist/MonthPicker.js +171 -225
  50. package/dist/MultiComboBox.js +356 -135
  51. package/dist/MultiComboBoxItem.js +7 -2
  52. package/dist/MultiInput.js +55 -24
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +63 -73
  55. package/dist/Popover.js +195 -80
  56. package/dist/Popup.js +151 -61
  57. package/dist/ProgressIndicator.js +28 -20
  58. package/dist/RadioButton.js +126 -43
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +27 -37
  62. package/dist/ResponsivePopover.js +56 -42
  63. package/dist/SegmentedButton.js +102 -68
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +275 -116
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +35 -9
  69. package/dist/StepInput.js +681 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +13 -26
  72. package/dist/SuggestionListItem.js +17 -6
  73. package/dist/Switch.js +52 -32
  74. package/dist/Tab.js +47 -26
  75. package/dist/TabContainer.js +94 -34
  76. package/dist/TabSeparator.js +1 -0
  77. package/dist/Table.js +474 -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 +210 -11
  82. package/dist/TextArea.js +86 -46
  83. package/dist/TimePicker.js +27 -743
  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 +19 -8
  88. package/dist/ToggleButton.js +21 -8
  89. package/dist/Token.js +32 -16
  90. package/dist/Tokenizer.js +75 -42
  91. package/dist/Tree.js +97 -41
  92. package/dist/TreeItem.js +44 -9
  93. package/dist/TreeListItem.js +86 -2
  94. package/dist/WheelSlider.js +58 -58
  95. package/dist/YearPicker.js +188 -284
  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 +131 -30
  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 -1
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  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 -19
  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 -16
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -13
  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 -13
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -13
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -11
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -11
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -17
  173. package/dist/generated/templates/CarouselTemplate.lit.js +13 -19
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -14
  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 -25
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -14
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -20
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -13
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -13
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +9 -19
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -19
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -15
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +7 -14
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +7 -14
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -11
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -13
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -31
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -15
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -11
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -12
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -20
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -16
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +8 -15
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -13
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -27
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -16
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +13 -19
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -14
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -16
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +4 -11
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -11
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +14 -17
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -14
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +11 -16
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -21
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +4 -11
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -27
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -12
  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 -28
  219. package/dist/generated/templates/StepInputTemplate.lit.js +8 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +24 -31
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -13
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -13
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -23
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -13
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +8 -17
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -11
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -11
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -11
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -11
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -18
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -15
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +8 -15
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -15
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -15
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +6 -13
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -17
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -11
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -13
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -14
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +9 -16
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -13
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +18 -24
  245. package/dist/generated/templates/TreeTemplate.lit.js +5 -12
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +7 -14
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -13
  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 +5 -5
  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 +5 -5
  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 +5 -5
  300. package/dist/generated/themes/ProgressIndicator.css.js +5 -5
  301. package/dist/generated/themes/RadioButton.css.js +5 -5
  302. package/dist/generated/themes/RatingIndicator.css.js +5 -5
  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 +5 -5
  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 -1
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  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 +1 -1
  397. package/dist/popup-utils/PopoverRegistry.js +2 -4
  398. package/dist/timepicker-utils/TimeSlider.js +15 -13
  399. package/{src/types/AvatarBackgroundColor.js → dist/types/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 +1 -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 +18 -7
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +2 -1
  454. package/src/Avatar.hbs +14 -3
  455. package/src/Avatar.js +189 -49
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +7 -4
  459. package/src/Badge.js +45 -19
  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 +28 -14
  465. package/src/BusyIndicator.js +121 -34
  466. package/src/Button.hbs +5 -3
  467. package/src/Button.js +110 -66
  468. package/src/Calendar.hbs +53 -48
  469. package/src/Calendar.js +324 -648
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +29 -36
  472. package/src/CalendarHeader.js +110 -59
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +7 -39
  475. package/src/Card.js +38 -198
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +23 -16
  479. package/src/Carousel.js +253 -94
  480. package/src/CheckBox.hbs +10 -7
  481. package/src/CheckBox.js +138 -70
  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 +7 -2
  492. package/src/ComboBox.js +348 -144
  493. package/src/ComboBoxFilters.js +8 -1
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +11 -24
  496. package/src/ComboBoxPopover.hbs +26 -16
  497. package/src/CustomListItem.js +36 -2
  498. package/src/DateComponentBase.js +170 -0
  499. package/src/DatePicker.hbs +5 -4
  500. package/src/DatePicker.js +264 -519
  501. package/src/DatePickerPopover.hbs +22 -17
  502. package/src/DateRangePicker.js +162 -426
  503. package/src/DateTimePicker.js +94 -413
  504. package/src/DateTimePickerPopover.hbs +28 -52
  505. package/src/DayPicker.hbs +18 -12
  506. package/src/DayPicker.js +443 -648
  507. package/src/Dialog.hbs +14 -10
  508. package/src/Dialog.js +220 -58
  509. package/src/DurationPicker.js +109 -511
  510. package/src/FileUploader.hbs +3 -0
  511. package/src/FileUploader.js +70 -31
  512. package/src/FileUploaderPopover.hbs +2 -1
  513. package/src/GroupHeaderListItem.hbs +4 -4
  514. package/src/GroupHeaderListItem.js +22 -13
  515. package/src/Icon.hbs +4 -3
  516. package/src/Icon.js +103 -41
  517. package/src/Input.hbs +17 -6
  518. package/src/Input.js +346 -155
  519. package/src/InputPopover.hbs +11 -7
  520. package/src/Interfaces.js +192 -0
  521. package/src/Label.hbs +1 -1
  522. package/src/Label.js +27 -12
  523. package/src/Link.hbs +3 -2
  524. package/src/Link.js +105 -43
  525. package/src/List.hbs +76 -37
  526. package/src/List.js +377 -104
  527. package/src/ListItem.hbs +20 -7
  528. package/src/ListItem.js +60 -13
  529. package/src/ListItemBase.js +29 -2
  530. package/src/MessageStrip.hbs +10 -11
  531. package/src/MessageStrip.js +47 -46
  532. package/src/MonthPicker.hbs +6 -6
  533. package/src/MonthPicker.js +171 -225
  534. package/src/MultiComboBox.hbs +10 -6
  535. package/src/MultiComboBox.js +356 -135
  536. package/src/MultiComboBoxItem.js +7 -2
  537. package/src/MultiComboBoxPopover.hbs +42 -18
  538. package/src/MultiInput.hbs +2 -1
  539. package/src/MultiInput.js +55 -24
  540. package/src/Option.js +48 -5
  541. package/src/Panel.hbs +23 -16
  542. package/src/Panel.js +63 -73
  543. package/src/Popover.js +195 -80
  544. package/src/Popup.hbs +5 -0
  545. package/src/Popup.js +151 -61
  546. package/src/ProgressIndicator.hbs +7 -1
  547. package/src/ProgressIndicator.js +28 -20
  548. package/src/RadioButton.hbs +7 -4
  549. package/src/RadioButton.js +126 -43
  550. package/src/RadioButtonGroup.js +53 -29
  551. package/src/RangeSlider.hbs +70 -0
  552. package/src/RangeSlider.js +769 -0
  553. package/src/RatingIndicator.hbs +5 -3
  554. package/src/RatingIndicator.js +27 -37
  555. package/src/ResponsivePopover.hbs +13 -8
  556. package/src/ResponsivePopover.js +56 -42
  557. package/src/SegmentedButton.hbs +12 -5
  558. package/src/SegmentedButton.js +102 -68
  559. package/src/SegmentedButtonItem.hbs +42 -0
  560. package/src/SegmentedButtonItem.js +109 -0
  561. package/src/Select.hbs +26 -17
  562. package/src/Select.js +275 -116
  563. package/src/SelectPopover.hbs +27 -24
  564. package/src/Slider.hbs +42 -0
  565. package/src/Slider.js +320 -0
  566. package/src/SliderBase.hbs +38 -0
  567. package/src/SliderBase.js +842 -0
  568. package/src/StandardListItem.hbs +7 -5
  569. package/src/StandardListItem.js +35 -9
  570. package/src/StepInput.hbs +77 -0
  571. package/src/StepInput.js +681 -0
  572. package/src/SuggestionGroupItem.js +64 -0
  573. package/src/SuggestionItem.js +13 -26
  574. package/src/SuggestionListItem.hbs +4 -4
  575. package/src/SuggestionListItem.js +17 -6
  576. package/src/Switch.hbs +19 -3
  577. package/src/Switch.js +52 -32
  578. package/src/Tab.js +47 -26
  579. package/src/TabContainer.hbs +43 -26
  580. package/src/TabContainer.js +94 -34
  581. package/src/TabContainerPopover.hbs +2 -1
  582. package/src/TabInStrip.hbs +1 -6
  583. package/src/TabSeparator.hbs +1 -1
  584. package/src/TabSeparator.js +1 -0
  585. package/src/Table.hbs +95 -25
  586. package/src/Table.js +474 -22
  587. package/src/TableCell.hbs +1 -0
  588. package/src/TableCell.js +11 -9
  589. package/src/TableColumn.hbs +2 -0
  590. package/src/TableColumn.js +13 -3
  591. package/src/TableGroupRow.hbs +12 -0
  592. package/src/TableGroupRow.js +160 -0
  593. package/src/TableRow.hbs +29 -2
  594. package/src/TableRow.js +210 -11
  595. package/src/TextArea.hbs +1 -3
  596. package/src/TextArea.js +86 -46
  597. package/src/TextAreaPopover.hbs +2 -1
  598. package/src/TimePicker.hbs +6 -3
  599. package/src/TimePicker.js +27 -743
  600. package/src/TimePickerBase.js +463 -0
  601. package/src/TimePickerPopover.hbs +28 -52
  602. package/src/TimeSelection.hbs +60 -0
  603. package/src/TimeSelection.js +493 -0
  604. package/src/Title.js +16 -9
  605. package/src/Toast.hbs +13 -11
  606. package/src/Toast.js +19 -8
  607. package/src/ToggleButton.js +21 -8
  608. package/src/Token.hbs +2 -0
  609. package/src/Token.js +32 -16
  610. package/src/Tokenizer.hbs +1 -0
  611. package/src/Tokenizer.js +75 -42
  612. package/src/TokenizerPopover.hbs +1 -1
  613. package/src/Tree.hbs +10 -2
  614. package/src/Tree.js +97 -41
  615. package/src/TreeItem.js +44 -9
  616. package/src/TreeListItem.hbs +15 -4
  617. package/src/TreeListItem.js +86 -2
  618. package/src/WheelSlider.hbs +17 -10
  619. package/src/WheelSlider.js +58 -58
  620. package/src/YearPicker.hbs +9 -7
  621. package/src/YearPicker.js +188 -284
  622. package/src/features/ColorPaletteMoreColors.js +42 -0
  623. package/src/features/InputElementsFormSupport.js +0 -1
  624. package/src/features/InputSuggestions.js +131 -30
  625. package/src/i18n/messagebundle.properties +144 -189
  626. package/src/i18n/messagebundle_ar.properties +99 -115
  627. package/src/i18n/messagebundle_bg.properties +99 -115
  628. package/src/i18n/messagebundle_ca.properties +99 -115
  629. package/src/i18n/messagebundle_cs.properties +99 -115
  630. package/src/i18n/messagebundle_cy.properties +224 -0
  631. package/src/i18n/messagebundle_da.properties +99 -115
  632. package/src/i18n/messagebundle_de.properties +99 -115
  633. package/src/i18n/messagebundle_el.properties +99 -115
  634. package/src/i18n/messagebundle_en.properties +99 -115
  635. package/src/i18n/messagebundle_en_GB.properties +224 -0
  636. package/src/i18n/messagebundle_en_US_sappsd.properties +99 -115
  637. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  638. package/src/i18n/messagebundle_en_US_saptrc.properties +99 -115
  639. package/src/i18n/messagebundle_es.properties +99 -115
  640. package/src/i18n/messagebundle_es_MX.properties +224 -0
  641. package/src/i18n/messagebundle_et.properties +99 -115
  642. package/src/i18n/messagebundle_fi.properties +99 -115
  643. package/src/i18n/messagebundle_fr.properties +99 -115
  644. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  645. package/src/i18n/messagebundle_hi.properties +99 -115
  646. package/src/i18n/messagebundle_hr.properties +99 -115
  647. package/src/i18n/messagebundle_hu.properties +99 -115
  648. package/src/i18n/messagebundle_id.properties +224 -0
  649. package/src/i18n/messagebundle_in.properties +172 -0
  650. package/src/i18n/messagebundle_it.properties +99 -115
  651. package/src/i18n/messagebundle_iw.properties +99 -115
  652. package/src/i18n/messagebundle_ja.properties +100 -116
  653. package/src/i18n/messagebundle_kk.properties +99 -115
  654. package/src/i18n/messagebundle_ko.properties +99 -115
  655. package/src/i18n/messagebundle_lt.properties +99 -115
  656. package/src/i18n/messagebundle_lv.properties +99 -115
  657. package/src/i18n/messagebundle_ms.properties +99 -115
  658. package/src/i18n/messagebundle_nl.properties +99 -115
  659. package/src/i18n/messagebundle_no.properties +99 -115
  660. package/src/i18n/messagebundle_pl.properties +99 -115
  661. package/src/i18n/messagebundle_pt.properties +99 -115
  662. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  663. package/src/i18n/messagebundle_ro.properties +98 -114
  664. package/src/i18n/messagebundle_ru.properties +99 -115
  665. package/src/i18n/messagebundle_sh.properties +99 -115
  666. package/src/i18n/messagebundle_sk.properties +99 -115
  667. package/src/i18n/messagebundle_sl.properties +99 -115
  668. package/src/i18n/messagebundle_sv.properties +99 -115
  669. package/src/i18n/messagebundle_th.properties +99 -115
  670. package/src/i18n/messagebundle_tr.properties +99 -115
  671. package/src/i18n/messagebundle_uk.properties +101 -117
  672. package/src/i18n/messagebundle_vi.properties +99 -115
  673. package/src/i18n/messagebundle_zh_CN.properties +99 -115
  674. package/src/i18n/messagebundle_zh_TW.properties +99 -115
  675. package/src/popup-utils/OpenedPopupsRegistry.js +1 -1
  676. package/src/popup-utils/PopoverRegistry.js +2 -4
  677. package/src/timepicker-utils/TimeSlider.js +15 -13
  678. package/{dist/types/AvatarBackgroundColor.js → src/types/AvatarColorScheme.js} +9 -9
  679. package/src/types/AvatarGroupType.js +43 -0
  680. package/src/types/AvatarShape.js +1 -1
  681. package/src/types/AvatarSize.js +1 -1
  682. package/src/types/BreadcrumbsDesign.js +42 -0
  683. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  684. package/src/types/BusyIndicatorSize.js +1 -1
  685. package/src/types/ButtonDesign.js +8 -1
  686. package/src/types/CalendarSelectionMode.js +47 -0
  687. package/src/types/CarouselArrowsPlacement.js +3 -3
  688. package/src/types/GrowingMode.js +48 -0
  689. package/src/types/InputType.js +7 -7
  690. package/src/types/LinkDesign.js +1 -1
  691. package/src/types/ListGrowingMode.js +15 -0
  692. package/src/types/ListItemType.js +1 -1
  693. package/src/types/ListMode.js +1 -1
  694. package/src/types/ListSeparators.js +1 -1
  695. package/src/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  696. package/src/types/PanelAccessibleRole.js +1 -1
  697. package/src/types/PopoverHorizontalAlign.js +1 -1
  698. package/src/types/PopoverPlacementType.js +2 -2
  699. package/src/types/PopoverVerticalAlign.js +1 -2
  700. package/src/types/Priority.js +1 -1
  701. package/src/types/SemanticColor.js +1 -1
  702. package/src/types/SwitchDesign.js +40 -0
  703. package/src/types/TabContainerTabsPlacement.js +5 -5
  704. package/src/types/TabLayout.js +1 -1
  705. package/src/types/TableGrowingMode.js +15 -0
  706. package/src/types/TableMode.js +47 -0
  707. package/src/types/TableRowType.js +40 -0
  708. package/src/types/TitleLevel.js +1 -1
  709. package/src/types/ToastPlacement.js +1 -2
  710. package/src/types/WrappingType.js +41 -0
  711. package/dist/Timeline.js +0 -99
  712. package/dist/TimelineItem.js +0 -156
  713. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -14
  714. package/dist/generated/templates/DateRangePickerTemplate.lit.js +0 -16
  715. package/dist/generated/templates/DurationPickerPopoverTemplate.lit.js +0 -17
  716. package/dist/generated/templates/DurationPickerTemplate.lit.js +0 -16
  717. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -19
  718. package/dist/generated/templates/TimelineTemplate.lit.js +0 -15
  719. package/dist/generated/themes/ComboBoxItem.css.js +0 -8
  720. package/dist/generated/themes/DurationPicker.css.js +0 -8
  721. package/dist/generated/themes/DurationPickerPopover.css.js +0 -8
  722. package/dist/generated/themes/Timeline.css.js +0 -8
  723. package/dist/generated/themes/TimelineItem.css.js +0 -8
  724. package/dist/popup-utils/PopupUtils.js +0 -84
  725. package/dist/types/AvatarFitType.js +0 -40
  726. package/dist/webcomponentsjs/package.json +0 -46
  727. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  728. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  729. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  730. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  731. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  732. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  733. package/src/ComboBoxItem.hbs +0 -0
  734. package/src/DateRangePicker.hbs +0 -1
  735. package/src/DurationPicker.hbs +0 -29
  736. package/src/DurationPickerPopover.hbs +0 -48
  737. package/src/Timeline.hbs +0 -9
  738. package/src/Timeline.js +0 -99
  739. package/src/TimelineItem.hbs +0 -39
  740. package/src/TimelineItem.js +0 -156
  741. package/src/popup-utils/PopupUtils.js +0 -84
  742. package/src/types/AvatarFitType.js +0 -40
package/dist/DayPicker.js CHANGED
@@ -1,125 +1,76 @@
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
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-localization/dist/DateFormat.js";
7
3
  import getCachedLocaleDataInstance from "@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js";
8
- import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
9
- import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
10
4
  import {
11
5
  isSpace,
6
+ isSpaceShift,
12
7
  isEnter,
8
+ isEnterShift,
13
9
  isUp,
14
10
  isDown,
15
11
  isLeft,
16
12
  isRight,
13
+ isHome,
14
+ isEnd,
17
15
  isHomeCtrl,
18
16
  isEndCtrl,
19
17
  isPageUp,
20
18
  isPageDown,
21
19
  isPageUpShift,
20
+ isPageUpAlt,
22
21
  isPageUpShiftCtrl,
23
22
  isPageDownShift,
23
+ isPageDownAlt,
24
24
  isPageDownShiftCtrl,
25
25
  } from "@ui5/webcomponents-base/dist/Keys.js";
26
26
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
27
27
  import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
28
28
  import calculateWeekNumber from "@ui5/webcomponents-localization/dist/dates/calculateWeekNumber.js";
29
29
  import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
30
- import ItemNavigationBehavior from "@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js";
31
- import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
32
- import RenderScheduler from "@ui5/webcomponents-base/dist/RenderScheduler.js";
30
+ import CalendarSelectionMode from "./types/CalendarSelectionMode.js";
31
+ import CalendarPart from "./CalendarPart.js";
33
32
  import DayPickerTemplate from "./generated/templates/DayPickerTemplate.lit.js";
34
33
 
35
34
  import {
36
35
  DAY_PICKER_WEEK_NUMBER_TEXT,
37
36
  DAY_PICKER_NON_WORKING_DAY,
37
+ DAY_PICKER_TODAY,
38
38
  } from "./generated/i18n/i18n-defaults.js";
39
39
 
40
- // Styles
41
40
  import dayPickerCSS from "./generated/themes/DayPicker.css.js";
42
41
 
43
- const monthDiff = (startDate, endDate) => {
44
- let months;
45
- const _startDate = CalendarDate.fromTimestamp(startDate).toLocalJSDate(),
46
- _endDate = CalendarDate.fromTimestamp(endDate).toLocalJSDate();
47
-
48
- months = (_endDate.getFullYear() - _startDate.getFullYear()) * 12;
49
- months -= _startDate.getMonth();
50
- months += _endDate.getMonth();
51
- return months;
52
- };
53
-
54
42
  /**
55
43
  * @public
56
44
  */
57
45
  const metadata = {
58
46
  tag: "ui5-daypicker",
59
- languageAware: true,
60
47
  properties: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
61
48
  /**
62
- * A UNIX timestamp - seconds since 00:00:00 UTC on Jan 1, 1970.
63
- * @type {number}
64
- * @public
65
- */
66
- timestamp: {
67
- type: Integer,
68
- },
69
-
70
- /**
71
- * Sets a calendar type used for display.
72
- * If not set, the calendar type of the global configuration is used.
73
- * @type {CalendarType}
74
- * @public
75
- */
76
- primaryCalendarType: {
77
- type: CalendarType,
78
- },
79
-
80
- /**
81
- * 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.
82
50
  * @type {Array}
83
51
  * @public
84
52
  */
85
53
  selectedDates: {
86
54
  type: Integer,
87
55
  multiple: true,
56
+ compareValues: true,
88
57
  },
89
58
 
90
59
  /**
91
- * Determines the minimum date available for selection.
92
- *
93
- * @type {string}
94
- * @defaultvalue ""
95
- * @since 1.0.0-rc.6
96
- * @public
97
- */
98
- minDate: {
99
- type: String,
100
- },
101
-
102
- /**
103
- * Determines the maximum date available for selection.
104
- *
105
- * @type {string}
106
- * @defaultvalue ""
107
- * @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"
108
69
  * @public
109
70
  */
110
- maxDate: {
111
- type: String,
112
- },
113
-
114
- /**
115
- * Determines the format, displayed in the input field.
116
- *
117
- * @type {string}
118
- * @defaultvalue ""
119
- * @public
120
- */
121
- formatPattern: {
122
- type: String,
71
+ selectionMode: {
72
+ type: CalendarSelectionMode,
73
+ defaultValue: CalendarSelectionMode.Single,
123
74
  },
124
75
 
125
76
  /**
@@ -138,16 +89,6 @@ const metadata = {
138
89
  type: Boolean,
139
90
  },
140
91
 
141
- /**
142
- * Defines the effective weeks numbers visibility,
143
- * based on the <code>primaryCalendarType</code> and <code>hideWeekNumbers</code> property.
144
- * @type {boolean}
145
- * @private
146
- */
147
- _hideWeekNumbers: {
148
- type: Boolean,
149
- },
150
-
151
92
  /**
152
93
  * @type {Object}
153
94
  * @private
@@ -157,7 +98,13 @@ const metadata = {
157
98
  multiple: true,
158
99
  },
159
100
 
101
+ _dayNames: {
102
+ type: Object,
103
+ multiple: true,
104
+ },
105
+
160
106
  /**
107
+ * When set, the component will skip all work in onBeforeRendering and will not automatically set the focus on itself
161
108
  * @type {boolean}
162
109
  * @private
163
110
  */
@@ -165,16 +112,24 @@ const metadata = {
165
112
  type: Boolean,
166
113
  noAttribute: true,
167
114
  },
115
+
116
+ /**
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
119
+ */
120
+ _secondTimestamp: {
121
+ type: String,
122
+ },
168
123
  },
169
124
  events: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
170
125
  /**
171
- * Fired when the user selects a new Date on the Web Component.
126
+ * Fired when the selected date(s) change
172
127
  * @public
173
128
  * @event
174
129
  */
175
130
  change: {},
176
131
  /**
177
- * 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
178
133
  * @public
179
134
  * @event
180
135
  */
@@ -182,6 +137,10 @@ const metadata = {
182
137
  },
183
138
  };
184
139
 
140
+ const isBetween = (x, num1, num2) => x > Math.min(num1, num2) && x < Math.max(num1, num2);
141
+
142
+ const DAYS_IN_WEEK = 7;
143
+
185
144
  /**
186
145
  * @class
187
146
  *
@@ -190,19 +149,15 @@ const metadata = {
190
149
  * @constructor
191
150
  * @author SAP SE
192
151
  * @alias sap.ui.webcomponents.main.DayPicker
193
- * @extends sap.ui.webcomponents.base.UI5Element
152
+ * @extends CalendarPart
194
153
  * @tagname ui5-daypicker
195
154
  * @public
196
155
  */
197
- class DayPicker extends UI5Element {
156
+ class DayPicker extends CalendarPart {
198
157
  static get metadata() {
199
158
  return metadata;
200
159
  }
201
160
 
202
- static get render() {
203
- return litRender;
204
- }
205
-
206
161
  static get template() {
207
162
  return DayPickerTemplate;
208
163
  }
@@ -211,173 +166,158 @@ class DayPicker extends UI5Element {
211
166
  return dayPickerCSS;
212
167
  }
213
168
 
214
- constructor() {
215
- super();
216
-
217
- this._itemNav = new ItemNavigation(this, {
218
- rowSize: 7,
219
- pageSize: 42,
220
- behavior: ItemNavigationBehavior.Paging,
221
- });
222
-
223
- this._itemNav.getItemsCallback = function getItemsCallback() {
224
- return this.focusableDays;
225
- }.bind(this);
226
-
227
- this._itemNav.attachEvent(
228
- ItemNavigation.BORDER_REACH,
229
- this._handleItemNavigationBorderReach.bind(this)
230
- );
231
-
232
- this._itemNav.attachEvent(
233
- ItemNavigation.AFTER_FOCUS,
234
- this._handleItemNavigationAfterFocus.bind(this)
235
- );
236
-
237
- this._itemNav.attachEvent(
238
- "PageBottom",
239
- this._handleMonthBottomOverflow.bind(this)
240
- );
241
-
242
- this._itemNav.attachEvent(
243
- "PageTop",
244
- this._handleMonthTopOverflow.bind(this)
245
- );
246
-
247
- this.i18nBundle = getI18nBundle("@ui5/webcomponents");
248
- }
249
-
250
169
  onBeforeRendering() {
251
170
  const localeData = getCachedLocaleDataInstance(getLocale());
171
+ this._buildWeeks(localeData);
172
+ this._buildDayNames(localeData);
173
+ }
252
174
 
253
- let oCalDate,
254
- day,
255
- timestamp,
256
- lastWeekNumber = -1,
257
- isDaySelected = false,
258
- todayIndex = 0;
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
+ }
259
184
 
260
- const _aVisibleDays = this._getVisibleDays(this._calendarDate);
261
185
  this._weeks = [];
186
+
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)
197
+
198
+ const tempSecondDate = this.hasSecondaryCalendarType && this._getSecondaryDay(tempDate);
199
+
262
200
  let week = [];
263
- this._weekNumbers = [];
264
- let weekday;
265
- const _monthsNameWide = localeData.getMonths("wide", this._calendarDate._oUDate.sCalendarType);
266
-
267
- this._minDateObject = new Date(this._minDate);
268
- this._maxDateObject = new Date(this._maxDate);
269
-
270
- /* eslint-disable no-loop-func */
271
- for (let i = 0; i < _aVisibleDays.length; i++) {
272
- oCalDate = _aVisibleDays[i];
273
- timestamp = oCalDate.valueOf() / 1000; // no need to round because CalendarDate does it
274
-
275
- // day of the week
276
- weekday = oCalDate.getDay() - this._getFirstDayOfWeek();
277
- if (weekday < 0) {
278
- weekday += 7;
279
- }
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
280
203
 
281
- const nonWorkingAriaLabel = this._isWeekend(oCalDate) ? `${this._dayPickerNonWorkingDay} ` : "";
204
+ let dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;
205
+ if (dayOfTheWeek < 0) {
206
+ dayOfTheWeek += DAYS_IN_WEEK;
207
+ }
282
208
 
283
- day = {
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 = {
284
225
  timestamp: timestamp.toString(),
285
- selected: this._selectedDates.some(d => {
286
- return d === timestamp;
287
- }),
288
- selectedBetween: this._selectedDates.slice(1, this._selectedDates.length - 1).some(d => {
289
- return d === timestamp;
290
- }),
291
- iDay: oCalDate.getDate(),
292
- _index: i.toString(),
293
- classes: `ui5-dp-item ui5-dp-wday${weekday}`,
294
- ariaLabel: `${nonWorkingAriaLabel}${_monthsNameWide[oCalDate.getMonth()]} ${oCalDate.getDate()}, ${oCalDate.getYear()}`,
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,
295
237
  };
296
238
 
297
- const isToday = oCalDate.isSame(CalendarDate.fromLocalJSDate(new Date(), this._primaryCalendarType));
298
-
299
- week.push(day);
300
-
301
- if (oCalDate.getDay() === this._getFirstDayOfWeek()) {
239
+ if (isFirstDayOfWeek) {
302
240
  day.classes += " ui5-dp-firstday";
303
241
  }
304
242
 
305
- if (day.selected) {
243
+ if (isSelected) {
306
244
  day.classes += " ui5-dp-item--selected";
307
- isDaySelected = true;
308
245
  }
309
246
 
310
- if (day.selectedBetween) {
247
+ if (isSelectedBetween) {
311
248
  day.classes += " ui5-dp-item--selected-between";
312
249
  }
313
250
 
314
251
  if (isToday) {
315
252
  day.classes += " ui5-dp-item--now";
316
- todayIndex = i;
317
- day.ariaLabel = `today ${day.ariaLabel}`;
318
253
  }
319
254
 
320
- if (oCalDate.getMonth() !== this._month) {
255
+ if (isOtherMonth) {
321
256
  day.classes += " ui5-dp-item--othermonth";
322
- day.ariaDisabled = "true";
323
257
  }
324
258
 
325
- day.id = `${this._id}-${timestamp}`;
326
-
327
- if (this._isWeekend(oCalDate)) {
259
+ if (isWeekend) {
328
260
  day.classes += " ui5-dp-item--weeekend";
329
261
  }
330
- if ((this.minDate || this.maxDate) && this._isOutOfSelectableRange(oCalDate)) {
262
+
263
+ if (isDisabled) {
331
264
  day.classes += " ui5-dp-item--disabled";
332
- day.disabled = true;
333
265
  }
334
266
 
335
- this._hideWeekNumbers = this.shouldHideWeekNumbers;
336
-
337
- if (day.classes.indexOf("ui5-dp-wday6") !== -1
338
- || _aVisibleDays.length - 1 === i) {
339
- const weekNumber = calculateWeekNumber(getFirstDayOfWeek(), oCalDate.toUTCJSDate(), oCalDate.getYear(), getLocale(), localeData);
340
- if (lastWeekNumber !== weekNumber) {
341
- const weekNum = {
342
- weekNum: weekNumber,
343
- isHidden: this._hideWeekNumbers,
344
- };
345
- week.unshift(weekNum);
346
- lastWeekNumber = weekNumber;
347
- }
267
+ if (this.hasSecondaryCalendarType) {
268
+ day.classes += " ui5-dp-item--withsecondtype";
269
+ }
348
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
349
281
  this._weeks.push(week);
350
282
  week = [];
351
283
  }
284
+
285
+ tempDate.setDate(tempDate.getDate() + 1);
286
+ if (this.hasSecondaryCalendarType) {
287
+ tempSecondDate.setDate(tempSecondDate.getDate() + 1);
288
+ }
352
289
  }
353
- while (this._weeks.length < 6) {
354
- this._weeks.push([]);
355
- }
356
- /* eslint-enable no-loop-func */
290
+ }
357
291
 
358
- if (!isDaySelected && todayIndex && this._itemNav.current === 0) {
359
- 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
360
300
  }
361
301
 
302
+ let dayOfTheWeek;
303
+
362
304
  const aDayNamesWide = localeData.getDays("wide", this._primaryCalendarType);
363
305
  const aDayNamesAbbreviated = localeData.getDays("abbreviated", this._primaryCalendarType);
364
- const aUltraShortNames = aDayNamesAbbreviated.map(n => n);
365
306
  let dayName;
366
307
 
367
308
  this._dayNames = [];
368
309
  this._dayNames.push({
369
310
  classes: "ui5-dp-dayname",
370
- name: this._dayPickerWeekNumberText,
311
+ name: DayPicker.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT),
371
312
  });
372
- for (let i = 0; i < 7; i++) {
373
- weekday = i + this._getFirstDayOfWeek();
374
- if (weekday > 6) {
375
- weekday -= 7;
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;
376
317
  }
377
318
  dayName = {
378
- id: `${this._id}-WH${i.toString()}`,
379
- name: aDayNamesWide[weekday],
380
- ultraShortName: aUltraShortNames[weekday],
319
+ name: aDayNamesWide[dayOfTheWeek],
320
+ ultraShortName: aDayNamesAbbreviated[dayOfTheWeek],
381
321
  classes: "ui5-dp-dayname",
382
322
  };
383
323
 
@@ -385,413 +325,363 @@ class DayPicker extends UI5Element {
385
325
  }
386
326
 
387
327
  this._dayNames[1].classes += " ui5-dp-firstday";
328
+
329
+ if (this.shouldHideWeekNumbers) {
330
+ this._dayNames.shift();
331
+ }
388
332
  }
389
333
 
390
334
  onAfterRendering() {
391
- this._fireDayPickerRendered();
335
+ if (this._autoFocus && !this._hidden) {
336
+ this.focus();
337
+ }
392
338
  }
393
339
 
394
- _onmousedown(event) {
395
- const target = event.target;
396
- const dayPressed = this._isDayPressed(target);
397
-
398
- if (dayPressed) {
399
- const targetDate = parseInt(target.getAttribute("data-sap-timestamp"));
400
-
401
- // findIndex, give it to item navigation
402
- for (let i = 0; i < this._weeks.length; i++) {
403
- for (let j = 0; j < this._weeks[i].length; j++) {
404
- if (parseInt(this._weeks[i][j].timestamp) === targetDate) {
405
- let index = parseInt(target.getAttribute("data-sap-index"));
406
- if (this.minDate || this.maxDate) {
407
- const focusableItem = this.focusableDays.find(item => parseInt(item._index) === index);
408
- index = focusableItem ? this.focusableDays.indexOf(focusableItem) : index;
409
- }
410
-
411
- this._itemNav.current = index;
412
- this._itemNav.update();
413
- break;
414
- }
415
- }
416
- }
340
+ _onfocusin() {
341
+ this._autoFocus = true;
342
+ }
417
343
 
418
- this.targetDate = targetDate;
419
- }
344
+ _onfocusout() {
345
+ this._autoFocus = false;
420
346
  }
421
347
 
422
- _onmouseup(event) {
423
- const dayPressed = this._isDayPressed(event.target);
424
- if (this.targetDate) {
425
- this._modifySelectionAndNotifySubscribers(this.targetDate, event.ctrlKey);
426
- this.targetDate = null;
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];
427
357
  }
428
358
 
429
- if (!dayPressed) {
430
- this._itemNav.focusCurrent();
431
- }
359
+ // Multiple, Range
360
+ return this.selectedDates.includes(timestamp);
432
361
  }
433
362
 
434
- _onitemmouseover(event) {
435
- if (this.selectedDates.length === 1) {
436
- this.fireEvent("item-mouseover", event);
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;
437
373
  }
438
- }
439
374
 
440
- _onitemkeydown(event) {
441
- if (this.selectedDates.length === 1) {
442
- this.fireEvent("item-keydown", event);
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);
443
378
  }
379
+
380
+ // Two dates selected - stable range
381
+ return isBetween(timestamp, this.selectedDates[0], this.selectedDates[1]);
444
382
  }
445
383
 
446
- _onkeydown(event) {
447
- if (isEnter(event)) {
448
- return this._handleEnter(event);
449
- }
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;
450
392
 
451
- if (isSpace(event)) {
452
- event.preventDefault();
393
+ if (!this._isDayPressed(target)) {
453
394
  return;
454
395
  }
455
396
 
456
- if (isHomeCtrl(event)) {
457
- this._navToStartEndDayOfTheMonth(event, true);
458
- }
397
+ const timestamp = this._getTimestampFromDom(target);
459
398
 
460
- if (isEndCtrl(event)) {
461
- this._navToStartEndDayOfTheMonth(event, false);
462
- }
463
-
464
- if (isPageUpShift(event)) {
465
- this._changeYears(event, false, 1);
466
- }
467
-
468
- if (isPageUpShiftCtrl(event)) {
469
- this._changeYears(event, false, 10);
470
- }
399
+ this._safelySetTimestamp(timestamp);
400
+ this._updateSecondTimestamp();
471
401
 
472
- if (isPageDownShift(event)) {
473
- this._changeYears(event, true, 1);
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];
474
412
  }
475
413
 
476
- if (isPageDownShiftCtrl(event)) {
477
- this._changeYears(event, true, 10);
478
- }
414
+ this.fireEvent("change", {
415
+ timestamp: this.timestamp,
416
+ dates: this.selectedDates,
417
+ });
479
418
  }
480
419
 
481
- _onkeyup(event) {
482
- if (isSpace(event)) {
483
- this._handleSpace(event);
484
- }
485
- }
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
+ });
486
444
 
487
- _handleEnter(event) {
488
- event.preventDefault();
489
- if (event.target.className.indexOf("ui5-dp-item") > -1) {
490
- const targetDate = parseInt(event.target.getAttribute("data-sap-timestamp"));
491
- this._modifySelectionAndNotifySubscribers(targetDate, event.ctrlKey);
492
- }
445
+ this.fireEvent("change", {
446
+ timestamp: this.timestamp,
447
+ dates: this.selectedDates,
448
+ });
493
449
  }
494
450
 
495
- _handleSpace(event) {
496
- event.preventDefault();
497
- if (event.target.className.indexOf("ui5-dp-item") > -1) {
498
- const targetDate = parseInt(event.target.getAttribute("data-sap-timestamp"));
499
- this._modifySelectionAndNotifySubscribers(targetDate, event.ctrlKey);
451
+ _toggleTimestampInSelection(timestamp) {
452
+ if (this.selectedDates.includes(timestamp)) {
453
+ this._removeTimestampFromSelection(timestamp);
454
+ } else {
455
+ this._addTimestampToSelection(timestamp);
500
456
  }
501
457
  }
502
458
 
503
- _navToStartEndDayOfTheMonth(event, start) {
504
- event.preventDefault();
505
-
506
- const currentItem = this._itemNav._getCurrentItem();
507
- let currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp")) * 1000;
508
- let calDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
509
-
510
- if (currentItem.classList.contains("ui5-dp-item--othermonth")) {
511
- return;
512
- }
513
-
514
- calDate.setDate(1);
515
- if (!start) {
516
- // set the day to be the last day of the current month
517
- calDate.setMonth(calDate.getMonth() + 1, 0);
518
- }
519
-
520
- if (calDate.valueOf() < this._minDate) {
521
- calDate = CalendarDate.fromLocalJSDate(new Date(this._minDate), this._primaryCalendarType);
522
- } else if (calDate.valueOf() > this._maxDate) {
523
- calDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
459
+ _addTimestampToSelection(timestamp) {
460
+ if (!this.selectedDates.includes(timestamp)) {
461
+ this.selectedDates = [...this.selectedDates, timestamp];
524
462
  }
463
+ }
525
464
 
526
- currentTimestamp = calDate.valueOf() / 1000;
527
- const newItemIndex = this._itemNav._getItems().findIndex(item => parseInt(item.timestamp) === currentTimestamp);
528
-
529
- this._itemNav.currentIndex = newItemIndex;
530
- this._itemNav.focusCurrent();
465
+ _removeTimestampFromSelection(timestamp) {
466
+ this.selectedDates = this.selectedDates.filter(value => value !== timestamp);
531
467
  }
532
468
 
533
469
  /**
534
- * Converts "timestamp" property value into a Java Script Date object and
535
- * adds or extracts a given number of years from it
536
- *
537
- * @param {object} event used to prevent the default browser behavior
538
- * @param {boolean} forward if true indicates addition
539
- * @param {int} step for year number to substract or add
470
+ * When at least one day is selected and the user pressed shift
471
+ * @param timestamp
472
+ * @private
540
473
  */
541
- _changeYears(event, forward, step) {
542
- const currentItem = this._itemNav._getCurrentItem();
543
- let currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp") * 1000);
544
- const currentDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
545
- let newDate = new CalendarDate(currentDate, this._primaryCalendarType);
546
-
547
- if (forward) {
548
- newDate.setYear(newDate.getYear() + step);
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);
487
+
488
+ if (distanceToMin < distanceToMax) {
489
+ start = timestamp;
490
+ end = max;
491
+ } else {
492
+ start = min;
493
+ end = timestamp;
494
+ }
495
+ toggle = true;
549
496
  } else {
550
- newDate.setYear(newDate.getYear() - step);
497
+ start = max;
498
+ end = timestamp;
551
499
  }
552
500
 
553
- if (currentDate.getMonth() !== newDate.getMonth()) {
554
- newDate.setDate(0);
555
- }
501
+ const startDate = CalendarDate.fromTimestamp(start * 1000);
502
+ const endDate = CalendarDate.fromTimestamp(end * 1000);
556
503
 
557
- if (newDate.valueOf() < this._minDate) {
558
- newDate = CalendarDate.fromLocalJSDate(new Date(this._minDate), this._primaryCalendarType);
559
- } else if (newDate.valueOf() > this._maxDate) {
560
- newDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
504
+ while (startDate.valueOf() <= endDate.valueOf()) {
505
+ this[toggle ? "_toggleTimestampInSelection" : "_addTimestampToSelection"](startDate.valueOf() / 1000);
506
+ startDate.setDate(startDate.getDate() + 1);
561
507
  }
562
-
563
- currentTimestamp = (newDate.valueOf() / 1000);
564
-
565
- this._navigateAndWaitRerender(currentTimestamp);
566
-
567
- event.preventDefault();
568
508
  }
569
509
 
570
- get shouldHideWeekNumbers() {
571
- if (this._primaryCalendarType !== CalendarType.Gregorian) {
572
- 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);
573
519
  }
574
-
575
- return this.hideWeekNumbers;
576
520
  }
577
521
 
578
- get _timestamp() {
579
- return this.timestamp !== undefined ? this.timestamp : Math.floor(new Date().getTime() / 1000);
580
- }
581
-
582
- get _localDate() {
583
- return new Date(this._timestamp * 1000);
584
- }
585
-
586
- get _calendarDate() {
587
- return CalendarDate.fromTimestamp(this._localDate.getTime(), this._primaryCalendarType);
588
- }
522
+ _onkeydown(event) {
523
+ let preventDefault = true;
589
524
 
590
- get _formatPattern() {
591
- return this.formatPattern || "medium"; // get from config
592
- }
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
+ }
593
563
 
594
- get _month() {
595
- return this._calendarDate.getMonth();
564
+ if (preventDefault) {
565
+ event.preventDefault();
566
+ }
596
567
  }
597
568
 
598
- get _year() {
599
- return this._calendarDate.getYear();
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);
575
+ }
600
576
  }
601
577
 
602
- get _currentCalendarDate() {
603
- return CalendarDate.fromTimestamp(new Date().getTime(), this._primaryCalendarType);
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);
604
585
  }
605
586
 
606
- get _selectedDates() {
607
- return this.selectedDates || [];
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
+ });
608
603
  }
609
604
 
610
- get _primaryCalendarType() {
611
- const localeData = getCachedLocaleDataInstance(getLocale());
612
- return this.primaryCalendarType || getCalendarType() || localeData.getPreferredCalendarType();
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());
613
611
  }
614
612
 
615
- get focusableDays() {
616
- const focusableDays = [];
617
-
618
- for (let i = 0; i < this._weeks.length; i++) {
619
- const week = this._weeks[i].slice(1).filter(x => !x.disabled);
620
- focusableDays.push(week);
621
- }
622
-
623
- return [].concat(...focusableDays);
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());
624
619
  }
625
620
 
626
- get _dayPickerWeekNumberText() {
627
- return this.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT);
621
+ /**
622
+ * Called from Calendar.js
623
+ * Same as PageUp
624
+ * @protected
625
+ */
626
+ _showPreviousPage() {
627
+ this._modifyTimestampBy(-1, "month");
628
628
  }
629
629
 
630
- get _dayPickerNonWorkingDay() {
631
- return this.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);
630
+ /**
631
+ * Called from Calendar.js
632
+ * Same as PageDown
633
+ * @protected
634
+ */
635
+ _showNextPage() {
636
+ this._modifyTimestampBy(1, "month");
632
637
  }
633
638
 
634
- _modifySelectionAndNotifySubscribers(sNewDate, bAdd) {
635
- if (bAdd) {
636
- this.selectedDates = [...this._selectedDates, sNewDate];
637
- } else {
638
- this.selectedDates = [sNewDate];
639
- }
640
-
641
- this.fireEvent("change", { dates: [...this._selectedDates] });
642
- }
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();
643
649
 
644
- _handleMonthBottomOverflow(event) {
645
- this._itemNav.hasNextPage = this._hasNextMonth();
650
+ // Notify the calendar to update its timestamp
651
+ this.fireEvent("navigate", { timestamp: this.timestamp });
646
652
  }
647
653
 
648
- _handleMonthTopOverflow(event) {
649
- this._itemNav.hasPrevPage = this._hasPrevMonth();
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 });
650
663
  }
651
664
 
652
- _hasNextMonth() {
653
- let newMonth = this._month + 1;
654
- let newYear = this._year;
655
- const maxCalendarYear = CalendarDate.fromTimestamp(this._getMaxCalendarDate(), this._primaryCalendarType).getYear();
656
-
657
- if (newMonth > 11) {
658
- newMonth = 0;
659
- newYear++;
660
- }
661
-
662
- if (newYear > maxCalendarYear && newMonth === 0) {
663
- return false;
664
- }
665
-
666
- if (!this.maxDate) {
667
- return true;
668
- }
669
-
670
- const oNewDate = this._calendarDate;
671
- oNewDate.setDate(oNewDate.getDate());
672
- oNewDate.setYear(newYear);
673
- oNewDate.setMonth(newMonth);
674
-
675
- const monthsBetween = monthDiff(oNewDate.valueOf(), this._maxDate);
676
- if (monthsBetween < 0) {
677
- return false;
678
- }
679
-
680
- const lastFocusableDay = this.focusableDays[this.focusableDays.length - 1].iDay;
681
- if (monthsBetween === 0 && CalendarDate.fromTimestamp(this._maxDate).toLocalJSDate().getDate() === lastFocusableDay) {
682
- return false;
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;
683
672
  }
684
-
685
- return true;
686
673
  }
687
674
 
688
- _hasPrevMonth() {
689
- let newMonth = this._month - 1;
690
- let newYear = this._year;
691
- const minCalendarYear = CalendarDate.fromTimestamp(this._getMinCalendarDate(), this._primaryCalendarType).getYear();
692
-
693
- if (newMonth < 0) {
694
- newMonth = 11;
695
- newYear--;
696
- }
697
-
698
- if (newYear < minCalendarYear && newMonth === 11) {
699
- return false;
700
- }
701
-
702
- if (!this.minDate) {
675
+ get shouldHideWeekNumbers() {
676
+ if (this._primaryCalendarType !== CalendarType.Gregorian) {
703
677
  return true;
704
678
  }
705
679
 
706
- const oNewDate = this._calendarDate;
707
- oNewDate.setDate(oNewDate.getDate());
708
- oNewDate.setYear(newYear);
709
- oNewDate.setMonth(newMonth);
710
-
711
- const monthsBetween = monthDiff(this._minDate, oNewDate.valueOf());
712
- if (this.minDate && monthsBetween < 0) {
713
- return false;
714
- }
715
-
716
- return true;
717
- }
718
-
719
- _handleItemNavigationBorderReach(event) {
720
- const currentItem = this._itemNav._getCurrentItem();
721
- let newDate;
722
- let currentDate;
723
- let currentTimestamp;
724
-
725
- if (isUp(event.originalEvent) || isLeft(event.originalEvent)) {
726
- currentTimestamp = this._weeks[0][event.offset + 1].timestamp * 1000;
727
- newDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
728
- newDate.setDate(newDate.getDate() - 7);
729
- }
730
-
731
- if (isDown(event.originalEvent) || isRight(event.originalEvent)) {
732
- currentTimestamp = this._weeks[this._weeks.length - 1][event.offset + 1].timestamp * 1000;
733
- newDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
734
- newDate.setDate(newDate.getDate() + 7);
735
- }
736
-
737
- if (isPageUp(event.originalEvent)) {
738
- currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp") * 1000);
739
- currentDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
740
- newDate = new CalendarDate(currentDate, this._primaryCalendarType);
741
- newDate.setMonth(newDate.getMonth() - 1);
742
- if (currentDate.getMonth() === newDate.getMonth()) {
743
- newDate.setDate(0);
744
- }
745
- }
746
-
747
- if (isPageDown(event.originalEvent)) {
748
- currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp") * 1000);
749
- currentDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
750
- newDate = new CalendarDate(currentDate, this._primaryCalendarType);
751
- newDate.setMonth(newDate.getMonth() + 1);
752
- if (newDate.getMonth() - currentDate.getMonth() > 1) {
753
- newDate.setDate(0);
754
- }
755
- }
756
-
757
- if (!newDate) {
758
- return;
759
- }
760
-
761
- if (newDate.valueOf() < this._minDate) {
762
- newDate = CalendarDate.fromLocalJSDate(new Date(this._minDate), this._primaryCalendarType);
763
- } else if (newDate.valueOf() > this._maxDate) {
764
- newDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
765
- }
766
-
767
- currentTimestamp = (newDate.valueOf() / 1000);
768
-
769
- this._navigateAndWaitRerender(currentTimestamp);
770
- }
771
-
772
- _handleItemNavigationAfterFocus() {
773
- const currentItem = this._itemNav._getCurrentItem();
774
- const currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp"));
775
-
776
- if (currentItem.classList.contains("ui5-dp-item--othermonth")) {
777
- this._navigateAndWaitRerender(currentTimestamp);
778
- }
779
- }
780
-
781
- async _navigateAndWaitRerender(timestamp) {
782
- this.fireEvent("navigate", { timestamp });
783
- await RenderScheduler.whenFinished();
784
-
785
- const newItemIndex = this._itemNav._getItems().findIndex(item => parseInt(item.timestamp) === timestamp);
786
- this._itemNav.currentIndex = newItemIndex;
787
- this._itemNav.focusCurrent();
788
- this._fireDayPickerRendered();
680
+ return this.hideWeekNumbers;
789
681
  }
790
682
 
791
- _fireDayPickerRendered() {
792
- if (this.selectedDates.length === 1) {
793
- this.fireEvent("daypickerrendered", { focusedItemIndex: this._itemNav.currentIndex });
794
- }
683
+ get hasSecondaryCalendarType() {
684
+ return !!this.secondaryCalendarType;
795
685
  }
796
686
 
797
687
  _isWeekend(oDate) {
@@ -807,126 +697,31 @@ class DayPicker extends UI5Element {
807
697
 
808
698
  _isDayPressed(target) {
809
699
  const targetParent = target.parentNode;
810
- 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"));
811
701
  }
812
702
 
813
- _isOutOfSelectableRange(date) {
814
- const currentDate = date._oUDate ? date.toLocalJSDate() : CalendarDate.fromTimestamp(date).toLocalJSDate();
815
- const minDate = this._minDateObject;
816
- const maxDate = this._maxDateObject;
817
-
818
- currentDate.setHours(0);
819
- if (minDate) {
820
- minDate.setHours(0);
821
- }
822
- if (maxDate) {
823
- maxDate.setHours(0);
824
- }
825
-
826
- return currentDate > maxDate || currentDate < minDate;
703
+ _getSecondaryDay(tempDate) {
704
+ return new CalendarDate(tempDate, this.secondaryCalendarType);
827
705
  }
828
706
 
829
- get _maxDate() {
830
- return this.maxDate ? this._getTimeStampFromString(this.maxDate) : this._getMaxCalendarDate();
831
- }
707
+ _getFirstDay() {
708
+ let daysFromPreviousMonth;
832
709
 
833
- get _minDate() {
834
- return this.minDate ? this._getTimeStampFromString(this.minDate) : this._getMinCalendarDate();
835
- }
836
-
837
- _getTimeStampFromString(value) {
838
- const jsDate = this.getFormat().parse(value);
839
- if (jsDate) {
840
- const calDate = CalendarDate.fromLocalJSDate(jsDate, this._primaryCalendarType);
841
- return calDate.toUTCJSDate().valueOf();
842
- }
843
- return undefined;
844
- }
845
-
846
- _getMinCalendarDate() {
847
- const minDate = new CalendarDate(1, 0, 1, this._primaryCalendarType);
848
- minDate.setYear(1);
849
- minDate.setMonth(0);
850
- minDate.setDate(1);
851
- return minDate.toUTCJSDate().valueOf();
852
- }
853
-
854
- _getMaxCalendarDate() {
855
- const maxDate = new CalendarDate(1, 0, 1, this._primaryCalendarType);
856
- maxDate.setYear(9999);
857
- maxDate.setMonth(11);
858
- const tempDate = new CalendarDate(maxDate, this._primaryCalendarType);
859
- tempDate.setDate(1);
860
- tempDate.setMonth(tempDate.getMonth() + 1, 0);
861
- maxDate.setDate(tempDate.getDate());// 31st for Gregorian Calendar
862
- return maxDate.toUTCJSDate().valueOf();
863
- }
864
-
865
- getFormat() {
866
- if (this._isPattern) {
867
- this._oDateFormat = DateFormat.getInstance({
868
- pattern: this._formatPattern,
869
- calendarType: this._primaryCalendarType,
870
- });
871
- } else {
872
- this._oDateFormat = DateFormat.getInstance({
873
- style: this._formatPattern,
874
- calendarType: this._primaryCalendarType,
875
- });
876
- }
877
- return this._oDateFormat;
878
- }
879
-
880
- get _isPattern() {
881
- return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
882
- }
883
-
884
- _getVisibleDays(oStartDate, bIncludeBCDates) {
885
- let oCalDate,
886
- iDaysOldMonth,
887
- iYear;
888
-
889
- const minCalendarDateYear = CalendarDate.fromTimestamp(this._getMinCalendarDate(), this._primaryCalendarType).getYear();
890
- const maxCalendarDateYear = CalendarDate.fromTimestamp(this._getMaxCalendarDate(), this._primaryCalendarType).getYear();
891
- const _aVisibleDays = [];
892
-
893
- // If date passed generate days for new start date else return the current one
894
- if (!oStartDate) {
895
- return _aVisibleDays;
896
- }
897
-
898
- const iFirstDayOfWeek = this._getFirstDayOfWeek();
710
+ const firstDayOfWeek = this._getFirstDayOfWeek();
899
711
 
900
712
  // determine weekday of first day in month
901
- const oFirstDay = new CalendarDate(oStartDate, this._primaryCalendarType);
902
- oFirstDay.setDate(1);
903
- iDaysOldMonth = oFirstDay.getDay() - iFirstDayOfWeek;
904
- if (iDaysOldMonth < 0) {
905
- iDaysOldMonth = 7 + iDaysOldMonth;
906
- }
907
-
908
- if (iDaysOldMonth > 0) {
909
- // determine first day for display
910
- oFirstDay.setDate(1 - 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;
911
718
  }
912
719
 
913
- const oDay = new CalendarDate(oFirstDay);
914
- for (let i = 0; i < 42; i++) {
915
- iYear = oDay.getYear();
916
- oCalDate = new CalendarDate(oDay, this._primaryCalendarType);
917
- if (bIncludeBCDates && iYear < minCalendarDateYear) {
918
- // For dates before 0001-01-01 we should render only empty squares to keep
919
- // the month square matrix correct.
920
- oCalDate._bBeforeFirstYear = true;
921
- _aVisibleDays.push(oCalDate);
922
- } else if (iYear >= minCalendarDateYear && iYear <= maxCalendarDateYear) {
923
- // Days before 0001-01-01 or after 9999-12-31 should not be rendered.
924
- _aVisibleDays.push(oCalDate);
925
- }
926
- oDay.setDate(oDay.getDate() + 1);
720
+ if (daysFromPreviousMonth > 0) {
721
+ firstDay.setDate(1 - daysFromPreviousMonth);
927
722
  }
928
723
 
929
- return _aVisibleDays;
724
+ return firstDay;
930
725
  }
931
726
 
932
727
  _getFirstDayOfWeek() {
@@ -939,6 +734,7 @@ class DayPicker extends UI5Element {
939
734
  return {
940
735
  wrapper: {
941
736
  display: this._hidden ? "none" : "flex",
737
+ "justify-content": "center",
942
738
  },
943
739
  main: {
944
740
  width: "100%",
@@ -946,11 +742,10 @@ class DayPicker extends UI5Element {
946
742
  };
947
743
  }
948
744
 
949
- static async onDefine() {
950
- await Promise.all([
951
- fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript()),
952
- fetchI18nBundle("@ui5/webcomponents"),
953
- ]);
745
+ get ariaRoledescription() {
746
+ return this.hasSecondaryCalendarType
747
+ ? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType} calendar`
748
+ : `${this._primaryCalendarType} calendar`;
954
749
  }
955
750
  }
956
751