@ui5/webcomponents 2.25.0-rc.0 → 2.25.0

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 (279) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/CarouselTemplate.js +1 -1
  4. package/dist/CarouselTemplate.js.map +1 -1
  5. package/dist/ComboBox.d.ts +1 -0
  6. package/dist/ComboBox.js +8 -1
  7. package/dist/ComboBox.js.map +1 -1
  8. package/dist/DayPicker.d.ts +4 -2
  9. package/dist/DayPicker.js +15 -11
  10. package/dist/DayPicker.js.map +1 -1
  11. package/dist/DynamicDateRange.d.ts +11 -0
  12. package/dist/DynamicDateRange.js +12 -0
  13. package/dist/DynamicDateRange.js.map +1 -1
  14. package/dist/DynamicDateRangeInputTemplate.js +1 -1
  15. package/dist/DynamicDateRangeInputTemplate.js.map +1 -1
  16. package/dist/FileUploader.js +1 -2
  17. package/dist/FileUploader.js.map +1 -1
  18. package/dist/FileUploaderTemplate.js +1 -1
  19. package/dist/FileUploaderTemplate.js.map +1 -1
  20. package/dist/IToolbarArrowNavProvider.d.ts +32 -0
  21. package/dist/IToolbarArrowNavProvider.js +4 -0
  22. package/dist/IToolbarArrowNavProvider.js.map +1 -0
  23. package/dist/Input.d.ts +3 -1
  24. package/dist/Input.js +18 -0
  25. package/dist/Input.js.map +1 -1
  26. package/dist/InputIcon.d.ts +64 -0
  27. package/dist/InputIcon.js +118 -0
  28. package/dist/InputIcon.js.map +1 -0
  29. package/dist/InputIconTemplate.d.ts +2 -0
  30. package/dist/InputIconTemplate.js +11 -0
  31. package/dist/InputIconTemplate.js.map +1 -0
  32. package/dist/ListItemCustom.js.map +1 -1
  33. package/dist/MenuItem.js +1 -1
  34. package/dist/MenuItem.js.map +1 -1
  35. package/dist/MenuSeparator.d.ts +7 -14
  36. package/dist/MenuSeparator.js +5 -24
  37. package/dist/MenuSeparator.js.map +1 -1
  38. package/dist/MenuSeparatorTemplate.js +1 -2
  39. package/dist/MenuSeparatorTemplate.js.map +1 -1
  40. package/dist/MultiComboBox.js +8 -3
  41. package/dist/MultiComboBox.js.map +1 -1
  42. package/dist/MultiComboBoxItem.d.ts +1 -0
  43. package/dist/MultiComboBoxItem.js +7 -1
  44. package/dist/MultiComboBoxItem.js.map +1 -1
  45. package/dist/MultiComboBoxItemTemplate.js +4 -2
  46. package/dist/MultiComboBoxItemTemplate.js.map +1 -1
  47. package/dist/MultiInput.js +1 -0
  48. package/dist/MultiInput.js.map +1 -1
  49. package/dist/RangeSlider.js +1 -1
  50. package/dist/RangeSlider.js.map +1 -1
  51. package/dist/RatingIndicator.d.ts +2 -0
  52. package/dist/RatingIndicator.js +2 -0
  53. package/dist/RatingIndicator.js.map +1 -1
  54. package/dist/Slider.js +3 -0
  55. package/dist/Slider.js.map +1 -1
  56. package/dist/SliderBase.d.ts +6 -0
  57. package/dist/SliderBase.js +8 -0
  58. package/dist/SliderBase.js.map +1 -1
  59. package/dist/SliderTemplate.js +1 -1
  60. package/dist/SliderTemplate.js.map +1 -1
  61. package/dist/Table.js +4 -2
  62. package/dist/Table.js.map +1 -1
  63. package/dist/Toolbar.d.ts +40 -3
  64. package/dist/Toolbar.js +225 -6
  65. package/dist/Toolbar.js.map +1 -1
  66. package/dist/ToolbarItem.d.ts +30 -0
  67. package/dist/ToolbarItem.js +202 -0
  68. package/dist/ToolbarItem.js.map +1 -1
  69. package/dist/ToolbarItemBase.d.ts +10 -0
  70. package/dist/ToolbarItemBase.js +19 -0
  71. package/dist/ToolbarItemBase.js.map +1 -1
  72. package/dist/ToolbarSelect.d.ts +4 -2
  73. package/dist/ToolbarSelect.js +7 -4
  74. package/dist/ToolbarSelect.js.map +1 -1
  75. package/dist/ToolbarSelectOption.d.ts +7 -0
  76. package/dist/ToolbarSelectOption.js +4 -1
  77. package/dist/ToolbarSelectOption.js.map +1 -1
  78. package/dist/ToolbarSelectTemplate.js +1 -1
  79. package/dist/ToolbarSelectTemplate.js.map +1 -1
  80. package/dist/TreeItemBase.js.map +1 -1
  81. package/dist/bundle.esm.js +1 -0
  82. package/dist/bundle.esm.js.map +1 -1
  83. package/dist/css/themes/ColorPalette.css +1 -1
  84. package/dist/css/themes/ComboBox.css +1 -1
  85. package/dist/css/themes/DatePicker.css +1 -1
  86. package/dist/css/themes/DynamicDateRange.css +1 -1
  87. package/dist/css/themes/FileUploader.css +1 -1
  88. package/dist/css/themes/Input.css +1 -1
  89. package/dist/css/themes/InputIcon.css +1 -1
  90. package/dist/css/themes/MultiComboBox.css +1 -1
  91. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  92. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  93. package/dist/css/themes/MultiInput.css +1 -1
  94. package/dist/css/themes/Select.css +1 -1
  95. package/dist/css/themes/StepInput.css +1 -1
  96. package/dist/css/themes/TimePicker.css +1 -1
  97. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  98. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +1 -1
  99. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  100. package/dist/custom-elements-internal.json +157 -40
  101. package/dist/custom-elements.json +140 -25
  102. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  136. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  153. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  154. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  155. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  156. package/dist/generated/i18n/i18n-defaults.js +1 -1
  157. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  158. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  159. package/dist/generated/themes/ColorPalette.css.js +1 -1
  160. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  161. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  162. package/dist/generated/themes/ComboBox.css.js +1 -1
  163. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  164. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  165. package/dist/generated/themes/DatePicker.css.js +1 -1
  166. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  167. package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
  168. package/dist/generated/themes/DynamicDateRange.css.js +1 -1
  169. package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
  170. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  171. package/dist/generated/themes/FileUploader.css.js +1 -1
  172. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  173. package/dist/generated/themes/Input.css.d.ts +1 -1
  174. package/dist/generated/themes/Input.css.js +1 -1
  175. package/dist/generated/themes/Input.css.js.map +1 -1
  176. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  177. package/dist/generated/themes/InputIcon.css.js +1 -1
  178. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  179. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  180. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  181. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  182. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  183. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  184. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  185. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  186. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  187. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  188. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  189. package/dist/generated/themes/MultiInput.css.js +1 -1
  190. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  191. package/dist/generated/themes/Select.css.d.ts +1 -1
  192. package/dist/generated/themes/Select.css.js +1 -1
  193. package/dist/generated/themes/Select.css.js.map +1 -1
  194. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  195. package/dist/generated/themes/StepInput.css.js +1 -1
  196. package/dist/generated/themes/StepInput.css.js.map +1 -1
  197. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  198. package/dist/generated/themes/TimePicker.css.js +1 -1
  199. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  200. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  201. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  202. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  203. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  204. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +1 -1
  205. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  206. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  207. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  208. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  209. package/dist/vscode.html-custom-data.json +31 -4
  210. package/dist/web-types.json +72 -22
  211. package/package.json +11 -11
  212. package/src/CarouselTemplate.tsx +0 -1
  213. package/src/DynamicDateRangeInputTemplate.tsx +1 -0
  214. package/src/FileUploaderTemplate.tsx +1 -1
  215. package/src/InputIconTemplate.tsx +36 -0
  216. package/src/MenuSeparatorTemplate.tsx +2 -4
  217. package/src/MultiComboBoxItemTemplate.tsx +4 -1
  218. package/src/SliderTemplate.tsx +1 -0
  219. package/src/ToolbarSelectTemplate.tsx +1 -0
  220. package/src/i18n/messagebundle.properties +1 -1
  221. package/src/i18n/messagebundle_ar.properties +6 -1
  222. package/src/i18n/messagebundle_bg.properties +6 -1
  223. package/src/i18n/messagebundle_ca.properties +6 -1
  224. package/src/i18n/messagebundle_cnr.properties +6 -1
  225. package/src/i18n/messagebundle_cs.properties +6 -1
  226. package/src/i18n/messagebundle_cy.properties +6 -1
  227. package/src/i18n/messagebundle_da.properties +6 -1
  228. package/src/i18n/messagebundle_de.properties +6 -1
  229. package/src/i18n/messagebundle_el.properties +6 -1
  230. package/src/i18n/messagebundle_en.properties +6 -1
  231. package/src/i18n/messagebundle_en_GB.properties +6 -1
  232. package/src/i18n/messagebundle_en_US_sappsd.properties +6 -1
  233. package/src/i18n/messagebundle_en_US_saprigi.properties +6 -1
  234. package/src/i18n/messagebundle_en_US_saptrc.properties +6 -1
  235. package/src/i18n/messagebundle_es.properties +6 -1
  236. package/src/i18n/messagebundle_es_MX.properties +6 -1
  237. package/src/i18n/messagebundle_et.properties +6 -1
  238. package/src/i18n/messagebundle_fi.properties +6 -1
  239. package/src/i18n/messagebundle_fr.properties +15 -10
  240. package/src/i18n/messagebundle_fr_CA.properties +6 -1
  241. package/src/i18n/messagebundle_hi.properties +6 -1
  242. package/src/i18n/messagebundle_hr.properties +6 -1
  243. package/src/i18n/messagebundle_hu.properties +6 -1
  244. package/src/i18n/messagebundle_id.properties +6 -1
  245. package/src/i18n/messagebundle_it.properties +6 -1
  246. package/src/i18n/messagebundle_iw.properties +6 -1
  247. package/src/i18n/messagebundle_ja.properties +6 -1
  248. package/src/i18n/messagebundle_kk.properties +6 -1
  249. package/src/i18n/messagebundle_ko.properties +6 -1
  250. package/src/i18n/messagebundle_lt.properties +6 -1
  251. package/src/i18n/messagebundle_lv.properties +6 -1
  252. package/src/i18n/messagebundle_mk.properties +6 -1
  253. package/src/i18n/messagebundle_ms.properties +6 -1
  254. package/src/i18n/messagebundle_nl.properties +6 -1
  255. package/src/i18n/messagebundle_no.properties +6 -1
  256. package/src/i18n/messagebundle_pl.properties +6 -1
  257. package/src/i18n/messagebundle_pt.properties +6 -1
  258. package/src/i18n/messagebundle_pt_PT.properties +6 -1
  259. package/src/i18n/messagebundle_ro.properties +6 -1
  260. package/src/i18n/messagebundle_ru.properties +6 -1
  261. package/src/i18n/messagebundle_sh.properties +6 -1
  262. package/src/i18n/messagebundle_sk.properties +6 -1
  263. package/src/i18n/messagebundle_sl.properties +6 -1
  264. package/src/i18n/messagebundle_sr.properties +6 -1
  265. package/src/i18n/messagebundle_sv.properties +6 -1
  266. package/src/i18n/messagebundle_th.properties +6 -1
  267. package/src/i18n/messagebundle_tr.properties +6 -1
  268. package/src/i18n/messagebundle_uk.properties +6 -1
  269. package/src/i18n/messagebundle_vi.properties +6 -1
  270. package/src/i18n/messagebundle_zh_CN.properties +6 -1
  271. package/src/i18n/messagebundle_zh_TW.properties +6 -1
  272. package/src/themes/ColorPalette.css +1 -0
  273. package/src/themes/DatePicker.css +1 -2
  274. package/src/themes/Input.css +64 -0
  275. package/src/themes/InputIcon.css +44 -8
  276. package/src/themes/MultiComboBoxItem.css +2 -0
  277. package/src/themes/MultiComboBoxPopover.css +16 -6
  278. package/src/themes/sap_horizon/Card-parameters.css +1 -1
  279. package/src/themes/sap_horizon_dark/Card-parameters.css +1 -1
package/dist/DayPicker.js CHANGED
@@ -89,23 +89,20 @@ let DayPicker = DayPicker_1 = class DayPicker extends CalendarPart {
89
89
  }
90
90
  onBeforeRendering() {
91
91
  const localeData = getCachedLocaleDataInstance(getLocale());
92
- this._buildWeeks(localeData);
92
+ this._buildWeeks();
93
93
  this._buildDayNames(localeData);
94
94
  }
95
95
  /**
96
96
  * Builds the "_weeks" object that represents the month.
97
- * @param localeData
98
97
  * @private
99
98
  */
100
- _buildWeeks(localeData) {
99
+ _buildWeeks() {
101
100
  if (this._hidden) {
102
101
  return; // Optimization to not do any work unless the current picker
103
102
  }
104
103
  this._weeks = [];
105
104
  const firstDayOfWeek = this._getFirstDayOfWeek();
106
105
  const specialCalendarDates = this._specialCalendarDates;
107
- const monthsNames = localeData.getMonths("wide", this._primaryCalendarType);
108
- const secondaryMonthsNames = this.hasSecondaryCalendarType ? localeData.getMonths("wide", this.secondaryCalendarType) : [];
109
106
  const nonWorkingDayLabel = DayPicker_1.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);
110
107
  const todayLabel = DayPicker_1.i18nBundle.getText(DAY_PICKER_TODAY);
111
108
  const tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times
@@ -138,13 +135,14 @@ let DayPicker = DayPicker_1 = class DayPicker extends CalendarPart {
138
135
  ? `${nonWorkingDayLabel} `
139
136
  : "";
140
137
  const todayAriaLabel = isToday ? `${todayLabel} ` : "";
141
- const tempSecondDateNumber = tempSecondDate ? tempSecondDate.getDate() : "";
142
- const tempSecondYearNumber = tempSecondDate ? tempSecondDate.getYear() : "";
143
- const secondaryMonthsNamesString = secondaryMonthsNames.length > 0 ? secondaryMonthsNames[tempSecondDate.getMonth()] : "";
144
138
  const tooltip = `${todayAriaLabel}${nonWorkingAriaLabel}${unnamedCalendarTypeLabel}`.trim();
145
- let ariaLabel = this.hasSecondaryCalendarType
146
- ? `${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}; ${secondaryMonthsNamesString} ${tempSecondDateNumber}, ${tempSecondYearNumber} ${tooltip}`.trim()
147
- : `${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()} ${tooltip}`.trim();
139
+ let ariaLabel = this._formatLong.format(tempDate.toUTCJSDate(), true);
140
+ if (this.hasSecondaryCalendarType && tempSecondDate) {
141
+ ariaLabel += ` ${this._formatLongSecondary.format(tempSecondDate.toUTCJSDate(), true)}`;
142
+ }
143
+ if (tooltip) {
144
+ ariaLabel += ` ${tooltip}`;
145
+ }
148
146
  if (this.selectionMode === CalendarSelectionMode.Range) {
149
147
  if (isSelected && this._isRangeEndDate(timestamp)) {
150
148
  ariaLabel = DayPicker_1.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_END, ariaLabel);
@@ -776,6 +774,12 @@ let DayPicker = DayPicker_1 = class DayPicker extends CalendarPart {
776
774
  ? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType} calendar`
777
775
  : `${this._primaryCalendarType} calendar`;
778
776
  }
777
+ get _formatLong() {
778
+ return DateFormat.getDateInstance({ style: "long", calendarType: this._primaryCalendarType });
779
+ }
780
+ get _formatLongSecondary() {
781
+ return DateFormat.getDateInstance({ style: "long", calendarType: this._secondaryCalendarType });
782
+ }
779
783
  };
780
784
  __decorate([
781
785
  property({ type: Array, noAttribute: true })
@@ -1 +1 @@
1
- {"version":3,"file":"DayPicker.js","sourceRoot":"","sources":["../src/DayPicker.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport type LocaleData from \"@ui5/webcomponents-localization/dist/LocaleData.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tisSpace,\n\tisSpaceShift,\n\tisEnter,\n\tisEnterShift,\n\tisUp,\n\tisDown,\n\tisLeft,\n\tisRight,\n\tisHome,\n\tisEnd,\n\tisHomeCtrl,\n\tisEndCtrl,\n\tisPageUp,\n\tisPageDown,\n\tisPageUpShift,\n\tisPageUpAlt,\n\tisPageUpShiftCtrl,\n\tisPageDownShift,\n\tisPageDownAlt,\n\tisPageDownShiftCtrl,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getFirstDayOfWeek } from \"@ui5/webcomponents-base/dist/config/FormatSettings.js\";\nimport CalendarDate from \"@ui5/webcomponents-localization/dist/dates/CalendarDate.js\";\nimport CalendarType from \"@ui5/webcomponents-base/dist/types/CalendarType.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\nimport CalendarUtils from \"@ui5/webcomponents-localization/dist/CalendarUtils.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport CalendarSelectionMode from \"./types/CalendarSelectionMode.js\";\nimport CalendarPart from \"./CalendarPart.js\";\nimport type {\n\tDisabledDateRangeT,\n\tICalendarPicker,\n\tSpecialCalendarDateT,\n} from \"./Calendar.js\";\n\nimport {\n\tDAY_PICKER_WEEK_NUMBER_TEXT,\n\tDAY_PICKER_NON_WORKING_DAY,\n\tDAY_PICKER_TODAY,\n\tLIST_ITEM_SELECTED,\n\tDAY_PICKER_SELECTED_RANGE_START,\n\tDAY_PICKER_SELECTED_RANGE_END,\n\tDAY_PICKER_SELECTED_RANGE_BETWEEN,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DayPickerTemplate from \"./DayPickerTemplate.js\";\n\n// Styles\nimport dayPickerCSS from \"./generated/themes/DayPicker.css.js\";\n\nconst isBetween = (x: number, num1: number, num2: number) => x > Math.min(num1, num2) && x < Math.max(num1, num2);\nconst DAYS_IN_WEEK = 7;\n\ntype DayName = {\n\tname: string,\n\tclasses: string,\n\tultraShortName?: string,\n}\n\ntype Day = {\n\ttimestamp: string,\n\tday: number,\n\tfocusRef: boolean,\n\t_tabIndex: number,\n\tselected: boolean,\n\t_isSecondaryCalendarType: boolean,\n\tclasses: string,\n\ttooltip?: string,\n\tariaLabel: string,\n\tariaSelected: boolean,\n\tariaDisabled: boolean | undefined,\n\tdisabled: boolean,\n\tsecondDay?: number,\n\tweekNum?: number,\n\tisHidden?: boolean,\n\ttype?: string,\n\tparts: string,\n}\n\ntype WeekNumber = {\n\tweekNum: number,\n\tisHidden: boolean,\n}\n\ntype Week = Array<Day | WeekNumber>;\n\ntype DayPickerChangeEventDetail = {\n\tdates: Array<number>,\n\ttimestamp?: number,\n}\n\ntype DayPickerNavigateEventDetail = {\n\ttimestamp: number,\n\tmouse?: boolean,\n}\n\n/**\n * @class\n *\n * Represents the days inside a single month view of the `ui5-calendar` component.\n * @constructor\n * @extends CalendarPart\n * @private\n */\n@customElement({\n\ttag: \"ui5-daypicker\",\n\tstyles: dayPickerCSS,\n\ttemplate: DayPickerTemplate,\n})\n/**\n * Fired when the selected date(s) change\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Fired when the timestamp changes (user navigates with the keyboard) or clicks with the mouse\n */\n@event(\"navigate\", {\n\tbubbles: true,\n})\nclass DayPicker extends CalendarPart implements ICalendarPicker {\n\teventDetails!: CalendarPart[\"eventDetails\"] & {\n\t\t\"change\": DayPickerChangeEventDetail,\n\t\t\"navigate\": DayPickerNavigateEventDetail,\n\t};\n\n\t/**\n\t * An array of UTC timestamps representing the selected date or dates depending on the capabilities of the picker component.\n\t * @default []\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tselectedDates: Array<number> = [];\n\n\t/**\n\t * Defines the type of selection used in the day picker 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 */\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 * @since 1.0.0-rc.8\n\t */\n\t@property({ type: Boolean })\n\thideWeekNumbers = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\t_weeks: Array<Week> = [];\n\n\t@property({ type: Array, noAttribute: true })\n\t_dayNames: Array<DayName> = [];\n\n\t/**\n\t * When set, the component will skip all work in onBeforeRendering and will not automatically set the focus on itself\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_hidden = false;\n\n\t/**\n\t * When selectionMode=\"Range\" and the first day in the range is selected, this is the currently hovered (when using mouse) or focused (when using keyboard) day by the user\n\t * @private\n\t */\n\t @property({ type: Number, noAttribute: true })\n\t_secondTimestamp?: number;\n\n\t/**\n\t * Array of special calendar dates (if such are passed) from the calendar.\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tspecialCalendarDates: Array<SpecialCalendarDateT> = [];\n\n\t/**\n\t * Array of disabled date ranges that cannot be selected.\n\t * Each range can have a start and/or end date value.\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tdisabledDates: Array<DisabledDateRangeT> = [];\n\n\t@query(\"[data-sap-focus-ref]\")\n\t_focusableDay!: HTMLElement;\n\n\t_autoFocus?: boolean;\n\t_mousedownTimestamp?: number;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tthis._buildWeeks(localeData);\n\t\tthis._buildDayNames(localeData);\n\t}\n\n\t/**\n\t * Builds the \"_weeks\" object that represents the month.\n\t * @param localeData\n\t * @private\n\t */\n\t_buildWeeks(localeData: LocaleData) {\n\t\tif (this._hidden) {\n\t\t\treturn; // Optimization to not do any work unless the current picker\n\t\t}\n\n\t\tthis._weeks = [];\n\n\t\tconst firstDayOfWeek = this._getFirstDayOfWeek();\n\t\tconst specialCalendarDates = this._specialCalendarDates;\n\t\tconst monthsNames = localeData.getMonths(\"wide\", this._primaryCalendarType);\n\t\tconst secondaryMonthsNames = this.hasSecondaryCalendarType ? localeData.getMonths(\"wide\", this.secondaryCalendarType) : [];\n\t\tconst nonWorkingDayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);\n\t\tconst todayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_TODAY);\n\t\tconst tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times\n\t\tconst todayDate = CalendarDate.fromLocalJSDate(UI5Date.getInstance(), this._primaryCalendarType); // current day date - calculate once\n\t\tconst calendarDate = this._calendarDate; // store the _calendarDate value as this getter is expensive and degrades IE11 perf\n\n\t\tconst minDate = this._minDate;\n\t\tconst maxDate = this._maxDate;\n\t\tconst precomputedDisabledDates = this._precomputeDisabledDates();\n\n\t\tconst tempSecondDate = this.hasSecondaryCalendarType ? this._getSecondaryDay(tempDate) : undefined;\n\n\t\tlet week: Week = [];\n\t\tfor (let i = 0; i < DAYS_IN_WEEK * 6; i++) { // always show 6 weeks total, 42 days to avoid jumping\n\t\t\tconst timestamp = tempDate.valueOf() / 1000; // no need to round because CalendarDate does it\n\n\t\t\tlet dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;\n\t\t\tif (dayOfTheWeek < 0) {\n\t\t\t\tdayOfTheWeek += DAYS_IN_WEEK;\n\t\t\t}\n\n\t\t\tconst specialCalendarDate = specialCalendarDates.find(specialDate => specialDate.specialDateTimestamp === timestamp);\n\t\t\tconst specialDayType = specialCalendarDate ? specialCalendarDate.type : \"\";\n\t\t\tconst specialDayTooltip = specialCalendarDate ? specialCalendarDate.tooltip : \"\";\n\t\t\tconst unnamedCalendarTypeLabel = specialDayTooltip && !this._isDefaultCalendarLegendType(specialDayType) ? specialDayTooltip : \"\";\n\n\t\t\tconst isFocused = tempDate.getMonth() === calendarDate.getMonth() && tempDate.getDate() === calendarDate.getDate();\n\t\t\tconst isSelected = this._isDaySelected(timestamp);\n\t\t\tconst isSelectedBetween = this._isDayInsideSelectionRange(timestamp);\n\t\t\tconst isOtherMonth = tempDate.getMonth() !== calendarDate.getMonth();\n\t\t\tconst isWeekend = this._isWeekend(tempDate);\n\t\t\tconst isDisabled = !this._isDateEnabled(tempDate, minDate, maxDate, precomputedDisabledDates);\n\t\t\tconst isToday = tempDate.isSame(todayDate);\n\t\t\tconst isFirstDayOfWeek = tempDate.getDay() === firstDayOfWeek;\n\n\t\t\tconst nonWorkingAriaLabel = (isWeekend || specialDayType === \"NonWorking\") && specialDayType !== \"Working\"\n\t\t\t\t? `${nonWorkingDayLabel} `\n\t\t\t\t: \"\";\n\t\t\tconst todayAriaLabel = isToday ? `${todayLabel} ` : \"\";\n\n\t\t\tconst tempSecondDateNumber = tempSecondDate ? tempSecondDate.getDate() : \"\";\n\t\t\tconst tempSecondYearNumber = tempSecondDate ? tempSecondDate.getYear() : \"\";\n\t\t\tconst secondaryMonthsNamesString = secondaryMonthsNames.length > 0 ? secondaryMonthsNames[tempSecondDate!.getMonth()] : \"\";\n\n\t\t\tconst tooltip = `${todayAriaLabel}${nonWorkingAriaLabel}${unnamedCalendarTypeLabel}`.trim();\n\n\t\t\tlet ariaLabel = this.hasSecondaryCalendarType\n\t\t\t\t? `${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}; ${secondaryMonthsNamesString} ${tempSecondDateNumber}, ${tempSecondYearNumber} ${tooltip}`.trim()\n\t\t\t\t: `${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()} ${tooltip}`.trim();\n\n\t\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\t\tif (isSelected && this._isRangeEndDate(timestamp)) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_END, ariaLabel);\n\t\t\t\t} else if (isSelected && this._isRangeStartDate(timestamp)) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_START, ariaLabel);\n\t\t\t\t} else if (isSelectedBetween) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_BETWEEN, ariaLabel);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst day: Day = {\n\t\t\t\ttimestamp: timestamp.toString(),\n\t\t\t\tfocusRef: isFocused,\n\t\t\t\t_tabIndex: isFocused ? 0 : -1,\n\t\t\t\tselected: isSelected || isSelectedBetween,\n\t\t\t\tday: tempDate.getDate(),\n\t\t\t\tsecondDay: this.hasSecondaryCalendarType ? (tempSecondDate as CalendarDate).getDate() : undefined,\n\t\t\t\t_isSecondaryCalendarType: this.hasSecondaryCalendarType,\n\t\t\t\tclasses: `ui5-dp-item ui5-dp-wday${dayOfTheWeek}`,\n\t\t\t\ttooltip,\n\t\t\t\tariaLabel,\n\t\t\t\tariaSelected: isSelected || isSelectedBetween,\n\t\t\t\tariaDisabled: isDisabled || isOtherMonth,\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\ttype: specialDayType,\n\t\t\t\tparts: \"day-cell\",\n\t\t\t};\n\n\t\t\tif (isFirstDayOfWeek) {\n\t\t\t\tday.classes += \" ui5-dp-firstday\";\n\t\t\t}\n\n\t\t\tif (isSelected) {\n\t\t\t\tday.classes += \" ui5-dp-item--selected\";\n\t\t\t\tday.parts += \" day-cell-selected\";\n\t\t\t}\n\n\t\t\tif (isSelectedBetween) {\n\t\t\t\tday.classes += \" ui5-dp-item--selected-between\";\n\t\t\t\tday.parts += \" day-cell-selected-between\";\n\t\t\t}\n\n\t\t\tif (isToday) {\n\t\t\t\tday.classes += \" ui5-dp-item--now\";\n\t\t\t}\n\n\t\t\tif (isOtherMonth) {\n\t\t\t\tday.classes += \" ui5-dp-item--othermonth\";\n\t\t\t}\n\n\t\t\tif ((isWeekend || specialDayType === \"NonWorking\") && specialDayType !== \"Working\") {\n\t\t\t\tday.classes += \" ui5-dp-item--weekend\";\n\t\t\t}\n\n\t\t\tif (isDisabled) {\n\t\t\t\tday.classes += \" ui5-dp-item--disabled\";\n\t\t\t}\n\n\t\t\tif (this.hasSecondaryCalendarType) {\n\t\t\t\tday.classes += \" ui5-dp-item--withsecondtype\";\n\t\t\t}\n\n\t\t\tweek.push(day);\n\n\t\t\tif (dayOfTheWeek === DAYS_IN_WEEK - 1) { // 0-indexed so 6 is the last day of the week\n\t\t\t\tconst weekNumber = this._calculateWeekNumber(tempDate.toLocalJSDate());\n\n\t\t\t\tweek.unshift({\n\t\t\t\t\tweekNum: weekNumber,\n\t\t\t\t\tisHidden: this.shouldHideWeekNumbers,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (week.length === DAYS_IN_WEEK + 1) { // 7 entries for each day + 1 for the week numbers\n\t\t\t\tthis._weeks.push(week);\n\t\t\t\tweek = [];\n\t\t\t}\n\n\t\t\ttempDate.setDate(tempDate.getDate() + 1);\n\t\t\tif (this.hasSecondaryCalendarType && tempSecondDate) {\n\t\t\t\ttempSecondDate.setDate(tempSecondDate.getDate() + 1);\n\t\t\t}\n\t\t}\n\t}\n\n\t_calculateWeekNumber(date: Date): number {\n\t\tconst oDateFormat = DateFormat.getDateInstance({ pattern: \"w\", calendarType: this.primaryCalendarType, calendarWeekNumbering: this.calendarWeekNumbering });\n\t\tconst weekNumber = oDateFormat.format(date);\n\n\t\treturn Number(weekNumber);\n\t}\n\n\t/**\n\t * Builds the dayNames object (header of the month).\n\t * @param localeData\n\t * @private\n\t */\n\t_buildDayNames(localeData: LocaleData) {\n\t\tif (this._hidden) {\n\t\t\treturn; // Optimization to not do any work unless the current picker\n\t\t}\n\n\t\tlet dayOfTheWeek;\n\n\t\tconst aDayNamesWide = localeData.getDays(\"wide\", this._primaryCalendarType);\n\t\tlet aDayNamesAbbreviated = localeData.getDays(\"abbreviated\", this._primaryCalendarType);\n\t\tlet dayName;\n\n\t\tif (this.namesTooLong(aDayNamesAbbreviated)) {\n\t\t\taDayNamesAbbreviated = localeData.getDays(\"narrow\", this._primaryCalendarType);\n\t\t}\n\n\t\tthis._dayNames = [];\n\t\tthis._dayNames.push({\n\t\t\tclasses: \"ui5-dp-dayname\",\n\t\t\tname: DayPicker.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT),\n\t\t});\n\t\tfor (let i = 0; i < DAYS_IN_WEEK; i++) {\n\t\t\tdayOfTheWeek = i + this._getFirstDayOfWeek();\n\t\t\tif (dayOfTheWeek > DAYS_IN_WEEK - 1) { // 0-indexed so index of 6 is the maximum allowed\n\t\t\t\tdayOfTheWeek -= DAYS_IN_WEEK;\n\t\t\t}\n\t\t\tdayName = {\n\t\t\t\tname: aDayNamesWide[dayOfTheWeek],\n\t\t\t\tultraShortName: aDayNamesAbbreviated[dayOfTheWeek],\n\t\t\t\tclasses: \"ui5-dp-dayname\",\n\t\t\t};\n\t\t\tthis._dayNames.push(dayName);\n\t\t}\n\t\tthis._dayNames[1].classes += \" ui5-dp-firstday\";\n\t\tif (this.shouldHideWeekNumbers) {\n\t\t\tthis._dayNames.shift();\n\t\t}\n\t}\n\n\t/**\n\t * Tells if any of the days is more than 4 characters(too long to render).\n\t * @param dayNames\n\t * @private\n\t */\n\tnamesTooLong(dayNames: Array<string>): boolean {\n\t\treturn dayNames.some(dayName => dayName.length > 4);\n\t}\n\n\tonAfterRendering() {\n\t\tif (this._autoFocus && !this._hidden) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t_focusCorrectDay() {\n\t\tif (this._shouldFocusDay) {\n\t\t\tthis._focusableDay.focus();\n\t\t}\n\t}\n\n\tget _shouldFocusDay() {\n\t\treturn document.activeElement !== this._focusableDay && this._specialCalendarDates.length === 0;\n\t}\n\n\t_onfocusin() {\n\t\tthis._autoFocus = true;\n\t\tthis._focusCorrectDay();\n\t}\n\n\t_onfocusout() {\n\t\tthis._autoFocus = false;\n\t}\n\n\t/**\n\t * Tells if the day is selected (dark blue).\n\t * @param timestamp\n\t * @private\n\t */\n\t_isDaySelected(timestamp: number): boolean {\n\t\tif (this.selectionMode === CalendarSelectionMode.Single) {\n\t\t\treturn timestamp === this.selectedDates[0];\n\t\t}\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Multiple) {\n\t\t\treturn this.selectedDates.includes(timestamp);\n\t\t}\n\n\t\treturn timestamp === this.selectedDates[0] || timestamp === this.selectedDates[this.selectedDates.length - 1];\n\t}\n\n\t_isRangeEndDate(timestamp: number): boolean {\n\t\treturn this.selectionMode === CalendarSelectionMode.Range && timestamp === this.selectedDates[1];\n\t}\n\n\t_isRangeStartDate(timestamp: number): boolean {\n\t\treturn this.selectionMode === CalendarSelectionMode.Range && timestamp === this.selectedDates[0];\n\t}\n\n\t/**\n\t * Tells if the day is inside a selection range (light blue).\n\t * @param timestamp\n\t * @private\n\t */\n\t_isDayInsideSelectionRange(timestamp: number): boolean {\n\t\t// No selection at all (or not in range selection mode)\n\t\tif (this.selectionMode !== CalendarSelectionMode.Range || !this.selectedDates.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Only one date selected - the user is hovering with the mouse or navigating with the keyboard to select the second one\n\t\tif (this.selectedDates.length === 1 && this._secondTimestamp) {\n\t\t\treturn isBetween(timestamp, this.selectedDates[0], this._secondTimestamp);\n\t\t}\n\n\t\t// Two dates selected - stable range\n\t\treturn isBetween(timestamp, this.selectedDates[0], this.selectedDates[this.selectedDates.length - 1]);\n\t}\n\n\t/**\n\t * Selects/deselects a day.\n\t * @param e\n\t * @param isShift true if the user did Click+Shift or Enter+Shift (but not Space+Shift)\n\t * @param setTimestamp whether to move focus (timestamp) to the selected day; false for mouse clicks where focus is independent\n\t * @private\n\t */\n\t_selectDate(e: Event, isShift: boolean, setTimestamp = true) {\n\t\tlet target = e.target as HTMLElement;\n\n\t\tif (!target.hasAttribute(\"data-sap-timestamp\")) {\n\t\t\ttarget = target.parentNode as HTMLElement;\n\t\t}\n\n\t\tif (!this._isDayPressed(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timestamp = setTimestamp ? this._getTimestampFromDom(target) : (this._mousedownTimestamp ?? this.timestamp!);\n\t\tthis._mousedownTimestamp = undefined;\n\n\t\tif (setTimestamp) {\n\t\t\tthis._safelySetTimestamp(timestamp);\n\t\t}\n\t\tthis._updateSecondTimestamp();\n\t\tthis._updateSelectedDates(timestamp, isShift);\n\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\ttimestamp: this.timestamp,\n\t\t\tdates: this.selectedDates,\n\t\t});\n\t}\n\n\t_updateSelectedDates(timestamp: number, isShift: boolean) {\n\t\tif (this.selectionMode === CalendarSelectionMode.Multiple) {\n\t\t\tif (this.selectedDates.length > 0 && isShift) {\n\t\t\t\tthis._multipleSelection(timestamp);\n\t\t\t} else {\n\t\t\t\tthis._toggleTimestampInSelection(timestamp);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tannounce(DayPicker.i18nBundle.getText(LIST_ITEM_SELECTED), InvisibleMessageMode.Assertive);\n\t\tif (this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {\n\t\t\tthis.selectedDates = [this.selectedDates[0], timestamp];\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectedDates = [timestamp];\n\t}\n\n\t/**\n\t * Selects/deselects the whole row (week).\n\t * @private\n\t */\n\t_selectWeek() {\n\t\tthis._weeks.forEach((week: Week) => {\n\t\t\tconst _week = week as Array<Day>;\n\t\t\tconst dayInThisWeek = _week.findIndex((item: Day) => {\n\t\t\t\tconst date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);\n\t\t\t\treturn date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();\n\t\t\t}) !== -1;\n\t\t\tif (dayInThisWeek) { // The current day is in this week\n\t\t\t\tconst notAllDaysOfThisWeekSelected = _week.some(item => item.timestamp && !this.selectedDates.includes(parseInt(item.timestamp)));\n\t\t\t\tif (notAllDaysOfThisWeekSelected) { // even if one day is not selected, select the whole week\n\t\t\t\t\t_week.filter(item => item.timestamp).forEach(item => {\n\t\t\t\t\t\tthis._addTimestampToSelection(parseInt(item.timestamp));\n\t\t\t\t\t});\n\t\t\t\t} else { // only if all days of this week are selected, deselect them\n\t\t\t\t\t_week.filter(item => item.timestamp).forEach(item => {\n\t\t\t\t\t\tthis._removeTimestampFromSelection(parseInt(item.timestamp));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\ttimestamp: this.timestamp,\n\t\t\tdates: this.selectedDates,\n\t\t});\n\t}\n\n\t_toggleTimestampInSelection(timestamp: number) {\n\t\tif (this.selectedDates.includes(timestamp)) {\n\t\t\tthis._removeTimestampFromSelection(timestamp);\n\t\t} else {\n\t\t\tthis._addTimestampToSelection(timestamp);\n\t\t\tannounce(DayPicker.i18nBundle.getText(LIST_ITEM_SELECTED), InvisibleMessageMode.Assertive);\n\t\t}\n\t}\n\n\t_addTimestampToSelection(timestamp: number) {\n\t\tif (!this.selectedDates.includes(timestamp)) {\n\t\t\tthis.selectedDates = [...this.selectedDates, timestamp];\n\t\t}\n\t}\n\n\t_removeTimestampFromSelection(timestamp: number) {\n\t\tthis.selectedDates = this.selectedDates.filter(value => value !== timestamp);\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tlet target = e.target as HTMLElement;\n\n\t\tif (!target.hasAttribute(\"data-sap-timestamp\")) {\n\t\t\ttarget = target.parentNode as HTMLElement;\n\t\t}\n\n\t\tif (!this._isDayPressed(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timestamp = this._getTimestampFromDom(target);\n\t\tconst clickedDate = CalendarDate.fromTimestamp(timestamp * 1000, this._primaryCalendarType);\n\t\tconst isOtherMonth = clickedDate.getMonth() !== this._calendarDate.getMonth();\n\n\t\tthis._mousedownTimestamp = timestamp;\n\t\tthis._safelySetTimestamp(timestamp);\n\n\t\tif (isOtherMonth) {\n\t\t\tthis._autoFocus = true;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp!, mouse: true });\n\t}\n\n\t/**\n\t * Called when at least one day is selected and the user presses \"Shift\".\n\t * @param timestamp\n\t * @private\n\t */\n\t_multipleSelection(timestamp: number) {\n\t\tconst min = Math.min(...this.selectedDates);\n\t\tconst max = Math.max(...this.selectedDates);\n\t\tlet start;\n\t\tlet end;\n\t\tlet toggle = false;\n\n\t\tif (timestamp < min) {\n\t\t\tstart = timestamp;\n\t\t\tend = min;\n\t\t} else if (timestamp >= min && timestamp <= max) { // inside the current range - toggle all between the selected and focused\n\t\t\tconst distanceToMin = Math.abs(timestamp - min);\n\t\t\tconst distanceToMax = Math.abs(timestamp - max);\n\n\t\t\tif (distanceToMin < distanceToMax) {\n\t\t\t\tstart = timestamp;\n\t\t\t\tend = max;\n\t\t\t} else {\n\t\t\t\tstart = min;\n\t\t\t\tend = timestamp;\n\t\t\t}\n\t\t\ttoggle = true;\n\t\t} else {\n\t\t\tstart = max;\n\t\t\tend = timestamp;\n\t\t}\n\n\t\tconst startDate = CalendarDate.fromTimestamp(start * 1000);\n\t\tconst endDate = CalendarDate.fromTimestamp(end * 1000);\n\n\t\twhile (startDate.valueOf() <= endDate.valueOf()) {\n\t\t\tthis[toggle ? \"_toggleTimestampInSelection\" : \"_addTimestampToSelection\"](startDate.valueOf() / 1000);\n\t\t\tstartDate.setDate(startDate.getDate() + 1);\n\t\t}\n\t}\n\n\t/**\n\t * Set the hovered day as the \"_secondTimestamp\".\n\t * @param e\n\t * @private\n\t */\n\t_onmouseover(e: MouseEvent) {\n\t\tconst target = e.target as HTMLElement;\n\t\tconst hoveredItem = target.closest(\".ui5-dp-item\") as HTMLElement;\n\t\tif (hoveredItem && this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {\n\t\t\tthis._secondTimestamp = this._getTimestampFromDom(hoveredItem);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\n\t\tif (isEnter(e) || isEnterShift(e)) {\n\t\t\tthis._selectDate(e, isEnterShift(e));\n\t\t} else if (isSpace(e) || isSpaceShift(e)) {\n\t\t\te.preventDefault();\n\t\t} else if (isLeft(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"day\", false);\n\t\t} else if (isRight(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"day\", false);\n\t\t} else if (isUp(e)) {\n\t\t\tthis._modifyTimestampBy(-7, \"day\", false);\n\t\t} else if (isDown(e)) {\n\t\t\tthis._modifyTimestampBy(7, \"day\", false);\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"month\");\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"month\");\n\t\t} else if (isPageUpShift(e) || isPageUpAlt(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"year\");\n\t\t} else if (isPageDownShift(e) || isPageDownAlt(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"year\");\n\t\t} else if (isPageUpShiftCtrl(e)) {\n\t\t\tthis._modifyTimestampBy(-10, \"year\");\n\t\t} else if (isPageDownShiftCtrl(e)) {\n\t\t\tthis._modifyTimestampBy(10, \"year\");\n\t\t} else if (isHome(e) || isEnd(e)) {\n\t\t\tthis._onHomeOrEnd(isHome(e));\n\t\t} else if (isHomeCtrl(e)) {\n\t\t\tconst tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\t\ttempDate.setDate(1); // Set the first day of the month\n\t\t\tthis._setTimestamp(tempDate.valueOf() / 1000);\n\t\t} else if (isEndCtrl(e)) {\n\t\t\tconst tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\t\ttempDate.setMonth(tempDate.getMonth() + 1);\n\t\t\ttempDate.setDate(0); // Set the last day of the month (0th day of next month)\n\t\t\tthis._setTimestamp(tempDate.valueOf() / 1000);\n\t\t} else {\n\t\t\tpreventDefault = false;\n\t\t}\n\n\t\tif (preventDefault) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\t// Even if Space+Shift was pressed, ignore the shift unless in Multiple selection\n\t\tif (isSpace(e) || (isSpaceShift(e) && this.selectionMode !== CalendarSelectionMode.Multiple)) {\n\t\t\tthis._selectDate(e, false);\n\t\t} else if (isSpaceShift(e)) {\n\t\t\tthis._selectWeek();\n\t\t}\n\t}\n\n\t/**\n\t * Click is the same as \"Enter\".\n\t * **Note:** \"Click+Shift\" has the same effect as \"Enter+Shift\".\n\t * @param e\n\t * @private\n\t */\n\t_onclick(e: MouseEvent) {\n\t\tthis._selectDate(e, e.shiftKey, false);\n\t}\n\n\t/**\n\t * Called upon \"Home\" or \"End\" - moves the focus to the first or last item in the row.\n\t * @param homePressed\n\t * @private\n\t */\n\t_onHomeOrEnd(homePressed: boolean) {\n\t\tthis._weeks.forEach(week => {\n\t\t\tconst _week = week as Array<Day>;\n\t\t\tconst dayInThisWeek = _week.findIndex(item => {\n\t\t\t\tconst date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);\n\t\t\t\treturn date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();\n\t\t\t}) !== -1;\n\t\t\tif (dayInThisWeek) { // The current day is in this week\n\t\t\t\tconst index = homePressed ? 1 : 7; // select the first (if Home) or last (if End) day of the week\n\t\t\t\tthis._setTimestamp(parseInt(_week[index].timestamp));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_hasPreviousPage(): boolean {\n\t\treturn !(this._calendarDate.getMonth() === this._minDate.getMonth() && this._calendarDate.getYear() === this._minDate.getYear());\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_hasNextPage(): boolean {\n\t\treturn !(this._calendarDate.getMonth() === this._maxDate.getMonth() && this._calendarDate.getYear() === this._maxDate.getYear());\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_showPreviousPage() {\n\t\tthis._modifyTimestampBy(-1, \"month\", false);\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_showNextPage() {\n\t\tthis._modifyTimestampBy(1, \"month\", false);\n\t}\n\n\t/**\n\t * Modifies the timestamp by a certain amount of days/months/years.\n\t * @param amount\n\t * @param unit\n\t * @param preserveDate whether to preserve the day of the month (f.e. 15th of March + 1 month = 15th of April)\n\t * @private\n\t */\n\t_modifyTimestampBy(amount: number, unit: string, preserveDate?: boolean) {\n\t\t// Modify the current timestamp\n\t\tthis._safelyModifyTimestampBy(amount, unit, preserveDate);\n\t\tthis._updateSecondTimestamp();\n\n\t\t// Notify the calendar to update its timestamp\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp! });\n\t}\n\n\t/**\n\t * Sets the timestamp to an absolute value.\n\t * @param value\n\t * @private\n\t */\n\t_setTimestamp(value: number) {\n\t\tthis._safelySetTimestamp(value);\n\t\tthis._updateSecondTimestamp();\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp! });\n\t}\n\n\t/**\n\t * During range selection, when the user is navigating with the keyboard,\n\t * the currently focused day is considered the \"second day\".\n\t * @private\n\t */\n\t_updateSecondTimestamp() {\n\t\tif (this.selectionMode === CalendarSelectionMode.Range && (this.selectedDates.length === 1 || this.selectedDates.length === 2)) {\n\t\t\tthis._secondTimestamp = this.timestamp;\n\t\t}\n\t}\n\n\tget _specialCalendarDates() {\n\t\treturn this.specialCalendarDates;\n\t}\n\n\tget shouldHideWeekNumbers() {\n\t\tif (this._primaryCalendarType !== CalendarType.Gregorian) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.hideWeekNumbers;\n\t}\n\n\t_isWeekend(oDate: CalendarDate): boolean {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\n\t\tconst iWeekDay = oDate.getDay(),\n\t\t\tiWeekendStart = localeData.getWeekendStart(),\n\t\t\tiWeekendEnd = localeData.getWeekendEnd();\n\n\t\treturn (iWeekDay >= iWeekendStart && iWeekDay <= iWeekendEnd)\n\t\t\t|| (iWeekendEnd < iWeekendStart && (iWeekDay >= iWeekendStart || iWeekDay <= iWeekendEnd));\n\t}\n\n\t/**\n\t * Pre-computes disabled date range timestamps once before the rendering loop.\n\t * Avoids repeated date string parsing inside the per-cell _isDateEnabled check.\n\t * @private\n\t */\n\t_precomputeDisabledDates(): Array<{ startTimestamp: number, endTimestamp: number }> {\n\t\treturn this.disabledDates.map(range => ({\n\t\t\tstartTimestamp: this._getTimestampFromDateValue(range.startValue),\n\t\t\tendTimestamp: this._getTimestampFromDateValue(range.endValue),\n\t\t}));\n\t}\n\n\t/**\n\t * Checks if a given date is enabled (selectable).\n\t * A date is considered disabled if:\n\t * - It falls outside the min/max date range defined by the component\n\t * - It matches a single disabled date\n\t * - It falls within a disabled date range (exclusive of start and end dates)\n\t * @param date - The date to check\n\t * @param minDate - Pre-resolved min calendar date\n\t * @param maxDate - Pre-resolved max calendar date\n\t * @param precomputedDisabledDates - Pre-parsed disabled date range timestamps\n\t * @returns `true` if the date is enabled (selectable), `false` if disabled\n\t * @private\n\t */\n\t_isDateEnabled(date: CalendarDate, minDate?: CalendarDate, maxDate?: CalendarDate, precomputedDisabledDates?: Array<{ startTimestamp: number, endTimestamp: number }>): boolean {\n\t\tconst resolvedMin = minDate ?? this._minDate;\n\t\tconst resolvedMax = maxDate ?? this._maxDate;\n\n\t\tif ((resolvedMin && date.isBefore(resolvedMin))\n\t\t\t|| (resolvedMax && date.isAfter(resolvedMax))) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst dateTimestamp = date.valueOf() / 1000;\n\t\tconst disabledRanges = precomputedDisabledDates ?? this.disabledDates.map(range => ({\n\t\t\tstartTimestamp: this._getTimestampFromDateValue(range.startValue),\n\t\t\tendTimestamp: this._getTimestampFromDateValue(range.endValue),\n\t\t}));\n\n\t\treturn !disabledRanges.some(({ startTimestamp, endTimestamp }) => {\n\t\t\tif (endTimestamp) {\n\t\t\t\treturn dateTimestamp > startTimestamp && dateTimestamp < endTimestamp;\n\t\t\t}\n\n\t\t\treturn startTimestamp && dateTimestamp === startTimestamp;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a date value string to a timestamp.\n\t * @param dateValue - Date string to convert\n\t * @returns timestamp in seconds, or 0 if invalid\n\t * @private\n\t */\n\t_getTimestampFromDateValue(dateValue?: string): number {\n\t\tif (!dateValue) {\n\t\t\treturn 0;\n\t\t}\n\n\t\ttry {\n\t\t\tconst jsDate = this.getValueFormat().parse(dateValue) as Date;\n\t\t\tconst calendarDate = CalendarDate.fromLocalJSDate(\n\t\t\t\tjsDate,\n\t\t\t\tthis._primaryCalendarType,\n\t\t\t);\n\t\t\treturn calendarDate.valueOf() / 1000;\n\t\t} catch {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t_isDayPressed(target: HTMLElement): boolean {\n\t\tconst targetParent = target.parentNode as HTMLElement;\n\t\treturn (target.className.indexOf(\"ui5-dp-item\") > -1) || (targetParent && targetParent.classList && targetParent.classList.contains(\"ui5-dp-item\"));\n\t}\n\n\t_isDefaultCalendarLegendType(type: string): boolean {\n\t\treturn [\"NonWorking\", \"Working\", \"Today\", \"Selected\", \"None\"].includes(type);\n\t}\n\n\t_getSecondaryDay(tempDate: CalendarDate): CalendarDate {\n\t\treturn new CalendarDate(tempDate, this.secondaryCalendarType);\n\t}\n\n\t_getFirstDay(): CalendarDate {\n\t\tlet daysFromPreviousMonth;\n\n\t\tconst firstDayOfWeek = this._getFirstDayOfWeek();\n\n\t\t// determine weekday of first day in month\n\t\tconst firstDay = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\tfirstDay.setDate(1);\n\n\t\tdaysFromPreviousMonth = firstDay.getDay() - firstDayOfWeek;\n\n\t\tif (daysFromPreviousMonth < 0) {\n\t\t\tdaysFromPreviousMonth = 7 + daysFromPreviousMonth;\n\t\t}\n\n\t\tif (daysFromPreviousMonth > 0) {\n\t\t\tfirstDay.setDate(1 - daysFromPreviousMonth);\n\t\t}\n\n\t\treturn firstDay;\n\t}\n\n\t_getFirstDayOfWeek(): number {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tlet firstDayOfWeek;\n\t\tconst configurationFirstDayOfWeek = getFirstDayOfWeek();\n\n\t\tif (configurationFirstDayOfWeek !== undefined) {\n\t\t\tfirstDayOfWeek = configurationFirstDayOfWeek;\n\t\t} else {\n\t\t\tfirstDayOfWeek = localeData.getFirstDayOfWeek();\n\t\t}\n\n\t\tconst result = CalendarUtils.getWeekConfigurationValues(this.calendarWeekNumbering);\n\n\t\tif (result?.firstDayOfWeek !== undefined && this.calendarWeekNumbering !== \"Default\") {\n\t\t\treturn result.firstDayOfWeek;\n\t\t}\n\n\t\treturn firstDayOfWeek;\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\twrapper: {\n\t\t\t\tdisplay: this._hidden ? \"none\" : \"flex\",\n\t\t\t\t\"justify-content\": \"center\",\n\t\t\t},\n\t\t\tmain: {\n\t\t\t\twidth: \"100%\",\n\t\t\t},\n\t\t};\n\t}\n\n\tget ariaRoledescription() {\n\t\treturn this.hasSecondaryCalendarType\n\t\t\t? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType as string} calendar`\n\t\t\t: `${this._primaryCalendarType} calendar`;\n\t}\n}\n\nDayPicker.define();\n\nexport default DayPicker;\nexport type {\n\tDayPickerNavigateEventDetail,\n\tDayPickerChangeEventDetail,\n};\n"]}
1
+ {"version":3,"file":"DayPicker.js","sourceRoot":"","sources":["../src/DayPicker.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport type LocaleData from \"@ui5/webcomponents-localization/dist/LocaleData.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tisSpace,\n\tisSpaceShift,\n\tisEnter,\n\tisEnterShift,\n\tisUp,\n\tisDown,\n\tisLeft,\n\tisRight,\n\tisHome,\n\tisEnd,\n\tisHomeCtrl,\n\tisEndCtrl,\n\tisPageUp,\n\tisPageDown,\n\tisPageUpShift,\n\tisPageUpAlt,\n\tisPageUpShiftCtrl,\n\tisPageDownShift,\n\tisPageDownAlt,\n\tisPageDownShiftCtrl,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getFirstDayOfWeek } from \"@ui5/webcomponents-base/dist/config/FormatSettings.js\";\nimport CalendarDate from \"@ui5/webcomponents-localization/dist/dates/CalendarDate.js\";\nimport CalendarType from \"@ui5/webcomponents-base/dist/types/CalendarType.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\nimport CalendarUtils from \"@ui5/webcomponents-localization/dist/CalendarUtils.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport CalendarSelectionMode from \"./types/CalendarSelectionMode.js\";\nimport CalendarPart from \"./CalendarPart.js\";\nimport type {\n\tDisabledDateRangeT,\n\tICalendarPicker,\n\tSpecialCalendarDateT,\n} from \"./Calendar.js\";\n\nimport {\n\tDAY_PICKER_WEEK_NUMBER_TEXT,\n\tDAY_PICKER_NON_WORKING_DAY,\n\tDAY_PICKER_TODAY,\n\tLIST_ITEM_SELECTED,\n\tDAY_PICKER_SELECTED_RANGE_START,\n\tDAY_PICKER_SELECTED_RANGE_END,\n\tDAY_PICKER_SELECTED_RANGE_BETWEEN,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DayPickerTemplate from \"./DayPickerTemplate.js\";\n\n// Styles\nimport dayPickerCSS from \"./generated/themes/DayPicker.css.js\";\n\nconst isBetween = (x: number, num1: number, num2: number) => x > Math.min(num1, num2) && x < Math.max(num1, num2);\nconst DAYS_IN_WEEK = 7;\n\ntype DayName = {\n\tname: string,\n\tclasses: string,\n\tultraShortName?: string,\n}\n\ntype Day = {\n\ttimestamp: string,\n\tday: number,\n\tfocusRef: boolean,\n\t_tabIndex: number,\n\tselected: boolean,\n\t_isSecondaryCalendarType: boolean,\n\tclasses: string,\n\ttooltip?: string,\n\tariaLabel: string,\n\tariaSelected: boolean,\n\tariaDisabled: boolean | undefined,\n\tdisabled: boolean,\n\tsecondDay?: number,\n\tweekNum?: number,\n\tisHidden?: boolean,\n\ttype?: string,\n\tparts: string,\n}\n\ntype WeekNumber = {\n\tweekNum: number,\n\tisHidden: boolean,\n}\n\ntype Week = Array<Day | WeekNumber>;\n\ntype DayPickerChangeEventDetail = {\n\tdates: Array<number>,\n\ttimestamp?: number,\n}\n\ntype DayPickerNavigateEventDetail = {\n\ttimestamp: number,\n\tmouse?: boolean,\n}\n\n/**\n * @class\n *\n * Represents the days inside a single month view of the `ui5-calendar` component.\n * @constructor\n * @extends CalendarPart\n * @private\n */\n@customElement({\n\ttag: \"ui5-daypicker\",\n\tstyles: dayPickerCSS,\n\ttemplate: DayPickerTemplate,\n})\n/**\n * Fired when the selected date(s) change\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Fired when the timestamp changes (user navigates with the keyboard) or clicks with the mouse\n */\n@event(\"navigate\", {\n\tbubbles: true,\n})\nclass DayPicker extends CalendarPart implements ICalendarPicker {\n\teventDetails!: CalendarPart[\"eventDetails\"] & {\n\t\t\"change\": DayPickerChangeEventDetail,\n\t\t\"navigate\": DayPickerNavigateEventDetail,\n\t};\n\n\t/**\n\t * An array of UTC timestamps representing the selected date or dates depending on the capabilities of the picker component.\n\t * @default []\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tselectedDates: Array<number> = [];\n\n\t/**\n\t * Defines the type of selection used in the day picker 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 */\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 * @since 1.0.0-rc.8\n\t */\n\t@property({ type: Boolean })\n\thideWeekNumbers = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\t_weeks: Array<Week> = [];\n\n\t@property({ type: Array, noAttribute: true })\n\t_dayNames: Array<DayName> = [];\n\n\t/**\n\t * When set, the component will skip all work in onBeforeRendering and will not automatically set the focus on itself\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_hidden = false;\n\n\t/**\n\t * When selectionMode=\"Range\" and the first day in the range is selected, this is the currently hovered (when using mouse) or focused (when using keyboard) day by the user\n\t * @private\n\t */\n\t @property({ type: Number, noAttribute: true })\n\t_secondTimestamp?: number;\n\n\t/**\n\t * Array of special calendar dates (if such are passed) from the calendar.\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tspecialCalendarDates: Array<SpecialCalendarDateT> = [];\n\n\t/**\n\t * Array of disabled date ranges that cannot be selected.\n\t * Each range can have a start and/or end date value.\n\t * @private\n\t */\n\t@property({ type: Array, noAttribute: true })\n\tdisabledDates: Array<DisabledDateRangeT> = [];\n\n\t@query(\"[data-sap-focus-ref]\")\n\t_focusableDay!: HTMLElement;\n\n\t_autoFocus?: boolean;\n\t_mousedownTimestamp?: number;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tthis._buildWeeks();\n\t\tthis._buildDayNames(localeData);\n\t}\n\n\t/**\n\t * Builds the \"_weeks\" object that represents the month.\n\t * @private\n\t */\n\t_buildWeeks() {\n\t\tif (this._hidden) {\n\t\t\treturn; // Optimization to not do any work unless the current picker\n\t\t}\n\n\t\tthis._weeks = [];\n\n\t\tconst firstDayOfWeek = this._getFirstDayOfWeek();\n\t\tconst specialCalendarDates = this._specialCalendarDates;\n\t\tconst nonWorkingDayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);\n\t\tconst todayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_TODAY);\n\t\tconst tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times\n\t\tconst todayDate = CalendarDate.fromLocalJSDate(UI5Date.getInstance(), this._primaryCalendarType); // current day date - calculate once\n\t\tconst calendarDate = this._calendarDate; // store the _calendarDate value as this getter is expensive and degrades IE11 perf\n\n\t\tconst minDate = this._minDate;\n\t\tconst maxDate = this._maxDate;\n\t\tconst precomputedDisabledDates = this._precomputeDisabledDates();\n\n\t\tconst tempSecondDate = this.hasSecondaryCalendarType ? this._getSecondaryDay(tempDate) : undefined;\n\n\t\tlet week: Week = [];\n\t\tfor (let i = 0; i < DAYS_IN_WEEK * 6; i++) { // always show 6 weeks total, 42 days to avoid jumping\n\t\t\tconst timestamp = tempDate.valueOf() / 1000; // no need to round because CalendarDate does it\n\n\t\t\tlet dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;\n\t\t\tif (dayOfTheWeek < 0) {\n\t\t\t\tdayOfTheWeek += DAYS_IN_WEEK;\n\t\t\t}\n\n\t\t\tconst specialCalendarDate = specialCalendarDates.find(specialDate => specialDate.specialDateTimestamp === timestamp);\n\t\t\tconst specialDayType = specialCalendarDate ? specialCalendarDate.type : \"\";\n\t\t\tconst specialDayTooltip = specialCalendarDate ? specialCalendarDate.tooltip : \"\";\n\t\t\tconst unnamedCalendarTypeLabel = specialDayTooltip && !this._isDefaultCalendarLegendType(specialDayType) ? specialDayTooltip : \"\";\n\n\t\t\tconst isFocused = tempDate.getMonth() === calendarDate.getMonth() && tempDate.getDate() === calendarDate.getDate();\n\t\t\tconst isSelected = this._isDaySelected(timestamp);\n\t\t\tconst isSelectedBetween = this._isDayInsideSelectionRange(timestamp);\n\t\t\tconst isOtherMonth = tempDate.getMonth() !== calendarDate.getMonth();\n\t\t\tconst isWeekend = this._isWeekend(tempDate);\n\t\t\tconst isDisabled = !this._isDateEnabled(tempDate, minDate, maxDate, precomputedDisabledDates);\n\t\t\tconst isToday = tempDate.isSame(todayDate);\n\t\t\tconst isFirstDayOfWeek = tempDate.getDay() === firstDayOfWeek;\n\n\t\t\tconst nonWorkingAriaLabel = (isWeekend || specialDayType === \"NonWorking\") && specialDayType !== \"Working\"\n\t\t\t\t? `${nonWorkingDayLabel} `\n\t\t\t\t: \"\";\n\t\t\tconst todayAriaLabel = isToday ? `${todayLabel} ` : \"\";\n\n\t\t\tconst tooltip = `${todayAriaLabel}${nonWorkingAriaLabel}${unnamedCalendarTypeLabel}`.trim();\n\n\t\t\tlet ariaLabel = this._formatLong.format(tempDate.toUTCJSDate(), true);\n\t\t\tif (this.hasSecondaryCalendarType && tempSecondDate) {\n\t\t\t\tariaLabel += ` ${this._formatLongSecondary.format(tempSecondDate.toUTCJSDate(), true)}`;\n\t\t\t}\n\n\t\t\tif (tooltip) {\n\t\t\t\tariaLabel += ` ${tooltip}`;\n\t\t\t}\n\n\t\t\tif (this.selectionMode === CalendarSelectionMode.Range) {\n\t\t\t\tif (isSelected && this._isRangeEndDate(timestamp)) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_END, ariaLabel);\n\t\t\t\t} else if (isSelected && this._isRangeStartDate(timestamp)) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_START, ariaLabel);\n\t\t\t\t} else if (isSelectedBetween) {\n\t\t\t\t\tariaLabel = DayPicker.i18nBundle.getText(DAY_PICKER_SELECTED_RANGE_BETWEEN, ariaLabel);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst day: Day = {\n\t\t\t\ttimestamp: timestamp.toString(),\n\t\t\t\tfocusRef: isFocused,\n\t\t\t\t_tabIndex: isFocused ? 0 : -1,\n\t\t\t\tselected: isSelected || isSelectedBetween,\n\t\t\t\tday: tempDate.getDate(),\n\t\t\t\tsecondDay: this.hasSecondaryCalendarType ? (tempSecondDate as CalendarDate).getDate() : undefined,\n\t\t\t\t_isSecondaryCalendarType: this.hasSecondaryCalendarType,\n\t\t\t\tclasses: `ui5-dp-item ui5-dp-wday${dayOfTheWeek}`,\n\t\t\t\ttooltip,\n\t\t\t\tariaLabel,\n\t\t\t\tariaSelected: isSelected || isSelectedBetween,\n\t\t\t\tariaDisabled: isDisabled || isOtherMonth,\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\ttype: specialDayType,\n\t\t\t\tparts: \"day-cell\",\n\t\t\t};\n\n\t\t\tif (isFirstDayOfWeek) {\n\t\t\t\tday.classes += \" ui5-dp-firstday\";\n\t\t\t}\n\n\t\t\tif (isSelected) {\n\t\t\t\tday.classes += \" ui5-dp-item--selected\";\n\t\t\t\tday.parts += \" day-cell-selected\";\n\t\t\t}\n\n\t\t\tif (isSelectedBetween) {\n\t\t\t\tday.classes += \" ui5-dp-item--selected-between\";\n\t\t\t\tday.parts += \" day-cell-selected-between\";\n\t\t\t}\n\n\t\t\tif (isToday) {\n\t\t\t\tday.classes += \" ui5-dp-item--now\";\n\t\t\t}\n\n\t\t\tif (isOtherMonth) {\n\t\t\t\tday.classes += \" ui5-dp-item--othermonth\";\n\t\t\t}\n\n\t\t\tif ((isWeekend || specialDayType === \"NonWorking\") && specialDayType !== \"Working\") {\n\t\t\t\tday.classes += \" ui5-dp-item--weekend\";\n\t\t\t}\n\n\t\t\tif (isDisabled) {\n\t\t\t\tday.classes += \" ui5-dp-item--disabled\";\n\t\t\t}\n\n\t\t\tif (this.hasSecondaryCalendarType) {\n\t\t\t\tday.classes += \" ui5-dp-item--withsecondtype\";\n\t\t\t}\n\n\t\t\tweek.push(day);\n\n\t\t\tif (dayOfTheWeek === DAYS_IN_WEEK - 1) { // 0-indexed so 6 is the last day of the week\n\t\t\t\tconst weekNumber = this._calculateWeekNumber(tempDate.toLocalJSDate());\n\n\t\t\t\tweek.unshift({\n\t\t\t\t\tweekNum: weekNumber,\n\t\t\t\t\tisHidden: this.shouldHideWeekNumbers,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (week.length === DAYS_IN_WEEK + 1) { // 7 entries for each day + 1 for the week numbers\n\t\t\t\tthis._weeks.push(week);\n\t\t\t\tweek = [];\n\t\t\t}\n\n\t\t\ttempDate.setDate(tempDate.getDate() + 1);\n\t\t\tif (this.hasSecondaryCalendarType && tempSecondDate) {\n\t\t\t\ttempSecondDate.setDate(tempSecondDate.getDate() + 1);\n\t\t\t}\n\t\t}\n\t}\n\n\t_calculateWeekNumber(date: Date): number {\n\t\tconst oDateFormat = DateFormat.getDateInstance({ pattern: \"w\", calendarType: this.primaryCalendarType, calendarWeekNumbering: this.calendarWeekNumbering });\n\t\tconst weekNumber = oDateFormat.format(date);\n\n\t\treturn Number(weekNumber);\n\t}\n\n\t/**\n\t * Builds the dayNames object (header of the month).\n\t * @param localeData\n\t * @private\n\t */\n\t_buildDayNames(localeData: LocaleData) {\n\t\tif (this._hidden) {\n\t\t\treturn; // Optimization to not do any work unless the current picker\n\t\t}\n\n\t\tlet dayOfTheWeek;\n\n\t\tconst aDayNamesWide = localeData.getDays(\"wide\", this._primaryCalendarType);\n\t\tlet aDayNamesAbbreviated = localeData.getDays(\"abbreviated\", this._primaryCalendarType);\n\t\tlet dayName;\n\n\t\tif (this.namesTooLong(aDayNamesAbbreviated)) {\n\t\t\taDayNamesAbbreviated = localeData.getDays(\"narrow\", this._primaryCalendarType);\n\t\t}\n\n\t\tthis._dayNames = [];\n\t\tthis._dayNames.push({\n\t\t\tclasses: \"ui5-dp-dayname\",\n\t\t\tname: DayPicker.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT),\n\t\t});\n\t\tfor (let i = 0; i < DAYS_IN_WEEK; i++) {\n\t\t\tdayOfTheWeek = i + this._getFirstDayOfWeek();\n\t\t\tif (dayOfTheWeek > DAYS_IN_WEEK - 1) { // 0-indexed so index of 6 is the maximum allowed\n\t\t\t\tdayOfTheWeek -= DAYS_IN_WEEK;\n\t\t\t}\n\t\t\tdayName = {\n\t\t\t\tname: aDayNamesWide[dayOfTheWeek],\n\t\t\t\tultraShortName: aDayNamesAbbreviated[dayOfTheWeek],\n\t\t\t\tclasses: \"ui5-dp-dayname\",\n\t\t\t};\n\t\t\tthis._dayNames.push(dayName);\n\t\t}\n\t\tthis._dayNames[1].classes += \" ui5-dp-firstday\";\n\t\tif (this.shouldHideWeekNumbers) {\n\t\t\tthis._dayNames.shift();\n\t\t}\n\t}\n\n\t/**\n\t * Tells if any of the days is more than 4 characters(too long to render).\n\t * @param dayNames\n\t * @private\n\t */\n\tnamesTooLong(dayNames: Array<string>): boolean {\n\t\treturn dayNames.some(dayName => dayName.length > 4);\n\t}\n\n\tonAfterRendering() {\n\t\tif (this._autoFocus && !this._hidden) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t_focusCorrectDay() {\n\t\tif (this._shouldFocusDay) {\n\t\t\tthis._focusableDay.focus();\n\t\t}\n\t}\n\n\tget _shouldFocusDay() {\n\t\treturn document.activeElement !== this._focusableDay && this._specialCalendarDates.length === 0;\n\t}\n\n\t_onfocusin() {\n\t\tthis._autoFocus = true;\n\t\tthis._focusCorrectDay();\n\t}\n\n\t_onfocusout() {\n\t\tthis._autoFocus = false;\n\t}\n\n\t/**\n\t * Tells if the day is selected (dark blue).\n\t * @param timestamp\n\t * @private\n\t */\n\t_isDaySelected(timestamp: number): boolean {\n\t\tif (this.selectionMode === CalendarSelectionMode.Single) {\n\t\t\treturn timestamp === this.selectedDates[0];\n\t\t}\n\n\t\tif (this.selectionMode === CalendarSelectionMode.Multiple) {\n\t\t\treturn this.selectedDates.includes(timestamp);\n\t\t}\n\n\t\treturn timestamp === this.selectedDates[0] || timestamp === this.selectedDates[this.selectedDates.length - 1];\n\t}\n\n\t_isRangeEndDate(timestamp: number): boolean {\n\t\treturn this.selectionMode === CalendarSelectionMode.Range && timestamp === this.selectedDates[1];\n\t}\n\n\t_isRangeStartDate(timestamp: number): boolean {\n\t\treturn this.selectionMode === CalendarSelectionMode.Range && timestamp === this.selectedDates[0];\n\t}\n\n\t/**\n\t * Tells if the day is inside a selection range (light blue).\n\t * @param timestamp\n\t * @private\n\t */\n\t_isDayInsideSelectionRange(timestamp: number): boolean {\n\t\t// No selection at all (or not in range selection mode)\n\t\tif (this.selectionMode !== CalendarSelectionMode.Range || !this.selectedDates.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Only one date selected - the user is hovering with the mouse or navigating with the keyboard to select the second one\n\t\tif (this.selectedDates.length === 1 && this._secondTimestamp) {\n\t\t\treturn isBetween(timestamp, this.selectedDates[0], this._secondTimestamp);\n\t\t}\n\n\t\t// Two dates selected - stable range\n\t\treturn isBetween(timestamp, this.selectedDates[0], this.selectedDates[this.selectedDates.length - 1]);\n\t}\n\n\t/**\n\t * Selects/deselects a day.\n\t * @param e\n\t * @param isShift true if the user did Click+Shift or Enter+Shift (but not Space+Shift)\n\t * @param setTimestamp whether to move focus (timestamp) to the selected day; false for mouse clicks where focus is independent\n\t * @private\n\t */\n\t_selectDate(e: Event, isShift: boolean, setTimestamp = true) {\n\t\tlet target = e.target as HTMLElement;\n\n\t\tif (!target.hasAttribute(\"data-sap-timestamp\")) {\n\t\t\ttarget = target.parentNode as HTMLElement;\n\t\t}\n\n\t\tif (!this._isDayPressed(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timestamp = setTimestamp ? this._getTimestampFromDom(target) : (this._mousedownTimestamp ?? this.timestamp!);\n\t\tthis._mousedownTimestamp = undefined;\n\n\t\tif (setTimestamp) {\n\t\t\tthis._safelySetTimestamp(timestamp);\n\t\t}\n\t\tthis._updateSecondTimestamp();\n\t\tthis._updateSelectedDates(timestamp, isShift);\n\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\ttimestamp: this.timestamp,\n\t\t\tdates: this.selectedDates,\n\t\t});\n\t}\n\n\t_updateSelectedDates(timestamp: number, isShift: boolean) {\n\t\tif (this.selectionMode === CalendarSelectionMode.Multiple) {\n\t\t\tif (this.selectedDates.length > 0 && isShift) {\n\t\t\t\tthis._multipleSelection(timestamp);\n\t\t\t} else {\n\t\t\t\tthis._toggleTimestampInSelection(timestamp);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tannounce(DayPicker.i18nBundle.getText(LIST_ITEM_SELECTED), InvisibleMessageMode.Assertive);\n\t\tif (this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {\n\t\t\tthis.selectedDates = [this.selectedDates[0], timestamp];\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectedDates = [timestamp];\n\t}\n\n\t/**\n\t * Selects/deselects the whole row (week).\n\t * @private\n\t */\n\t_selectWeek() {\n\t\tthis._weeks.forEach((week: Week) => {\n\t\t\tconst _week = week as Array<Day>;\n\t\t\tconst dayInThisWeek = _week.findIndex((item: Day) => {\n\t\t\t\tconst date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);\n\t\t\t\treturn date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();\n\t\t\t}) !== -1;\n\t\t\tif (dayInThisWeek) { // The current day is in this week\n\t\t\t\tconst notAllDaysOfThisWeekSelected = _week.some(item => item.timestamp && !this.selectedDates.includes(parseInt(item.timestamp)));\n\t\t\t\tif (notAllDaysOfThisWeekSelected) { // even if one day is not selected, select the whole week\n\t\t\t\t\t_week.filter(item => item.timestamp).forEach(item => {\n\t\t\t\t\t\tthis._addTimestampToSelection(parseInt(item.timestamp));\n\t\t\t\t\t});\n\t\t\t\t} else { // only if all days of this week are selected, deselect them\n\t\t\t\t\t_week.filter(item => item.timestamp).forEach(item => {\n\t\t\t\t\t\tthis._removeTimestampFromSelection(parseInt(item.timestamp));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.fireDecoratorEvent(\"change\", {\n\t\t\ttimestamp: this.timestamp,\n\t\t\tdates: this.selectedDates,\n\t\t});\n\t}\n\n\t_toggleTimestampInSelection(timestamp: number) {\n\t\tif (this.selectedDates.includes(timestamp)) {\n\t\t\tthis._removeTimestampFromSelection(timestamp);\n\t\t} else {\n\t\t\tthis._addTimestampToSelection(timestamp);\n\t\t\tannounce(DayPicker.i18nBundle.getText(LIST_ITEM_SELECTED), InvisibleMessageMode.Assertive);\n\t\t}\n\t}\n\n\t_addTimestampToSelection(timestamp: number) {\n\t\tif (!this.selectedDates.includes(timestamp)) {\n\t\t\tthis.selectedDates = [...this.selectedDates, timestamp];\n\t\t}\n\t}\n\n\t_removeTimestampFromSelection(timestamp: number) {\n\t\tthis.selectedDates = this.selectedDates.filter(value => value !== timestamp);\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tlet target = e.target as HTMLElement;\n\n\t\tif (!target.hasAttribute(\"data-sap-timestamp\")) {\n\t\t\ttarget = target.parentNode as HTMLElement;\n\t\t}\n\n\t\tif (!this._isDayPressed(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timestamp = this._getTimestampFromDom(target);\n\t\tconst clickedDate = CalendarDate.fromTimestamp(timestamp * 1000, this._primaryCalendarType);\n\t\tconst isOtherMonth = clickedDate.getMonth() !== this._calendarDate.getMonth();\n\n\t\tthis._mousedownTimestamp = timestamp;\n\t\tthis._safelySetTimestamp(timestamp);\n\n\t\tif (isOtherMonth) {\n\t\t\tthis._autoFocus = true;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp!, mouse: true });\n\t}\n\n\t/**\n\t * Called when at least one day is selected and the user presses \"Shift\".\n\t * @param timestamp\n\t * @private\n\t */\n\t_multipleSelection(timestamp: number) {\n\t\tconst min = Math.min(...this.selectedDates);\n\t\tconst max = Math.max(...this.selectedDates);\n\t\tlet start;\n\t\tlet end;\n\t\tlet toggle = false;\n\n\t\tif (timestamp < min) {\n\t\t\tstart = timestamp;\n\t\t\tend = min;\n\t\t} else if (timestamp >= min && timestamp <= max) { // inside the current range - toggle all between the selected and focused\n\t\t\tconst distanceToMin = Math.abs(timestamp - min);\n\t\t\tconst distanceToMax = Math.abs(timestamp - max);\n\n\t\t\tif (distanceToMin < distanceToMax) {\n\t\t\t\tstart = timestamp;\n\t\t\t\tend = max;\n\t\t\t} else {\n\t\t\t\tstart = min;\n\t\t\t\tend = timestamp;\n\t\t\t}\n\t\t\ttoggle = true;\n\t\t} else {\n\t\t\tstart = max;\n\t\t\tend = timestamp;\n\t\t}\n\n\t\tconst startDate = CalendarDate.fromTimestamp(start * 1000);\n\t\tconst endDate = CalendarDate.fromTimestamp(end * 1000);\n\n\t\twhile (startDate.valueOf() <= endDate.valueOf()) {\n\t\t\tthis[toggle ? \"_toggleTimestampInSelection\" : \"_addTimestampToSelection\"](startDate.valueOf() / 1000);\n\t\t\tstartDate.setDate(startDate.getDate() + 1);\n\t\t}\n\t}\n\n\t/**\n\t * Set the hovered day as the \"_secondTimestamp\".\n\t * @param e\n\t * @private\n\t */\n\t_onmouseover(e: MouseEvent) {\n\t\tconst target = e.target as HTMLElement;\n\t\tconst hoveredItem = target.closest(\".ui5-dp-item\") as HTMLElement;\n\t\tif (hoveredItem && this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {\n\t\t\tthis._secondTimestamp = this._getTimestampFromDom(hoveredItem);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\n\t\tif (isEnter(e) || isEnterShift(e)) {\n\t\t\tthis._selectDate(e, isEnterShift(e));\n\t\t} else if (isSpace(e) || isSpaceShift(e)) {\n\t\t\te.preventDefault();\n\t\t} else if (isLeft(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"day\", false);\n\t\t} else if (isRight(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"day\", false);\n\t\t} else if (isUp(e)) {\n\t\t\tthis._modifyTimestampBy(-7, \"day\", false);\n\t\t} else if (isDown(e)) {\n\t\t\tthis._modifyTimestampBy(7, \"day\", false);\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"month\");\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"month\");\n\t\t} else if (isPageUpShift(e) || isPageUpAlt(e)) {\n\t\t\tthis._modifyTimestampBy(-1, \"year\");\n\t\t} else if (isPageDownShift(e) || isPageDownAlt(e)) {\n\t\t\tthis._modifyTimestampBy(1, \"year\");\n\t\t} else if (isPageUpShiftCtrl(e)) {\n\t\t\tthis._modifyTimestampBy(-10, \"year\");\n\t\t} else if (isPageDownShiftCtrl(e)) {\n\t\t\tthis._modifyTimestampBy(10, \"year\");\n\t\t} else if (isHome(e) || isEnd(e)) {\n\t\t\tthis._onHomeOrEnd(isHome(e));\n\t\t} else if (isHomeCtrl(e)) {\n\t\t\tconst tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\t\ttempDate.setDate(1); // Set the first day of the month\n\t\t\tthis._setTimestamp(tempDate.valueOf() / 1000);\n\t\t} else if (isEndCtrl(e)) {\n\t\t\tconst tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\t\ttempDate.setMonth(tempDate.getMonth() + 1);\n\t\t\ttempDate.setDate(0); // Set the last day of the month (0th day of next month)\n\t\t\tthis._setTimestamp(tempDate.valueOf() / 1000);\n\t\t} else {\n\t\t\tpreventDefault = false;\n\t\t}\n\n\t\tif (preventDefault) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\t// Even if Space+Shift was pressed, ignore the shift unless in Multiple selection\n\t\tif (isSpace(e) || (isSpaceShift(e) && this.selectionMode !== CalendarSelectionMode.Multiple)) {\n\t\t\tthis._selectDate(e, false);\n\t\t} else if (isSpaceShift(e)) {\n\t\t\tthis._selectWeek();\n\t\t}\n\t}\n\n\t/**\n\t * Click is the same as \"Enter\".\n\t * **Note:** \"Click+Shift\" has the same effect as \"Enter+Shift\".\n\t * @param e\n\t * @private\n\t */\n\t_onclick(e: MouseEvent) {\n\t\tthis._selectDate(e, e.shiftKey, false);\n\t}\n\n\t/**\n\t * Called upon \"Home\" or \"End\" - moves the focus to the first or last item in the row.\n\t * @param homePressed\n\t * @private\n\t */\n\t_onHomeOrEnd(homePressed: boolean) {\n\t\tthis._weeks.forEach(week => {\n\t\t\tconst _week = week as Array<Day>;\n\t\t\tconst dayInThisWeek = _week.findIndex(item => {\n\t\t\t\tconst date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);\n\t\t\t\treturn date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();\n\t\t\t}) !== -1;\n\t\t\tif (dayInThisWeek) { // The current day is in this week\n\t\t\t\tconst index = homePressed ? 1 : 7; // select the first (if Home) or last (if End) day of the week\n\t\t\t\tthis._setTimestamp(parseInt(_week[index].timestamp));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_hasPreviousPage(): boolean {\n\t\treturn !(this._calendarDate.getMonth() === this._minDate.getMonth() && this._calendarDate.getYear() === this._minDate.getYear());\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_hasNextPage(): boolean {\n\t\treturn !(this._calendarDate.getMonth() === this._maxDate.getMonth() && this._calendarDate.getYear() === this._maxDate.getYear());\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_showPreviousPage() {\n\t\tthis._modifyTimestampBy(-1, \"month\", false);\n\t}\n\n\t/**\n\t * Called by the Calendar component.\n\t * @protected\n\t */\n\t_showNextPage() {\n\t\tthis._modifyTimestampBy(1, \"month\", false);\n\t}\n\n\t/**\n\t * Modifies the timestamp by a certain amount of days/months/years.\n\t * @param amount\n\t * @param unit\n\t * @param preserveDate whether to preserve the day of the month (f.e. 15th of March + 1 month = 15th of April)\n\t * @private\n\t */\n\t_modifyTimestampBy(amount: number, unit: string, preserveDate?: boolean) {\n\t\t// Modify the current timestamp\n\t\tthis._safelyModifyTimestampBy(amount, unit, preserveDate);\n\t\tthis._updateSecondTimestamp();\n\n\t\t// Notify the calendar to update its timestamp\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp! });\n\t}\n\n\t/**\n\t * Sets the timestamp to an absolute value.\n\t * @param value\n\t * @private\n\t */\n\t_setTimestamp(value: number) {\n\t\tthis._safelySetTimestamp(value);\n\t\tthis._updateSecondTimestamp();\n\t\tthis.fireDecoratorEvent(\"navigate\", { timestamp: this.timestamp! });\n\t}\n\n\t/**\n\t * During range selection, when the user is navigating with the keyboard,\n\t * the currently focused day is considered the \"second day\".\n\t * @private\n\t */\n\t_updateSecondTimestamp() {\n\t\tif (this.selectionMode === CalendarSelectionMode.Range && (this.selectedDates.length === 1 || this.selectedDates.length === 2)) {\n\t\t\tthis._secondTimestamp = this.timestamp;\n\t\t}\n\t}\n\n\tget _specialCalendarDates() {\n\t\treturn this.specialCalendarDates;\n\t}\n\n\tget shouldHideWeekNumbers() {\n\t\tif (this._primaryCalendarType !== CalendarType.Gregorian) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.hideWeekNumbers;\n\t}\n\n\t_isWeekend(oDate: CalendarDate): boolean {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\n\t\tconst iWeekDay = oDate.getDay(),\n\t\t\tiWeekendStart = localeData.getWeekendStart(),\n\t\t\tiWeekendEnd = localeData.getWeekendEnd();\n\n\t\treturn (iWeekDay >= iWeekendStart && iWeekDay <= iWeekendEnd)\n\t\t\t|| (iWeekendEnd < iWeekendStart && (iWeekDay >= iWeekendStart || iWeekDay <= iWeekendEnd));\n\t}\n\n\t/**\n\t * Pre-computes disabled date range timestamps once before the rendering loop.\n\t * Avoids repeated date string parsing inside the per-cell _isDateEnabled check.\n\t * @private\n\t */\n\t_precomputeDisabledDates(): Array<{ startTimestamp: number, endTimestamp: number }> {\n\t\treturn this.disabledDates.map(range => ({\n\t\t\tstartTimestamp: this._getTimestampFromDateValue(range.startValue),\n\t\t\tendTimestamp: this._getTimestampFromDateValue(range.endValue),\n\t\t}));\n\t}\n\n\t/**\n\t * Checks if a given date is enabled (selectable).\n\t * A date is considered disabled if:\n\t * - It falls outside the min/max date range defined by the component\n\t * - It matches a single disabled date\n\t * - It falls within a disabled date range (exclusive of start and end dates)\n\t * @param date - The date to check\n\t * @param minDate - Pre-resolved min calendar date\n\t * @param maxDate - Pre-resolved max calendar date\n\t * @param precomputedDisabledDates - Pre-parsed disabled date range timestamps\n\t * @returns `true` if the date is enabled (selectable), `false` if disabled\n\t * @private\n\t */\n\t_isDateEnabled(date: CalendarDate, minDate?: CalendarDate, maxDate?: CalendarDate, precomputedDisabledDates?: Array<{ startTimestamp: number, endTimestamp: number }>): boolean {\n\t\tconst resolvedMin = minDate ?? this._minDate;\n\t\tconst resolvedMax = maxDate ?? this._maxDate;\n\n\t\tif ((resolvedMin && date.isBefore(resolvedMin))\n\t\t\t|| (resolvedMax && date.isAfter(resolvedMax))) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst dateTimestamp = date.valueOf() / 1000;\n\t\tconst disabledRanges = precomputedDisabledDates ?? this.disabledDates.map(range => ({\n\t\t\tstartTimestamp: this._getTimestampFromDateValue(range.startValue),\n\t\t\tendTimestamp: this._getTimestampFromDateValue(range.endValue),\n\t\t}));\n\n\t\treturn !disabledRanges.some(({ startTimestamp, endTimestamp }) => {\n\t\t\tif (endTimestamp) {\n\t\t\t\treturn dateTimestamp > startTimestamp && dateTimestamp < endTimestamp;\n\t\t\t}\n\n\t\t\treturn startTimestamp && dateTimestamp === startTimestamp;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a date value string to a timestamp.\n\t * @param dateValue - Date string to convert\n\t * @returns timestamp in seconds, or 0 if invalid\n\t * @private\n\t */\n\t_getTimestampFromDateValue(dateValue?: string): number {\n\t\tif (!dateValue) {\n\t\t\treturn 0;\n\t\t}\n\n\t\ttry {\n\t\t\tconst jsDate = this.getValueFormat().parse(dateValue) as Date;\n\t\t\tconst calendarDate = CalendarDate.fromLocalJSDate(\n\t\t\t\tjsDate,\n\t\t\t\tthis._primaryCalendarType,\n\t\t\t);\n\t\t\treturn calendarDate.valueOf() / 1000;\n\t\t} catch {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t_isDayPressed(target: HTMLElement): boolean {\n\t\tconst targetParent = target.parentNode as HTMLElement;\n\t\treturn (target.className.indexOf(\"ui5-dp-item\") > -1) || (targetParent && targetParent.classList && targetParent.classList.contains(\"ui5-dp-item\"));\n\t}\n\n\t_isDefaultCalendarLegendType(type: string): boolean {\n\t\treturn [\"NonWorking\", \"Working\", \"Today\", \"Selected\", \"None\"].includes(type);\n\t}\n\n\t_getSecondaryDay(tempDate: CalendarDate): CalendarDate {\n\t\treturn new CalendarDate(tempDate, this.secondaryCalendarType);\n\t}\n\n\t_getFirstDay(): CalendarDate {\n\t\tlet daysFromPreviousMonth;\n\n\t\tconst firstDayOfWeek = this._getFirstDayOfWeek();\n\n\t\t// determine weekday of first day in month\n\t\tconst firstDay = new CalendarDate(this._calendarDate, this._primaryCalendarType);\n\t\tfirstDay.setDate(1);\n\n\t\tdaysFromPreviousMonth = firstDay.getDay() - firstDayOfWeek;\n\n\t\tif (daysFromPreviousMonth < 0) {\n\t\t\tdaysFromPreviousMonth = 7 + daysFromPreviousMonth;\n\t\t}\n\n\t\tif (daysFromPreviousMonth > 0) {\n\t\t\tfirstDay.setDate(1 - daysFromPreviousMonth);\n\t\t}\n\n\t\treturn firstDay;\n\t}\n\n\t_getFirstDayOfWeek(): number {\n\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\tlet firstDayOfWeek;\n\t\tconst configurationFirstDayOfWeek = getFirstDayOfWeek();\n\n\t\tif (configurationFirstDayOfWeek !== undefined) {\n\t\t\tfirstDayOfWeek = configurationFirstDayOfWeek;\n\t\t} else {\n\t\t\tfirstDayOfWeek = localeData.getFirstDayOfWeek();\n\t\t}\n\n\t\tconst result = CalendarUtils.getWeekConfigurationValues(this.calendarWeekNumbering);\n\n\t\tif (result?.firstDayOfWeek !== undefined && this.calendarWeekNumbering !== \"Default\") {\n\t\t\treturn result.firstDayOfWeek;\n\t\t}\n\n\t\treturn firstDayOfWeek;\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\twrapper: {\n\t\t\t\tdisplay: this._hidden ? \"none\" : \"flex\",\n\t\t\t\t\"justify-content\": \"center\",\n\t\t\t},\n\t\t\tmain: {\n\t\t\t\twidth: \"100%\",\n\t\t\t},\n\t\t};\n\t}\n\n\tget ariaRoledescription() {\n\t\treturn this.hasSecondaryCalendarType\n\t\t\t? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType as string} calendar`\n\t\t\t: `${this._primaryCalendarType} calendar`;\n\t}\n\n\tget _formatLong() {\n\t\treturn DateFormat.getDateInstance({ style: \"long\", calendarType: this._primaryCalendarType });\n\t}\n\n\tget _formatLongSecondary() {\n\t\treturn DateFormat.getDateInstance({ style: \"long\", calendarType: this._secondaryCalendarType });\n\t}\n}\n\nDayPicker.define();\n\nexport default DayPicker;\nexport type {\n\tDayPickerNavigateEventDetail,\n\tDayPickerChangeEventDetail,\n};\n"]}
@@ -126,6 +126,13 @@ declare class DynamicDateRange extends UI5Element {
126
126
  * @default false
127
127
  */
128
128
  open: boolean;
129
+ /**
130
+ * Receives id(or many ids) of the elements that label the component.
131
+ * @default undefined
132
+ * @public
133
+ * @since 2.25.0
134
+ */
135
+ accessibleNameRef?: string;
129
136
  _currentOption?: IDynamicDateRangeOption;
130
137
  _lastSelectedOption?: IDynamicDateRangeOption;
131
138
  currentValue?: DynamicDateRangeValue;
@@ -147,6 +154,10 @@ declare class DynamicDateRange extends UI5Element {
147
154
  * @private
148
155
  */
149
156
  get _iconMode(): IconMode.Decorative | IconMode.Interactive;
157
+ get _ariaLabelText(): string;
158
+ get _accInfo(): {
159
+ ariaLabel: string | undefined;
160
+ };
150
161
  get tooltipNavigationIcon(): string;
151
162
  get popoverAccessibleName(): string;
152
163
  _togglePicker(): void;
@@ -15,6 +15,7 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
15
15
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
16
16
  import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
17
17
  import { isF4, isShow } from "@ui5/webcomponents-base/dist/Keys.js";
18
+ import { getAssociatedLabelForTexts, getAllAccessibleNameRefTexts, } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
18
19
  import DynamicDateRangeTemplate from "./DynamicDateRangeTemplate.js";
19
20
  import IconMode from "./types/IconMode.js";
20
21
  import { DYNAMIC_DATE_RANGE_SELECTED_TEXT, DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT, DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP, DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME, } from "./generated/i18n/i18n-defaults.js";
@@ -158,6 +159,14 @@ let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5El
158
159
  get _iconMode() {
159
160
  return isDesktop() ? IconMode.Decorative : IconMode.Interactive;
160
161
  }
162
+ get _ariaLabelText() {
163
+ return getAllAccessibleNameRefTexts(this) || getAssociatedLabelForTexts(this) || "";
164
+ }
165
+ get _accInfo() {
166
+ return {
167
+ ariaLabel: this._ariaLabelText || undefined,
168
+ };
169
+ }
161
170
  get tooltipNavigationIcon() {
162
171
  return DynamicDateRange_1.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);
163
172
  }
@@ -349,6 +358,9 @@ __decorate([
349
358
  __decorate([
350
359
  property({ type: Boolean })
351
360
  ], DynamicDateRange.prototype, "open", void 0);
361
+ __decorate([
362
+ property()
363
+ ], DynamicDateRange.prototype, "accessibleNameRef", void 0);
352
364
  __decorate([
353
365
  property({ type: Object })
354
366
  ], DynamicDateRange.prototype, "_currentOption", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n\tDYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n\t/**\n\t * Values of the dynamic date range.\n\t * @default []\n\t * @public\n\t */\n\tvalues?: Array<Date> | Array<number>;\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Array<Date>`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.11.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Array<Date>;\n\thandleSelectionChange?: (event: CustomEvent, value: DynamicDateRangeValue | undefined) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n\tresetState?: () => void;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n * - \"DATETIMERANGE\" - Represents a range of dates with times. An example value is `{ operator: \"DATETIMERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateTimeRange.js\";`\n * - \"FROMDATETIME\" - Represents a range from date and time. An example value is `{ operator: \"FROMDATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/FromDateTime.js\";`\n * - \"TODATETIME\" - Represents a range to date and time. An example value is `{ operator: \"TODATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/ToDateTime.js\";`\n * - \"LASTDAYS\" - Represents Last X Days from today. An example value is `{ operator: \"LASTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTWEEKS\" - Represents Last X Weeks from today. An example value is `{ operator: \"LASTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTMONTHS\" - Represents Last X Months from today. An example value is `{ operator: \"LASTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTQUARTERS\" - Represents Last X Quarters from today. An example value is `{ operator: \"LASTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTYEARS\" - Represents Last X Years from today. An example value is `{ operator: \"LASTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"NEXTDAYS\" - Represents Next X Days from today. An example value is `{ operator: \"NEXTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTWEEKS\" - Represents Next X Weeks from today. An example value is `{ operator: \"NEXTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTMONTHS\" - Represents Next X Months from today. An example value is `{ operator: \"NEXTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTQUARTERS\" - Represents Next X Quarters from today. An example value is `{ operator: \"NEXTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTYEARS\" - Represents Next X Years from today. An example value is `{ operator: \"NEXTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.11.0\n */\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\tcldr: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: void,\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@property({ type: Object })\n\t_currentOption?: IDynamicDateRangeOption;\n\n\t_lastSelectedOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n\tcurrentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: Array<IDynamicDateRangeOption> = [];\n\n\tstatic optionsClasses: Map<string, new (operators?: Array<string>) => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tthis.optionsObjects = this._createNormalizedOptions();\n\t\tthis._focusSelectedItem();\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished().then(() => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._focusLastSelectedItem();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\t/**\n\t * Creates and normalizes options from the options string\n\t */\n\t_createNormalizedOptions(): Array<IDynamicDateRangeOption> {\n\t\tif (!this.optionsObjects.length) { // initialize options on first use\n\t\t\tconst optionKeys = this.splitOptions(this.options).filter(Boolean);\n\t\t\tconst createdOptions: Array<IDynamicDateRangeOption> = [];\n\t\t\tconst classToOperators = new Map<new(operators?: Array<string>) => IDynamicDateRangeOption, Array<string>>();\n\n\t\t\t// Group operators by their class\n\t\t\toptionKeys.forEach(option => {\n\t\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\t\tif (OptionClass) {\n\t\t\t\t\tconst operators = classToOperators.get(OptionClass) || [];\n\t\t\t\t\toperators.push(option);\n\t\t\t\t\tclassToOperators.set(OptionClass, operators);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tclassToOperators.forEach((operators, OptionClass) => {\n\t\t\t\tcreatedOptions.push(new OptionClass(operators));\n\t\t\t});\n\n\t\t\treturn createdOptions;\n\t\t}\n\t\treturn this.optionsObjects;\n\t}\n\n\tsplitOptions(options: string): Array<string> {\n\t\treturn options.split(\",\").map(s => s.trim());\n\t}\n\n\t_focusSelectedItem() {\n\t\tif (!this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listItem = this._list?.items.find(item => (item as ListItem).selected === true);\n\t\tif (listItem) {\n\t\t\tthis._list?.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t_focusLastSelectedItem() {\n\t\tif (!this._lastSelectedOption) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the list exists and has items\n\t\tif (!this._list || !this._list.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the index of the last selected option in the options array\n\t\tconst optionIndex = this.optionsObjects.findIndex(option => option.operator === this._lastSelectedOption?.operator);\n\n\t\tif (optionIndex >= 0 && optionIndex < this._list.items.length) {\n\t\t\tconst listItem = this._list.items[optionIndex];\n\t\t\tthis._list.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\tget popoverAccessibleName() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tthis._lastSelectedOption = this._currentOption;\n\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t} else if (!this.currentValue || this.currentValue.operator !== this._currentOption.operator) {\n\t\t\tthis.currentValue = undefined;\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator?: string) {\n\t\tif (!operator) {\n\t\t\treturn this._currentOption;\n\t\t}\n\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst existingOption = this.optionsObjects.find(option => option.constructor === OptionClass);\n\n\t\t\t\tif (existingOption) {\n\t\t\t\t\texistingOption.operator = operator;\n\t\t\t\t\treturn existingOption;\n\t\t\t\t}\n\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @public\n\t * @param value The option to convert into an array of date ranges\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Array<Date> {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Array<Date>;\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst valueToSubmit = this.currentValue || { operator: this._currentOption?.operator || \"\", values: [] };\n\t\tconst displayString = this._currentOption?.format(valueToSubmit) || \"\";\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = displayString;\n\t\t}\n\n\t\tif (!this._currentOption || !valueToSubmit.operator) {\n\t\t\tthis.value = undefined;\n\t\t} else if (this._currentOption.isValidString(displayString)) {\n\t\t\tthis.value = valueToSubmit;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverBeforeOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue) {\n\t\t\tconst correctOption = this.getOption(this.currentValue.operator);\n\t\t\tif (correctOption) {\n\t\t\t\tconst dates = correctOption.toDates(this.currentValue);\n\t\t\t\tconst displayValue = { ...this.currentValue, values: dates };\n\t\t\t\tconst displayText = correctOption.format(displayValue);\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this._currentOption) {\n\t\t\tconst emptyValue = { operator: this._currentOption.operator, values: [] };\n\t\t\tconst displayText = this._currentOption.format(emptyValue);\n\t\t\tif (displayText && displayText.trim()) {\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tconst value = this._currentOption?.handleSelectionChange?.(e, this.currentValue) as DynamicDateRangeValue;\n\n\t\tthis.currentValue = JSON.parse(JSON.stringify(value)); // deep clone\n\t\tif (this.currentValue) {\n\t\t\tthis.currentValue.values = value?.values;\n\t\t}\n\n\t\t// Update _currentOption if the operator changed\n\t\tif (this.currentValue && this.currentValue.operator !== this._currentOption?.operator) {\n\t\t\tthis._currentOption = this.getOption(this.currentValue.operator);\n\t\t}\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n};\n"]}
1
+ {"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetAssociatedLabelForTexts,\n\tgetAllAccessibleNameRefTexts,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n\tDYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n\t/**\n\t * Values of the dynamic date range.\n\t * @default []\n\t * @public\n\t */\n\tvalues?: Array<Date> | Array<number>;\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Array<Date>`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.11.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Array<Date>;\n\thandleSelectionChange?: (event: CustomEvent, value: DynamicDateRangeValue | undefined) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n\tresetState?: () => void;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n * - \"DATETIMERANGE\" - Represents a range of dates with times. An example value is `{ operator: \"DATETIMERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateTimeRange.js\";`\n * - \"FROMDATETIME\" - Represents a range from date and time. An example value is `{ operator: \"FROMDATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/FromDateTime.js\";`\n * - \"TODATETIME\" - Represents a range to date and time. An example value is `{ operator: \"TODATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/ToDateTime.js\";`\n * - \"LASTDAYS\" - Represents Last X Days from today. An example value is `{ operator: \"LASTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTWEEKS\" - Represents Last X Weeks from today. An example value is `{ operator: \"LASTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTMONTHS\" - Represents Last X Months from today. An example value is `{ operator: \"LASTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTQUARTERS\" - Represents Last X Quarters from today. An example value is `{ operator: \"LASTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTYEARS\" - Represents Last X Years from today. An example value is `{ operator: \"LASTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"NEXTDAYS\" - Represents Next X Days from today. An example value is `{ operator: \"NEXTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTWEEKS\" - Represents Next X Weeks from today. An example value is `{ operator: \"NEXTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTMONTHS\" - Represents Next X Months from today. An example value is `{ operator: \"NEXTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTQUARTERS\" - Represents Next X Quarters from today. An example value is `{ operator: \"NEXTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTYEARS\" - Represents Next X Years from today. An example value is `{ operator: \"NEXTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.11.0\n */\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\tcldr: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: void,\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.25.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ type: Object })\n\t_currentOption?: IDynamicDateRangeOption;\n\n\t_lastSelectedOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n\tcurrentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: Array<IDynamicDateRangeOption> = [];\n\n\tstatic optionsClasses: Map<string, new (operators?: Array<string>) => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tthis.optionsObjects = this._createNormalizedOptions();\n\t\tthis._focusSelectedItem();\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished().then(() => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._focusLastSelectedItem();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\t/**\n\t * Creates and normalizes options from the options string\n\t */\n\t_createNormalizedOptions(): Array<IDynamicDateRangeOption> {\n\t\tif (!this.optionsObjects.length) { // initialize options on first use\n\t\t\tconst optionKeys = this.splitOptions(this.options).filter(Boolean);\n\t\t\tconst createdOptions: Array<IDynamicDateRangeOption> = [];\n\t\t\tconst classToOperators = new Map<new(operators?: Array<string>) => IDynamicDateRangeOption, Array<string>>();\n\n\t\t\t// Group operators by their class\n\t\t\toptionKeys.forEach(option => {\n\t\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\t\tif (OptionClass) {\n\t\t\t\t\tconst operators = classToOperators.get(OptionClass) || [];\n\t\t\t\t\toperators.push(option);\n\t\t\t\t\tclassToOperators.set(OptionClass, operators);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tclassToOperators.forEach((operators, OptionClass) => {\n\t\t\t\tcreatedOptions.push(new OptionClass(operators));\n\t\t\t});\n\n\t\t\treturn createdOptions;\n\t\t}\n\t\treturn this.optionsObjects;\n\t}\n\n\tsplitOptions(options: string): Array<string> {\n\t\treturn options.split(\",\").map(s => s.trim());\n\t}\n\n\t_focusSelectedItem() {\n\t\tif (!this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listItem = this._list?.items.find(item => (item as ListItem).selected === true);\n\t\tif (listItem) {\n\t\t\tthis._list?.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t_focusLastSelectedItem() {\n\t\tif (!this._lastSelectedOption) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the list exists and has items\n\t\tif (!this._list || !this._list.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the index of the last selected option in the options array\n\t\tconst optionIndex = this.optionsObjects.findIndex(option => option.operator === this._lastSelectedOption?.operator);\n\n\t\tif (optionIndex >= 0 && optionIndex < this._list.items.length) {\n\t\t\tconst listItem = this._list.items[optionIndex];\n\t\t\tthis._list.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget _ariaLabelText() {\n\t\treturn getAllAccessibleNameRefTexts(this) || getAssociatedLabelForTexts(this) || \"\";\n\t}\n\n\tget _accInfo() {\n\t\treturn {\n\t\t\tariaLabel: this._ariaLabelText || undefined,\n\t\t};\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\tget popoverAccessibleName() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tthis._lastSelectedOption = this._currentOption;\n\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t} else if (!this.currentValue || this.currentValue.operator !== this._currentOption.operator) {\n\t\t\tthis.currentValue = undefined;\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator?: string) {\n\t\tif (!operator) {\n\t\t\treturn this._currentOption;\n\t\t}\n\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst existingOption = this.optionsObjects.find(option => option.constructor === OptionClass);\n\n\t\t\t\tif (existingOption) {\n\t\t\t\t\texistingOption.operator = operator;\n\t\t\t\t\treturn existingOption;\n\t\t\t\t}\n\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @public\n\t * @param value The option to convert into an array of date ranges\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Array<Date> {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Array<Date>;\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst valueToSubmit = this.currentValue || { operator: this._currentOption?.operator || \"\", values: [] };\n\t\tconst displayString = this._currentOption?.format(valueToSubmit) || \"\";\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = displayString;\n\t\t}\n\n\t\tif (!this._currentOption || !valueToSubmit.operator) {\n\t\t\tthis.value = undefined;\n\t\t} else if (this._currentOption.isValidString(displayString)) {\n\t\t\tthis.value = valueToSubmit;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverBeforeOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue) {\n\t\t\tconst correctOption = this.getOption(this.currentValue.operator);\n\t\t\tif (correctOption) {\n\t\t\t\tconst dates = correctOption.toDates(this.currentValue);\n\t\t\t\tconst displayValue = { ...this.currentValue, values: dates };\n\t\t\t\tconst displayText = correctOption.format(displayValue);\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this._currentOption) {\n\t\t\tconst emptyValue = { operator: this._currentOption.operator, values: [] };\n\t\t\tconst displayText = this._currentOption.format(emptyValue);\n\t\t\tif (displayText && displayText.trim()) {\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tconst value = this._currentOption?.handleSelectionChange?.(e, this.currentValue) as DynamicDateRangeValue;\n\n\t\tthis.currentValue = JSON.parse(JSON.stringify(value)); // deep clone\n\t\tif (this.currentValue) {\n\t\t\tthis.currentValue.values = value?.values;\n\t\t}\n\n\t\t// Update _currentOption if the operator changed\n\t\tif (this.currentValue && this.currentValue.operator !== this._currentOption?.operator) {\n\t\t\tthis._currentOption = this.getOption(this.currentValue.operator);\n\t\t}\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n};\n"]}
@@ -3,7 +3,7 @@ import Icon from "./Icon.js";
3
3
  import Input from "./Input.js";
4
4
  import appointment from "@ui5/webcomponents-icons/dist/appointment-2.js";
5
5
  export default function DynamicDateRangeInputTemplate() {
6
- return (_jsx("div", { class: "ui5-dynamic-date-range-root", children: _jsx(Input, { "data-sap-focus-ref": true, id: `${this._id}-inner`, class: "ui5-dynamic-date-range-input", value: this.value && this.getOption(this.value?.operator)?.format(this.value), onChange: this.onInputChange, onKeyDown: this.onInputKeyDown, children: _jsx(Icon, { id: `${this._id}-value-help`, slot: "icon", name: appointment, tabindex: -1, mode: this._iconMode, onClick: this._togglePicker, class: {
6
+ return (_jsx("div", { class: "ui5-dynamic-date-range-root", children: _jsx(Input, { "data-sap-focus-ref": true, id: `${this._id}-inner`, class: "ui5-dynamic-date-range-input", value: this.value && this.getOption(this.value?.operator)?.format(this.value), _inputAccInfo: this._accInfo, onChange: this.onInputChange, onKeyDown: this.onInputKeyDown, children: _jsx(Icon, { id: `${this._id}-value-help`, slot: "icon", name: appointment, tabindex: -1, mode: this._iconMode, onClick: this._togglePicker, class: {
7
7
  "inputIcon": true,
8
8
  "inputIcon--pressed": this.open,
9
9
  } }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDateRangeInputTemplate.js","sourceRoot":"","sources":["../src/DynamicDateRangeInputTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,WAAW,MAAM,gDAAgD,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,6BAA6B;IACpD,OAAO,CACN,cAAK,KAAK,EAAC,6BAA6B,YACvC,KAAC,KAAK,gCAEL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7E,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,SAAS,EAAE,IAAI,CAAC,cAAc,YAE9B,KAAC,IAAI,IACJ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,EAC5B,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE;oBACN,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,IAAI,CAAC,IAAI;iBAC/B,GACA,GAEK,GACH,CACN,CAAC;AACH,CAAC","sourcesContent":["import type DynamicDateRange from \"./DynamicDateRange.js\";\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport appointment from \"@ui5/webcomponents-icons/dist/appointment-2.js\";\n\nexport default function DynamicDateRangeInputTemplate(this: DynamicDateRange) {\n\treturn (\n\t\t<div class=\"ui5-dynamic-date-range-root\">\n\t\t\t<Input\n\t\t\t\tdata-sap-focus-ref\n\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\tclass=\"ui5-dynamic-date-range-input\"\n\t\t\t\tvalue={this.value && this.getOption(this.value?.operator)?.format(this.value)}\n\t\t\t\tonChange={this.onInputChange}\n\t\t\t\tonKeyDown={this.onInputKeyDown}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid={`${this._id}-value-help`}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\tname={appointment}\n\t\t\t\t\ttabindex={-1}\n\t\t\t\t\tmode={this._iconMode}\n\t\t\t\t\tonClick={this._togglePicker}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this.open,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t</Input>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"file":"DynamicDateRangeInputTemplate.js","sourceRoot":"","sources":["../src/DynamicDateRangeInputTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,WAAW,MAAM,gDAAgD,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,6BAA6B;IACpD,OAAO,CACN,cAAK,KAAK,EAAC,6BAA6B,YACvC,KAAC,KAAK,gCAEL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7E,aAAa,EAAE,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,SAAS,EAAE,IAAI,CAAC,cAAc,YAE9B,KAAC,IAAI,IACJ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,EAC5B,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE;oBACN,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,IAAI,CAAC,IAAI;iBAC/B,GACA,GAEK,GACH,CACN,CAAC;AACH,CAAC","sourcesContent":["import type DynamicDateRange from \"./DynamicDateRange.js\";\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport appointment from \"@ui5/webcomponents-icons/dist/appointment-2.js\";\n\nexport default function DynamicDateRangeInputTemplate(this: DynamicDateRange) {\n\treturn (\n\t\t<div class=\"ui5-dynamic-date-range-root\">\n\t\t\t<Input\n\t\t\t\tdata-sap-focus-ref\n\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\tclass=\"ui5-dynamic-date-range-input\"\n\t\t\t\tvalue={this.value && this.getOption(this.value?.operator)?.format(this.value)}\n\t\t\t\t_inputAccInfo={this._accInfo}\n\t\t\t\tonChange={this.onInputChange}\n\t\t\t\tonKeyDown={this.onInputKeyDown}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid={`${this._id}-value-help`}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\tname={appointment}\n\t\t\t\t\ttabindex={-1}\n\t\t\t\t\tmode={this._iconMode}\n\t\t\t\t\tonClick={this._togglePicker}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this.open,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t</Input>\n\t\t</div>\n\t);\n}\n"]}
@@ -353,8 +353,7 @@ let FileUploader = FileUploader_1 = class FileUploader extends UI5Element {
353
353
  get accInfo() {
354
354
  return {
355
355
  "ariaRoledescription": FileUploader_1.i18nBundle.getText(FILEUPLOADER_ROLE_DESCRIPTION),
356
- "ariaRequired": this.required || undefined,
357
- "ariaInvalid": this.valueState === ValueState.Negative || undefined,
356
+ "ariaInvalid": this.valueState === ValueState.Negative,
358
357
  "ariaHasPopup": "dialog",
359
358
  "ariaLabel": getAllAccessibleNameRefTexts(this) || getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined,
360
359
  "ariaDescription": getAllAccessibleDescriptionRefTexts(this) || getEffectiveAriaDescriptionText(this) || undefined,