@sapudex/web-components 0.173.0 → 0.184.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 (235) hide show
  1. package/bundle.esm.js +1 -1
  2. package/dist/Accordion.js +2 -1
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/AccordionItem.d.ts +0 -1
  5. package/dist/AccordionItem.js +2 -2
  6. package/dist/AccordionItem.js.map +1 -1
  7. package/dist/Badge.js +2 -1
  8. package/dist/Badge.js.map +1 -1
  9. package/dist/Breadcrumbs.d.ts +7 -7
  10. package/dist/Breadcrumbs.js +3 -3
  11. package/dist/Breadcrumbs.js.map +1 -1
  12. package/dist/CountrySelector.js +5 -5
  13. package/dist/CountrySelector.js.map +1 -1
  14. package/dist/DatePicker.d.ts +53 -26
  15. package/dist/DatePicker.js +205 -39
  16. package/dist/DatePicker.js.map +1 -1
  17. package/dist/FilterMenu.d.ts +4 -6
  18. package/dist/FilterMenu.js +10 -10
  19. package/dist/FilterMenu.js.map +1 -1
  20. package/dist/Footer.js +6 -2
  21. package/dist/Footer.js.map +1 -1
  22. package/dist/HeroBanner.d.ts +0 -1
  23. package/dist/HeroBanner.js +2 -1
  24. package/dist/HeroBanner.js.map +1 -1
  25. package/dist/Link.js +2 -0
  26. package/dist/Link.js.map +1 -1
  27. package/dist/ListSelectAll.js +2 -0
  28. package/dist/ListSelectAll.js.map +1 -1
  29. package/dist/MastheadItem.js +2 -2
  30. package/dist/MastheadItem.js.map +1 -1
  31. package/dist/MastheadMenu.js +1 -1
  32. package/dist/MastheadMenu.js.map +1 -1
  33. package/dist/MastheadMobileMenu.js +1 -1
  34. package/dist/MastheadMobileMenu.js.map +1 -1
  35. package/dist/MastheadShell.d.ts +1 -0
  36. package/dist/MastheadShell.js +20 -1
  37. package/dist/MastheadShell.js.map +1 -1
  38. package/dist/MediaPlayer.js +2 -2
  39. package/dist/MediaPlayer.js.map +1 -1
  40. package/dist/MessageStrip.js +2 -1
  41. package/dist/MessageStrip.js.map +1 -1
  42. package/dist/RadioButton.js +0 -1
  43. package/dist/RadioButton.js.map +1 -1
  44. package/dist/Search.d.ts +15 -1
  45. package/dist/Search.js +62 -16
  46. package/dist/Search.js.map +1 -1
  47. package/dist/SearchableListBase.js +3 -3
  48. package/dist/SearchableListBase.js.map +1 -1
  49. package/dist/SecondaryNavigation.js +1 -1
  50. package/dist/SecondaryNavigation.js.map +1 -1
  51. package/dist/SecondaryNavigationItem.js +1 -1
  52. package/dist/SecondaryNavigationItem.js.map +1 -1
  53. package/dist/SelectBox.d.ts +3 -3
  54. package/dist/SelectBox.js +6 -6
  55. package/dist/SelectBox.js.map +1 -1
  56. package/dist/SideNavigationMobile.js +1 -1
  57. package/dist/SideNavigationMobile.js.map +1 -1
  58. package/dist/StepInput.js +1 -1
  59. package/dist/StepInput.js.map +1 -1
  60. package/dist/TabNavigation.d.ts +4 -5
  61. package/dist/TabNavigation.js +16 -14
  62. package/dist/TabNavigation.js.map +1 -1
  63. package/dist/Table.js +2 -2
  64. package/dist/Table.js.map +1 -1
  65. package/dist/assets/{css_variables-a92ef9ad.css → bundle-c5e3cbf2.css} +1 -1
  66. package/dist/assets/{bundle.esm-c4ffd46a.js → bundle.esm-d98e72b5.js} +184 -184
  67. package/dist/assets/parameters-bundle.css-beef06a9.js +2 -0
  68. package/dist/css/themes/AccordionItem.css +1 -1
  69. package/dist/css/themes/Button.css +1 -1
  70. package/dist/css/themes/CountrySelector.css +1 -1
  71. package/dist/css/themes/ListItem.css +1 -1
  72. package/dist/css/themes/MastheadMenu.css +1 -1
  73. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  74. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  75. package/dist/css/themes/MessageStrip.css +1 -1
  76. package/dist/css/themes/Pagination.css +1 -1
  77. package/dist/css/themes/PhoneNumberField.css +1 -1
  78. package/dist/css/themes/RatingIndicator.css +1 -1
  79. package/dist/css/themes/Review.css +1 -1
  80. package/dist/css/themes/ReviewItem.css +1 -1
  81. package/dist/css/themes/Search.css +1 -1
  82. package/dist/css/themes/SearchSuggestions.css +1 -1
  83. package/dist/css/themes/SegmentedButton.css +1 -1
  84. package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
  85. package/dist/css/themes/Slider.css +1 -1
  86. package/dist/css/themes/StepInput.css +1 -1
  87. package/dist/css/themes/TabNavigation.css +1 -1
  88. package/dist/css/themes/Table.css +1 -1
  89. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
  90. package/dist/custom-elements-internal.json +67 -49
  91. package/dist/custom-elements.json +62 -46
  92. package/dist/features/SearchSuggestionsPopover.d.ts +1 -1
  93. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
  94. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  95. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  96. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  97. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
  98. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  99. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  100. package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
  101. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  102. package/dist/generated/templates/SearchTemplate.lit.js +2 -2
  103. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  104. package/dist/generated/templates/TabHeaderTemplate.lit.js +2 -2
  105. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
  106. package/dist/generated/themes/AccordionItem.css.js +1 -1
  107. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  108. package/dist/generated/themes/Button.css.js +1 -1
  109. package/dist/generated/themes/Button.css.js.map +1 -1
  110. package/dist/generated/themes/CountrySelector.css.js +1 -1
  111. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  112. package/dist/generated/themes/ListItem.css.js +1 -1
  113. package/dist/generated/themes/ListItem.css.js.map +1 -1
  114. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  115. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  116. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  117. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  118. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  119. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  120. package/dist/generated/themes/MessageStrip.css.js +1 -1
  121. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  122. package/dist/generated/themes/Pagination.css.js +1 -1
  123. package/dist/generated/themes/Pagination.css.js.map +1 -1
  124. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  125. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  126. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  127. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  128. package/dist/generated/themes/Review.css.js +1 -1
  129. package/dist/generated/themes/Review.css.js.map +1 -1
  130. package/dist/generated/themes/ReviewItem.css.js +1 -1
  131. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  132. package/dist/generated/themes/Search.css.js +1 -1
  133. package/dist/generated/themes/Search.css.js.map +1 -1
  134. package/dist/generated/themes/SearchSuggestions.css.js +1 -1
  135. package/dist/generated/themes/SearchSuggestions.css.js.map +1 -1
  136. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  137. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  138. package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
  139. package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
  140. package/dist/generated/themes/Slider.css.js +1 -1
  141. package/dist/generated/themes/Slider.css.js.map +1 -1
  142. package/dist/generated/themes/StepInput.css.js +1 -1
  143. package/dist/generated/themes/StepInput.css.js.map +1 -1
  144. package/dist/generated/themes/TabNavigation.css.js +1 -1
  145. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  146. package/dist/generated/themes/Table.css.js +1 -1
  147. package/dist/generated/themes/Table.css.js.map +1 -1
  148. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
  149. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
  150. package/dist/vscode.html-custom-data.json +2 -12
  151. package/dist/web-types.json +19 -23
  152. package/package.json +8 -8
  153. package/src/Accordion.ts +2 -1
  154. package/src/AccordionItem.ts +2 -2
  155. package/src/Badge.ts +2 -1
  156. package/src/Breadcrumbs.hbs +3 -3
  157. package/src/Breadcrumbs.ts +14 -14
  158. package/src/BreadcrumbsPopover.hbs +1 -1
  159. package/src/CountrySelector.ts +5 -5
  160. package/src/DatePicker.hbs +4 -5
  161. package/src/DatePicker.ts +257 -64
  162. package/src/DatePickerPopover.hbs +2 -2
  163. package/src/FilterMenu.hbs +2 -1
  164. package/src/FilterMenu.ts +13 -14
  165. package/src/Footer.ts +6 -2
  166. package/src/HeroBanner.ts +2 -1
  167. package/src/Link.ts +2 -0
  168. package/src/ListSelectAll.ts +2 -0
  169. package/src/MastheadItem.ts +2 -2
  170. package/src/MastheadMenu.ts +1 -1
  171. package/src/MastheadMobileMenu.ts +1 -1
  172. package/src/MastheadShell.ts +24 -1
  173. package/src/MediaPlayer.ts +2 -2
  174. package/src/MessageStrip.ts +2 -1
  175. package/src/RadioButton.ts +0 -1
  176. package/src/Search.hbs +3 -3
  177. package/src/Search.ts +82 -21
  178. package/src/SearchableListBase.ts +3 -3
  179. package/src/SecondaryNavigation.ts +1 -1
  180. package/src/SecondaryNavigationItem.ts +1 -1
  181. package/src/SelectBox.ts +9 -9
  182. package/src/SideNavigationMobile.ts +1 -1
  183. package/src/StepInput.ts +1 -1
  184. package/src/TabHeader.hbs +2 -2
  185. package/src/TabNavigation.ts +19 -18
  186. package/src/Table.ts +2 -2
  187. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
  188. package/src/generated/templates/DatePickerPopoverTemplate.lit.ts +1 -1
  189. package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
  190. package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
  191. package/src/generated/templates/SearchTemplate.lit.ts +2 -2
  192. package/src/generated/templates/TabHeaderTemplate.lit.ts +2 -2
  193. package/src/generated/themes/AccordionItem.css.ts +1 -1
  194. package/src/generated/themes/Button.css.ts +1 -1
  195. package/src/generated/themes/CountrySelector.css.ts +1 -1
  196. package/src/generated/themes/ListItem.css.ts +1 -1
  197. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  198. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  199. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  200. package/src/generated/themes/MessageStrip.css.ts +1 -1
  201. package/src/generated/themes/Pagination.css.ts +1 -1
  202. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  203. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  204. package/src/generated/themes/Review.css.ts +1 -1
  205. package/src/generated/themes/ReviewItem.css.ts +1 -1
  206. package/src/generated/themes/Search.css.ts +1 -1
  207. package/src/generated/themes/SearchSuggestions.css.ts +1 -1
  208. package/src/generated/themes/SegmentedButton.css.ts +1 -1
  209. package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
  210. package/src/generated/themes/Slider.css.ts +1 -1
  211. package/src/generated/themes/StepInput.css.ts +1 -1
  212. package/src/generated/themes/TabNavigation.css.ts +1 -1
  213. package/src/generated/themes/Table.css.ts +1 -1
  214. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
  215. package/src/themes/AccordionItem.css +2 -2
  216. package/src/themes/Button.css +5 -5
  217. package/src/themes/CountrySelector.css +14 -14
  218. package/src/themes/ListItem.css +1 -1
  219. package/src/themes/MastheadMenu.css +2 -2
  220. package/src/themes/MastheadMobileMenu.css +2 -2
  221. package/src/themes/MastheadProfileMenu.css +2 -2
  222. package/src/themes/MessageStrip.css +6 -6
  223. package/src/themes/Pagination.css +2 -1
  224. package/src/themes/PhoneNumberField.css +2 -2
  225. package/src/themes/Review.css +1 -1
  226. package/src/themes/ReviewItem.css +1 -1
  227. package/src/themes/Search.css +34 -4
  228. package/src/themes/SearchSuggestions.css +16 -0
  229. package/src/themes/SegmentedButton.css +1 -1
  230. package/src/themes/SelectBox.css +1 -1
  231. package/src/themes/SideNavigationMobileDropdown.css +1 -1
  232. package/src/themes/StepInput.css +5 -5
  233. package/src/themes/TabNavigation.css +17 -12
  234. package/src/themes/Table.css +5 -5
  235. package/dist/assets/parameters-bundle.css-07457fce.js +0 -2
@@ -1,5 +1,5 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
- import Calendar, { CalendarSelectedDatesChangeEventDetail } from "@ui5/webcomponents/dist/Calendar.js";
1
+ import DateComponentBase from "@ui5/webcomponents/dist/DateComponentBase.js";
2
+ import { CalendarSelectedDatesChangeEventDetail } from "@ui5/webcomponents/dist/Calendar.js";
3
3
  import "@ui5/webcomponents/dist/Icon.js";
4
4
  import "@ui5/webcomponents-icons/dist/appointment-2.js";
5
5
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -11,7 +11,7 @@ export declare enum UDExDatePickerSelectionMode {
11
11
  }
12
12
  export type DatePickerSelectionChangeEventDetail = {
13
13
  selectedValues: Array<string>;
14
- selectedDates: Array<number>;
14
+ selectedDates: Array<number | undefined>;
15
15
  timestamp: number | undefined;
16
16
  };
17
17
  /**
@@ -29,11 +29,11 @@ export type DatePickerSelectionChangeEventDetail = {
29
29
  *
30
30
  * @constructor
31
31
  * @author SAP SE
32
- * @extends UI5Element
32
+ * @extends DateComponentBase
33
33
  * @tagname udex-date-picker
34
34
  * @public
35
35
  */
36
- declare class UDExDatePicker extends UI5Element {
36
+ declare class UDExDatePicker extends DateComponentBase {
37
37
  /**
38
38
  * Defines selection mode of the calendar component.
39
39
  *
@@ -101,24 +101,6 @@ declare class UDExDatePicker extends UI5Element {
101
101
  * @public
102
102
  */
103
103
  label: string;
104
- /**
105
- * Determines the minimum date available for selection.
106
- * <br/><br/>
107
- * <b>Note:</b> The minDate value must be provided in the ISO date format (YYYY-MM-dd).
108
- *
109
- * @default ""
110
- * @public
111
- */
112
- minDate: string;
113
- /**
114
- * Determines the maximum date available for selection.
115
- * <br/><br/>
116
- * <b>Note:</b> The maxDate value must be provided in the ISO date format (YYYY-MM-dd).
117
- *
118
- * @default ""
119
- * @public
120
- */
121
- maxDate: string;
122
104
  /**
123
105
  * Defines selected dates values.
124
106
  *
@@ -139,10 +121,15 @@ declare class UDExDatePicker extends UI5Element {
139
121
  * @public
140
122
  */
141
123
  formatPattern: string;
124
+ /**
125
+ * The first date in the range during selection (this is a temporary value, not the first date in the value range)
126
+ * @private
127
+ */
128
+ _tempValue: string;
142
129
  responsivePopover?: UDExDropdown;
143
130
  static i18nBundle: I18nBundle;
131
+ private _prevDelimiter;
144
132
  static onDefine(): Promise<void>;
145
- _getCalendar(): Promise<Calendar>;
146
133
  _getResponsePopover(): Promise<UDExDropdown>;
147
134
  /**
148
135
  * Getter for the interactive element that opens the overflow
@@ -156,9 +143,49 @@ declare class UDExDatePicker extends UI5Element {
156
143
  hideCalendar(): void;
157
144
  showCalendar(): void;
158
145
  handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void;
146
+ get _effectiveDelimiter(): string;
147
+ _getInput(): HTMLInputElement | null | undefined;
148
+ _splitValueByDelimiter(value: string): string[];
149
+ /**
150
+ * Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date
151
+ * @private
152
+ */
153
+ _extractLastTimestamp(value: string): number | undefined;
154
+ /**
155
+ * Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty
156
+ * @private
157
+ */
158
+ _extractFirstTimestamp(value: string): number | undefined;
159
+ /**
160
+ * Checks if a value is valid against the current date format of the DatePicker.
161
+ * @public
162
+ * @param value A value to be tested against the current date format
163
+ */
164
+ isValid(value: string): boolean;
165
+ isValidRange(value: string): boolean;
166
+ isInValidRange(value: string): boolean;
167
+ /**
168
+ * Checks if a date is between the minimum and maximum date.
169
+ * @public
170
+ * @param value A value to be checked
171
+ */
172
+ isInValidRangeRange(value: string): boolean;
173
+ _checkValueValidity(value: string): boolean;
174
+ /**
175
+ * Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp
176
+ * @private
177
+ */
178
+ _buildValue(firstDateTimestamp: number | undefined, lastDateTimestamp: number | undefined): string;
179
+ /**
180
+ * The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)
181
+ * @protected
182
+ */
183
+ normalizeValue(value: string): string;
184
+ _updateValueState(): void;
185
+ _buildEventData(value: string): DatePickerSelectionChangeEventDetail;
186
+ _updateValueAndFireEvents(value: string, normalizeValue: boolean, e?: CustomEvent<CalendarSelectedDatesChangeEventDetail> | null): void;
187
+ _onInputChange(e: Event): void;
159
188
  handleInputClick(e: Event | KeyboardEvent): void;
160
- handleInputMouseDown(e: Event): void;
161
- handleInputKeyDown(e: KeyboardEvent): void;
162
189
  /**
163
190
  * Used to provide selectedDates to the calendar based on the component's state
164
191
  * Override in derivatives to provide different rules for setting the calendar's selected dates
@@ -5,14 +5,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var UDExDatePicker_1;
8
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
8
+ import DateComponentBase from "@ui5/webcomponents/dist/DateComponentBase.js";
9
9
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
10
10
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
11
11
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
12
12
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
13
13
  // eslint-disable-next-line
14
14
  import Calendar from "@ui5/webcomponents/dist/Calendar.js";
15
- import CalendarDate from "@ui5/webcomponents/dist/CalendarDate.js";
15
+ import CalendarDateComponent from "@ui5/webcomponents/dist/CalendarDate.js";
16
16
  import "@ui5/webcomponents/dist/Icon.js";
17
17
  import "@ui5/webcomponents-icons/dist/appointment-2.js";
18
18
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -47,18 +47,14 @@ export var UDExDatePickerSelectionMode;
47
47
  *
48
48
  * @constructor
49
49
  * @author SAP SE
50
- * @extends UI5Element
50
+ * @extends DateComponentBase
51
51
  * @tagname udex-date-picker
52
52
  * @public
53
53
  */
54
- let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element {
54
+ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends DateComponentBase {
55
55
  static async onDefine() {
56
56
  UDExDatePicker_1.i18nBundle = await getI18nBundle("@udex/web-components");
57
57
  }
58
- async _getCalendar() {
59
- const staticAreaItem = await this.getStaticAreaItemDomRef();
60
- return staticAreaItem.querySelector("#ui5-calendar");
61
- }
62
58
  async _getResponsePopover() {
63
59
  const staticAreaItem = await this.getStaticAreaItemDomRef();
64
60
  return staticAreaItem.querySelector(`#udex-${this.__id}-calendar__popover`);
@@ -68,11 +64,12 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
68
64
  * @private
69
65
  */
70
66
  get _dropdownTrigger() {
71
- return this.shadowRoot.querySelector(".udex-date-picker__trigger");
67
+ return this.shadowRoot.querySelector(".udex-date-picker__input");
72
68
  }
73
69
  _afterDropdownClose() {
74
70
  this._dropdownTrigger.active = false;
75
- this._dropdownTrigger.shadowRoot?.querySelector("input")?.focus();
71
+ this._dropdownTrigger.shadowRoot?.querySelector("input")?.blur();
72
+ this._tempValue = "";
76
73
  }
77
74
  _afterDropdownOpen() {
78
75
  this._dropdownTrigger.active = true;
@@ -92,26 +89,203 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
92
89
  this._openRespPopover();
93
90
  }
94
91
  handleCalendarChange(e) {
95
- const { dates, timestamp, values } = e.detail;
96
- const formattedValues = values;
92
+ e.preventDefault();
97
93
  if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
98
- this.value = formattedValues[0];
99
- this.selectedDates = formattedValues[0];
94
+ const newValue = e.detail.values && e.detail.values[0];
95
+ this._updateValueAndFireEvents(newValue, true, e);
100
96
  }
101
97
  if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
102
- if (dates.length < 2) {
98
+ const values = e.detail.values;
99
+ if (values.length === 0) {
100
+ return;
101
+ }
102
+ if (values.length === 1) { // Do nothing until the user selects 2 dates, we don't change any state at all for one date
103
+ this._tempValue = values[0];
103
104
  return;
104
105
  }
105
- this.value = `${formattedValues[0]} - ${formattedValues[1]}`;
106
- this.selectedDates = `${formattedValues[0]}, ${formattedValues[1]}`;
107
- }
108
- this.fireEvent("selection-change", {
109
- timestamp,
110
- selectedDates: [...dates],
111
- selectedValues: formattedValues,
112
- }, true);
106
+ const newValue = this._buildValue(e.detail.dates[0], e.detail.dates[1]);
107
+ this._updateValueAndFireEvents(newValue, true, e);
108
+ }
113
109
  this.hideCalendar();
114
110
  }
111
+ get _effectiveDelimiter() {
112
+ return "-";
113
+ }
114
+ _getInput() {
115
+ return this._dropdownTrigger.shadowRoot?.querySelector("input");
116
+ }
117
+ _splitValueByDelimiter(value) {
118
+ const valuesArray = [];
119
+ const partsArray = value.split(this._prevDelimiter || this._effectiveDelimiter);
120
+ // if format successfully parse the value, the value contains only single date
121
+ if (this.getFormat().parse(value)) {
122
+ valuesArray[0] = partsArray.join(this._effectiveDelimiter);
123
+ valuesArray[1] = "";
124
+ return valuesArray;
125
+ }
126
+ valuesArray[0] = partsArray.slice(0, partsArray.length / 2).join(this._effectiveDelimiter);
127
+ valuesArray[1] = partsArray.slice(partsArray.length / 2).join(this._effectiveDelimiter);
128
+ return valuesArray;
129
+ }
130
+ /**
131
+ * Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date
132
+ * @private
133
+ */
134
+ _extractLastTimestamp(value) {
135
+ if (!value || !this._checkValueValidity(value)) {
136
+ return undefined;
137
+ }
138
+ const dateStrings = this._splitValueByDelimiter(value);
139
+ if (dateStrings[1]) {
140
+ const parsedDate = this.getFormat().parse(dateStrings[1], true);
141
+ return parsedDate.getTime() / 1000;
142
+ }
143
+ return undefined;
144
+ }
145
+ /**
146
+ * Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty
147
+ * @private
148
+ */
149
+ _extractFirstTimestamp(value) {
150
+ if (!value || !this._checkValueValidity(value)) {
151
+ return undefined;
152
+ }
153
+ const dateStrings = this._splitValueByDelimiter(value); // at least one item guaranteed due to the checks above (non-empty and valid)
154
+ const parsedDate = this.getFormat().parse(dateStrings[0], true);
155
+ return parsedDate.getTime() / 1000;
156
+ }
157
+ /**
158
+ * Checks if a value is valid against the current date format of the DatePicker.
159
+ * @public
160
+ * @param value A value to be tested against the current date format
161
+ */
162
+ isValid(value) {
163
+ if (value === "" || value === undefined) {
164
+ return true;
165
+ }
166
+ return !!this.getFormat().parse(value);
167
+ }
168
+ isValidRange(value) {
169
+ const parts = this._splitValueByDelimiter(value);
170
+ return parts.length <= 2 && parts.every(dateString => this.isValid(dateString)); // must be at most 2 dates and each must be valid
171
+ }
172
+ isInValidRange(value) {
173
+ if (value === "" || value === undefined) {
174
+ return true;
175
+ }
176
+ const calendarDate = this._getCalendarDateFromString(value);
177
+ if (!calendarDate || !this._minDate || !this._maxDate) {
178
+ return false;
179
+ }
180
+ return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
181
+ }
182
+ /**
183
+ * Checks if a date is between the minimum and maximum date.
184
+ * @public
185
+ * @param value A value to be checked
186
+ */
187
+ isInValidRangeRange(value) {
188
+ return this._splitValueByDelimiter(value).every(dateString => this.isInValidRange(dateString));
189
+ }
190
+ _checkValueValidity(value) {
191
+ let result = false;
192
+ if (value === "") {
193
+ return true;
194
+ }
195
+ if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
196
+ result = this.isValid(value) && this.isInValidRange(value);
197
+ }
198
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
199
+ result = this.isValidRange(value) && this.isInValidRangeRange(value);
200
+ }
201
+ return result;
202
+ }
203
+ /**
204
+ * Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp
205
+ * @private
206
+ */
207
+ _buildValue(firstDateTimestamp, lastDateTimestamp) {
208
+ this._prevDelimiter = this._effectiveDelimiter;
209
+ if (firstDateTimestamp) {
210
+ const firstDateString = this._getStringFromTimestamp(firstDateTimestamp * 1000);
211
+ if (!lastDateTimestamp) {
212
+ return firstDateString;
213
+ }
214
+ const lastDateString = this._getStringFromTimestamp(lastDateTimestamp * 1000);
215
+ return `${firstDateString} ${this._effectiveDelimiter} ${lastDateString}`;
216
+ }
217
+ return "";
218
+ }
219
+ /**
220
+ * The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)
221
+ * @protected
222
+ */
223
+ normalizeValue(value) {
224
+ let result = "";
225
+ if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
226
+ if (value === "") {
227
+ return value;
228
+ }
229
+ result = this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC
230
+ }
231
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
232
+ const firstDateTimestamp = this._extractFirstTimestamp(value);
233
+ const lastDateTimestamp = this._extractLastTimestamp(value);
234
+ if (firstDateTimestamp && lastDateTimestamp && firstDateTimestamp > lastDateTimestamp) { // if both are timestamps (not undefined), flip if necessary
235
+ return this._buildValue(lastDateTimestamp, firstDateTimestamp);
236
+ }
237
+ result = this._buildValue(firstDateTimestamp, lastDateTimestamp);
238
+ }
239
+ return result;
240
+ }
241
+ _updateValueState() {
242
+ const valid = this._checkValueValidity(this.value);
243
+ const previousValueState = this.valueState;
244
+ this.valueState = valid ? ValueState.Standard : ValueState.Error;
245
+ const eventPrevented = !this.fireEvent("value-state-change", { valueState: this.valueState, valid });
246
+ if (eventPrevented) {
247
+ this.valueState = previousValueState;
248
+ }
249
+ }
250
+ _buildEventData(value) {
251
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
252
+ return {
253
+ selectedDates: [this._extractFirstTimestamp(value), this._extractLastTimestamp(value)],
254
+ selectedValues: this._splitValueByDelimiter(this.value),
255
+ timestamp: this._extractLastTimestamp(value),
256
+ };
257
+ }
258
+ return {
259
+ selectedDates: [this._extractFirstTimestamp(value)],
260
+ selectedValues: [value],
261
+ timestamp: this._extractFirstTimestamp(value),
262
+ };
263
+ }
264
+ _updateValueAndFireEvents(value, normalizeValue, e) {
265
+ const valid = this._checkValueValidity(value);
266
+ if (valid && normalizeValue) {
267
+ value = this.normalizeValue(value); // transform valid values (in any format) to the correct format
268
+ }
269
+ this.value = value;
270
+ this._updateValueState(); // Change the value state to Error/None, but only if needed
271
+ if (!valid) {
272
+ return;
273
+ }
274
+ if (e) {
275
+ const { dates, timestamp, values } = e.detail;
276
+ this.fireEvent("selection-change", {
277
+ timestamp,
278
+ selectedDates: [...dates],
279
+ selectedValues: values,
280
+ }, true);
281
+ }
282
+ else {
283
+ this.fireEvent("selection-change", this._buildEventData(value), true);
284
+ }
285
+ }
286
+ _onInputChange(e) {
287
+ this._updateValueAndFireEvents(e.target.value, true);
288
+ }
115
289
  handleInputClick(e) {
116
290
  e.preventDefault();
117
291
  if (this.disabled || this.readonly) {
@@ -119,21 +293,16 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
119
293
  }
120
294
  this.showCalendar();
121
295
  }
122
- handleInputMouseDown(e) {
123
- e.preventDefault();
124
- }
125
- handleInputKeyDown(e) {
126
- if (e.key === "Enter") {
127
- this.handleInputClick(e);
128
- }
129
- }
130
296
  /**
131
297
  * Used to provide selectedDates to the calendar based on the component's state
132
298
  * Override in derivatives to provide different rules for setting the calendar's selected dates
133
299
  * @protected
134
300
  */
135
301
  get _calendarSelectedDates() {
136
- if (this.value) {
302
+ if (this._tempValue) {
303
+ return [this._tempValue];
304
+ }
305
+ if (this.value && this._checkValueValidity(this.value)) {
137
306
  return this.value.split(" - ");
138
307
  }
139
308
  return [];
@@ -172,12 +341,6 @@ __decorate([
172
341
  __decorate([
173
342
  property({ type: String, defaultValue: "" })
174
343
  ], UDExDatePicker.prototype, "label", void 0);
175
- __decorate([
176
- property({ type: String, defaultValue: "" })
177
- ], UDExDatePicker.prototype, "minDate", void 0);
178
- __decorate([
179
- property({ type: String, defaultValue: "" })
180
- ], UDExDatePicker.prototype, "maxDate", void 0);
181
344
  __decorate([
182
345
  property({ type: String, noAttribute: true, defaultValue: "" })
183
346
  ], UDExDatePicker.prototype, "selectedDates", void 0);
@@ -187,6 +350,9 @@ __decorate([
187
350
  __decorate([
188
351
  property({ type: String, defaultValue: "MMM dd, yyyy" })
189
352
  ], UDExDatePicker.prototype, "formatPattern", void 0);
353
+ __decorate([
354
+ property()
355
+ ], UDExDatePicker.prototype, "_tempValue", void 0);
190
356
  UDExDatePicker = UDExDatePicker_1 = __decorate([
191
357
  customElement({
192
358
  tag: "udex-date-picker",
@@ -195,7 +361,7 @@ UDExDatePicker = UDExDatePicker_1 = __decorate([
195
361
  template: DatePickerTemplate,
196
362
  staticAreaTemplate: DatePickerPopover,
197
363
  staticAreaStyles: [DatePickerPopoverCss],
198
- dependencies: [CalendarDate, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],
364
+ dependencies: [CalendarDateComponent, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],
199
365
  })
200
366
  /**
201
367
  * Fired when the selected dates change.
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../src/DatePicker.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\n// eslint-disable-next-line\nimport Calendar, { CalendarSelectedDatesChangeEventDetail } from \"@ui5/webcomponents/dist/Calendar.js\";\nimport CalendarDate from \"@ui5/webcomponents/dist/CalendarDate.js\";\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/appointment-2.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DatePickerTemplate from \"./generated/templates/DatePickerTemplate.lit.js\";\nimport DatePickerPopover from \"./generated/templates/DatePickerPopoverTemplate.lit.js\";\n\n// Styles\nimport DatePickerCss from \"./generated/themes/DatePicker.css\";\nimport UDExTextField from \"./TextField.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport DatePickerPopoverCss from \"./generated/themes/DatePickerPopover.css.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport ValueState from \"./types/common.js\";\n\nexport enum UDExDatePickerSelectionMode {\n Single = \"Single\",\n Range = \"Range\",\n}\n\nexport type DatePickerSelectionChangeEventDetail = {\n selectedValues: Array<string>;\n selectedDates: Array<number>;\n timestamp: number | undefined;\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-date-picker</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/DatePicker.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-date-picker\n * @public\n */\n@customElement({\n tag: \"udex-date-picker\",\n renderer: litRender,\n styles: DatePickerCss,\n template: DatePickerTemplate,\n staticAreaTemplate: DatePickerPopover,\n staticAreaStyles: [DatePickerPopoverCss],\n dependencies: [CalendarDate, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],\n})\n/**\n * Fired when the selected dates change.\n *\n * @allowPreventDefault\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event<DatePickerSelectionChangeEventDetail>(\"selection-change\", {\n detail: {\n /**\n * @public\n */\n selectedDates: { type: Array },\n /**\n * @public\n */\n selectedValues: { type: Array },\n\n timestamp: { type: Number },\n },\n})\nclass UDExDatePicker extends UI5Element {\n /**\n * Defines selection mode of the calendar component.\n *\n * @default \"Single\"\n * @public\n */\n @property({ type: UDExDatePickerSelectionMode, defaultValue: \"Single\" })\n selectionMode?: `${UDExDatePickerSelectionMode}`;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n supportingText!: string;\n\n /**\n * Defines the value of the input.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Sets the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines label text for the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Determines the minimum date available for selection.\n * <br/><br/>\n * <b>Note:</b> The minDate value must be provided in the ISO date format (YYYY-MM-dd).\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n minDate!: string;\n\n /**\n * Determines the maximum date available for selection.\n * <br/><br/>\n * <b>Note:</b> The maxDate value must be provided in the ISO date format (YYYY-MM-dd).\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n maxDate!: string;\n\n /**\n * Defines selected dates values.\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n selectedDates!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: ValueState, defaultValue: \"Standard\" })\n valueState!: \"Standard\" | \"Warning\" | \"Error\" | \"Success\";\n\n /**\n * Defines the date format pattern (e.g., \\\"MMM dd, yyyy\\\" or \\\"MM/dd/yyyy\\\").\n * @default \"MMM dd, yyyy\"\n * @public\n */\n @property({ type: String, defaultValue: \"MMM dd, yyyy\" })\n formatPattern!: string;\n\n responsivePopover?: UDExDropdown;\n\n static i18nBundle: I18nBundle;\n\n static async onDefine(): Promise<void> {\n UDExDatePicker.i18nBundle = await getI18nBundle(\"@udex/web-components\");\n }\n\n async _getCalendar(): Promise<Calendar> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<Calendar>(\"#ui5-calendar\")!;\n }\n\n async _getResponsePopover(): Promise<UDExDropdown> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownTrigger(): UDExTextField {\n return this.shadowRoot!.querySelector<UDExTextField>(\".udex-date-picker__trigger\")!;\n }\n\n _afterDropdownClose(): void {\n this._dropdownTrigger.active = false;\n this._dropdownTrigger.shadowRoot?.querySelector(\"input\")?.focus();\n }\n\n _afterDropdownOpen(): void {\n this._dropdownTrigger.active = true;\n }\n\n _closeRespPopover(): void {\n this.responsivePopover && this.responsivePopover.onClose();\n }\n\n async _openRespPopover(): Promise<void> {\n this._dropdownTrigger.active = true;\n this.responsivePopover = await this._getResponsePopover();\n this.responsivePopover?.onOpen(this._dropdownTrigger);\n }\n\n hideCalendar(): void {\n this._closeRespPopover();\n }\n\n showCalendar(): void {\n this._openRespPopover();\n }\n\n handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void {\n const { dates, timestamp, values } = e.detail;\n\n const formattedValues = values;\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n this.value = formattedValues[0];\n this.selectedDates = formattedValues[0];\n }\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n if (dates.length < 2) {\n return;\n }\n\n this.value = `${formattedValues[0]} - ${formattedValues[1]}`;\n this.selectedDates = `${formattedValues[0]}, ${formattedValues[1]}`;\n }\n\n this.fireEvent(\n \"selection-change\",\n {\n timestamp,\n selectedDates: [...dates],\n selectedValues: formattedValues,\n },\n true,\n );\n\n this.hideCalendar();\n }\n\n handleInputClick(e: Event | KeyboardEvent): void {\n e.preventDefault();\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.showCalendar();\n }\n\n handleInputMouseDown(e: Event): void {\n e.preventDefault();\n }\n\n handleInputKeyDown(e: KeyboardEvent): void {\n if (e.key === \"Enter\") {\n this.handleInputClick(e);\n }\n }\n\n /**\n * Used to provide selectedDates to the calendar based on the component's state\n * Override in derivatives to provide different rules for setting the calendar's selected dates\n * @protected\n */\n get _calendarSelectedDates(): Array<string> {\n if (this.value) {\n return this.value.split(\" - \");\n }\n\n return [];\n }\n\n get accessibleIconName(): string {\n return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);\n }\n\n get dateAccessibleName(): string {\n return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);\n }\n}\n\nUDExDatePicker.define();\n\nexport default UDExDatePicker;\n"]}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../src/DatePicker.ts"],"names":[],"mappings":"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","sourcesContent":["import DateComponentBase from \"@ui5/webcomponents/dist/DateComponentBase.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\n// eslint-disable-next-line\nimport Calendar, { CalendarSelectedDatesChangeEventDetail } from \"@ui5/webcomponents/dist/Calendar.js\";\nimport CalendarDateComponent from \"@ui5/webcomponents/dist/CalendarDate.js\";\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/appointment-2.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DatePickerTemplate from \"./generated/templates/DatePickerTemplate.lit.js\";\nimport DatePickerPopover from \"./generated/templates/DatePickerPopoverTemplate.lit.js\";\n\n// Styles\nimport DatePickerCss from \"./generated/themes/DatePicker.css\";\nimport UDExTextField from \"./TextField.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport DatePickerPopoverCss from \"./generated/themes/DatePickerPopover.css.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport ValueState from \"./types/common.js\";\n\nexport enum UDExDatePickerSelectionMode {\n Single = \"Single\",\n Range = \"Range\",\n}\n\nexport type DatePickerSelectionChangeEventDetail = {\n selectedValues: Array<string>;\n selectedDates: Array<number | undefined>;\n timestamp: number | undefined;\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-date-picker</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/DatePicker.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends DateComponentBase\n * @tagname udex-date-picker\n * @public\n */\n@customElement({\n tag: \"udex-date-picker\",\n renderer: litRender,\n styles: DatePickerCss,\n template: DatePickerTemplate,\n staticAreaTemplate: DatePickerPopover,\n staticAreaStyles: [DatePickerPopoverCss],\n dependencies: [CalendarDateComponent, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],\n})\n/**\n * Fired when the selected dates change.\n *\n * @allowPreventDefault\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event<DatePickerSelectionChangeEventDetail>(\"selection-change\", {\n detail: {\n /**\n * @public\n */\n selectedDates: { type: Array },\n /**\n * @public\n */\n selectedValues: { type: Array },\n\n timestamp: { type: Number },\n },\n})\nclass UDExDatePicker extends DateComponentBase {\n /**\n * Defines selection mode of the calendar component.\n *\n * @default \"Single\"\n * @public\n */\n @property({ type: UDExDatePickerSelectionMode, defaultValue: \"Single\" })\n selectionMode?: `${UDExDatePickerSelectionMode}`;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n supportingText!: string;\n\n /**\n * Defines the value of the input.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Sets the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines label text for the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Defines selected dates values.\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n selectedDates!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: ValueState, defaultValue: \"Standard\" })\n valueState!: \"Standard\" | \"Warning\" | \"Error\" | \"Success\";\n\n /**\n * Defines the date format pattern (e.g., \\\"MMM dd, yyyy\\\" or \\\"MM/dd/yyyy\\\").\n * @default \"MMM dd, yyyy\"\n * @public\n */\n @property({ type: String, defaultValue: \"MMM dd, yyyy\" })\n formatPattern!: string;\n\n /**\n * The first date in the range during selection (this is a temporary value, not the first date in the value range)\n * @private\n */\n @property()\n _tempValue!: string;\n\n responsivePopover?: UDExDropdown;\n\n static i18nBundle: I18nBundle;\n\n private _prevDelimiter!: string | null;\n\n static async onDefine(): Promise<void> {\n UDExDatePicker.i18nBundle = await getI18nBundle(\"@udex/web-components\");\n }\n\n async _getResponsePopover(): Promise<UDExDropdown> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownTrigger(): UDExTextField {\n return this.shadowRoot!.querySelector<UDExTextField>(\".udex-date-picker__input\")!;\n }\n\n _afterDropdownClose(): void {\n this._dropdownTrigger.active = false;\n this._dropdownTrigger.shadowRoot?.querySelector(\"input\")?.blur();\n this._tempValue = \"\";\n }\n\n _afterDropdownOpen(): void {\n this._dropdownTrigger.active = true;\n }\n\n _closeRespPopover(): void {\n this.responsivePopover && this.responsivePopover.onClose();\n }\n\n async _openRespPopover(): Promise<void> {\n this._dropdownTrigger.active = true;\n this.responsivePopover = await this._getResponsePopover();\n this.responsivePopover?.onOpen(this._dropdownTrigger);\n }\n\n hideCalendar(): void {\n this._closeRespPopover();\n }\n\n showCalendar(): void {\n this._openRespPopover();\n }\n\n handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void {\n e.preventDefault();\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n const newValue = e.detail.values && e.detail.values[0];\n this._updateValueAndFireEvents(newValue, true, e);\n }\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n const values = e.detail.values;\n\n if (values.length === 0) {\n return;\n }\n\n if (values.length === 1) { // Do nothing until the user selects 2 dates, we don't change any state at all for one date\n this._tempValue = values[0];\n return;\n }\n\n const newValue = this._buildValue(e.detail.dates[0], e.detail.dates[1]);\n this._updateValueAndFireEvents(newValue, true, e);\n }\n\n this.hideCalendar();\n }\n\n get _effectiveDelimiter(): string {\n return \"-\";\n }\n\n _getInput(): HTMLInputElement | null | undefined {\n return this._dropdownTrigger.shadowRoot?.querySelector(\"input\");\n }\n\n _splitValueByDelimiter(value: string) {\n const valuesArray: Array<string> = [];\n const partsArray = value.split(this._prevDelimiter || this._effectiveDelimiter);\n\n // if format successfully parse the value, the value contains only single date\n if (this.getFormat().parse(value)) {\n valuesArray[0] = partsArray.join(this._effectiveDelimiter);\n valuesArray[1] = \"\";\n\n return valuesArray;\n }\n\n valuesArray[0] = partsArray.slice(0, partsArray.length / 2).join(this._effectiveDelimiter);\n valuesArray[1] = partsArray.slice(partsArray.length / 2).join(this._effectiveDelimiter);\n\n return valuesArray;\n }\n\n /**\n * Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date\n * @private\n */\n _extractLastTimestamp(value: string) {\n if (!value || !this._checkValueValidity(value)) {\n return undefined;\n }\n\n const dateStrings = this._splitValueByDelimiter(value);\n if (dateStrings[1]) {\n const parsedDate = this.getFormat().parse(dateStrings[1], true) as Date;\n return parsedDate.getTime() / 1000;\n }\n\n return undefined;\n }\n\n /**\n * Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty\n * @private\n */\n _extractFirstTimestamp(value: string) {\n if (!value || !this._checkValueValidity(value)) {\n return undefined;\n }\n\n const dateStrings = this._splitValueByDelimiter(value); // at least one item guaranteed due to the checks above (non-empty and valid)\n\n const parsedDate = this.getFormat().parse(dateStrings[0], true) as Date;\n return parsedDate.getTime() / 1000;\n }\n\n /**\n * Checks if a value is valid against the current date format of the DatePicker.\n * @public\n * @param value A value to be tested against the current date format\n */\n isValid(value: string): boolean {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n return !!this.getFormat().parse(value);\n }\n\n isValidRange(value: string): boolean {\n const parts = this._splitValueByDelimiter(value);\n return parts.length <= 2 && parts.every(dateString => this.isValid(dateString)); // must be at most 2 dates and each must be valid\n }\n\n isInValidRange(value: string): boolean {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n const calendarDate = this._getCalendarDateFromString(value);\n\n if (!calendarDate || !this._minDate || !this._maxDate) {\n return false;\n }\n\n return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();\n }\n\n /**\n * Checks if a date is between the minimum and maximum date.\n * @public\n * @param value A value to be checked\n */\n isInValidRangeRange(value: string): boolean {\n return this._splitValueByDelimiter(value).every(dateString => this.isInValidRange(dateString));\n }\n\n _checkValueValidity(value: string): boolean {\n let result = false;\n if (value === \"\") {\n return true;\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n result = this.isValid(value) && this.isInValidRange(value);\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n result = this.isValidRange(value) && this.isInValidRangeRange(value);\n }\n return result;\n }\n\n /**\n * Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp\n * @private\n */\n _buildValue(firstDateTimestamp: number | undefined, lastDateTimestamp: number | undefined) {\n this._prevDelimiter = this._effectiveDelimiter;\n if (firstDateTimestamp) {\n const firstDateString = this._getStringFromTimestamp(firstDateTimestamp * 1000);\n\n if (!lastDateTimestamp) {\n return firstDateString;\n }\n\n const lastDateString = this._getStringFromTimestamp(lastDateTimestamp * 1000);\n return `${firstDateString} ${this._effectiveDelimiter} ${lastDateString}`;\n }\n\n return \"\";\n }\n\n /**\n * The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)\n * @protected\n */\n normalizeValue(value: string) {\n let result = \"\";\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n if (value === \"\") {\n return value;\n }\n result = this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n const firstDateTimestamp = this._extractFirstTimestamp(value);\n const lastDateTimestamp = this._extractLastTimestamp(value);\n if (firstDateTimestamp && lastDateTimestamp && firstDateTimestamp > lastDateTimestamp) { // if both are timestamps (not undefined), flip if necessary\n return this._buildValue(lastDateTimestamp, firstDateTimestamp);\n }\n result = this._buildValue(firstDateTimestamp, lastDateTimestamp);\n }\n return result;\n }\n\n _updateValueState() {\n const valid = this._checkValueValidity(this.value);\n const previousValueState = this.valueState;\n\n this.valueState = valid ? ValueState.Standard : ValueState.Error;\n\n const eventPrevented = !this.fireEvent(\"value-state-change\", { valueState: this.valueState, valid });\n\n if (eventPrevented) {\n this.valueState = previousValueState;\n }\n }\n\n _buildEventData(value: string): DatePickerSelectionChangeEventDetail {\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n return {\n selectedDates: [this._extractFirstTimestamp(value), this._extractLastTimestamp(value)],\n selectedValues: this._splitValueByDelimiter(this.value),\n timestamp: this._extractLastTimestamp(value),\n };\n }\n return {\n selectedDates: [this._extractFirstTimestamp(value)],\n selectedValues: [value],\n timestamp: this._extractFirstTimestamp(value),\n };\n }\n\n _updateValueAndFireEvents(value: string, normalizeValue: boolean, e?: CustomEvent<CalendarSelectedDatesChangeEventDetail> | null) {\n const valid = this._checkValueValidity(value);\n\n if (valid && normalizeValue) {\n value = this.normalizeValue(value); // transform valid values (in any format) to the correct format\n }\n\n this.value = value;\n this._updateValueState(); // Change the value state to Error/None, but only if needed\n\n if (!valid) { return; }\n\n if (e) {\n const { dates, timestamp, values } = e.detail;\n\n this.fireEvent(\n \"selection-change\",\n {\n timestamp,\n selectedDates: [...dates],\n selectedValues: values,\n },\n true,\n );\n } else {\n this.fireEvent(\n \"selection-change\",\n this._buildEventData(value),\n true,\n );\n }\n }\n\n _onInputChange(e: Event) {\n this._updateValueAndFireEvents((e.target as UDExDatePicker).value, true);\n }\n\n handleInputClick(e: Event | KeyboardEvent): void {\n e.preventDefault();\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.showCalendar();\n }\n\n /**\n * Used to provide selectedDates to the calendar based on the component's state\n * Override in derivatives to provide different rules for setting the calendar's selected dates\n * @protected\n */\n get _calendarSelectedDates(): Array<string> {\n if (this._tempValue) {\n return [this._tempValue];\n }\n\n if (this.value && this._checkValueValidity(this.value)) {\n return this.value.split(\" - \");\n }\n\n return [];\n }\n\n get accessibleIconName(): string {\n return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);\n }\n\n get dateAccessibleName(): string {\n return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);\n }\n}\n\nUDExDatePicker.define();\n\nexport default UDExDatePicker;\n"]}
@@ -1,7 +1,6 @@
1
- import "@ui5/webcomponents/dist/Icon.js";
2
1
  import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
3
2
  import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
4
- import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
3
+ import Popover from "@ui5/webcomponents/dist/Popover.js";
5
4
  import UDExSearch from "./Search.js";
6
5
  import UDExButton from "./Button.js";
7
6
  import UDExSearchableListBase from "./SearchableListBase.js";
@@ -149,8 +148,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
149
148
  triggerAccessibleRole: string;
150
149
  _trigger: UDExButton;
151
150
  _search: UDExSearch;
152
- _hasFooterButtons: boolean;
153
- _popover: ResponsivePopover;
151
+ _popover: Popover;
154
152
  _breakpointSizeXS: number;
155
153
  onEnterDOM(): void;
156
154
  onBeforeRendering(): void;
@@ -180,7 +178,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
180
178
  get hasFilterNamePrefix(): boolean;
181
179
  get getResultLabelText(): string;
182
180
  get getResetLabelText(): string;
183
- get disabledResultBtn(): boolean;
181
+ get disabledButtons(): boolean;
184
182
  get _iconAccessibleNameText(): string;
185
183
  get triggerButtonAccessibleName(): string;
186
184
  get searchableList(): object;
@@ -189,7 +187,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
189
187
  get hasResultBtn(): boolean;
190
188
  get hasResetBtn(): boolean;
191
189
  getTriggerButton(): UDExButton;
192
- getPopover(): ResponsivePopover;
190
+ getPopover(): Popover;
193
191
  getItems(): Array<UDExListItemBase>;
194
192
  static get searchableListBaseTemplate(): typeof SearchableListBaseTemplate;
195
193
  }