@sapudex/web-components 0.176.0 → 0.192.2

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 (301) 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.d.ts +2 -0
  13. package/dist/CountrySelector.js +10 -6
  14. package/dist/CountrySelector.js.map +1 -1
  15. package/dist/DatePicker.d.ts +53 -26
  16. package/dist/DatePicker.js +205 -39
  17. package/dist/DatePicker.js.map +1 -1
  18. package/dist/FilterMenu.d.ts +4 -6
  19. package/dist/FilterMenu.js +10 -10
  20. package/dist/FilterMenu.js.map +1 -1
  21. package/dist/Footer.js +6 -2
  22. package/dist/Footer.js.map +1 -1
  23. package/dist/HeroBanner.d.ts +0 -1
  24. package/dist/HeroBanner.js +2 -1
  25. package/dist/HeroBanner.js.map +1 -1
  26. package/dist/Link.js +2 -0
  27. package/dist/Link.js.map +1 -1
  28. package/dist/ListSelectAll.js +2 -0
  29. package/dist/ListSelectAll.js.map +1 -1
  30. package/dist/MastheadItem.d.ts +10 -1
  31. package/dist/MastheadItem.js +12 -6
  32. package/dist/MastheadItem.js.map +1 -1
  33. package/dist/MastheadMenu.d.ts +6 -0
  34. package/dist/MastheadMenu.js +4 -1
  35. package/dist/MastheadMenu.js.map +1 -1
  36. package/dist/MastheadMenuItem.d.ts +1 -0
  37. package/dist/MastheadMenuItem.js +3 -0
  38. package/dist/MastheadMenuItem.js.map +1 -1
  39. package/dist/MastheadMobileMenu.js +1 -1
  40. package/dist/MastheadMobileMenu.js.map +1 -1
  41. package/dist/MastheadProfileMenu.d.ts +6 -0
  42. package/dist/MastheadProfileMenu.js +3 -0
  43. package/dist/MastheadProfileMenu.js.map +1 -1
  44. package/dist/MastheadShell.d.ts +35 -4
  45. package/dist/MastheadShell.js +141 -11
  46. package/dist/MastheadShell.js.map +1 -1
  47. package/dist/MediaPlayer.js +2 -2
  48. package/dist/MediaPlayer.js.map +1 -1
  49. package/dist/MessageStrip.js +2 -1
  50. package/dist/MessageStrip.js.map +1 -1
  51. package/dist/Pagination.d.ts +3 -2
  52. package/dist/Pagination.js +4 -2
  53. package/dist/Pagination.js.map +1 -1
  54. package/dist/RadioButton.js +0 -1
  55. package/dist/RadioButton.js.map +1 -1
  56. package/dist/Search.js +0 -1
  57. package/dist/Search.js.map +1 -1
  58. package/dist/SearchableListBase.js +3 -3
  59. package/dist/SearchableListBase.js.map +1 -1
  60. package/dist/SecondaryNavigation.js +1 -1
  61. package/dist/SecondaryNavigation.js.map +1 -1
  62. package/dist/SecondaryNavigationItem.js +1 -1
  63. package/dist/SecondaryNavigationItem.js.map +1 -1
  64. package/dist/SelectBox.d.ts +5 -3
  65. package/dist/SelectBox.js +11 -7
  66. package/dist/SelectBox.js.map +1 -1
  67. package/dist/SideNavigationMobile.js +1 -1
  68. package/dist/SideNavigationMobile.js.map +1 -1
  69. package/dist/StepInput.js +1 -1
  70. package/dist/StepInput.js.map +1 -1
  71. package/dist/Tab.d.ts +4 -13
  72. package/dist/Tab.js +11 -14
  73. package/dist/Tab.js.map +1 -1
  74. package/dist/TabNavigation.d.ts +4 -5
  75. package/dist/TabNavigation.js +16 -15
  76. package/dist/TabNavigation.js.map +1 -1
  77. package/dist/Table.js +2 -2
  78. package/dist/Table.js.map +1 -1
  79. package/dist/TextArea.d.ts +13 -22
  80. package/dist/TextArea.js +30 -33
  81. package/dist/TextArea.js.map +1 -1
  82. package/dist/assets/{css_variables-a92ef9ad.css → bundle-c5e3cbf2.css} +1 -1
  83. package/dist/assets/{bundle.esm-f0e73f3b.js → bundle.esm-809b9769.js} +188 -188
  84. package/dist/assets/messagebundle_en-06c0dadc.js +1 -0
  85. package/dist/css/themes/AccordionItem.css +1 -1
  86. package/dist/css/themes/Button.css +1 -1
  87. package/dist/css/themes/CountrySelector.css +1 -1
  88. package/dist/css/themes/ListItem.css +1 -1
  89. package/dist/css/themes/MastheadItem.css +1 -1
  90. package/dist/css/themes/MastheadMenu.css +1 -1
  91. package/dist/css/themes/MastheadMenuItem.css +1 -1
  92. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  93. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  94. package/dist/css/themes/MastheadShell.css +1 -1
  95. package/dist/css/themes/MediaPlayer.css +1 -1
  96. package/dist/css/themes/MessageStrip.css +1 -1
  97. package/dist/css/themes/PhoneNumberField.css +1 -1
  98. package/dist/css/themes/RatingIndicator.css +1 -1
  99. package/dist/css/themes/Review.css +1 -1
  100. package/dist/css/themes/ReviewItem.css +1 -1
  101. package/dist/css/themes/Search.css +1 -1
  102. package/dist/css/themes/SegmentedButton.css +1 -1
  103. package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
  104. package/dist/css/themes/Slider.css +1 -1
  105. package/dist/css/themes/StepInput.css +1 -1
  106. package/dist/css/themes/TabNavigation.css +1 -1
  107. package/dist/css/themes/Table.css +1 -1
  108. package/dist/css/themes/TextArea.css +1 -1
  109. package/dist/custom-elements-internal.json +127 -107
  110. package/dist/custom-elements.json +122 -104
  111. package/dist/features/SearchSuggestionsPopover.d.ts +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  113. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  114. package/dist/generated/i18n/i18n-defaults.js +2 -1
  115. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  116. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  117. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  118. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  119. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
  120. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  121. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  122. package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
  123. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  124. package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
  125. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  126. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +2 -2
  127. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  128. package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -9
  129. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  130. package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
  131. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  132. package/dist/generated/templates/TabHeaderTemplate.lit.js +1 -1
  133. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
  134. package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
  135. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  136. package/dist/generated/templates/TextAreaTemplate.lit.js +5 -4
  137. package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
  138. package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
  139. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  140. package/dist/generated/themes/AccordionItem.css.js +1 -1
  141. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  142. package/dist/generated/themes/Button.css.js +1 -1
  143. package/dist/generated/themes/Button.css.js.map +1 -1
  144. package/dist/generated/themes/CountrySelector.css.js +1 -1
  145. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  146. package/dist/generated/themes/ListItem.css.js +1 -1
  147. package/dist/generated/themes/ListItem.css.js.map +1 -1
  148. package/dist/generated/themes/MastheadItem.css.js +1 -1
  149. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  150. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  151. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  152. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  153. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  154. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  155. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  156. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  157. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  158. package/dist/generated/themes/MastheadShell.css.js +1 -1
  159. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  160. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  161. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  162. package/dist/generated/themes/MessageStrip.css.js +1 -1
  163. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  164. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  165. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  166. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  167. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  168. package/dist/generated/themes/Review.css.js +1 -1
  169. package/dist/generated/themes/Review.css.js.map +1 -1
  170. package/dist/generated/themes/ReviewItem.css.js +1 -1
  171. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  172. package/dist/generated/themes/Search.css.js +1 -1
  173. package/dist/generated/themes/Search.css.js.map +1 -1
  174. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  175. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  176. package/dist/generated/themes/SideNavigationMobileDropdown.css.js +1 -1
  177. package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
  178. package/dist/generated/themes/Slider.css.js +1 -1
  179. package/dist/generated/themes/Slider.css.js.map +1 -1
  180. package/dist/generated/themes/StepInput.css.js +1 -1
  181. package/dist/generated/themes/StepInput.css.js.map +1 -1
  182. package/dist/generated/themes/TabNavigation.css.js +1 -1
  183. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  184. package/dist/generated/themes/Table.css.js +1 -1
  185. package/dist/generated/themes/Table.css.js.map +1 -1
  186. package/dist/generated/themes/TextArea.css.js +1 -1
  187. package/dist/generated/themes/TextArea.css.js.map +1 -1
  188. package/dist/i18n/messagebundle.properties +3 -0
  189. package/dist/i18n/messagebundle_en.properties +1 -0
  190. package/dist/vscode.html-custom-data.json +2 -12
  191. package/dist/web-types.json +21 -25
  192. package/package.json +2 -2
  193. package/src/Accordion.ts +2 -1
  194. package/src/AccordionItem.ts +2 -2
  195. package/src/Badge.ts +2 -1
  196. package/src/Breadcrumbs.hbs +3 -3
  197. package/src/Breadcrumbs.ts +14 -14
  198. package/src/BreadcrumbsPopover.hbs +1 -1
  199. package/src/CountrySelector.hbs +30 -30
  200. package/src/CountrySelector.ts +23 -18
  201. package/src/DatePicker.hbs +4 -5
  202. package/src/DatePicker.ts +257 -64
  203. package/src/DatePickerPopover.hbs +2 -2
  204. package/src/FilterMenu.hbs +2 -1
  205. package/src/FilterMenu.ts +13 -14
  206. package/src/Footer.ts +6 -2
  207. package/src/HeroBanner.ts +2 -1
  208. package/src/Link.ts +2 -0
  209. package/src/ListSelectAll.ts +2 -0
  210. package/src/MastheadItem.hbs +3 -3
  211. package/src/MastheadItem.ts +23 -11
  212. package/src/MastheadMenu.ts +9 -1
  213. package/src/MastheadMenuItem.hbs +2 -1
  214. package/src/MastheadMenuItem.ts +4 -0
  215. package/src/MastheadMobileMenu.ts +1 -1
  216. package/src/MastheadProfileMenu.ts +8 -0
  217. package/src/MastheadShell.hbs +69 -67
  218. package/src/MastheadShell.ts +177 -16
  219. package/src/MediaPlayer.ts +2 -2
  220. package/src/MessageStrip.ts +2 -1
  221. package/src/Pagination.hbs +2 -2
  222. package/src/Pagination.ts +8 -5
  223. package/src/RadioButton.ts +0 -1
  224. package/src/Search.ts +0 -1
  225. package/src/SearchableListBase.ts +3 -3
  226. package/src/SecondaryNavigation.ts +1 -1
  227. package/src/SecondaryNavigationItem.ts +1 -1
  228. package/src/SelectBox.ts +16 -10
  229. package/src/SideNavigationMobile.ts +1 -1
  230. package/src/StepInput.ts +1 -1
  231. package/src/Tab.ts +18 -29
  232. package/src/TabHeader.hbs +1 -1
  233. package/src/TabNavigation.hbs +1 -2
  234. package/src/TabNavigation.ts +21 -19
  235. package/src/Table.ts +2 -2
  236. package/src/TextArea.hbs +21 -21
  237. package/src/TextArea.ts +82 -78
  238. package/src/TextField.hbs +4 -2
  239. package/src/generated/i18n/i18n-defaults.ts +2 -2
  240. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
  241. package/src/generated/templates/DatePickerPopoverTemplate.lit.ts +1 -1
  242. package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
  243. package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
  244. package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
  245. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +2 -2
  246. package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -9
  247. package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
  248. package/src/generated/templates/TabHeaderTemplate.lit.ts +1 -1
  249. package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
  250. package/src/generated/templates/TextAreaTemplate.lit.ts +5 -4
  251. package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
  252. package/src/generated/themes/AccordionItem.css.ts +1 -1
  253. package/src/generated/themes/Button.css.ts +1 -1
  254. package/src/generated/themes/CountrySelector.css.ts +1 -1
  255. package/src/generated/themes/ListItem.css.ts +1 -1
  256. package/src/generated/themes/MastheadItem.css.ts +1 -1
  257. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  258. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  259. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  260. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  261. package/src/generated/themes/MastheadShell.css.ts +1 -1
  262. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  263. package/src/generated/themes/MessageStrip.css.ts +1 -1
  264. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  265. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  266. package/src/generated/themes/Review.css.ts +1 -1
  267. package/src/generated/themes/ReviewItem.css.ts +1 -1
  268. package/src/generated/themes/Search.css.ts +1 -1
  269. package/src/generated/themes/SegmentedButton.css.ts +1 -1
  270. package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
  271. package/src/generated/themes/Slider.css.ts +1 -1
  272. package/src/generated/themes/StepInput.css.ts +1 -1
  273. package/src/generated/themes/TabNavigation.css.ts +1 -1
  274. package/src/generated/themes/Table.css.ts +1 -1
  275. package/src/generated/themes/TextArea.css.ts +1 -1
  276. package/src/i18n/messagebundle.properties +3 -0
  277. package/src/i18n/messagebundle_en.properties +1 -0
  278. package/src/themes/AccordionItem.css +2 -2
  279. package/src/themes/Button.css +5 -5
  280. package/src/themes/CountrySelector.css +35 -28
  281. package/src/themes/ListItem.css +1 -1
  282. package/src/themes/MastheadItem.css +40 -2
  283. package/src/themes/MastheadMenu.css +74 -2
  284. package/src/themes/MastheadMenuItem.css +1 -0
  285. package/src/themes/MastheadMobileMenu.css +2 -2
  286. package/src/themes/MastheadProfileMenu.css +10 -2
  287. package/src/themes/MastheadShell.css +59 -27
  288. package/src/themes/MediaPlayer.css +18 -9
  289. package/src/themes/MessageStrip.css +6 -6
  290. package/src/themes/PhoneNumberField.css +2 -2
  291. package/src/themes/Review.css +1 -1
  292. package/src/themes/ReviewItem.css +1 -1
  293. package/src/themes/Search.css +8 -2
  294. package/src/themes/SegmentedButton.css +1 -1
  295. package/src/themes/SelectBox.css +1 -1
  296. package/src/themes/SideNavigationMobileDropdown.css +1 -1
  297. package/src/themes/StepInput.css +5 -5
  298. package/src/themes/TabNavigation.css +6 -6
  299. package/src/themes/Table.css +5 -5
  300. package/src/themes/TextArea.css +12 -1
  301. package/dist/assets/messagebundle_en-4997b226.js +0 -1
package/src/DatePicker.ts CHANGED
@@ -1,11 +1,11 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
1
+ import DateComponentBase from "@ui5/webcomponents/dist/DateComponentBase.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
4
4
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
6
6
  // eslint-disable-next-line
7
7
  import Calendar, { CalendarSelectedDatesChangeEventDetail } from "@ui5/webcomponents/dist/Calendar.js";
8
- import CalendarDate from "@ui5/webcomponents/dist/CalendarDate.js";
8
+ import CalendarDateComponent from "@ui5/webcomponents/dist/CalendarDate.js";
9
9
  import "@ui5/webcomponents/dist/Icon.js";
10
10
  import "@ui5/webcomponents-icons/dist/appointment-2.js";
11
11
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -31,7 +31,7 @@ export enum UDExDatePickerSelectionMode {
31
31
 
32
32
  export type DatePickerSelectionChangeEventDetail = {
33
33
  selectedValues: Array<string>;
34
- selectedDates: Array<number>;
34
+ selectedDates: Array<number | undefined>;
35
35
  timestamp: number | undefined;
36
36
  };
37
37
 
@@ -50,7 +50,7 @@ export type DatePickerSelectionChangeEventDetail = {
50
50
  *
51
51
  * @constructor
52
52
  * @author SAP SE
53
- * @extends UI5Element
53
+ * @extends DateComponentBase
54
54
  * @tagname udex-date-picker
55
55
  * @public
56
56
  */
@@ -61,7 +61,7 @@ export type DatePickerSelectionChangeEventDetail = {
61
61
  template: DatePickerTemplate,
62
62
  staticAreaTemplate: DatePickerPopover,
63
63
  staticAreaStyles: [DatePickerPopoverCss],
64
- dependencies: [CalendarDate, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],
64
+ dependencies: [CalendarDateComponent, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],
65
65
  })
66
66
  /**
67
67
  * Fired when the selected dates change.
@@ -85,7 +85,7 @@ export type DatePickerSelectionChangeEventDetail = {
85
85
  timestamp: { type: Number },
86
86
  },
87
87
  })
88
- class UDExDatePicker extends UI5Element {
88
+ class UDExDatePicker extends DateComponentBase {
89
89
  /**
90
90
  * Defines selection mode of the calendar component.
91
91
  *
@@ -171,28 +171,6 @@ class UDExDatePicker extends UI5Element {
171
171
  @property({ type: String, defaultValue: "" })
172
172
  label!: string;
173
173
 
174
- /**
175
- * Determines the minimum date available for selection.
176
- * <br/><br/>
177
- * <b>Note:</b> The minDate value must be provided in the ISO date format (YYYY-MM-dd).
178
- *
179
- * @default ""
180
- * @public
181
- */
182
- @property({ type: String, defaultValue: "" })
183
- minDate!: string;
184
-
185
- /**
186
- * Determines the maximum date available for selection.
187
- * <br/><br/>
188
- * <b>Note:</b> The maxDate value must be provided in the ISO date format (YYYY-MM-dd).
189
- *
190
- * @default ""
191
- * @public
192
- */
193
- @property({ type: String, defaultValue: "" })
194
- maxDate!: string;
195
-
196
174
  /**
197
175
  * Defines selected dates values.
198
176
  *
@@ -219,19 +197,23 @@ class UDExDatePicker extends UI5Element {
219
197
  @property({ type: String, defaultValue: "MMM dd, yyyy" })
220
198
  formatPattern!: string;
221
199
 
200
+ /**
201
+ * The first date in the range during selection (this is a temporary value, not the first date in the value range)
202
+ * @private
203
+ */
204
+ @property()
205
+ _tempValue!: string;
206
+
222
207
  responsivePopover?: UDExDropdown;
223
208
 
224
209
  static i18nBundle: I18nBundle;
225
210
 
211
+ private _prevDelimiter!: string | null;
212
+
226
213
  static async onDefine(): Promise<void> {
227
214
  UDExDatePicker.i18nBundle = await getI18nBundle("@udex/web-components");
228
215
  }
229
216
 
230
- async _getCalendar(): Promise<Calendar> {
231
- const staticAreaItem = await this.getStaticAreaItemDomRef();
232
- return staticAreaItem!.querySelector<Calendar>("#ui5-calendar")!;
233
- }
234
-
235
217
  async _getResponsePopover(): Promise<UDExDropdown> {
236
218
  const staticAreaItem = await this.getStaticAreaItemDomRef();
237
219
  return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;
@@ -242,12 +224,13 @@ class UDExDatePicker extends UI5Element {
242
224
  * @private
243
225
  */
244
226
  get _dropdownTrigger(): UDExTextField {
245
- return this.shadowRoot!.querySelector<UDExTextField>(".udex-date-picker__trigger")!;
227
+ return this.shadowRoot!.querySelector<UDExTextField>(".udex-date-picker__input")!;
246
228
  }
247
229
 
248
230
  _afterDropdownClose(): void {
249
231
  this._dropdownTrigger.active = false;
250
- this._dropdownTrigger.shadowRoot?.querySelector("input")?.focus();
232
+ this._dropdownTrigger.shadowRoot?.querySelector("input")?.blur();
233
+ this._tempValue = "";
251
234
  }
252
235
 
253
236
  _afterDropdownOpen(): void {
@@ -273,35 +256,251 @@ class UDExDatePicker extends UI5Element {
273
256
  }
274
257
 
275
258
  handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void {
276
- const { dates, timestamp, values } = e.detail;
259
+ e.preventDefault();
260
+ if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
261
+ const newValue = e.detail.values && e.detail.values[0];
262
+ this._updateValueAndFireEvents(newValue, true, e);
263
+ }
264
+
265
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
266
+ const values = e.detail.values;
267
+
268
+ if (values.length === 0) {
269
+ return;
270
+ }
271
+
272
+ if (values.length === 1) { // Do nothing until the user selects 2 dates, we don't change any state at all for one date
273
+ this._tempValue = values[0];
274
+ return;
275
+ }
277
276
 
278
- const formattedValues = values;
277
+ const newValue = this._buildValue(e.detail.dates[0], e.detail.dates[1]);
278
+ this._updateValueAndFireEvents(newValue, true, e);
279
+ }
280
+
281
+ this.hideCalendar();
282
+ }
283
+
284
+ get _effectiveDelimiter(): string {
285
+ return "-";
286
+ }
287
+
288
+ _getInput(): HTMLInputElement | null | undefined {
289
+ return this._dropdownTrigger.shadowRoot?.querySelector("input");
290
+ }
291
+
292
+ _splitValueByDelimiter(value: string) {
293
+ const valuesArray: Array<string> = [];
294
+ const partsArray = value.split(this._prevDelimiter || this._effectiveDelimiter);
279
295
 
296
+ // if format successfully parse the value, the value contains only single date
297
+ if (this.getFormat().parse(value)) {
298
+ valuesArray[0] = partsArray.join(this._effectiveDelimiter);
299
+ valuesArray[1] = "";
300
+
301
+ return valuesArray;
302
+ }
303
+
304
+ valuesArray[0] = partsArray.slice(0, partsArray.length / 2).join(this._effectiveDelimiter);
305
+ valuesArray[1] = partsArray.slice(partsArray.length / 2).join(this._effectiveDelimiter);
306
+
307
+ return valuesArray;
308
+ }
309
+
310
+ /**
311
+ * 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
312
+ * @private
313
+ */
314
+ _extractLastTimestamp(value: string) {
315
+ if (!value || !this._checkValueValidity(value)) {
316
+ return undefined;
317
+ }
318
+
319
+ const dateStrings = this._splitValueByDelimiter(value);
320
+ if (dateStrings[1]) {
321
+ const parsedDate = this.getFormat().parse(dateStrings[1], true) as Date;
322
+ return parsedDate.getTime() / 1000;
323
+ }
324
+
325
+ return undefined;
326
+ }
327
+
328
+ /**
329
+ * Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty
330
+ * @private
331
+ */
332
+ _extractFirstTimestamp(value: string) {
333
+ if (!value || !this._checkValueValidity(value)) {
334
+ return undefined;
335
+ }
336
+
337
+ const dateStrings = this._splitValueByDelimiter(value); // at least one item guaranteed due to the checks above (non-empty and valid)
338
+
339
+ const parsedDate = this.getFormat().parse(dateStrings[0], true) as Date;
340
+ return parsedDate.getTime() / 1000;
341
+ }
342
+
343
+ /**
344
+ * Checks if a value is valid against the current date format of the DatePicker.
345
+ * @public
346
+ * @param value A value to be tested against the current date format
347
+ */
348
+ isValid(value: string): boolean {
349
+ if (value === "" || value === undefined) {
350
+ return true;
351
+ }
352
+
353
+ return !!this.getFormat().parse(value);
354
+ }
355
+
356
+ isValidRange(value: string): boolean {
357
+ const parts = this._splitValueByDelimiter(value);
358
+ return parts.length <= 2 && parts.every(dateString => this.isValid(dateString)); // must be at most 2 dates and each must be valid
359
+ }
360
+
361
+ isInValidRange(value: string): boolean {
362
+ if (value === "" || value === undefined) {
363
+ return true;
364
+ }
365
+
366
+ const calendarDate = this._getCalendarDateFromString(value);
367
+
368
+ if (!calendarDate || !this._minDate || !this._maxDate) {
369
+ return false;
370
+ }
371
+
372
+ return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
373
+ }
374
+
375
+ /**
376
+ * Checks if a date is between the minimum and maximum date.
377
+ * @public
378
+ * @param value A value to be checked
379
+ */
380
+ isInValidRangeRange(value: string): boolean {
381
+ return this._splitValueByDelimiter(value).every(dateString => this.isInValidRange(dateString));
382
+ }
383
+
384
+ _checkValueValidity(value: string): boolean {
385
+ let result = false;
386
+ if (value === "") {
387
+ return true;
388
+ }
280
389
  if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
281
- this.value = formattedValues[0];
282
- this.selectedDates = formattedValues[0];
390
+ result = this.isValid(value) && this.isInValidRange(value);
391
+ }
392
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
393
+ result = this.isValidRange(value) && this.isInValidRangeRange(value);
394
+ }
395
+ return result;
396
+ }
397
+
398
+ /**
399
+ * Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp
400
+ * @private
401
+ */
402
+ _buildValue(firstDateTimestamp: number | undefined, lastDateTimestamp: number | undefined) {
403
+ this._prevDelimiter = this._effectiveDelimiter;
404
+ if (firstDateTimestamp) {
405
+ const firstDateString = this._getStringFromTimestamp(firstDateTimestamp * 1000);
406
+
407
+ if (!lastDateTimestamp) {
408
+ return firstDateString;
409
+ }
410
+
411
+ const lastDateString = this._getStringFromTimestamp(lastDateTimestamp * 1000);
412
+ return `${firstDateString} ${this._effectiveDelimiter} ${lastDateString}`;
283
413
  }
284
414
 
415
+ return "";
416
+ }
417
+
418
+ /**
419
+ * 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)
420
+ * @protected
421
+ */
422
+ normalizeValue(value: string) {
423
+ let result = "";
424
+ if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
425
+ if (value === "") {
426
+ return value;
427
+ }
428
+ result = this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC
429
+ }
285
430
  if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
286
- if (dates.length < 2) {
287
- return;
431
+ const firstDateTimestamp = this._extractFirstTimestamp(value);
432
+ const lastDateTimestamp = this._extractLastTimestamp(value);
433
+ if (firstDateTimestamp && lastDateTimestamp && firstDateTimestamp > lastDateTimestamp) { // if both are timestamps (not undefined), flip if necessary
434
+ return this._buildValue(lastDateTimestamp, firstDateTimestamp);
288
435
  }
436
+ result = this._buildValue(firstDateTimestamp, lastDateTimestamp);
437
+ }
438
+ return result;
439
+ }
440
+
441
+ _updateValueState() {
442
+ const valid = this._checkValueValidity(this.value);
443
+ const previousValueState = this.valueState;
444
+
445
+ this.valueState = valid ? ValueState.Standard : ValueState.Error;
446
+
447
+ const eventPrevented = !this.fireEvent("value-state-change", { valueState: this.valueState, valid });
448
+
449
+ if (eventPrevented) {
450
+ this.valueState = previousValueState;
451
+ }
452
+ }
289
453
 
290
- this.value = `${formattedValues[0]} - ${formattedValues[1]}`;
291
- this.selectedDates = `${formattedValues[0]}, ${formattedValues[1]}`;
454
+ _buildEventData(value: string): DatePickerSelectionChangeEventDetail {
455
+ if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
456
+ return {
457
+ selectedDates: [this._extractFirstTimestamp(value), this._extractLastTimestamp(value)],
458
+ selectedValues: this._splitValueByDelimiter(this.value),
459
+ timestamp: this._extractLastTimestamp(value),
460
+ };
292
461
  }
462
+ return {
463
+ selectedDates: [this._extractFirstTimestamp(value)],
464
+ selectedValues: [value],
465
+ timestamp: this._extractFirstTimestamp(value),
466
+ };
467
+ }
293
468
 
294
- this.fireEvent(
295
- "selection-change",
296
- {
297
- timestamp,
298
- selectedDates: [...dates],
299
- selectedValues: formattedValues,
300
- },
301
- true,
302
- );
469
+ _updateValueAndFireEvents(value: string, normalizeValue: boolean, e?: CustomEvent<CalendarSelectedDatesChangeEventDetail> | null) {
470
+ const valid = this._checkValueValidity(value);
303
471
 
304
- this.hideCalendar();
472
+ if (valid && normalizeValue) {
473
+ value = this.normalizeValue(value); // transform valid values (in any format) to the correct format
474
+ }
475
+
476
+ this.value = value;
477
+ this._updateValueState(); // Change the value state to Error/None, but only if needed
478
+
479
+ if (!valid) { return; }
480
+
481
+ if (e) {
482
+ const { dates, timestamp, values } = e.detail;
483
+
484
+ this.fireEvent(
485
+ "selection-change",
486
+ {
487
+ timestamp,
488
+ selectedDates: [...dates],
489
+ selectedValues: values,
490
+ },
491
+ true,
492
+ );
493
+ } else {
494
+ this.fireEvent(
495
+ "selection-change",
496
+ this._buildEventData(value),
497
+ true,
498
+ );
499
+ }
500
+ }
501
+
502
+ _onInputChange(e: Event) {
503
+ this._updateValueAndFireEvents((e.target as UDExDatePicker).value, true);
305
504
  }
306
505
 
307
506
  handleInputClick(e: Event | KeyboardEvent): void {
@@ -314,23 +513,17 @@ class UDExDatePicker extends UI5Element {
314
513
  this.showCalendar();
315
514
  }
316
515
 
317
- handleInputMouseDown(e: Event): void {
318
- e.preventDefault();
319
- }
320
-
321
- handleInputKeyDown(e: KeyboardEvent): void {
322
- if (e.key === "Enter") {
323
- this.handleInputClick(e);
324
- }
325
- }
326
-
327
516
  /**
328
517
  * Used to provide selectedDates to the calendar based on the component's state
329
518
  * Override in derivatives to provide different rules for setting the calendar's selected dates
330
519
  * @protected
331
520
  */
332
521
  get _calendarSelectedDates(): Array<string> {
333
- if (this.value) {
522
+ if (this._tempValue) {
523
+ return [this._tempValue];
524
+ }
525
+
526
+ if (this.value && this._checkValueValidity(this.value)) {
334
527
  return this.value.split(" - ");
335
528
  }
336
529
 
@@ -3,8 +3,8 @@
3
3
  class="udex-date-picker__popover"
4
4
  placement-type="Bottom"
5
5
  horizontal-align="Left"
6
- @after-close="{{_afterDropdownClose}}"
7
- @after-open="{{_afterDropdownOpen}}"
6
+ @ui5-after-close="{{_afterDropdownClose}}"
7
+ @ui5-after-open="{{_afterDropdownOpen}}"
8
8
  >
9
9
  <ui5-calendar
10
10
  class="udex-date-picker__calendar"
@@ -67,7 +67,7 @@
67
67
  class="udex-filter-menu__result-btn"
68
68
  size="Medium"
69
69
  design="Primary"
70
- ?disabled="{{disabledResultBtn}}"
70
+ ?disabled="{{disabledButtons}}"
71
71
  @keydown="{{handleKeyDownResultBtn}}"
72
72
  @click="{{handleResult}}">
73
73
  {{getResultLabelText}}
@@ -79,6 +79,7 @@
79
79
  size="Medium"
80
80
  design="Tertiary"
81
81
  @keydown="{{handleKeyDownResetBtn}}"
82
+ ?disabled="{{disabledButtons}}"
82
83
  @click="{{handleReset}}">
83
84
  {{getResetLabelText}}
84
85
  </udex-button>
package/src/FilterMenu.ts CHANGED
@@ -3,7 +3,6 @@ import event from "@ui5/webcomponents-base/dist/decorators/event.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
6
- import "@ui5/webcomponents/dist/Icon.js";
7
6
  import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
8
7
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
9
8
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
@@ -11,7 +10,8 @@ import {
11
10
  isTabPrevious, isTabNext, isEscape, isSpace, isEnter,
12
11
  } from "@ui5/webcomponents-base/dist/Keys.js";
13
12
  import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
14
- import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
13
+ import Popover from "@ui5/webcomponents/dist/Popover.js";
14
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
15
15
  import UDExList from "./List.js";
16
16
  import UDExListItem from "./ListItem.js";
17
17
  import UDExListGroupHeader from "./ListGroupHeader.js";
@@ -59,7 +59,8 @@ import SearchableListCss from "./generated/themes/SearchableList.css.js";
59
59
  styles: [FilterMenuCss, SearchableListCss],
60
60
  template: FilterMenuTemplate,
61
61
  dependencies: [
62
- ResponsivePopover,
62
+ Popover,
63
+ Icon,
63
64
  UDExFilterMenuItem,
64
65
  UDExFilterMenuGroupHeader,
65
66
  UDExFilterMenuSelectAll,
@@ -293,8 +294,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
293
294
 
294
295
  _trigger!: UDExButton;
295
296
  _search!: UDExSearch;
296
- _hasFooterButtons!: boolean;
297
- _popover!: ResponsivePopover;
297
+ _popover!: Popover;
298
298
  _breakpointSizeXS = 640;
299
299
 
300
300
  onEnterDOM(): void {
@@ -311,7 +311,6 @@ class UDExFilterMenu extends UDExSearchableListBase {
311
311
  this._search = this.getSearch();
312
312
  this._popover = this.getPopover();
313
313
  this._trigger = this.getTriggerButton();
314
- this._hasFooterButtons = this.hasFooterButtons;
315
314
  }
316
315
 
317
316
  handleSelectAll(e:CustomEvent): void {
@@ -352,7 +351,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
352
351
  }
353
352
 
354
353
  handleResult(): void {
355
- if (!this.disabledResultBtn) {
354
+ if (!this.disabledButtons) {
356
355
  this._popover.close();
357
356
  this.fireEvent("result-click", {
358
357
  selectedItems: this.selectedItems,
@@ -361,7 +360,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
361
360
  }
362
361
 
363
362
  handleKeyDownList(e: KeyboardEvent): void {
364
- const isTabNextPress = isTabNext(e) && !this._hasFooterButtons;
363
+ const isTabNextPress = isTabNext(e) && !this.hasFooterButtons;
365
364
  const isTabPrevPress = isTabPrevious(e) && !this._search;
366
365
  const target = e.target as HTMLElement;
367
366
  const isSearchResetTrigger = target === this._search;
@@ -425,7 +424,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
425
424
  }
426
425
 
427
426
  getSearch(): UDExSearch {
428
- return this.shadowRoot!.querySelector<UDExSearch>("udex-search")!;
427
+ return this.shadowRoot!.querySelector<UDExSearch>("[udex-search]")!;
429
428
  }
430
429
 
431
430
  _dropdownBeforeOpen(): void {
@@ -472,7 +471,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
472
471
  return hasLabel ? this.resetBtnLabel : UDExFilterMenu.i18nBundle.getText(RESET);
473
472
  }
474
473
 
475
- get disabledResultBtn(): boolean {
474
+ get disabledButtons(): boolean {
476
475
  return !this.selectedItems.length && !this.selectAll;
477
476
  }
478
477
 
@@ -493,11 +492,11 @@ class UDExFilterMenu extends UDExSearchableListBase {
493
492
  }
494
493
 
495
494
  get hasFooterButtons(): boolean {
496
- return (this.hasResultBtn || this.hasResetBtn) && this.modeMultiSelect;
495
+ return (this.hasResultBtn || this.hasResetBtn) && !this.disabledButtons;
497
496
  }
498
497
 
499
498
  get hasResultBtn(): boolean {
500
- return !this.hideResultBtn && !this.disabledResultBtn;
499
+ return !this.hideResultBtn && !this.disabledButtons;
501
500
  }
502
501
 
503
502
  get hasResetBtn(): boolean {
@@ -508,8 +507,8 @@ class UDExFilterMenu extends UDExSearchableListBase {
508
507
  return this.shadowRoot!.querySelector<UDExButton>("#filterMenuTrigger")!;
509
508
  }
510
509
 
511
- getPopover(): ResponsivePopover {
512
- return this.shadowRoot!.querySelector<ResponsivePopover>("[ui5-popover]")!;
510
+ getPopover(): Popover {
511
+ return this.shadowRoot!.querySelector<Popover>("[ui5-popover]")!;
513
512
  }
514
513
 
515
514
  getItems(): Array<UDExListItemBase> {
package/src/Footer.ts CHANGED
@@ -14,13 +14,17 @@ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
14
14
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
15
15
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
16
16
  import { getLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
17
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
18
+ import UDExAccordionItem from "./AccordionItem.js";
19
+ import UDExButton from "./Button.js";
20
+ import UDExAccordion from "./Accordion.js";
21
+ import UDExDivider from "./Divider.js";
17
22
 
18
23
  // Template
19
24
  import FooterTemplate from "./generated/templates/FooterTemplate.lit.js";
20
25
 
21
26
  // Styles
22
27
  import FooterCss from "./generated/themes/Footer.css";
23
- import UDExAccordionItem from "./AccordionItem.js";
24
28
  import {
25
29
  ABOUT_SAP,
26
30
  CHAT_WITH_US,
@@ -116,7 +120,7 @@ export const FooterDetailedEvent = {
116
120
  renderer: litRender,
117
121
  styles: [FooterCss],
118
122
  template: FooterTemplate,
119
- dependencies: [UDExAccordionItem],
123
+ dependencies: [UDExAccordion, UDExAccordionItem, Icon, UDExButton, UDExDivider],
120
124
  })
121
125
  /**
122
126
  * Triggered on click interaction with logo in footer
package/src/HeroBanner.ts CHANGED
@@ -4,7 +4,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
5
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
6
6
  import { isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
7
- import "@ui5/webcomponents/dist/Icon.js";
7
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
8
8
  import "@ui5/webcomponents-icons/dist/media-play.js";
9
9
  import "@ui5/webcomponents-icons/dist/media-pause.js";
10
10
 
@@ -31,6 +31,7 @@ export enum imageLoadingStrategies {
31
31
  renderer: litRender,
32
32
  styles: HeroBannerCss,
33
33
  template: HeroBannerTemplate,
34
+ dependencies: [Icon],
34
35
  })
35
36
  class UDExHeroBanner extends UI5Element {
36
37
  /**
package/src/Link.ts CHANGED
@@ -2,6 +2,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
2
2
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
3
3
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
4
  import Link from "@ui5/webcomponents/dist/Link.js";
5
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
5
6
 
6
7
  import linkCss from "@ui5/webcomponents/dist/generated/themes/Link.css.js";
7
8
  import LinkTemplate from "./generated/templates/LinkTemplate.lit.js";
@@ -34,6 +35,7 @@ import IconPlacement from "./types/IconPlacement.js";
34
35
  renderer: litRender,
35
36
  styles: [linkCss, LinkCss],
36
37
  template: LinkTemplate,
38
+ dependencies: [Icon],
37
39
  })
38
40
 
39
41
  class UDExLink extends Link {
@@ -8,6 +8,7 @@ import UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
8
8
  import { ListMode } from "./types/List.js";
9
9
  import { SELECT_ALL } from "./generated/i18n/i18n-defaults.js";
10
10
  import ListSelectAllTemplate from "./generated/templates/ListSelectAllTemplate.lit";
11
+ import UDExListItem from "./ListItem.js";
11
12
 
12
13
  // Styles
13
14
  import ListGroupHeaderCss from "./generated/themes/ListGroupHeader.css";
@@ -34,6 +35,7 @@ import ListGroupHeaderCss from "./generated/themes/ListGroupHeader.css";
34
35
  renderer: litRender,
35
36
  styles: ListGroupHeaderCss,
36
37
  template: ListSelectAllTemplate,
38
+ dependencies: [UDExListItem],
37
39
  })
38
40
 
39
41
  @event("select-all", {
@@ -15,7 +15,7 @@
15
15
  href="{{href}}"
16
16
  aria-label="{{accessibleLabel}}"
17
17
  aria-describedby="{{ariaDescribedBy}}"
18
- @click="{{handleNavigationItemClick}}">
18
+ @click="{{handleItemClick}}">
19
19
  {{> content}}
20
20
  </a>
21
21
  {{else if isProfileBtn}}
@@ -29,7 +29,7 @@
29
29
  aria-haspopup="{{hasDropdownSlot}}"
30
30
  aria-label="{{accessibleLabel}}"
31
31
  @keydown="{{handleKeyDown}}"
32
- @click="{{handleNavigationItemClick}}">
32
+ @click="{{handleItemClick}}">
33
33
  {{> content}}
34
34
  </span>
35
35
  {{#if showDropdown}}
@@ -45,7 +45,7 @@
45
45
  aria-haspopup="{{hasDropdownSlot}}"
46
46
  aria-label="{{accessibleLabel}}"
47
47
  @keydown="{{handleKeyDown}}"
48
- @click="{{handleNavigationItemClick}}">
48
+ @click="{{handleItemClick}}">
49
49
  {{> content}}
50
50
  </button>
51
51
  {{#if showDropdown}}