@ui5/webcomponents 2.24.0-rc.0 → 2.24.0-rc.3

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 (267) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Bar.d.ts +4 -2
  4. package/dist/Bar.js +4 -2
  5. package/dist/Bar.js.map +1 -1
  6. package/dist/Breadcrumbs.d.ts +7 -0
  7. package/dist/Breadcrumbs.js +4 -1
  8. package/dist/Breadcrumbs.js.map +1 -1
  9. package/dist/Calendar.d.ts +2 -2
  10. package/dist/Calendar.js +6 -0
  11. package/dist/Calendar.js.map +1 -1
  12. package/dist/ComboBox.d.ts +5 -0
  13. package/dist/ComboBox.js +26 -6
  14. package/dist/ComboBox.js.map +1 -1
  15. package/dist/ComboBoxItemCustom.d.ts +50 -0
  16. package/dist/ComboBoxItemCustom.js +71 -0
  17. package/dist/ComboBoxItemCustom.js.map +1 -0
  18. package/dist/ComboBoxItemCustomTemplate.d.ts +2 -0
  19. package/dist/ComboBoxItemCustomTemplate.js +9 -0
  20. package/dist/ComboBoxItemCustomTemplate.js.map +1 -0
  21. package/dist/ComboBoxPopoverTemplate.js +2 -2
  22. package/dist/ComboBoxPopoverTemplate.js.map +1 -1
  23. package/dist/DayPicker.d.ts +1 -0
  24. package/dist/DayPicker.js +1 -1
  25. package/dist/DayPicker.js.map +1 -1
  26. package/dist/Dialog.d.ts +19 -7
  27. package/dist/Dialog.js +88 -15
  28. package/dist/Dialog.js.map +1 -1
  29. package/dist/DialogTemplate.js +6 -10
  30. package/dist/DialogTemplate.js.map +1 -1
  31. package/dist/List.d.ts +1 -0
  32. package/dist/List.js +19 -2
  33. package/dist/List.js.map +1 -1
  34. package/dist/ListItemCustom.d.ts +2 -0
  35. package/dist/ListItemCustom.js +5 -0
  36. package/dist/ListItemCustom.js.map +1 -1
  37. package/dist/MenuItem.d.ts +1 -0
  38. package/dist/MenuItem.js +7 -0
  39. package/dist/MenuItem.js.map +1 -1
  40. package/dist/MultiComboBox.d.ts +2 -0
  41. package/dist/MultiComboBox.js +17 -7
  42. package/dist/MultiComboBox.js.map +1 -1
  43. package/dist/MultiComboBoxItemCustom.d.ts +67 -0
  44. package/dist/MultiComboBoxItemCustom.js +108 -0
  45. package/dist/MultiComboBoxItemCustom.js.map +1 -0
  46. package/dist/MultiComboBoxItemCustomTemplate.d.ts +2 -0
  47. package/dist/MultiComboBoxItemCustomTemplate.js +10 -0
  48. package/dist/MultiComboBoxItemCustomTemplate.js.map +1 -0
  49. package/dist/Popup.js +2 -4
  50. package/dist/Popup.js.map +1 -1
  51. package/dist/TimeSelectionClocks.js +7 -4
  52. package/dist/TimeSelectionClocks.js.map +1 -1
  53. package/dist/bundle.esm.js +2 -0
  54. package/dist/bundle.esm.js.map +1 -1
  55. package/dist/css/themes/ComboBoxItemCustom.css +1 -0
  56. package/dist/css/themes/Dialog.css +1 -1
  57. package/dist/css/themes/Form.css +1 -1
  58. package/dist/css/themes/FormItemSpan.css +1 -1
  59. package/dist/css/themes/FormLayout.css +1 -1
  60. package/dist/css/themes/MultiComboBoxItemCustom.css +1 -0
  61. package/dist/css/themes/TableRowBase.css +1 -1
  62. package/dist/css/themes/Toolbar.css +1 -1
  63. package/dist/css/themes/ToolbarItem.css +1 -1
  64. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  65. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  66. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  67. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  68. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  69. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +3 -6
  70. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  71. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +3 -6
  72. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  73. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  74. package/dist/custom-elements-internal.json +348 -3
  75. package/dist/custom-elements.json +237 -3
  76. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  127. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  128. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  129. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  130. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  131. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  132. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  133. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  137. package/dist/generated/i18n/i18n-defaults.d.ts +12 -5
  138. package/dist/generated/i18n/i18n-defaults.js +12 -5
  139. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  140. package/dist/generated/themes/ComboBoxItemCustom.css.d.ts +2 -0
  141. package/dist/generated/themes/ComboBoxItemCustom.css.js +8 -0
  142. package/dist/generated/themes/ComboBoxItemCustom.css.js.map +1 -0
  143. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  144. package/dist/generated/themes/Dialog.css.js +1 -1
  145. package/dist/generated/themes/Dialog.css.js.map +1 -1
  146. package/dist/generated/themes/Form.css.d.ts +1 -1
  147. package/dist/generated/themes/Form.css.js +1 -1
  148. package/dist/generated/themes/Form.css.js.map +1 -1
  149. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  150. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  151. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  152. package/dist/generated/themes/FormLayout.css.d.ts +1 -1
  153. package/dist/generated/themes/FormLayout.css.js +1 -1
  154. package/dist/generated/themes/FormLayout.css.js.map +1 -1
  155. package/dist/generated/themes/MultiComboBoxItemCustom.css.d.ts +2 -0
  156. package/dist/generated/themes/MultiComboBoxItemCustom.css.js +8 -0
  157. package/dist/generated/themes/MultiComboBoxItemCustom.css.js.map +1 -0
  158. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  159. package/dist/generated/themes/TableRowBase.css.js +1 -1
  160. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  161. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  162. package/dist/generated/themes/Toolbar.css.js +1 -1
  163. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  164. package/dist/generated/themes/ToolbarItem.css.d.ts +1 -1
  165. package/dist/generated/themes/ToolbarItem.css.js +1 -1
  166. package/dist/generated/themes/ToolbarItem.css.js.map +1 -1
  167. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  168. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  169. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  170. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  171. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  172. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  173. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  174. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  175. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  176. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  177. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  178. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  179. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  180. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  181. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  182. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  183. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +3 -6
  184. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  185. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  186. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  187. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  188. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  189. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +3 -6
  190. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  191. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  192. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  193. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  194. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  195. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  196. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  197. package/dist/types/ComboBoxSelectionChangeTrigger.d.ts +25 -0
  198. package/dist/types/ComboBoxSelectionChangeTrigger.js +27 -0
  199. package/dist/types/ComboBoxSelectionChangeTrigger.js.map +1 -0
  200. package/dist/vscode.html-custom-data.json +41 -2
  201. package/dist/web-types.json +112 -4
  202. package/package.json +9 -9
  203. package/src/ComboBoxItemCustomTemplate.tsx +10 -0
  204. package/src/ComboBoxPopoverTemplate.tsx +2 -2
  205. package/src/DialogTemplate.tsx +21 -14
  206. package/src/MultiComboBoxItemCustomTemplate.tsx +22 -0
  207. package/src/i18n/messagebundle.properties +29 -8
  208. package/src/i18n/messagebundle_ar.properties +8 -0
  209. package/src/i18n/messagebundle_bg.properties +8 -0
  210. package/src/i18n/messagebundle_ca.properties +8 -0
  211. package/src/i18n/messagebundle_cnr.properties +8 -0
  212. package/src/i18n/messagebundle_cs.properties +8 -0
  213. package/src/i18n/messagebundle_cy.properties +8 -0
  214. package/src/i18n/messagebundle_da.properties +8 -0
  215. package/src/i18n/messagebundle_de.properties +8 -0
  216. package/src/i18n/messagebundle_el.properties +8 -0
  217. package/src/i18n/messagebundle_en.properties +8 -0
  218. package/src/i18n/messagebundle_en_GB.properties +8 -0
  219. package/src/i18n/messagebundle_en_US_sappsd.properties +8 -0
  220. package/src/i18n/messagebundle_en_US_saprigi.properties +8 -0
  221. package/src/i18n/messagebundle_en_US_saptrc.properties +8 -0
  222. package/src/i18n/messagebundle_es.properties +8 -0
  223. package/src/i18n/messagebundle_es_MX.properties +8 -0
  224. package/src/i18n/messagebundle_et.properties +8 -0
  225. package/src/i18n/messagebundle_fi.properties +8 -0
  226. package/src/i18n/messagebundle_fr.properties +8 -0
  227. package/src/i18n/messagebundle_fr_CA.properties +8 -0
  228. package/src/i18n/messagebundle_hi.properties +8 -0
  229. package/src/i18n/messagebundle_hr.properties +8 -0
  230. package/src/i18n/messagebundle_hu.properties +8 -0
  231. package/src/i18n/messagebundle_id.properties +8 -0
  232. package/src/i18n/messagebundle_it.properties +8 -0
  233. package/src/i18n/messagebundle_iw.properties +8 -0
  234. package/src/i18n/messagebundle_ja.properties +8 -0
  235. package/src/i18n/messagebundle_kk.properties +8 -0
  236. package/src/i18n/messagebundle_ko.properties +8 -0
  237. package/src/i18n/messagebundle_lt.properties +8 -0
  238. package/src/i18n/messagebundle_lv.properties +8 -0
  239. package/src/i18n/messagebundle_mk.properties +8 -0
  240. package/src/i18n/messagebundle_ms.properties +8 -0
  241. package/src/i18n/messagebundle_nl.properties +8 -0
  242. package/src/i18n/messagebundle_no.properties +8 -0
  243. package/src/i18n/messagebundle_pl.properties +8 -0
  244. package/src/i18n/messagebundle_pt.properties +8 -0
  245. package/src/i18n/messagebundle_pt_PT.properties +8 -0
  246. package/src/i18n/messagebundle_ro.properties +8 -0
  247. package/src/i18n/messagebundle_ru.properties +8 -0
  248. package/src/i18n/messagebundle_sh.properties +8 -0
  249. package/src/i18n/messagebundle_sk.properties +8 -0
  250. package/src/i18n/messagebundle_sl.properties +8 -0
  251. package/src/i18n/messagebundle_sr.properties +8 -0
  252. package/src/i18n/messagebundle_sv.properties +8 -0
  253. package/src/i18n/messagebundle_th.properties +8 -0
  254. package/src/i18n/messagebundle_tr.properties +8 -0
  255. package/src/i18n/messagebundle_uk.properties +8 -0
  256. package/src/i18n/messagebundle_vi.properties +8 -0
  257. package/src/i18n/messagebundle_zh_CN.properties +8 -0
  258. package/src/i18n/messagebundle_zh_TW.properties +8 -0
  259. package/src/themes/ComboBoxItemCustom.css +14 -0
  260. package/src/themes/Dialog.css +12 -7
  261. package/src/themes/FormItemSpan.css +4 -4
  262. package/src/themes/FormLayout.css +4 -4
  263. package/src/themes/MultiComboBoxItemCustom.css +19 -0
  264. package/src/themes/TableRowBase.css +1 -0
  265. package/src/themes/base/Dialog-parameters.css +2 -5
  266. package/src/themes/sap_horizon/Dialog-parameters.css +0 -8
  267. package/src/themes/sap_horizon_dark/Dialog-parameters.css +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../src/Calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { ChangeInfo, DefaultSlot, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport transformDateToSecondaryType from \"@ui5/webcomponents-localization/dist/dates/transformDateToSecondaryType.js\";\nimport convertMonthNumbersToMonthNames from \"@ui5/webcomponents-localization/dist/dates/convertMonthNumbersToMonthNames.js\";\nimport CalendarDateComponent from \"@ui5/webcomponents-localization/dist/dates/CalendarDate.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport {\n\tisEnter,\n\tisF4,\n\tisF4Shift,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport { getMaxCalendarDate } from \"@ui5/webcomponents-localization/dist/dates/ExtremeDates.js\";\nimport CalendarDate from \"./CalendarDate.js\";\nimport CalendarDateRange from \"./CalendarDateRange.js\";\nimport \"./SpecialCalendarDate.js\";\nimport CalendarPart from \"./CalendarPart.js\";\nimport type { DayPickerChangeEventDetail } from \"./DayPicker.js\";\nimport type { MonthPickerChangeEventDetail } from \"./MonthPicker.js\";\nimport type { YearPickerChangeEventDetail } from \"./YearPicker.js\";\nimport CalendarSelectionMode from \"./types/CalendarSelectionMode.js\";\nimport CalendarPickersMode from \"./types/CalendarPickersMode.js\";\nimport type CalendarLegend from \"./CalendarLegend.js\";\nimport type { CalendarLegendItemSelectionChangeEventDetail } from \"./CalendarLegend.js\";\nimport type SpecialCalendarDate from \"./SpecialCalendarDate.js\";\nimport type CalendarLegendItemType from \"./types/CalendarLegendItemType.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\n\n// Default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Template\nimport CalendarTemplate from \"./CalendarTemplate.js\";\n\n// Styles\nimport calendarCSS from \"./generated/themes/Calendar.css.js\";\nimport CalendarHeaderCss from \"./generated/themes/CalendarHeader.css.js\";\nimport {\n\tCALENDAR_HEADER_MONTH_BUTTON,\n\tCALENDAR_HEADER_MONTH_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_BUTTON,\n\tCALENDAR_HEADER_YEAR_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_RANGE_BUTTON,\n\tCALENDAR_HEADER_YEAR_RANGE_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_MONTH_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_MONTH_NEXT_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_TITLE,\n\tCALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_PREVIOUS_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_RANGE_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_RANGE_PREVIOUS_BUTTON_TITLE,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport type { YearRangePickerChangeEventDetail } from \"./YearRangePicker.js\";\nimport getEffectiveContentDensity from \"@ui5/webcomponents-base/dist/util/getEffectiveContentDensity.js\";\nimport modifyDateBy from \"@ui5/webcomponents-localization/dist/dates/modifyDateBy.js\";\n\nconst PHONE_MODE_BREAKPOINT = 640; // px\n\ninterface ICalendarPicker extends HTMLElement {\n\t_showPreviousPage: () => void,\n\t_showNextPage: () => void,\n\t_hasPreviousPage: () => boolean,\n\t_hasNextPage: () => boolean,\n\t_currentYearRange?: CalendarYearRangeT,\n}\n\n/**\n * Interface for components that may be slotted inside a `ui5-calendar`.\n *\n * **Note:** Use with `ui5-date` or `ui5-date-range` as calendar date selection types.\n * @public\n */\ninterface ICalendarSelectedDates extends UI5Element {\n\tvalue?: string,\n\tstartValue?: string,\n\tendValue?: string\n}\n\ntype CalendarSelectionChangeEventDetail = {\n\tselectedValues: Array<string>,\n\tselectedDates: Array<number>,\n\ttimestamp: number | undefined,\n}\n\ntype SpecialCalendarDateT = {\n\tspecialDateTimestamp: number;\n\ttype: `${CalendarLegendItemType}`;\n\ttooltip?: string;\n};\n\ntype CalendarYearRangeT = {\n\tstartYear: number,\n\tendYear: number,\n}\n\ntype DisabledDateRangeT = {\n\tstartValue?: string,\n\tendValue?: string\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-calendar` component allows users to select one or more dates.\n *\n * Currently selected dates are represented with instances of `ui5-date` as\n * children of the `ui5-calendar`. The value property of each `ui5-date` must be a\n * date string, correctly formatted according to the `ui5-calendar`'s `formatPattern` property.\n * Whenever the user changes the date selection, `ui5-calendar` will automatically create/remove instances\n * of `ui5-date` in itself, unless you prevent this behavior by calling `preventDefault()` for the\n * `selection-change` event. This is useful if you want to control the selected dates externally.\n *\n * ### Usage\n *\n * The user can navigate to a particular date by:\n *\n * - Pressing over a month inside the months view\n * - Pressing over an year inside the years view\n *\n * The user can confirm a date selection by pressing over a date inside the days view.\n *\n * ### Keyboard Handling\n * The `ui5-calendar` provides advanced keyboard handling.\n * When a picker is showed and focused the user can use the following keyboard\n * shortcuts in order to perform a navigation:\n *\n * - Day picker:\n *\n * - [F4] - Shows month picker\n * - [Shift] + [F4] - Shows year picker\n * - [Page Up] - Navigate to the previous month\n * - [Page Down] - Navigate to the next month\n * - [Shift] + [Page Up] - Navigate to the previous year\n * - [Shift] + [Page Down] - Navigate to the next year\n * - [Ctrl] + [Shift] + [Page Up] - Navigate ten years backwards\n * - [Ctrl] + [Shift] + [Page Down] - Navigate ten years forwards\n * - [Home] - Navigate to the first day of the week\n * - [End] - Navigate to the last day of the week\n * - [Ctrl] + [Home] - Navigate to the first day of the month\n * - [Ctrl] + [End] - Navigate to the last day of the month\n *\n * - Month picker:\n *\n * - [Page Up] - Navigate to the previous year\n * - [Page Down] - Navigate to the next year\n * - [Home] - Navigate to the first month of the current row\n * - [End] - Navigate to the last month of the current row\n * - [Ctrl] + [Home] - Navigate to the first month of the current year\n * - [Ctrl] + [End] - Navigate to the last month of the year\n *\n * - Year picker:\n *\n * - [Page Up] - Navigate to the previous year range\n * - [Page Down] - Navigate the next year range\n * - [Home] - Navigate to the first year of the current row\n * - [End] - Navigate to the last year of the current row\n * - [Ctrl] + [Home] - Navigate to the first year of the current year range\n * - [Ctrl] + [End] - Navigate to the last year of the current year range\n *\n * #### Fast Navigation\n * This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### Calendar types\n * The component supports several calendar types - Gregorian, Buddhist, Islamic, Japanese and Persian.\n * By default the Gregorian Calendar is used. In order to use the Buddhist, Islamic, Japanese or Persian calendar,\n * you need to set the `primaryCalendarType` property and import one or more of the following modules:\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Islamic.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Japanese.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Persian.js\";`\n *\n * Or, you can use the global configuration and set the `calendarType` key:\n *\n * ```html\n * <script data-id=\"sap-ui-config\" type=\"application/json\">\n * \t{\n * \t\t\"calendarType\": \"Japanese\"\n * \t}\n * </script>\n * ```\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Calendar.js\";`\n * @constructor\n * @extends CalendarPart\n * @public\n * @csspart day-cell - Used to style the day cells.\n * @csspart day-cell-selected - Used to style the day cells when selected.\n * @csspart day-cell-selected-between - Used to style the day cells in between of selected dates in range.\n * @csspart month-cell - Used to style the month cells.\n * @csspart month-cell-selected - Used to style the month cells when selected.\n * @csspart month-cell-selected-between - Used to style the day cells in between of selected months in range.\n * @csspart month-picker-root - Used to style the month picker root container.\n * @csspart year-cell - Used to style the year cells.\n * @csspart year-cell-selected - Used to style the year cells when selected.\n * @csspart year-cell-selected-between - Used to style the year cells in between of selected years in range.\n * @csspart year-picker-root - Used to style the year picker root container.\n * @csspart year-range-cell - Used to style the year range cells.\n * @csspart year-range-cell-selected - Used to style the year range cells when selected.\n * @csspart year-range-cell-selected-between - Used to style the year range cells in between of selected year ranges.\n * @csspart year-range-picker-root - Used to style the year range picker root container.\n * @csspart calendar-header-middle-button - Used to style the calendar header middle buttons (month/year/year-range buttons).\n * @csspart calendar-header-arrow-button - Used to style the calendar header navigation arrow buttons (previous/next buttons).\n * @since 1.0.0-rc.11\n */\n@customElement({\n\ttag: \"ui5-calendar\",\n\tfastNavigation: true,\n\ttemplate: CalendarTemplate,\n\tstyles: [calendarCSS, CalendarHeaderCss],\n})\n/**\n * Fired when the selected dates change.\n *\n * **Note:** If you call `preventDefault()` for this event, the component will not\n * create instances of `ui5-date` for the newly selected dates. In that case you should do this manually.\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n@event(\"show-month-view\", {\n\tbubbles: true,\n})\n@event(\"show-year-view\", {\n\tbubbles: true,\n})\n@event(\"show-year-range-view\", {\n\tbubbles: true,\n})\nclass Calendar extends CalendarPart {\n\teventDetails!: CalendarPart[\"eventDetails\"] & {\n\t\t\"selection-change\": CalendarSelectionChangeEventDetail,\n\t\t\"show-month-view\": void,\n\t\t\"show-year-view\": void,\n\t\t\"show-year-range-view\": void,\n\t}\n\t/**\n\t * Defines the type of selection used in the calendar component.\n\t * Accepted property values are:\n\t *\n\t * - `CalendarSelectionMode.Single` - enables a single date selection.(default value)\n\t * - `CalendarSelectionMode.Range` - enables selection of a date range.\n\t * - `CalendarSelectionMode.Multiple` - enables selection of multiple dates.\n\t * @default \"Single\"\n\t * @public\n\t */\n\t@property()\n\tselectionMode: `${CalendarSelectionMode}` = \"Single\";\n\n\t/**\n\t * Defines the visibility of the week numbers column.\n\t *\n\t * **Note:** For calendars other than Gregorian,\n\t * the week numbers are not displayed regardless of what is set.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thideWeekNumbers = false;\n\n\t/**\n\t * Defines whether the component displays two months side by side in the picker popup.\n\t * @default false\n\t * @private\n\t * @since 2.22.0\n\t */\n\t@property({ type: Boolean })\n\t_showTwoMonths = false;\n\n\t/**\n\t * Which picker is currently visible to the user: day/month/year/yearRange\n\t * @private\n\t */\n\t@property()\n\t_currentPicker: \"day\" | \"month\" | \"year\" | \"yearrange\" = \"day\"\n\n\t@property({ type: Boolean })\n\t_previousButtonDisabled = false;\n\n\t@property({ type: Boolean })\n\t_nextButtonDisabled = false;\n\n\t@property()\n\t_headerMonthButtonText?: string;\n\n\t@property()\n\t_headerYearButtonText?: string;\n\n\t@property()\n\t_headerYearButtonTextSecType?: string;\n\n\t@property()\n\t_headerYearRangeButtonText?: string;\n\n\t@property()\n\t_headerYearRangeButtonTextSecType?: string;\n\n\t@property({ noAttribute: true })\n\t_pickersMode: `${CalendarPickersMode}` = \"DAY_MONTH_YEAR\";\n\n\t_valueIsProcessed = false;\n\n\t_rangeStartYear?: number;\n\n\t/**\n\t * Defines the calendar legend of the component.\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tcalendarLegend!: Slot<CalendarLegend>;\n\n\t/**\n\t * Defines the selected date or dates (depending on the `selectionMode` property)\n\t * for this calendar as instances of `ui5-date` or `ui5-date-range`.\n\t * Use `ui5-date` for single or multiple selection, and `ui5-date-range` for range selection.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\tdates!: DefaultSlot<ICalendarSelectedDates>;\n\n\t/**\n\t * Defines the special dates, visually emphasized in the calendar.\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tspecialDates!: Slot<SpecialCalendarDate>;\n\n\t/**\n\t * Defines the disabled date ranges that cannot be selected in the calendar.\n\t * Use `ui5-date-range` elements to specify ranges of disabled dates.\n\t * Each range can define a start date, an end date, or both.\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tdisabledDates!: Slot<CalendarDateRange>;\n\n\t/**\n\t * Defines the selected item type of the calendar legend item (if such exists).\n\t * @private\n\t */\n\t@property()\n\t_selectedItemType: `${CalendarLegendItemType}` = \"None\";\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_phoneMode = false;\n\n\t_handleResizeBound: ResizeObserverCallback;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._valueIsProcessed = false;\n\t\tthis._handleResizeBound = this._handleResize.bind(this);\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(document.body, this._handleResizeBound);\n\t\tthis._handleResize();\n\t}\n\n\tget _phoneView() {\n\t\treturn isPhone() || this._phoneMode;\n\t}\n\n\tget _portraitView() {\n\t\treturn this._phoneMode;\n\t}\n\n\t/**\n\t * Handles document resize to switch between `phoneMode` and `portraitMode`.\n\t * - `_phoneMode`: When resolution is under PHONE_MODE_BREAKPOINT (regardless of device type)\n\t */\n\t_handleResize() {\n\t\tif (!this._showTwoMonths) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst documentWidth = document.body.offsetWidth;\n\t\tconst underBreakpoint = documentWidth <= PHONE_MODE_BREAKPOINT;\n\n\t\t// Phone mode: only when it's an actual phone device\n\t\tconst phoneModeChange = (underBreakpoint && !this._phoneMode) || (!underBreakpoint && this._phoneMode);\n\n\t\tif (phoneModeChange) {\n\t\t\tthis._phoneMode = underBreakpoint;\n\t\t}\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(document.body, this._handleResizeBound);\n\t}\n\n\t/**\n\t * Returns the timestamp for a specific month index when displaying multiple months\n\t * @private\n\t */\n\t_getMonthTimestamp(monthIndex: number): number {\n\t\tif (monthIndex === 0) {\n\t\t\treturn this._timestamp;\n\t\t}\n\n\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(this._timestamp * 1000, this._primaryCalendarType);\n\t\tconst modifiedDate = modifyDateBy(calendarDate, monthIndex, \"month\", false);\n\n\t\treturn modifiedDate.valueOf() / 1000;\n\t}\n\n\t/**\n\t * Generates header button text (month and year) for a specific month timestamp\n\t * @private\n\t */\n\t_getHeaderTextForMonth(monthTimestamp: number): { monthText: string, yearText: string, secondMonthText?: string, secondYearText?: string } {\n\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(monthTimestamp * 1000, this._primaryCalendarType);\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._primaryCalendarType });\n\n\t\tconst monthText = localeData.getMonthsStandAlone(\"wide\", this._primaryCalendarType)[calendarDate.getMonth()];\n\t\tconst localDate = calendarDate.toLocalJSDate();\n\t\tconst yearText = String(yearFormat.format(localDate, true));\n\n\t\tconst result: { monthText: string, yearText: string, secondMonthText?: string, secondYearText?: string } = {\n\t\t\tmonthText,\n\t\t\tyearText,\n\t\t};\n\n\t\tif (this.hasSecondaryCalendarType) {\n\t\t\tconst secondaryDate = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, monthTimestamp, true);\n\t\t\tconst secondaryCalendarDate = secondaryDate.firstDate || secondaryDate.lastDate;\n\t\t\tconst secondaryLocaleData = getCachedLocaleDataInstance(getLocale());\n\t\t\tresult.secondMonthText = secondaryLocaleData.getMonthsStandAlone(\"wide\", this._secondaryCalendarType)[secondaryCalendarDate.getMonth()];\n\t\t\tconst secondaryYearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\t\tresult.secondYearText = String(secondaryYearFormat.format(secondaryCalendarDate.toLocalJSDate(), true));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tget _selectedDatesTimestamps(): Array<number> {\n\t\tlet selectedDates: Array<number> = [];\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\tconst range = this.dates.find(date => date.hasAttribute(\"ui5-date-range\"));\n\t\t\tconst startDate = range && range.startValue && this.getFormat().parse(range.startValue, true) as Date;\n\t\t\tconst endDate = range && range.endValue && this.getFormat().parse(range.endValue, true) as Date;\n\n\t\t\tif (startDate) {\n\t\t\t\tselectedDates.push(startDate.getTime() / 1000);\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tselectedDates.push(endDate.getTime() / 1000);\n\t\t\t}\n\t\t} else {\n\t\t\tselectedDates = this.dates\n\t\t\t\t.filter(dateElement => {\n\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date\")\n\t\t\t\t\t\t&& dateElement.value\n\t\t\t\t\t\t&& this._isValidCalendarDate(dateElement.value)\n\t\t\t\t\t\t&& this._getTimeStampFromString(dateElement.value);\n\t\t\t\t})\n\t\t\t\t.map(dateElement => Number(this._getTimeStampFromString(dateElement.value!)) / 1000);\n\t\t}\n\n\t\treturn selectedDates;\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_setSelectedDates(selectedDates: Array<number>) {\n\t\tconst selectedUTCDates = selectedDates.map(timestamp => this.getFormat().format(UI5Date.getInstance(timestamp * 1000), true));\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\t// Create tags for the selected dates that don't already exist in DOM\n\t\t\tif (selectedUTCDates.length) {\n\t\t\t\tlet dateRange = this.dates.find(dateElement => dateElement.hasAttribute(\"ui5-date-range\") && dateElement.startValue === selectedUTCDates[0]);\n\t\t\t\tif (!dateRange) {\n\t\t\t\t\tdateRange = document.createElement(CalendarDateRange.getMetadata().getTag()) as CalendarDateRange;\n\t\t\t\t\tdateRange.startValue = selectedUTCDates[0];\n\t\t\t\t\tthis.appendChild(dateRange);\n\t\t\t\t} else {\n\t\t\t\t\tdateRange.endValue = selectedUTCDates[1];\n\t\t\t\t}\n\t\t\t\t// Remove all elements for dates that are no longer selected\n\t\t\t\tthis.dates\n\t\t\t\t\t.filter(dateElement => {\n\t\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date\")\n\t\t\t\t\t\t\t|| (dateRange && dateElement.startValue !== dateRange.startValue);\n\t\t\t\t\t})\n\t\t\t\t\t.forEach(dateElement => {\n\t\t\t\t\t\tthis.removeChild(dateElement);\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst valuesInDOM = this._selectedDatesTimestamps.map(timestamp => this.getFormat().format(UI5Date.getInstance(timestamp * 1000)));\n\n\t\t\t// Remove all elements for dates that are no longer selected\n\t\t\tthis.dates\n\t\t\t\t.filter(dateElement => {\n\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date-range\")\n\t\t\t\t\t\t|| (dateElement.hasAttribute(\"ui5-date\") && !selectedUTCDates.includes(dateElement.value!));\n\t\t\t\t})\n\t\t\t\t.forEach(dateElement => {\n\t\t\t\t\tthis.removeChild(dateElement);\n\t\t\t\t});\n\n\t\t\t// Create tags for the selected dates that don't already exist in DOM\n\t\t\tselectedUTCDates\n\t\t\t\t.filter(value => !valuesInDOM.includes(value))\n\t\t\t\t.forEach(value => {\n\t\t\t\t\tconst dateElement = document.createElement(CalendarDate.getMetadata().getTag()) as CalendarDate;\n\t\t\t\t\tdateElement.value = value;\n\t\t\t\t\tthis.appendChild(dateElement);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_isValidCalendarDate(dateString: string): boolean {\n\t\tconst date = this.getFormat().parse(dateString);\n\t\treturn !!date;\n\t}\n\n\tget _disabledDates() {\n\t\tconst validDisabledDateRanges = this.disabledDates.filter(dateRange => {\n\t\t\tconst startValue = dateRange.startValue;\n\t\t\tconst endValue = dateRange.endValue;\n\t\t\treturn (startValue && this._isValidCalendarDate(startValue)) || (endValue && this._isValidCalendarDate(endValue));\n\t\t});\n\n\t\treturn validDisabledDateRanges.map(dateRange => ({\n\t\t\tstartValue: dateRange.startValue,\n\t\t\tendValue: dateRange.endValue,\n\t\t}));\n\t}\n\n\tget _specialCalendarDates() {\n\t\tconst hasSelectedType = this._specialDates.some(date => date.type === this._selectedItemType);\n\t\tconst validSpecialDates = this._specialDates.filter(date => {\n\t\t\tconst dateType = date.type;\n\t\t\tconst dateValue = date.value;\n\t\t\tconst isTypeMatch = hasSelectedType\n\t\t\t\t? (dateType === this._selectedItemType || dateType === \"Working\" || dateType === \"NonWorking\")\n\t\t\t\t: true;\n\t\t\treturn isTypeMatch && dateValue && this._isValidCalendarDate(dateValue);\n\t\t});\n\n\t\tvalidSpecialDates.forEach(date => {\n\t\t\tconst refLegendItem = this.calendarLegend.length ? this.calendarLegend[0].items.find(item => item.type === date.type) : undefined;\n\t\t\tdate._tooltip = refLegendItem?.text || \"\";\n\t\t});\n\n\t\tconst uniqueDates = new Set();\n\t\tconst uniqueSpecialDates: Array<SpecialCalendarDateT> = [];\n\n\t\tvalidSpecialDates.forEach(date => {\n\t\t\tconst dateFromValue = this.getFormat().parse(date.value) as Date | UI5Date;\n\t\t\tconst timestamp = dateFromValue.getTime();\n\n\t\t\tif (!uniqueDates.has(timestamp)) {\n\t\t\t\tuniqueDates.add(timestamp);\n\t\t\t\tconst specialDateTimestamp = CalendarDateComponent.fromLocalJSDate(dateFromValue).valueOf() / 1000;\n\t\t\t\tconst type = date.type;\n\t\t\t\tconst tooltip = date._tooltip;\n\t\t\t\tuniqueSpecialDates.push({ specialDateTimestamp, type, tooltip });\n\t\t\t}\n\t\t});\n\n\t\treturn uniqueSpecialDates;\n\t}\n\n\t_onCalendarLegendSelectionChange(e: CustomEvent<CalendarLegendItemSelectionChangeEventDetail>) {\n\t\tconst defaultTypes = [\"Working\", \"NonWorking\", \"Selected\", \"Today\"];\n\t\tthis._selectedItemType = e.detail.item.type;\n\n\t\tif (defaultTypes.includes(this._selectedItemType)) {\n\t\t\tthis._selectedItemType = \"None\"; // In order to avoid filtering of default types\n\t\t}\n\t}\n\n\t/**\n\t * Makes sure that _currentPicker is always set to a value, allowed by _pickersMode\n\t */\n\t_normalizeCurrentPicker() {\n\t\tif (this._currentPicker === \"day\" && this._pickersMode !== CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToMonthPicker(true);\n\t\t}\n\n\t\tif (this._currentPicker === \"month\" && this._pickersMode === CalendarPickersMode.YEAR) {\n\t\t\tthis.switchToYearPicker(true);\n\t\t}\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._normalizeCurrentPicker();\n\n\t\tif (!this._valueIsProcessed) {\n\t\t\tif (this._selectedDatesTimestamps.length) {\n\t\t\t\tthis.timestamp = this._selectedDatesTimestamps[0];\n\t\t\t}\n\n\t\t\tthis._valueIsProcessed = true;\n\t\t}\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished(); // Await for the current picker to render and then ask if it has previous/next pages\n\t\tthis._previousButtonDisabled = !this._currentPickerDOM._hasPreviousPage();\n\t\tthis._nextButtonDisabled = !this._currentPickerDOM._hasNextPage();\n\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this.primaryCalendarType });\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tthis._headerMonthButtonText = localeData.getMonthsStandAlone(\"wide\", this.primaryCalendarType)[this._calendarDate.getMonth()];\n\t\tthis._headerYearButtonText = String(yearFormat.format(this._localDate, true));\n\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStartText, rangeEndText } = this._formatYearRangeText(currentYearRange);\n\t\tthis._headerYearRangeButtonText = `${rangeStartText} - ${rangeEndText}`;\n\n\t\tthis._secondaryCalendarType && this._setSecondaryCalendarTypeButtonText();\n\t}\n\n\tonInvalidation(changeInfo: ChangeInfo) {\n\t\tif (changeInfo.reason === \"childchange\") {\n\t\t\tthis._valueIsProcessed = false;\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"month\" button in the header\n\t */\n\tonHeaderMonthButtonPress() {\n\t\tthis.switchToMonthPicker();\n\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t}\n\n\tasync switchToDayPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"day\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\tasync switchToMonthPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"month\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"year\" button in the header\n\t */\n\tonHeaderYearButtonPress() {\n\t\tthis.switchToYearPicker();\n\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t}\n\n\tasync switchToYearPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"year\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"year range\" button in the YearPicker header\n\t */\n\tonHeaderYearRangeButtonPress() {\n\t\tthis.switchToYearRangePicker();\n\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t}\n\n\tasync switchToYearRangePicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"yearrange\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\tget _currentPickerDOM() {\n\t\t// Calendar's shadowRoot and all the pickers are always present - the \"!\" is safe to be used.\n\t\treturn this.shadowRoot!.querySelector(`[ui5-${this._currentPicker}picker]`)! as unknown as ICalendarPicker;\n\t}\n\n\t/**\n\t * Returns the focusable element inside the Calendar (the current picker)\n\t * @override\n\t */\n\tgetFocusDomRef() {\n\t\treturn this._currentPickerDOM as HTMLElement | undefined;\n\t}\n\n\t/**\n\t * The year clicked the \"Previous\" button in the header\n\t */\n\tonHeaderPreviousPress() {\n\t\tthis._currentPickerDOM._showPreviousPage();\n\t}\n\n\t/**\n\t * The year clicked the \"Next\" button in the header\n\t */\n\tonHeaderNextPress() {\n\t\tthis._currentPickerDOM._showNextPage();\n\t}\n\n\t_setSecondaryCalendarTypeButtonText() {\n\t\tconst yearFormatSecType = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\tthis._headerYearButtonTextSecType = String(yearFormatSecType.format(this._localDate, true));\n\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStart, rangeEnd } = this._createYearRangeDates(currentYearRange);\n\n\t\tconst rangeStartSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeStart.valueOf() / 1000, true)\n\t\t\t.firstDate;\n\t\tconst rangeEndSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeEnd.valueOf() / 1000, true)\n\t\t\t.lastDate;\n\n\t\tthis._headerYearRangeButtonTextSecType = `${yearFormatSecType.format(rangeStartSecType.toLocalJSDate())} - ${yearFormatSecType.format(rangeEndSecType.toLocalJSDate())}`;\n\t}\n\n\tget secondaryCalendarTypeButtonText() {\n\t\tif (!this.hasSecondaryCalendarType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst localDate = UI5Date.getInstance(this._timestamp * 1000);\n\t\tconst secondYearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\tconst dateInSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, this._timestamp);\n\t\tconst secondMonthInfo = convertMonthNumbersToMonthNames(dateInSecType.firstDate.getMonth(), dateInSecType.lastDate.getMonth(), this._secondaryCalendarType);\n\t\tconst secondYearText = secondYearFormat.format(localDate);\n\n\t\treturn {\n\t\t\tyearButtonText: secondYearText,\n\t\t\tmonthButtonText: secondMonthInfo.text,\n\t\t\tmonthButtonInfo: secondMonthInfo.textInfo,\n\t\t};\n\t}\n\n\tget _isCompactMode() {\n\t\treturn getEffectiveContentDensity(this) === \"compact\";\n\t}\n\n\tget _monthsToShow() {\n\t\tconst monthsToShow = this._showTwoMonths && !isPhone() ? 2 : 1;\n\t\treturn monthsToShow;\n\t}\n\n\t/**\n\t * The month button is hidden when the month picker or year picker is shown\n\t * @private\n\t */\n\tget _isHeaderMonthButtonHidden(): boolean {\n\t\treturn this._showTwoMonths ? this._currentPicker === \"yearrange\" || this._currentPicker === \"year\" : this._currentPicker !== \"day\";\n\t}\n\n\t/**\n\t * The year range picker button is shown only in the year picker\n\t * @private\n\t */\n\tget _isHeaderYearRangeButtonHidden(): boolean {\n\t\treturn this._currentPicker !== \"year\";\n\t}\n\n\t/**\n\t * The year button is shown only in the day & month pickers\n\t * @private\n\t */\n\tget _isHeaderYearButtonHidden(): boolean {\n\t\treturn !(this._currentPicker === \"day\" || this._currentPicker === \"month\");\n\t}\n\n\tget _isDayPickerHidden() {\n\t\t// In multi-month mode (monthsToShow > 1), keep day pickers visible even when other pickers are shown\n\t\tif (this._showTwoMonths) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._currentPicker !== \"day\";\n\t}\n\n\tget _isMonthPickerHidden() {\n\t\treturn this._currentPicker !== \"month\";\n\t}\n\n\tget _isYearPickerHidden() {\n\t\treturn this._currentPicker !== \"year\";\n\t}\n\n\tget _isYearRangePickerHidden() {\n\t\treturn this._currentPicker !== \"yearrange\";\n\t}\n\n\tget _isDefaultHeaderModeInMultipleMonths() {\n\t\treturn !this._isDayPickerHidden && this._isYearPickerHidden;\n\t}\n\n\tget _shouldShowOnePickerHeaderButtonInMultipleMonths() {\n\t\treturn !this._isDayPickerHidden && !this._isYearPickerHidden;\n\t}\n\n\tget _inert() {\n\t\treturn this._showTwoMonths && (!this._isMonthPickerHidden || !this._isYearPickerHidden || !this._isYearRangePickerHidden);\n\t}\n\n\tget _currentYearRange(): CalendarYearRangeT {\n\t\tconst rangeSize = this.hasSecondaryCalendarType ? 8 : 20;\n\t\tconst yearsOffset = this.hasSecondaryCalendarType ? 2 : 9;\n\t\tconst currentYear = this._calendarDate.getYear();\n\n\t\t// On first load, current year should be the 3rd or 10th year in the range (depending on the calendar type)\n\t\tif (!this._rangeStartYear) {\n\t\t\tthis._rangeStartYear = currentYear - yearsOffset;\n\t\t}\n\n\t\t// If page navigation occured, update the current range start year\n\t\tthis._rangeStartYear += Math.floor((currentYear - this._rangeStartYear) / rangeSize) * rangeSize;\n\n\t\t// Normalize range start year to be between the min and absolute max year\n\t\tconst minYear = this._minDate.getYear();\n\t\tif (currentYear - rangeSize < minYear) {\n\t\t\tthis._rangeStartYear = minYear;\n\t\t}\n\n\t\tconst absoluteMaxYear = getMaxCalendarDate(this._primaryCalendarType).getYear();\n\t\tif (currentYear + rangeSize > absoluteMaxYear) {\n\t\t\tthis._rangeStartYear = absoluteMaxYear - rangeSize + 1;\n\t\t}\n\n\t\treturn {\n\t\t\tstartYear: this._rangeStartYear,\n\t\t\tendYear: this._rangeStartYear + rangeSize - 1,\n\t\t};\n\t}\n\n\t_fireEventAndUpdateSelectedDates(selectedDates: Array<number>) {\n\t\tconst datesValues = selectedDates.map(timestamp => {\n\t\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(timestamp * 1000, this._primaryCalendarType);\n\t\t\treturn this.getFormat().format(calendarDate.toUTCJSDate(), true);\n\t\t});\n\n\t\tconst defaultPrevented = !this.fireDecoratorEvent(\"selection-change\", { timestamp: this.timestamp, selectedDates: [...selectedDates], selectedValues: datesValues });\n\t\tif (!defaultPrevented) {\n\t\t\tthis._setSelectedDates(selectedDates);\n\t\t}\n\t}\n\n\tonSelectedDatesChange(e: CustomEvent<DayPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t}\n\n\tonSelectedMonthChange(e: CustomEvent<MonthPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\n\t\tif (this._pickersMode === CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToDayPicker();\n\t\t} else {\n\t\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t\t}\n\t}\n\n\tonSelectedYearChange(e: CustomEvent<YearPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\n\t\tif (this._pickersMode === CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToDayPicker();\n\t\t} else if (this._pickersMode === CalendarPickersMode.MONTH_YEAR) {\n\t\t\tthis.switchToMonthPicker();\n\t\t} else {\n\t\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t\t}\n\t}\n\n\tonSelectedYearRangeChange(e: CustomEvent<YearRangePickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\tthis.switchToYearPicker();\n\t}\n\n\tasync onNavigate(e: CustomEvent) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\tawait renderFinished();\n\t\tthis._currentPickerDOM.focus();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isF4(e) && this._currentPicker !== \"month\") {\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\n\t\tif (!isF4Shift(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._currentPicker !== \"year\") {\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t} else {\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\t_onLegendFocusOut() {\n\t\tthis._selectedItemType = \"None\";\n\t}\n\n\tget _specialDates() {\n\t\treturn this.getSlottedNodes<SpecialCalendarDate>(\"specialDates\");\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tprevButton: {\n\t\t\t\t\"ui5-calheader-arrowbtn\": true,\n\t\t\t\t\"ui5-calheader-arrowbtn-disabled\": this._previousButtonDisabled,\n\t\t\t},\n\t\t\tnextButton: {\n\t\t\t\t\"ui5-calheader-arrowbtn\": true,\n\t\t\t\t\"ui5-calheader-arrowbtn-disabled\": this._nextButtonDisabled,\n\t\t\t},\n\t\t};\n\t}\n\n\tget accInfo() {\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStartText, rangeEndText } = this._formatYearRangeText(currentYearRange);\n\n\t\tconst headerMonthButtonText = this.hasSecondaryCalendarType\n\t\t\t? `${this._headerMonthButtonText}, ${this.secondMonthButtonText}` : `${this._headerMonthButtonText}`;\n\n\t\t// Get base labels\n\t\tconst monthLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_BUTTON, headerMonthButtonText);\n\t\tconst yearLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_BUTTON, this._headerYearButtonText as string);\n\t\tconst yearRangeLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_BUTTON, rangeStartText, rangeEndText);\n\t\tlet nextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_NEXT_BUTTON_TITLE);\n\t\tlet prevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_TITLE);\n\n\t\tif (this._currentPicker === \"month\") {\n\t\t\tnextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_NEXT_BUTTON_TITLE);\n\t\t\tprevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_PREVIOUS_BUTTON_TITLE);\n\t\t} else if (this._currentPicker === \"year\" || this._currentPicker === \"yearrange\") {\n\t\t\tnextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_NEXT_BUTTON_TITLE);\n\t\t\tprevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_PREVIOUS_BUTTON_TITLE);\n\t\t}\n\n\t\t// Get shortcuts\n\t\tconst monthShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_BUTTON_SHORTCUT);\n\t\tconst yearShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_BUTTON_SHORTCUT);\n\t\tconst yearRangeShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_BUTTON_SHORTCUT);\n\t\tconst nextBtnShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_NEXT_BUTTON_SHORTCUT);\n\t\tconst prevBtnShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_SHORTCUT);\n\n\t\treturn {\n\t\t\tariaLabelMonthButton: monthLabel,\n\t\t\tariaLabelYearButton: yearLabel,\n\t\t\tariaLabelYearRangeButton: yearRangeLabel,\n\t\t\tariaLabelNextButton: nextBtnLabel,\n\t\t\tariaLabelPrevButton: prevBtnLabel,\n\n\t\t\t// Keyboard shortcuts for aria-keyshortcuts\n\t\t\tkeyShortcutMonthButton: monthShortcut,\n\t\t\tkeyShortcutYearButton: yearShortcut,\n\t\t\tkeyShortcutYearRangeButton: yearRangeShortcut,\n\t\t\tkeyShortcutNextButton: nextBtnShortcut,\n\t\t\tkeyShortcutPrevButton: prevBtnShortcut,\n\n\t\t\t// Tooltips combining label and shortcut\n\t\t\ttooltipMonthButton: `${monthLabel} (${monthShortcut})`,\n\t\t\ttooltipYearButton: `${yearLabel} (${yearShortcut})`,\n\t\t\ttooltipYearRangeButton: `${yearRangeLabel} (${yearRangeShortcut})`,\n\t\t\ttooltipNextButton: `${nextBtnLabel} (${nextBtnShortcut})`,\n\t\t\ttooltipPrevButton: `${prevBtnLabel} (${prevBtnShortcut})`,\n\t\t};\n\t}\n\n\t/**\n\t * Helper method to create CalendarDateComponent instances for year range\n\t * @private\n\t */\n\t_createYearRangeDates(yearRange: CalendarYearRangeT, calendarType: string = this._primaryCalendarType) {\n\t\tconst rangeStart = new CalendarDateComponent(this._calendarDate, calendarType);\n\t\tconst rangeEnd = new CalendarDateComponent(this._calendarDate, calendarType);\n\n\t\trangeStart.setYear(yearRange.startYear);\n\t\trangeEnd.setYear(yearRange.endYear);\n\n\t\treturn { rangeStart, rangeEnd };\n\t}\n\n\t/**\n\t * Helper method to format year range text\n\t * @private\n\t */\n\t_formatYearRangeText(yearRange: CalendarYearRangeT) {\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this.primaryCalendarType });\n\t\tconst { rangeStart, rangeEnd } = this._createYearRangeDates(yearRange, this.primaryCalendarType);\n\n\t\tconst rangeStartText = yearFormat.format(rangeStart.toLocalJSDate());\n\t\tconst rangeEndText = yearFormat.format(rangeEnd.toLocalJSDate());\n\n\t\treturn { rangeStartText, rangeEndText };\n\t}\n\n\tget secondMonthButtonText() {\n\t\tconst secondMonthButtonText = this.secondaryCalendarTypeButtonText?.monthButtonText as string;\n\n\t\treturn secondMonthButtonText;\n\t}\n\n\tonMonthButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\t}\n\n\tonMonthButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\t}\n\n\tonYearButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t}\n\t}\n\n\tonYearButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t}\n\t}\n\n\tonYearRangeButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\tonYearRangeButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\t_handleNavigationButtonClick(e: MouseEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\taction();\n\t\te.preventDefault();\n\t}\n\n\t_handlePrevNextButtonKeyDown(e: KeyboardEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\taction();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_handlePrevNextButtonKeyUp(e: KeyboardEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\taction();\n\t\t}\n\t}\n\n\tonPrevButtonClick(e: MouseEvent) {\n\t\tthis._handleNavigationButtonClick(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonNextButtonClick(e: MouseEvent) {\n\t\tthis._handleNavigationButtonClick(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\tonPrevButtonKeyDown(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyDown(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonPrevButtonKeyUp(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyUp(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonNextButtonKeyDown(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyDown(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\tonNextButtonKeyUp(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyUp(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\t/**\n\t * Returns an array of UTC timestamps, representing the selected dates.\n\t * @protected\n\t * @deprecated\n\t */\n\tget selectedDates(): Array<number> {\n\t\treturn this._selectedDatesTimestamps;\n\t}\n\n\t/**\n\t * Creates instances of `ui5-date` or `ui5-date-range` inside this `ui5-calendar` with values, equal to the provided UTC timestamps\n\t * @protected\n\t * @deprecated\n\t * @param selectedDates Array of UTC timestamps\n\t */\n\tset selectedDates(selectedDates: Array<number>) {\n\t\tthis._setSelectedDates(selectedDates);\n\t}\n}\n\nCalendar.define();\n\nexport default Calendar;\nexport type {\n\tICalendarPicker,\n\tCalendarYearRangeT,\n\tICalendarSelectedDates,\n\tCalendarSelectionChangeEventDetail,\n\tSpecialCalendarDateT,\n\tDisabledDateRangeT,\n};\n"]}
1
+ {"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../src/Calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { ChangeInfo, DefaultSlot, Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport transformDateToSecondaryType from \"@ui5/webcomponents-localization/dist/dates/transformDateToSecondaryType.js\";\nimport convertMonthNumbersToMonthNames from \"@ui5/webcomponents-localization/dist/dates/convertMonthNumbersToMonthNames.js\";\nimport CalendarDateComponent from \"@ui5/webcomponents-localization/dist/dates/CalendarDate.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport {\n\tisEnter,\n\tisF4,\n\tisF4Shift,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport { getMaxCalendarDate } from \"@ui5/webcomponents-localization/dist/dates/ExtremeDates.js\";\nimport CalendarDate from \"./CalendarDate.js\";\nimport CalendarDateRange from \"./CalendarDateRange.js\";\nimport \"./SpecialCalendarDate.js\";\nimport CalendarPart from \"./CalendarPart.js\";\nimport type { DayPickerChangeEventDetail, DayPickerNavigateEventDetail } from \"./DayPicker.js\";\nimport type { MonthPickerChangeEventDetail } from \"./MonthPicker.js\";\nimport type { YearPickerChangeEventDetail } from \"./YearPicker.js\";\nimport CalendarSelectionMode from \"./types/CalendarSelectionMode.js\";\nimport CalendarPickersMode from \"./types/CalendarPickersMode.js\";\nimport type CalendarLegend from \"./CalendarLegend.js\";\nimport type { CalendarLegendItemSelectionChangeEventDetail } from \"./CalendarLegend.js\";\nimport type SpecialCalendarDate from \"./SpecialCalendarDate.js\";\nimport type CalendarLegendItemType from \"./types/CalendarLegendItemType.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\n\n// Default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Template\nimport CalendarTemplate from \"./CalendarTemplate.js\";\n\n// Styles\nimport calendarCSS from \"./generated/themes/Calendar.css.js\";\nimport CalendarHeaderCss from \"./generated/themes/CalendarHeader.css.js\";\nimport {\n\tCALENDAR_HEADER_MONTH_BUTTON,\n\tCALENDAR_HEADER_MONTH_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_BUTTON,\n\tCALENDAR_HEADER_YEAR_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_RANGE_BUTTON,\n\tCALENDAR_HEADER_YEAR_RANGE_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_MONTH_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_MONTH_NEXT_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_TITLE,\n\tCALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_SHORTCUT,\n\tCALENDAR_HEADER_YEAR_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_PREVIOUS_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_RANGE_NEXT_BUTTON_TITLE,\n\tCALENDAR_HEADER_YEAR_RANGE_PREVIOUS_BUTTON_TITLE,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport type { YearRangePickerChangeEventDetail } from \"./YearRangePicker.js\";\nimport getEffectiveContentDensity from \"@ui5/webcomponents-base/dist/util/getEffectiveContentDensity.js\";\nimport modifyDateBy from \"@ui5/webcomponents-localization/dist/dates/modifyDateBy.js\";\n\nconst PHONE_MODE_BREAKPOINT = 640; // px\n\ninterface ICalendarPicker extends HTMLElement {\n\t_showPreviousPage: () => void,\n\t_showNextPage: () => void,\n\t_hasPreviousPage: () => boolean,\n\t_hasNextPage: () => boolean,\n\t_currentYearRange?: CalendarYearRangeT,\n}\n\n/**\n * Interface for components that may be slotted inside a `ui5-calendar`.\n *\n * **Note:** Use with `ui5-date` or `ui5-date-range` as calendar date selection types.\n * @public\n */\ninterface ICalendarSelectedDates extends UI5Element {\n\tvalue?: string,\n\tstartValue?: string,\n\tendValue?: string\n}\n\ntype CalendarSelectionChangeEventDetail = {\n\tselectedValues: Array<string>,\n\tselectedDates: Array<number>,\n\ttimestamp: number | undefined,\n}\n\ntype SpecialCalendarDateT = {\n\tspecialDateTimestamp: number;\n\ttype: `${CalendarLegendItemType}`;\n\ttooltip?: string;\n};\n\ntype CalendarYearRangeT = {\n\tstartYear: number,\n\tendYear: number,\n}\n\ntype DisabledDateRangeT = {\n\tstartValue?: string,\n\tendValue?: string\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-calendar` component allows users to select one or more dates.\n *\n * Currently selected dates are represented with instances of `ui5-date` as\n * children of the `ui5-calendar`. The value property of each `ui5-date` must be a\n * date string, correctly formatted according to the `ui5-calendar`'s `formatPattern` property.\n * Whenever the user changes the date selection, `ui5-calendar` will automatically create/remove instances\n * of `ui5-date` in itself, unless you prevent this behavior by calling `preventDefault()` for the\n * `selection-change` event. This is useful if you want to control the selected dates externally.\n *\n * ### Usage\n *\n * The user can navigate to a particular date by:\n *\n * - Pressing over a month inside the months view\n * - Pressing over an year inside the years view\n *\n * The user can confirm a date selection by pressing over a date inside the days view.\n *\n * ### Keyboard Handling\n * The `ui5-calendar` provides advanced keyboard handling.\n * When a picker is showed and focused the user can use the following keyboard\n * shortcuts in order to perform a navigation:\n *\n * - Day picker:\n *\n * - [F4] - Shows month picker\n * - [Shift] + [F4] - Shows year picker\n * - [Page Up] - Navigate to the previous month\n * - [Page Down] - Navigate to the next month\n * - [Shift] + [Page Up] - Navigate to the previous year\n * - [Shift] + [Page Down] - Navigate to the next year\n * - [Ctrl] + [Shift] + [Page Up] - Navigate ten years backwards\n * - [Ctrl] + [Shift] + [Page Down] - Navigate ten years forwards\n * - [Home] - Navigate to the first day of the week\n * - [End] - Navigate to the last day of the week\n * - [Ctrl] + [Home] - Navigate to the first day of the month\n * - [Ctrl] + [End] - Navigate to the last day of the month\n *\n * - Month picker:\n *\n * - [Page Up] - Navigate to the previous year\n * - [Page Down] - Navigate to the next year\n * - [Home] - Navigate to the first month of the current row\n * - [End] - Navigate to the last month of the current row\n * - [Ctrl] + [Home] - Navigate to the first month of the current year\n * - [Ctrl] + [End] - Navigate to the last month of the year\n *\n * - Year picker:\n *\n * - [Page Up] - Navigate to the previous year range\n * - [Page Down] - Navigate the next year range\n * - [Home] - Navigate to the first year of the current row\n * - [End] - Navigate to the last year of the current row\n * - [Ctrl] + [Home] - Navigate to the first year of the current year range\n * - [Ctrl] + [End] - Navigate to the last year of the current year range\n *\n * #### Fast Navigation\n * This component provides a build in fast navigation group which can be used via [F6] / [Shift] + [F6] / [Ctrl] + [Alt/Option] / [Down] or [Ctrl] + [Alt/Option] + [Up].\n * In order to use this functionality, you need to import the following module:\n * `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n *\n * ### Calendar types\n * The component supports several calendar types - Gregorian, Buddhist, Islamic, Japanese and Persian.\n * By default the Gregorian Calendar is used. In order to use the Buddhist, Islamic, Japanese or Persian calendar,\n * you need to set the `primaryCalendarType` property and import one or more of the following modules:\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Islamic.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Japanese.js\";`\n *\n * `import \"@ui5/webcomponents-localization/dist/features/calendar/Persian.js\";`\n *\n * Or, you can use the global configuration and set the `calendarType` key:\n *\n * ```html\n * <script data-id=\"sap-ui-config\" type=\"application/json\">\n * \t{\n * \t\t\"calendarType\": \"Japanese\"\n * \t}\n * </script>\n * ```\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Calendar.js\";`\n * @constructor\n * @extends CalendarPart\n * @public\n * @csspart day-cell - Used to style the day cells.\n * @csspart day-cell-selected - Used to style the day cells when selected.\n * @csspart day-cell-selected-between - Used to style the day cells in between of selected dates in range.\n * @csspart month-cell - Used to style the month cells.\n * @csspart month-cell-selected - Used to style the month cells when selected.\n * @csspart month-cell-selected-between - Used to style the day cells in between of selected months in range.\n * @csspart month-picker-root - Used to style the month picker root container.\n * @csspart year-cell - Used to style the year cells.\n * @csspart year-cell-selected - Used to style the year cells when selected.\n * @csspart year-cell-selected-between - Used to style the year cells in between of selected years in range.\n * @csspart year-picker-root - Used to style the year picker root container.\n * @csspart year-range-cell - Used to style the year range cells.\n * @csspart year-range-cell-selected - Used to style the year range cells when selected.\n * @csspart year-range-cell-selected-between - Used to style the year range cells in between of selected year ranges.\n * @csspart year-range-picker-root - Used to style the year range picker root container.\n * @csspart calendar-header-middle-button - Used to style the calendar header middle buttons (month/year/year-range buttons).\n * @csspart calendar-header-arrow-button - Used to style the calendar header navigation arrow buttons (previous/next buttons).\n * @since 1.0.0-rc.11\n */\n@customElement({\n\ttag: \"ui5-calendar\",\n\tfastNavigation: true,\n\ttemplate: CalendarTemplate,\n\tstyles: [calendarCSS, CalendarHeaderCss],\n})\n/**\n * Fired when the selected dates change.\n *\n * **Note:** If you call `preventDefault()` for this event, the component will not\n * create instances of `ui5-date` for the newly selected dates. In that case you should do this manually.\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n@event(\"show-month-view\", {\n\tbubbles: true,\n})\n@event(\"show-year-view\", {\n\tbubbles: true,\n})\n@event(\"show-year-range-view\", {\n\tbubbles: true,\n})\nclass Calendar extends CalendarPart {\n\teventDetails!: CalendarPart[\"eventDetails\"] & {\n\t\t\"selection-change\": CalendarSelectionChangeEventDetail,\n\t\t\"show-month-view\": void,\n\t\t\"show-year-view\": void,\n\t\t\"show-year-range-view\": void,\n\t}\n\t/**\n\t * Defines the type of selection used in the calendar component.\n\t * Accepted property values are:\n\t *\n\t * - `CalendarSelectionMode.Single` - enables a single date selection.(default value)\n\t * - `CalendarSelectionMode.Range` - enables selection of a date range.\n\t * - `CalendarSelectionMode.Multiple` - enables selection of multiple dates.\n\t * @default \"Single\"\n\t * @public\n\t */\n\t@property()\n\tselectionMode: `${CalendarSelectionMode}` = \"Single\";\n\n\t/**\n\t * Defines the visibility of the week numbers column.\n\t *\n\t * **Note:** For calendars other than Gregorian,\n\t * the week numbers are not displayed regardless of what is set.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\thideWeekNumbers = false;\n\n\t/**\n\t * Defines whether the component displays two months side by side in the picker popup.\n\t * @default false\n\t * @private\n\t * @since 2.22.0\n\t */\n\t@property({ type: Boolean })\n\t_showTwoMonths = false;\n\n\t/**\n\t * Which picker is currently visible to the user: day/month/year/yearRange\n\t * @private\n\t */\n\t@property()\n\t_currentPicker: \"day\" | \"month\" | \"year\" | \"yearrange\" = \"day\"\n\n\t@property({ type: Boolean })\n\t_previousButtonDisabled = false;\n\n\t@property({ type: Boolean })\n\t_nextButtonDisabled = false;\n\n\t@property()\n\t_headerMonthButtonText?: string;\n\n\t@property()\n\t_headerYearButtonText?: string;\n\n\t@property()\n\t_headerYearButtonTextSecType?: string;\n\n\t@property()\n\t_headerYearRangeButtonText?: string;\n\n\t@property()\n\t_headerYearRangeButtonTextSecType?: string;\n\n\t@property({ noAttribute: true })\n\t_pickersMode: `${CalendarPickersMode}` = \"DAY_MONTH_YEAR\";\n\n\t_valueIsProcessed = false;\n\n\t_rangeStartYear?: number;\n\n\t/**\n\t * Defines the calendar legend of the component.\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tcalendarLegend!: Slot<CalendarLegend>;\n\n\t/**\n\t * Defines the selected date or dates (depending on the `selectionMode` property)\n\t * for this calendar as instances of `ui5-date` or `ui5-date-range`.\n\t * Use `ui5-date` for single or multiple selection, and `ui5-date-range` for range selection.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\tdates!: DefaultSlot<ICalendarSelectedDates>;\n\n\t/**\n\t * Defines the special dates, visually emphasized in the calendar.\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tspecialDates!: Slot<SpecialCalendarDate>;\n\n\t/**\n\t * Defines the disabled date ranges that cannot be selected in the calendar.\n\t * Use `ui5-date-range` elements to specify ranges of disabled dates.\n\t * Each range can define a start date, an end date, or both.\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tdisabledDates!: Slot<CalendarDateRange>;\n\n\t/**\n\t * Defines the selected item type of the calendar legend item (if such exists).\n\t * @private\n\t */\n\t@property()\n\t_selectedItemType: `${CalendarLegendItemType}` = \"None\";\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_phoneMode = false;\n\n\t_handleResizeBound: ResizeObserverCallback;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._valueIsProcessed = false;\n\t\tthis._handleResizeBound = this._handleResize.bind(this);\n\t}\n\n\tonEnterDOM() {\n\t\tResizeHandler.register(document.body, this._handleResizeBound);\n\t\tthis._handleResize();\n\t}\n\n\tget _phoneView() {\n\t\treturn isPhone() || this._phoneMode;\n\t}\n\n\tget _portraitView() {\n\t\treturn this._phoneMode;\n\t}\n\n\t/**\n\t * Handles document resize to switch between `phoneMode` and `portraitMode`.\n\t * - `_phoneMode`: When resolution is under PHONE_MODE_BREAKPOINT (regardless of device type)\n\t */\n\t_handleResize() {\n\t\tif (!this._showTwoMonths) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst documentWidth = document.body.offsetWidth;\n\t\tconst underBreakpoint = documentWidth <= PHONE_MODE_BREAKPOINT;\n\n\t\t// Phone mode: only when it's an actual phone device\n\t\tconst phoneModeChange = (underBreakpoint && !this._phoneMode) || (!underBreakpoint && this._phoneMode);\n\n\t\tif (phoneModeChange) {\n\t\t\tthis._phoneMode = underBreakpoint;\n\t\t}\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(document.body, this._handleResizeBound);\n\t}\n\n\t/**\n\t * Returns the timestamp for a specific month index when displaying multiple months\n\t * @private\n\t */\n\t_getMonthTimestamp(monthIndex: number): number {\n\t\tif (monthIndex === 0) {\n\t\t\treturn this._timestamp;\n\t\t}\n\n\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(this._timestamp * 1000, this._primaryCalendarType);\n\t\tconst modifiedDate = modifyDateBy(calendarDate, monthIndex, \"month\", false);\n\n\t\treturn modifiedDate.valueOf() / 1000;\n\t}\n\n\t/**\n\t * Generates header button text (month and year) for a specific month timestamp\n\t * @private\n\t */\n\t_getHeaderTextForMonth(monthTimestamp: number): { monthText: string, yearText: string, secondMonthText?: string, secondYearText?: string } {\n\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(monthTimestamp * 1000, this._primaryCalendarType);\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._primaryCalendarType });\n\n\t\tconst monthText = localeData.getMonthsStandAlone(\"wide\", this._primaryCalendarType)[calendarDate.getMonth()];\n\t\tconst localDate = calendarDate.toLocalJSDate();\n\t\tconst yearText = String(yearFormat.format(localDate, true));\n\n\t\tconst result: { monthText: string, yearText: string, secondMonthText?: string, secondYearText?: string } = {\n\t\t\tmonthText,\n\t\t\tyearText,\n\t\t};\n\n\t\tif (this.hasSecondaryCalendarType) {\n\t\t\tconst secondaryDate = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, monthTimestamp, true);\n\t\t\tconst secondaryCalendarDate = secondaryDate.firstDate || secondaryDate.lastDate;\n\t\t\tconst secondaryLocaleData = getCachedLocaleDataInstance(getLocale());\n\t\t\tresult.secondMonthText = secondaryLocaleData.getMonthsStandAlone(\"wide\", this._secondaryCalendarType)[secondaryCalendarDate.getMonth()];\n\t\t\tconst secondaryYearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\t\tresult.secondYearText = String(secondaryYearFormat.format(secondaryCalendarDate.toLocalJSDate(), true));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tget _selectedDatesTimestamps(): Array<number> {\n\t\tlet selectedDates: Array<number> = [];\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\tconst range = this.dates.find(date => date.hasAttribute(\"ui5-date-range\"));\n\t\t\tconst startDate = range && range.startValue && this.getFormat().parse(range.startValue, true) as Date;\n\t\t\tconst endDate = range && range.endValue && this.getFormat().parse(range.endValue, true) as Date;\n\n\t\t\tif (startDate) {\n\t\t\t\tselectedDates.push(startDate.getTime() / 1000);\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tselectedDates.push(endDate.getTime() / 1000);\n\t\t\t}\n\t\t} else {\n\t\t\tselectedDates = this.dates\n\t\t\t\t.filter(dateElement => {\n\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date\")\n\t\t\t\t\t\t&& dateElement.value\n\t\t\t\t\t\t&& this._isValidCalendarDate(dateElement.value)\n\t\t\t\t\t\t&& this._getTimeStampFromString(dateElement.value);\n\t\t\t\t})\n\t\t\t\t.map(dateElement => Number(this._getTimeStampFromString(dateElement.value!)) / 1000);\n\t\t}\n\n\t\treturn selectedDates;\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_setSelectedDates(selectedDates: Array<number>) {\n\t\tconst selectedUTCDates = selectedDates.map(timestamp => this.getFormat().format(UI5Date.getInstance(timestamp * 1000), true));\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\t// Create tags for the selected dates that don't already exist in DOM\n\t\t\tif (selectedUTCDates.length) {\n\t\t\t\tlet dateRange = this.dates.find(dateElement => dateElement.hasAttribute(\"ui5-date-range\") && dateElement.startValue === selectedUTCDates[0]);\n\t\t\t\tif (!dateRange) {\n\t\t\t\t\tdateRange = document.createElement(CalendarDateRange.getMetadata().getTag()) as CalendarDateRange;\n\t\t\t\t\tdateRange.startValue = selectedUTCDates[0];\n\t\t\t\t\tthis.appendChild(dateRange);\n\t\t\t\t} else {\n\t\t\t\t\tdateRange.endValue = selectedUTCDates[1];\n\t\t\t\t}\n\t\t\t\t// Remove all elements for dates that are no longer selected\n\t\t\t\tthis.dates\n\t\t\t\t\t.filter(dateElement => {\n\t\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date\")\n\t\t\t\t\t\t\t|| (dateRange && dateElement.startValue !== dateRange.startValue);\n\t\t\t\t\t})\n\t\t\t\t\t.forEach(dateElement => {\n\t\t\t\t\t\tthis.removeChild(dateElement);\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst valuesInDOM = this._selectedDatesTimestamps.map(timestamp => this.getFormat().format(UI5Date.getInstance(timestamp * 1000)));\n\n\t\t\t// Remove all elements for dates that are no longer selected\n\t\t\tthis.dates\n\t\t\t\t.filter(dateElement => {\n\t\t\t\t\treturn dateElement.hasAttribute(\"ui5-date-range\")\n\t\t\t\t\t\t|| (dateElement.hasAttribute(\"ui5-date\") && !selectedUTCDates.includes(dateElement.value!));\n\t\t\t\t})\n\t\t\t\t.forEach(dateElement => {\n\t\t\t\t\tthis.removeChild(dateElement);\n\t\t\t\t});\n\n\t\t\t// Create tags for the selected dates that don't already exist in DOM\n\t\t\tselectedUTCDates\n\t\t\t\t.filter(value => !valuesInDOM.includes(value))\n\t\t\t\t.forEach(value => {\n\t\t\t\t\tconst dateElement = document.createElement(CalendarDate.getMetadata().getTag()) as CalendarDate;\n\t\t\t\t\tdateElement.value = value;\n\t\t\t\t\tthis.appendChild(dateElement);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_isValidCalendarDate(dateString: string): boolean {\n\t\tconst date = this.getFormat().parse(dateString);\n\t\treturn !!date;\n\t}\n\n\tget _disabledDates() {\n\t\tconst validDisabledDateRanges = this.disabledDates.filter(dateRange => {\n\t\t\tconst startValue = dateRange.startValue;\n\t\t\tconst endValue = dateRange.endValue;\n\t\t\treturn (startValue && this._isValidCalendarDate(startValue)) || (endValue && this._isValidCalendarDate(endValue));\n\t\t});\n\n\t\treturn validDisabledDateRanges.map(dateRange => ({\n\t\t\tstartValue: dateRange.startValue,\n\t\t\tendValue: dateRange.endValue,\n\t\t}));\n\t}\n\n\tget _specialCalendarDates() {\n\t\tconst hasSelectedType = this._specialDates.some(date => date.type === this._selectedItemType);\n\t\tconst validSpecialDates = this._specialDates.filter(date => {\n\t\t\tconst dateType = date.type;\n\t\t\tconst dateValue = date.value;\n\t\t\tconst isTypeMatch = hasSelectedType\n\t\t\t\t? (dateType === this._selectedItemType || dateType === \"Working\" || dateType === \"NonWorking\")\n\t\t\t\t: true;\n\t\t\treturn isTypeMatch && dateValue && this._isValidCalendarDate(dateValue);\n\t\t});\n\n\t\tvalidSpecialDates.forEach(date => {\n\t\t\tconst refLegendItem = this.calendarLegend.length ? this.calendarLegend[0].items.find(item => item.type === date.type) : undefined;\n\t\t\tdate._tooltip = refLegendItem?.text || \"\";\n\t\t});\n\n\t\tconst uniqueDates = new Set();\n\t\tconst uniqueSpecialDates: Array<SpecialCalendarDateT> = [];\n\n\t\tvalidSpecialDates.forEach(date => {\n\t\t\tconst dateFromValue = this.getFormat().parse(date.value) as Date | UI5Date;\n\t\t\tconst timestamp = dateFromValue.getTime();\n\n\t\t\tif (!uniqueDates.has(timestamp)) {\n\t\t\t\tuniqueDates.add(timestamp);\n\t\t\t\tconst specialDateTimestamp = CalendarDateComponent.fromLocalJSDate(dateFromValue).valueOf() / 1000;\n\t\t\t\tconst type = date.type;\n\t\t\t\tconst tooltip = date._tooltip;\n\t\t\t\tuniqueSpecialDates.push({ specialDateTimestamp, type, tooltip });\n\t\t\t}\n\t\t});\n\n\t\treturn uniqueSpecialDates;\n\t}\n\n\t_onCalendarLegendSelectionChange(e: CustomEvent<CalendarLegendItemSelectionChangeEventDetail>) {\n\t\tconst defaultTypes = [\"Working\", \"NonWorking\", \"Selected\", \"Today\"];\n\t\tthis._selectedItemType = e.detail.item.type;\n\n\t\tif (defaultTypes.includes(this._selectedItemType)) {\n\t\t\tthis._selectedItemType = \"None\"; // In order to avoid filtering of default types\n\t\t}\n\t}\n\n\t/**\n\t * Makes sure that _currentPicker is always set to a value, allowed by _pickersMode\n\t */\n\t_normalizeCurrentPicker() {\n\t\tif (this._currentPicker === \"day\" && this._pickersMode !== CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToMonthPicker(true);\n\t\t}\n\n\t\tif (this._currentPicker === \"month\" && this._pickersMode === CalendarPickersMode.YEAR) {\n\t\t\tthis.switchToYearPicker(true);\n\t\t}\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._normalizeCurrentPicker();\n\n\t\tif (!this._valueIsProcessed) {\n\t\t\tif (this._selectedDatesTimestamps.length) {\n\t\t\t\tthis.timestamp = this._selectedDatesTimestamps[0];\n\t\t\t}\n\n\t\t\tthis._valueIsProcessed = true;\n\t\t}\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished(); // Await for the current picker to render and then ask if it has previous/next pages\n\t\tthis._previousButtonDisabled = !this._currentPickerDOM._hasPreviousPage();\n\t\tthis._nextButtonDisabled = !this._currentPickerDOM._hasNextPage();\n\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this.primaryCalendarType });\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tthis._headerMonthButtonText = localeData.getMonthsStandAlone(\"wide\", this.primaryCalendarType)[this._calendarDate.getMonth()];\n\t\tthis._headerYearButtonText = String(yearFormat.format(this._localDate, true));\n\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStartText, rangeEndText } = this._formatYearRangeText(currentYearRange);\n\t\tthis._headerYearRangeButtonText = `${rangeStartText} - ${rangeEndText}`;\n\n\t\tthis._secondaryCalendarType && this._setSecondaryCalendarTypeButtonText();\n\t}\n\n\tonInvalidation(changeInfo: ChangeInfo) {\n\t\tif (changeInfo.reason === \"childchange\") {\n\t\t\tthis._valueIsProcessed = false;\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"month\" button in the header\n\t */\n\tonHeaderMonthButtonPress() {\n\t\tthis.switchToMonthPicker();\n\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t}\n\n\tasync switchToDayPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"day\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\tasync switchToMonthPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"month\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"year\" button in the header\n\t */\n\tonHeaderYearButtonPress() {\n\t\tthis.switchToYearPicker();\n\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t}\n\n\tasync switchToYearPicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"year\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\t/**\n\t * The user clicked the \"year range\" button in the YearPicker header\n\t */\n\tonHeaderYearRangeButtonPress() {\n\t\tthis.switchToYearRangePicker();\n\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t}\n\n\tasync switchToYearRangePicker(suppressFocus = false) {\n\t\tthis._currentPicker = \"yearrange\";\n\t\tif (!suppressFocus) {\n\t\t\tawait renderFinished();\n\t\t\tthis._currentPickerDOM.focus();\n\t\t}\n\t}\n\n\tget _currentPickerDOM() {\n\t\t// Calendar's shadowRoot and all the pickers are always present - the \"!\" is safe to be used.\n\t\treturn this.shadowRoot!.querySelector(`[ui5-${this._currentPicker}picker]`)! as unknown as ICalendarPicker;\n\t}\n\n\t/**\n\t * Returns the focusable element inside the Calendar (the current picker)\n\t * @override\n\t */\n\tgetFocusDomRef() {\n\t\treturn this._currentPickerDOM as HTMLElement | undefined;\n\t}\n\n\t/**\n\t * The year clicked the \"Previous\" button in the header\n\t */\n\tonHeaderPreviousPress() {\n\t\tthis._currentPickerDOM._showPreviousPage();\n\t}\n\n\t/**\n\t * The year clicked the \"Next\" button in the header\n\t */\n\tonHeaderNextPress() {\n\t\tthis._currentPickerDOM._showNextPage();\n\t}\n\n\t_setSecondaryCalendarTypeButtonText() {\n\t\tconst yearFormatSecType = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\tthis._headerYearButtonTextSecType = String(yearFormatSecType.format(this._localDate, true));\n\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStart, rangeEnd } = this._createYearRangeDates(currentYearRange);\n\n\t\tconst rangeStartSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeStart.valueOf() / 1000, true)\n\t\t\t.firstDate;\n\t\tconst rangeEndSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeEnd.valueOf() / 1000, true)\n\t\t\t.lastDate;\n\n\t\tthis._headerYearRangeButtonTextSecType = `${yearFormatSecType.format(rangeStartSecType.toLocalJSDate())} - ${yearFormatSecType.format(rangeEndSecType.toLocalJSDate())}`;\n\t}\n\n\tget secondaryCalendarTypeButtonText() {\n\t\tif (!this.hasSecondaryCalendarType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst localDate = UI5Date.getInstance(this._timestamp * 1000);\n\t\tconst secondYearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this._secondaryCalendarType });\n\t\tconst dateInSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, this._timestamp);\n\t\tconst secondMonthInfo = convertMonthNumbersToMonthNames(dateInSecType.firstDate.getMonth(), dateInSecType.lastDate.getMonth(), this._secondaryCalendarType);\n\t\tconst secondYearText = secondYearFormat.format(localDate);\n\n\t\treturn {\n\t\t\tyearButtonText: secondYearText,\n\t\t\tmonthButtonText: secondMonthInfo.text,\n\t\t\tmonthButtonInfo: secondMonthInfo.textInfo,\n\t\t};\n\t}\n\n\tget _isCompactMode() {\n\t\treturn getEffectiveContentDensity(this) === \"compact\";\n\t}\n\n\tget _monthsToShow() {\n\t\tconst monthsToShow = this._showTwoMonths && !isPhone() ? 2 : 1;\n\t\treturn monthsToShow;\n\t}\n\n\t/**\n\t * The month button is hidden when the month picker or year picker is shown\n\t * @private\n\t */\n\tget _isHeaderMonthButtonHidden(): boolean {\n\t\treturn this._showTwoMonths ? this._currentPicker === \"yearrange\" || this._currentPicker === \"year\" : this._currentPicker !== \"day\";\n\t}\n\n\t/**\n\t * The year range picker button is shown only in the year picker\n\t * @private\n\t */\n\tget _isHeaderYearRangeButtonHidden(): boolean {\n\t\treturn this._currentPicker !== \"year\";\n\t}\n\n\t/**\n\t * The year button is shown only in the day & month pickers\n\t * @private\n\t */\n\tget _isHeaderYearButtonHidden(): boolean {\n\t\treturn !(this._currentPicker === \"day\" || this._currentPicker === \"month\");\n\t}\n\n\tget _isDayPickerHidden() {\n\t\t// In multi-month mode (monthsToShow > 1), keep day pickers visible even when other pickers are shown\n\t\tif (this._showTwoMonths) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._currentPicker !== \"day\";\n\t}\n\n\tget _isMonthPickerHidden() {\n\t\treturn this._currentPicker !== \"month\";\n\t}\n\n\tget _isYearPickerHidden() {\n\t\treturn this._currentPicker !== \"year\";\n\t}\n\n\tget _isYearRangePickerHidden() {\n\t\treturn this._currentPicker !== \"yearrange\";\n\t}\n\n\tget _isDefaultHeaderModeInMultipleMonths() {\n\t\treturn !this._isDayPickerHidden && this._isYearPickerHidden;\n\t}\n\n\tget _shouldShowOnePickerHeaderButtonInMultipleMonths() {\n\t\treturn !this._isDayPickerHidden && !this._isYearPickerHidden;\n\t}\n\n\tget _inert() {\n\t\treturn this._showTwoMonths && (!this._isMonthPickerHidden || !this._isYearPickerHidden || !this._isYearRangePickerHidden);\n\t}\n\n\tget _currentYearRange(): CalendarYearRangeT {\n\t\tconst rangeSize = this.hasSecondaryCalendarType ? 8 : 20;\n\t\tconst yearsOffset = this.hasSecondaryCalendarType ? 2 : 9;\n\t\tconst currentYear = this._calendarDate.getYear();\n\n\t\t// On first load, current year should be the 3rd or 10th year in the range (depending on the calendar type)\n\t\tif (!this._rangeStartYear) {\n\t\t\tthis._rangeStartYear = currentYear - yearsOffset;\n\t\t}\n\n\t\t// If page navigation occured, update the current range start year\n\t\tthis._rangeStartYear += Math.floor((currentYear - this._rangeStartYear) / rangeSize) * rangeSize;\n\n\t\t// Normalize range start year to be between the min and absolute max year\n\t\tconst minYear = this._minDate.getYear();\n\t\tif (currentYear - rangeSize < minYear) {\n\t\t\tthis._rangeStartYear = minYear;\n\t\t}\n\n\t\tconst absoluteMaxYear = getMaxCalendarDate(this._primaryCalendarType).getYear();\n\t\tif (currentYear + rangeSize > absoluteMaxYear) {\n\t\t\tthis._rangeStartYear = absoluteMaxYear - rangeSize + 1;\n\t\t}\n\n\t\treturn {\n\t\t\tstartYear: this._rangeStartYear,\n\t\t\tendYear: this._rangeStartYear + rangeSize - 1,\n\t\t};\n\t}\n\n\t_fireEventAndUpdateSelectedDates(selectedDates: Array<number>) {\n\t\tconst datesValues = selectedDates.map(timestamp => {\n\t\t\tconst calendarDate = CalendarDateComponent.fromTimestamp(timestamp * 1000, this._primaryCalendarType);\n\t\t\treturn this.getFormat().format(calendarDate.toUTCJSDate(), true);\n\t\t});\n\n\t\tconst defaultPrevented = !this.fireDecoratorEvent(\"selection-change\", { timestamp: this.timestamp, selectedDates: [...selectedDates], selectedValues: datesValues });\n\t\tif (!defaultPrevented) {\n\t\t\tthis._setSelectedDates(selectedDates);\n\t\t}\n\t}\n\n\tonSelectedDatesChange(e: CustomEvent<DayPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t}\n\n\tonSelectedMonthChange(e: CustomEvent<MonthPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\n\t\tif (this._pickersMode === CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToDayPicker();\n\t\t} else {\n\t\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t\t}\n\t}\n\n\tonSelectedYearChange(e: CustomEvent<YearPickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\n\t\tif (this._pickersMode === CalendarPickersMode.DAY_MONTH_YEAR) {\n\t\t\tthis.switchToDayPicker();\n\t\t} else if (this._pickersMode === CalendarPickersMode.MONTH_YEAR) {\n\t\t\tthis.switchToMonthPicker();\n\t\t} else {\n\t\t\tthis._fireEventAndUpdateSelectedDates(e.detail.dates);\n\t\t}\n\t}\n\n\tonSelectedYearRangeChange(e: CustomEvent<YearRangePickerChangeEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\tthis.switchToYearPicker();\n\t}\n\n\tasync onNavigate(e: CustomEvent<DayPickerNavigateEventDetail>) {\n\t\tthis.timestamp = e.detail.timestamp;\n\t\t// Mouse-driven navigation handles its own focus; the click already landed\n\t\t// where the user wants. Refocusing after the deferred render would steal\n\t\t// focus from a sibling component (e.g. a time picker in DateTimePicker).\n\t\tif (e.detail.mouse) {\n\t\t\treturn;\n\t\t}\n\t\tawait renderFinished();\n\t\tthis._currentPickerDOM.focus();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isF4(e) && this._currentPicker !== \"month\") {\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\n\t\tif (!isF4Shift(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._currentPicker !== \"year\") {\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t} else {\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\t_onLegendFocusOut() {\n\t\tthis._selectedItemType = \"None\";\n\t}\n\n\tget _specialDates() {\n\t\treturn this.getSlottedNodes<SpecialCalendarDate>(\"specialDates\");\n\t}\n\n\tget classes() {\n\t\treturn {\n\t\t\tprevButton: {\n\t\t\t\t\"ui5-calheader-arrowbtn\": true,\n\t\t\t\t\"ui5-calheader-arrowbtn-disabled\": this._previousButtonDisabled,\n\t\t\t},\n\t\t\tnextButton: {\n\t\t\t\t\"ui5-calheader-arrowbtn\": true,\n\t\t\t\t\"ui5-calheader-arrowbtn-disabled\": this._nextButtonDisabled,\n\t\t\t},\n\t\t};\n\t}\n\n\tget accInfo() {\n\t\tconst currentYearRange = this._currentYearRange;\n\t\tconst { rangeStartText, rangeEndText } = this._formatYearRangeText(currentYearRange);\n\n\t\tconst headerMonthButtonText = this.hasSecondaryCalendarType\n\t\t\t? `${this._headerMonthButtonText}, ${this.secondMonthButtonText}` : `${this._headerMonthButtonText}`;\n\n\t\t// Get base labels\n\t\tconst monthLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_BUTTON, headerMonthButtonText);\n\t\tconst yearLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_BUTTON, this._headerYearButtonText as string);\n\t\tconst yearRangeLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_BUTTON, rangeStartText, rangeEndText);\n\t\tlet nextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_NEXT_BUTTON_TITLE);\n\t\tlet prevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_TITLE);\n\n\t\tif (this._currentPicker === \"month\") {\n\t\t\tnextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_NEXT_BUTTON_TITLE);\n\t\t\tprevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_PREVIOUS_BUTTON_TITLE);\n\t\t} else if (this._currentPicker === \"year\" || this._currentPicker === \"yearrange\") {\n\t\t\tnextBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_NEXT_BUTTON_TITLE);\n\t\t\tprevBtnLabel = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_PREVIOUS_BUTTON_TITLE);\n\t\t}\n\n\t\t// Get shortcuts\n\t\tconst monthShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_BUTTON_SHORTCUT);\n\t\tconst yearShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_BUTTON_SHORTCUT);\n\t\tconst yearRangeShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_YEAR_RANGE_BUTTON_SHORTCUT);\n\t\tconst nextBtnShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_NEXT_BUTTON_SHORTCUT);\n\t\tconst prevBtnShortcut = Calendar.i18nBundle?.getText(CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_SHORTCUT);\n\n\t\treturn {\n\t\t\tariaLabelMonthButton: monthLabel,\n\t\t\tariaLabelYearButton: yearLabel,\n\t\t\tariaLabelYearRangeButton: yearRangeLabel,\n\t\t\tariaLabelNextButton: nextBtnLabel,\n\t\t\tariaLabelPrevButton: prevBtnLabel,\n\n\t\t\t// Keyboard shortcuts for aria-keyshortcuts\n\t\t\tkeyShortcutMonthButton: monthShortcut,\n\t\t\tkeyShortcutYearButton: yearShortcut,\n\t\t\tkeyShortcutYearRangeButton: yearRangeShortcut,\n\t\t\tkeyShortcutNextButton: nextBtnShortcut,\n\t\t\tkeyShortcutPrevButton: prevBtnShortcut,\n\n\t\t\t// Tooltips combining label and shortcut\n\t\t\ttooltipMonthButton: `${monthLabel} (${monthShortcut})`,\n\t\t\ttooltipYearButton: `${yearLabel} (${yearShortcut})`,\n\t\t\ttooltipYearRangeButton: `${yearRangeLabel} (${yearRangeShortcut})`,\n\t\t\ttooltipNextButton: `${nextBtnLabel} (${nextBtnShortcut})`,\n\t\t\ttooltipPrevButton: `${prevBtnLabel} (${prevBtnShortcut})`,\n\t\t};\n\t}\n\n\t/**\n\t * Helper method to create CalendarDateComponent instances for year range\n\t * @private\n\t */\n\t_createYearRangeDates(yearRange: CalendarYearRangeT, calendarType: string = this._primaryCalendarType) {\n\t\tconst rangeStart = new CalendarDateComponent(this._calendarDate, calendarType);\n\t\tconst rangeEnd = new CalendarDateComponent(this._calendarDate, calendarType);\n\n\t\trangeStart.setYear(yearRange.startYear);\n\t\trangeEnd.setYear(yearRange.endYear);\n\n\t\treturn { rangeStart, rangeEnd };\n\t}\n\n\t/**\n\t * Helper method to format year range text\n\t * @private\n\t */\n\t_formatYearRangeText(yearRange: CalendarYearRangeT) {\n\t\tconst yearFormat = DateFormat.getDateInstance({ format: \"y\", calendarType: this.primaryCalendarType });\n\t\tconst { rangeStart, rangeEnd } = this._createYearRangeDates(yearRange, this.primaryCalendarType);\n\n\t\tconst rangeStartText = yearFormat.format(rangeStart.toLocalJSDate());\n\t\tconst rangeEndText = yearFormat.format(rangeEnd.toLocalJSDate());\n\n\t\treturn { rangeStartText, rangeEndText };\n\t}\n\n\tget secondMonthButtonText() {\n\t\tconst secondMonthButtonText = this.secondaryCalendarTypeButtonText?.monthButtonText as string;\n\n\t\treturn secondMonthButtonText;\n\t}\n\n\tonMonthButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\t}\n\n\tonMonthButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToMonthPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-month-view\");\n\t\t}\n\t}\n\n\tonYearButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t}\n\t}\n\n\tonYearButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToYearPicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-view\");\n\t\t}\n\t}\n\n\tonYearRangeButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\tonYearRangeButtonKeyUp(e: KeyboardEvent) {\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\tthis.switchToYearRangePicker();\n\t\t\tthis.fireDecoratorEvent(\"show-year-range-view\");\n\t\t}\n\t}\n\n\t_handleNavigationButtonClick(e: MouseEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\taction();\n\t\te.preventDefault();\n\t}\n\n\t_handlePrevNextButtonKeyDown(e: KeyboardEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\taction();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_handlePrevNextButtonKeyUp(e: KeyboardEvent, isDisabled: boolean, action: () => void) {\n\t\tif (isDisabled) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t\taction();\n\t\t}\n\t}\n\n\tonPrevButtonClick(e: MouseEvent) {\n\t\tthis._handleNavigationButtonClick(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonNextButtonClick(e: MouseEvent) {\n\t\tthis._handleNavigationButtonClick(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\tonPrevButtonKeyDown(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyDown(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonPrevButtonKeyUp(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyUp(e, this._previousButtonDisabled, () => this.onHeaderPreviousPress());\n\t}\n\n\tonNextButtonKeyDown(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyDown(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\tonNextButtonKeyUp(e: KeyboardEvent) {\n\t\tthis._handlePrevNextButtonKeyUp(e, this._nextButtonDisabled, () => this.onHeaderNextPress());\n\t}\n\n\t/**\n\t * Returns an array of UTC timestamps, representing the selected dates.\n\t * @protected\n\t * @deprecated\n\t */\n\tget selectedDates(): Array<number> {\n\t\treturn this._selectedDatesTimestamps;\n\t}\n\n\t/**\n\t * Creates instances of `ui5-date` or `ui5-date-range` inside this `ui5-calendar` with values, equal to the provided UTC timestamps\n\t * @protected\n\t * @deprecated\n\t * @param selectedDates Array of UTC timestamps\n\t */\n\tset selectedDates(selectedDates: Array<number>) {\n\t\tthis._setSelectedDates(selectedDates);\n\t}\n}\n\nCalendar.define();\n\nexport default Calendar;\nexport type {\n\tICalendarPicker,\n\tCalendarYearRangeT,\n\tICalendarSelectedDates,\n\tCalendarSelectionChangeEventDetail,\n\tSpecialCalendarDateT,\n\tDisabledDateRangeT,\n};\n"]}
@@ -12,12 +12,14 @@ import type { IFormInputElement } from "@ui5/webcomponents-base/dist/features/In
12
12
  import type { IIcon } from "./Icon.js";
13
13
  import "./ComboBoxItem.js";
14
14
  import type ComboBoxItem from "./ComboBoxItem.js";
15
+ import "./ComboBoxItemCustom.js";
15
16
  import type Popover from "./Popover.js";
16
17
  import type ResponsivePopover from "./ResponsivePopover.js";
17
18
  import type List from "./List.js";
18
19
  import type { ListItemClickEventDetail } from "./List.js";
19
20
  import "./ComboBoxItemGroup.js";
20
21
  import type ComboBoxFilter from "./types/ComboBoxFilter.js";
22
+ import ComboBoxSelectionChangeTrigger from "./types/ComboBoxSelectionChangeTrigger.js";
21
23
  import type { InputEventDetail } from "./Input.js";
22
24
  import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
23
25
  import type InputComposition from "./features/InputComposition.js";
@@ -43,6 +45,7 @@ type ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, strin
43
45
  type ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;
44
46
  type ComboBoxSelectionChangeEventDetail = {
45
47
  item: ComboBoxItem | null;
48
+ trigger: `${ComboBoxSelectionChangeTrigger}`;
46
49
  };
47
50
  /**
48
51
  * @class
@@ -306,6 +309,7 @@ declare class ComboBox extends UI5Element implements IFormInputElement {
306
309
  _autocomplete: boolean;
307
310
  _isKeyNavigation: boolean;
308
311
  _selectionPerformed: boolean;
312
+ _selectionTrigger?: `${ComboBoxSelectionChangeTrigger}`;
309
313
  _lastValue: string;
310
314
  _selectedItemText: string;
311
315
  _userTypedValue: string;
@@ -451,4 +455,5 @@ declare class ComboBox extends UI5Element implements IFormInputElement {
451
455
  };
452
456
  }
453
457
  export default ComboBox;
458
+ export { ComboBoxSelectionChangeTrigger };
454
459
  export type { ComboBoxSelectionChangeEventDetail, IComboBoxItem, };
package/dist/ComboBox.js CHANGED
@@ -39,10 +39,12 @@ import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverComm
39
39
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
40
40
  import SuggestionsCss from "./generated/themes/Suggestions.css.js";
41
41
  import "./ComboBoxItem.js";
42
+ import "./ComboBoxItemCustom.js";
42
43
  // eslint-disable-next-line
43
44
  import "./ComboBoxItemGroup.js";
44
45
  // eslint-disable-next-line
45
46
  import { isInstanceOfComboBoxItemGroup } from "./ComboBoxItemGroup.js";
47
+ import ComboBoxSelectionChangeTrigger from "./types/ComboBoxSelectionChangeTrigger.js";
46
48
  const SKIP_ITEMS_SIZE = 10;
47
49
  var ValueStateIconMapping;
48
50
  (function (ValueStateIconMapping) {
@@ -591,6 +593,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
591
593
  this._applyAtomicValueAndSelection(item, filterValue);
592
594
  }
593
595
  _handleArrowDown(e, indexOfItem) {
596
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
594
597
  const isOpen = this.open;
595
598
  if (this.focused && indexOfItem === -1 && isOpen) {
596
599
  this.focused = false;
@@ -606,6 +609,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
606
609
  this._handleItemNavigation(e, itemIndexToBeFocused, true /* isForward */);
607
610
  }
608
611
  _handleArrowUp(e, indexOfItem) {
612
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
609
613
  const isOpen = this.open;
610
614
  if (indexOfItem === 0) {
611
615
  this._clearFocus();
@@ -620,6 +624,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
620
624
  this._handleItemNavigation(e, --indexOfItem, false /* isForward */);
621
625
  }
622
626
  _handlePageUp(e, indexOfItem) {
627
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
623
628
  const allItems = this._getItems();
624
629
  const isProposedIndexValid = indexOfItem - SKIP_ITEMS_SIZE > -1;
625
630
  indexOfItem = isProposedIndexValid ? indexOfItem - SKIP_ITEMS_SIZE : 0;
@@ -627,6 +632,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
627
632
  this._handleItemNavigation(e, indexOfItem, shouldMoveForward);
628
633
  }
629
634
  _handlePageDown(e, indexOfItem) {
635
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
630
636
  const allItems = this._getItems();
631
637
  const itemsLength = allItems.length;
632
638
  const isProposedIndexValid = indexOfItem + SKIP_ITEMS_SIZE < itemsLength;
@@ -635,10 +641,12 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
635
641
  this._handleItemNavigation(e, indexOfItem, shouldMoveForward);
636
642
  }
637
643
  _handleHome(e) {
644
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
638
645
  const shouldMoveForward = isInstanceOfComboBoxItemGroup(this._filteredItems[0]) && !this.open;
639
646
  this._handleItemNavigation(e, 0, shouldMoveForward);
640
647
  }
641
648
  _handleEnd(e) {
649
+ this._selectionTrigger = ComboBoxSelectionChangeTrigger.Keyboard;
642
650
  this._handleItemNavigation(e, this._getItems().length - 1, true /* isForward */);
643
651
  }
644
652
  _keyup() {
@@ -885,8 +893,17 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
885
893
  }
886
894
  else {
887
895
  if (this._useSelectedValue) {
888
- itemToBeSelected = this.items.find(i => i.value === valueToMatch && (this.value === "" || i.text?.toLowerCase() === this.value.toLowerCase()));
889
- return;
896
+ // During initial render, match by value even if text is empty
897
+ if (this._initialRendering && this.value === "") {
898
+ itemToBeSelected = this._filteredItems.find(i => !i.isGroupItem && i.value === valueToMatch);
899
+ }
900
+ else if (this.value !== "") {
901
+ // When user is typing, require exact text match in addition to value match
902
+ itemToBeSelected = this._filteredItems.find(i => !i.isGroupItem && i.value === valueToMatch && i.text?.toLowerCase() === this.value.toLowerCase());
903
+ }
904
+ if (itemToBeSelected) {
905
+ return;
906
+ }
890
907
  }
891
908
  itemToBeSelected = item.text?.toLowerCase() === this.value.toLowerCase() ? item : undefined;
892
909
  }
@@ -913,22 +930,22 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
913
930
  this.selectedValue = itemToBeSelected?.value;
914
931
  }
915
932
  const noUserInteraction = !this.focused && !this._isKeyNavigation && !this._selectionPerformed && !this._iconPressed;
916
- // Skip firing "selection-change" event if this is initial rendering or if there has been no user interaction yet
917
933
  if (this._initialRendering || noUserInteraction) {
918
934
  return;
919
935
  }
920
- // Fire selection-change event only when selection actually changes
921
936
  if (previouslySelectedItem !== itemToBeSelected) {
937
+ const trigger = this._selectionTrigger || ComboBoxSelectionChangeTrigger.Typeahead;
938
+ this._selectionTrigger = undefined;
922
939
  if (itemToBeSelected) {
923
- // New item selected
924
940
  this.fireDecoratorEvent("selection-change", {
925
941
  item: itemToBeSelected,
942
+ trigger,
926
943
  });
927
944
  }
928
945
  else if (previouslySelectedItem) {
929
- // Selection cleared - fire event with 'null'
930
946
  this.fireDecoratorEvent("selection-change", {
931
947
  item: null,
948
+ trigger,
932
949
  });
933
950
  }
934
951
  }
@@ -978,6 +995,7 @@ let ComboBox = ComboBox_1 = class ComboBox extends UI5Element {
978
995
  if (!item.selected) {
979
996
  this.fireDecoratorEvent("selection-change", {
980
997
  item,
998
+ trigger: ComboBoxSelectionChangeTrigger.Click,
981
999
  });
982
1000
  }
983
1001
  this._fireChangeEvent();
@@ -1392,6 +1410,7 @@ ComboBox = ComboBox_1 = __decorate([
1392
1410
  /**
1393
1411
  * Fired when selection is changed by user interaction
1394
1412
  * @param {IComboBoxItem} item item to be selected.
1413
+ * @param {ComboBoxSelectionChangeTrigger} trigger source of the selection change - typeahead, click or keyboard navigation.
1395
1414
  * @public
1396
1415
  */
1397
1416
  ,
@@ -1401,4 +1420,5 @@ ComboBox = ComboBox_1 = __decorate([
1401
1420
  ], ComboBox);
1402
1421
  ComboBox.define();
1403
1422
  export default ComboBox;
1423
+ export { ComboBoxSelectionChangeTrigger };
1404
1424
  //# sourceMappingURL=ComboBox.js.map