@m3e/web 2.1.3 → 2.2.1

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 (210) hide show
  1. package/README.md +5 -2
  2. package/dist/all.js +2916 -391
  3. package/dist/all.js.map +1 -1
  4. package/dist/all.min.js +77 -41
  5. package/dist/all.min.js.map +1 -1
  6. package/dist/app-bar.js +14 -7
  7. package/dist/app-bar.js.map +1 -1
  8. package/dist/app-bar.min.js +1 -1
  9. package/dist/app-bar.min.js.map +1 -1
  10. package/dist/autocomplete.js +59 -23
  11. package/dist/autocomplete.js.map +1 -1
  12. package/dist/autocomplete.min.js +1 -1
  13. package/dist/autocomplete.min.js.map +1 -1
  14. package/dist/bottom-sheet.js +8 -27
  15. package/dist/bottom-sheet.js.map +1 -1
  16. package/dist/bottom-sheet.min.js +1 -1
  17. package/dist/bottom-sheet.min.js.map +1 -1
  18. package/dist/calendar.js +1082 -0
  19. package/dist/calendar.js.map +1 -0
  20. package/dist/calendar.min.js +43 -0
  21. package/dist/calendar.min.js.map +1 -0
  22. package/dist/chips.js +2 -6
  23. package/dist/chips.js.map +1 -1
  24. package/dist/chips.min.js +1 -1
  25. package/dist/chips.min.js.map +1 -1
  26. package/dist/core-a11y.js +23 -9
  27. package/dist/core-a11y.js.map +1 -1
  28. package/dist/core-a11y.min.js +4 -4
  29. package/dist/core-a11y.min.js.map +1 -1
  30. package/dist/core-anchoring.js +135 -15
  31. package/dist/core-anchoring.js.map +1 -1
  32. package/dist/core-anchoring.min.js +1 -1
  33. package/dist/core-anchoring.min.js.map +1 -1
  34. package/dist/core.js +101 -1
  35. package/dist/core.js.map +1 -1
  36. package/dist/core.min.js +1 -1
  37. package/dist/core.min.js.map +1 -1
  38. package/dist/css-custom-data.json +1146 -646
  39. package/dist/custom-elements.json +31433 -26898
  40. package/dist/datepicker.js +573 -0
  41. package/dist/datepicker.js.map +1 -0
  42. package/dist/datepicker.min.js +7 -0
  43. package/dist/datepicker.min.js.map +1 -0
  44. package/dist/drawer-container.js +10 -4
  45. package/dist/drawer-container.js.map +1 -1
  46. package/dist/drawer-container.min.js +1 -1
  47. package/dist/drawer-container.min.js.map +1 -1
  48. package/dist/fab-menu.js +1 -1
  49. package/dist/fab-menu.js.map +1 -1
  50. package/dist/fab-menu.min.js +1 -1
  51. package/dist/fab-menu.min.js.map +1 -1
  52. package/dist/form-field.js +2 -6
  53. package/dist/form-field.js.map +1 -1
  54. package/dist/form-field.min.js +3 -3
  55. package/dist/form-field.min.js.map +1 -1
  56. package/dist/html-custom-data.json +553 -187
  57. package/dist/menu.js +3 -7
  58. package/dist/menu.js.map +1 -1
  59. package/dist/menu.min.js +1 -1
  60. package/dist/menu.min.js.map +1 -1
  61. package/dist/nav-bar.js +17 -7
  62. package/dist/nav-bar.js.map +1 -1
  63. package/dist/nav-bar.min.js +1 -1
  64. package/dist/nav-bar.min.js.map +1 -1
  65. package/dist/nav-menu.js +3 -11
  66. package/dist/nav-menu.js.map +1 -1
  67. package/dist/nav-menu.min.js +1 -1
  68. package/dist/nav-menu.min.js.map +1 -1
  69. package/dist/nav-rail.js +2 -6
  70. package/dist/nav-rail.js.map +1 -1
  71. package/dist/nav-rail.min.js +1 -1
  72. package/dist/nav-rail.min.js.map +1 -1
  73. package/dist/option.js +4 -8
  74. package/dist/option.js.map +1 -1
  75. package/dist/option.min.js +1 -1
  76. package/dist/option.min.js.map +1 -1
  77. package/dist/paginator.js.map +1 -1
  78. package/dist/paginator.min.js.map +1 -1
  79. package/dist/search.js +821 -0
  80. package/dist/search.js.map +1 -0
  81. package/dist/search.min.js +7 -0
  82. package/dist/search.min.js.map +1 -0
  83. package/dist/segmented-button.js +2 -2
  84. package/dist/segmented-button.js.map +1 -1
  85. package/dist/segmented-button.min.js.map +1 -1
  86. package/dist/select.js +4 -15
  87. package/dist/select.js.map +1 -1
  88. package/dist/select.min.js +1 -1
  89. package/dist/select.min.js.map +1 -1
  90. package/dist/snackbar.js +2 -6
  91. package/dist/snackbar.js.map +1 -1
  92. package/dist/snackbar.min.js +1 -1
  93. package/dist/snackbar.min.js.map +1 -1
  94. package/dist/split-button.js +1 -1
  95. package/dist/split-button.js.map +1 -1
  96. package/dist/split-button.min.js.map +1 -1
  97. package/dist/src/all.d.ts +3 -0
  98. package/dist/src/all.d.ts.map +1 -1
  99. package/dist/src/app-bar/AppBarElement.d.ts +6 -4
  100. package/dist/src/app-bar/AppBarElement.d.ts.map +1 -1
  101. package/dist/src/autocomplete/AutocompleteElement.d.ts +7 -2
  102. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  103. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts +12 -0
  104. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts.map +1 -0
  105. package/dist/src/autocomplete/QueryEventDetail.d.ts +3 -8
  106. package/dist/src/autocomplete/QueryEventDetail.d.ts.map +1 -1
  107. package/dist/src/autocomplete/index.d.ts +1 -0
  108. package/dist/src/autocomplete/index.d.ts.map +1 -1
  109. package/dist/src/bottom-sheet/BottomSheetElement.d.ts.map +1 -1
  110. package/dist/src/calendar/CalendarElement.d.ts +213 -0
  111. package/dist/src/calendar/CalendarElement.d.ts.map +1 -0
  112. package/dist/src/calendar/CalendarView.d.ts +3 -0
  113. package/dist/src/calendar/CalendarView.d.ts.map +1 -0
  114. package/dist/src/calendar/CalendarViewElementBase.d.ts +28 -0
  115. package/dist/src/calendar/CalendarViewElementBase.d.ts.map +1 -0
  116. package/dist/src/calendar/MonthViewElement.d.ts +36 -0
  117. package/dist/src/calendar/MonthViewElement.d.ts.map +1 -0
  118. package/dist/src/calendar/MultiYearViewElement.d.ts +27 -0
  119. package/dist/src/calendar/MultiYearViewElement.d.ts.map +1 -0
  120. package/dist/src/calendar/YearViewElement.d.ts +27 -0
  121. package/dist/src/calendar/YearViewElement.d.ts.map +1 -0
  122. package/dist/src/calendar/index.d.ts +7 -0
  123. package/dist/src/calendar/index.d.ts.map +1 -0
  124. package/dist/src/calendar/utils.d.ts +24 -0
  125. package/dist/src/calendar/utils.d.ts.map +1 -0
  126. package/dist/src/chips/InputChipSetElement.d.ts.map +1 -1
  127. package/dist/src/core/a11y/FocusTrapElement.d.ts.map +1 -1
  128. package/dist/src/core/a11y/InteractivityChecker.d.ts.map +1 -1
  129. package/dist/src/core/anchoring/AnchorOptions.d.ts +1 -1
  130. package/dist/src/core/anchoring/AnchorOptions.d.ts.map +1 -1
  131. package/dist/src/core/anchoring/FloatingPanelElement.d.ts +18 -3
  132. package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
  133. package/dist/src/core/anchoring/positionAnchor.d.ts.map +1 -1
  134. package/dist/src/core/shared/controllers/InertController.d.ts +19 -0
  135. package/dist/src/core/shared/controllers/InertController.d.ts.map +1 -0
  136. package/dist/src/core/shared/controllers/index.d.ts +1 -0
  137. package/dist/src/core/shared/controllers/index.d.ts.map +1 -1
  138. package/dist/src/core/shared/converters/dateConverter.d.ts +4 -0
  139. package/dist/src/core/shared/converters/dateConverter.d.ts.map +1 -0
  140. package/dist/src/core/shared/converters/index.d.ts +1 -0
  141. package/dist/src/core/shared/converters/index.d.ts.map +1 -1
  142. package/dist/src/core/shared/utils/index.d.ts +1 -0
  143. package/dist/src/core/shared/utils/index.d.ts.map +1 -1
  144. package/dist/src/core/shared/utils/registerStyleSheet.d.ts +7 -0
  145. package/dist/src/core/shared/utils/registerStyleSheet.d.ts.map +1 -0
  146. package/dist/src/datepicker/DatepickerElement.d.ts +239 -0
  147. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -0
  148. package/dist/src/datepicker/DatepickerToggleElement.d.ts +21 -0
  149. package/dist/src/datepicker/DatepickerToggleElement.d.ts.map +1 -0
  150. package/dist/src/datepicker/DatepickerVariant.d.ts +3 -0
  151. package/dist/src/datepicker/DatepickerVariant.d.ts.map +1 -0
  152. package/dist/src/datepicker/index.d.ts +4 -0
  153. package/dist/src/datepicker/index.d.ts.map +1 -0
  154. package/dist/src/drawer-container/DrawerContainerElement.d.ts +2 -2
  155. package/dist/src/drawer-container/DrawerContainerElement.d.ts.map +1 -1
  156. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  157. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  158. package/dist/src/nav-bar/NavBarElement.d.ts +3 -1
  159. package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
  160. package/dist/src/nav-menu/NavMenuElement.d.ts.map +1 -1
  161. package/dist/src/nav-menu/NavMenuItemElement.d.ts.map +1 -1
  162. package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
  163. package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
  164. package/dist/src/paginator/PageEventDetail.d.ts +6 -11
  165. package/dist/src/paginator/PageEventDetail.d.ts.map +1 -1
  166. package/dist/src/paginator/PaginatorElement.d.ts +2 -2
  167. package/dist/src/paginator/PaginatorElement.d.ts.map +1 -1
  168. package/dist/src/paginator/PaginatorPageEventDetail.d.ts +12 -0
  169. package/dist/src/paginator/PaginatorPageEventDetail.d.ts.map +1 -0
  170. package/dist/src/paginator/index.d.ts +1 -0
  171. package/dist/src/paginator/index.d.ts.map +1 -1
  172. package/dist/src/search/SearchBarElement.d.ts +92 -0
  173. package/dist/src/search/SearchBarElement.d.ts.map +1 -0
  174. package/dist/src/search/SearchViewElement.d.ts +150 -0
  175. package/dist/src/search/SearchViewElement.d.ts.map +1 -0
  176. package/dist/src/search/SearchViewMode.d.ts +3 -0
  177. package/dist/src/search/SearchViewMode.d.ts.map +1 -0
  178. package/dist/src/search/SearchViewQueryEventDetail.d.ts +12 -0
  179. package/dist/src/search/SearchViewQueryEventDetail.d.ts.map +1 -0
  180. package/dist/src/search/index.d.ts +5 -0
  181. package/dist/src/search/index.d.ts.map +1 -0
  182. package/dist/src/search/styles/SearchBarStyle.d.ts +12 -0
  183. package/dist/src/search/styles/SearchBarStyle.d.ts.map +1 -0
  184. package/dist/src/search/styles/SearchBarToken.d.ts +27 -0
  185. package/dist/src/search/styles/SearchBarToken.d.ts.map +1 -0
  186. package/dist/src/search/styles/SearchViewStyle.d.ts +12 -0
  187. package/dist/src/search/styles/SearchViewStyle.d.ts.map +1 -0
  188. package/dist/src/search/styles/SearchViewToken.d.ts +26 -0
  189. package/dist/src/search/styles/SearchViewToken.d.ts.map +1 -0
  190. package/dist/src/search/styles/index.d.ts +3 -0
  191. package/dist/src/search/styles/index.d.ts.map +1 -0
  192. package/dist/src/segmented-button/ButtonSegmentElement.d.ts +2 -2
  193. package/dist/src/select/SelectElement.d.ts.map +1 -1
  194. package/dist/src/snackbar/SnackbarElement.d.ts.map +1 -1
  195. package/dist/src/split-button/SplitButtonElement.d.ts +1 -1
  196. package/dist/src/stepper/StepperElement.d.ts +3 -1
  197. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  198. package/dist/src/switch/SwitchElement.d.ts +2 -2
  199. package/dist/stepper.js +18 -12
  200. package/dist/stepper.js.map +1 -1
  201. package/dist/stepper.min.js +1 -1
  202. package/dist/stepper.min.js.map +1 -1
  203. package/dist/switch.js +2 -2
  204. package/dist/switch.js.map +1 -1
  205. package/dist/switch.min.js.map +1 -1
  206. package/dist/tooltip.js +1 -1
  207. package/dist/tooltip.js.map +1 -1
  208. package/dist/tooltip.min.js +1 -1
  209. package/dist/tooltip.min.js.map +1 -1
  210. package/package.json +16 -1
@@ -0,0 +1,573 @@
1
+ /**
2
+ * @license MIT
3
+ * Copyright (c) 2025 matraic
4
+ * See LICENSE file in the project root for full license text.
5
+ */
6
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from 'tslib';
7
+ import { LitElement, nothing, html, unsafeCSS, css } from 'lit';
8
+ import { state, query, property } from 'lit/decorators.js';
9
+ import { ifDefined } from 'lit/directives/if-defined.js';
10
+ import { SuppressInitialAnimation, ReconnectedCallback, AttachInternals, Role, ScrollLockController, InertController, deleteCustomState, addCustomState, setCustomState, DesignToken, dateConverter, customElement, HtmlFor, ActionElementBase } from '@m3e/web/core';
11
+ import { positionAnchor } from '@m3e/web/core/anchoring';
12
+ import { M3eDirectionality } from '@m3e/web/core/bidi';
13
+ import { M3eBreakpointObserver, Breakpoint } from '@m3e/web/core/layout';
14
+ import '@m3e/web/core/a11y';
15
+ import '@m3e/web/button';
16
+ import '@m3e/web/calendar';
17
+
18
+ var _M3eDatepickerElement_instances, _M3eDatepickerElement_breakpointUnobserve, _M3eDatepickerElement_trigger, _M3eDatepickerElement_anchor, _M3eDatepickerElement_anchorCleanup, _M3eDatepickerElement_scrollLockController, _M3eDatepickerElement_inertController, _M3eDatepickerElement_documentClickHandler, _M3eDatepickerElement_documentKeyDownHandler, _M3eDatepickerElement_toggleHandler, _M3eDatepickerElement_renderHeader, _M3eDatepickerElement_handleDocumentClick, _M3eDatepickerElement_handleCalendarChange, _M3eDatepickerElement_handleClearClick, _M3eDatepickerElement_handleDismissClick, _M3eDatepickerElement_handleConfirmClick, _M3eDatepickerElement_handleDocumentKeyDown, _M3eDatepickerElement_initBreakpointMonitoring, _M3eDatepickerElement_updateVariant, _M3eDatepickerElement_updatePosition, _M3eDatepickerElement_clearAnchoring, _M3eDatepickerElement_clearSelectionState;
19
+ var M3eDatepickerElement_1;
20
+ /**
21
+ * Presents a date picker on a temporary surface.
22
+ *
23
+ * @description
24
+ * The `m3e-datepicker` component provides a date‑selection experience
25
+ * consistent with Material 3 guidance for layout, motion, and accessibility.
26
+ * It displays a temporary surface that allows users to select a date or date
27
+ * range using calendar-based views. The picker supports month, year, and
28
+ * multi‑year views, enabling users to navigate across time efficiently.
29
+ *
30
+ * While open, the picker uses a focused selection flow. Users review their
31
+ * choice and complete the interaction through confirm, dismiss, or clear
32
+ * actions, ensuring intentional updates to the field or control that invoked it.
33
+ *
34
+ * It accepts and emits plain `Date` values, allowing applications to apply their
35
+ * own formatting, parsing, and localization.
36
+ *
37
+ * @tag m3e-datepicker
38
+ *
39
+ * @attr variant - The appearance variant of the picker.
40
+ * @attr clearable - Whether the user can clear the selected date and close the picker.
41
+ * @attr date - The selected date.
42
+ * @attr max-date - The maximum date that can be selected.
43
+ * @attr min-date - The minimum date that can be selected.
44
+ * @attr range-end - End of a date range.
45
+ * @attr range-start - Start of a date range.
46
+ * @attr start-at - A date specifying the period (month or year) to start the calendar in.
47
+ * @attr start-view - The initial view used to select a date.
48
+ * @attr previous-month-label - The accessible label given to the button used to move to the previous month.
49
+ * @attr next-month-label - The accessible label given to the button used to move to the next month.
50
+ * @attr previous-year-label - The accessible label given to the button used to move to the previous year.
51
+ * @attr next-year-label - The accessible label given to the button used to move to the next year.
52
+ * @attr previous-multi-year-label - The accessible label given to the button used to move to the previous 24 years.
53
+ * @attr next-multi-year-label - The accessible label given to the button used to move to the next 24 years.
54
+ * @attr clear-label - The label given to the button used clear the selected date and close the picker.
55
+ * @attr confirm-label - The label given to the button used apply the selected date and close the picker.
56
+ * @attr dismiss-label - The label given to the button used discard the selected date and close the picker.
57
+ * @attr label - The label given to the the picker.
58
+ *
59
+ * @fires change - Dispatched when the selected date changes.
60
+ * @fires beforetoggle - Dispatched before the toggle state changes.
61
+ * @fires toggle - Dispatched after the toggle state has changed.
62
+ *
63
+ * @cssprop --m3e-datepicker-container-padding-block - Block‑axis padding of the date picker container.
64
+ * @cssprop --m3e-datepicker-container-padding-inline - Inline‑axis padding of the date picker container.
65
+ * @cssprop --m3e-datepicker-container-color - Background color of the standard container surface.
66
+ * @cssprop --m3e-datepicker-container-elevation - Elevation shadow applied to the container surface.
67
+ * @cssprop --m3e-datepicker-modal-headline-font-size - Font size used for the modal headline text.
68
+ * @cssprop --m3e-datepicker-modal-headline-font-weight - Font weight used for the modal headline text.
69
+ * @cssprop --m3e-datepicker-modal-headline-line-height - Line height used for the modal headline text.
70
+ * @cssprop --m3e-datepicker-modal-headline-tracking - Letter spacing used for the modal headline text.
71
+ * @cssprop --m3e-datepicker-modal-supporting-text-font-size - Font size used for supporting text in modal mode.
72
+ * @cssprop --m3e-datepicker-modal-supporting-text-font-weight - Font weight used for supporting text in modal mode.
73
+ * @cssprop --m3e-datepicker-modal-supporting-text-line-height - Line height used for supporting text in modal mode.
74
+ * @cssprop --m3e-datepicker-modal-supporting-text-tracking - Letter spacing used for supporting text in modal mode.
75
+ * @cssprop --m3e-datepicker-actions-padding-inline - Inline‑axis padding of the action row.
76
+ * @cssprop --m3e-datepicker-docked-container-color - Background color of the container in docked mode.
77
+ * @cssprop --m3e-datepicker-docked-container-shape - Corner radius of the container in docked mode.
78
+ * @cssprop --m3e-datepicker-modal-container-color - Background color of the container in modal mode.
79
+ * @cssprop --m3e-datepicker-modal-container-shape - Corner radius of the container in modal mode.
80
+ * @cssprop --m3e-divider-thickness - Thickness of divider elements within the picker.
81
+ * @cssprop --m3e-divider-color - Color of divider rules within the picker.
82
+ * @cssprop --m3e-dialog-scrim-color - Base color used for the modal scrim behind the picker.
83
+ * @cssprop --m3e-dialog-scrim-opacity - Opacity applied to the scrim color in modal mode.
84
+ */
85
+ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement extends SuppressInitialAnimation(ReconnectedCallback(AttachInternals(Role(LitElement, "dialog")))) {
86
+ constructor() {
87
+ super(...arguments);
88
+ _M3eDatepickerElement_instances.add(this);
89
+ /** @private */
90
+ _M3eDatepickerElement_breakpointUnobserve.set(this, void 0);
91
+ /** @private */
92
+ _M3eDatepickerElement_trigger.set(this, void 0);
93
+ /** @private */
94
+ _M3eDatepickerElement_anchor.set(this, void 0);
95
+ /** @private */
96
+ _M3eDatepickerElement_anchorCleanup.set(this, void 0);
97
+ /** @private */
98
+ _M3eDatepickerElement_scrollLockController.set(this, new ScrollLockController(this));
99
+ /** @private */
100
+ _M3eDatepickerElement_inertController.set(this, new InertController(this));
101
+ /** @private */
102
+ _M3eDatepickerElement_documentClickHandler.set(this, e => __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleDocumentClick).call(this, e));
103
+ /** @private */
104
+ _M3eDatepickerElement_documentKeyDownHandler.set(this, e => __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleDocumentKeyDown).call(this, e));
105
+ /** @private */
106
+ _M3eDatepickerElement_toggleHandler.set(this, e => {
107
+ if (e.newState === "closed") {
108
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_clearSelectionState).call(this);
109
+ __classPrivateFieldGet(this, _M3eDatepickerElement_anchorCleanup, "f")?.call(this);
110
+ __classPrivateFieldSet(this, _M3eDatepickerElement_anchorCleanup, undefined, "f");
111
+ }
112
+ });
113
+ /**
114
+ * The appearance variant of the picker.
115
+ * @default "docked"
116
+ */
117
+ this.variant = "docked";
118
+ /**
119
+ * The initial view used to select a date.
120
+ * @default "month"
121
+ */
122
+ this.startView = "month";
123
+ /**
124
+ * The selected date.
125
+ * @default null
126
+ */
127
+ this.date = null;
128
+ /**
129
+ * A date specifying the period (month or year) to start the calendar in.
130
+ * @default null
131
+ */
132
+ this.startAt = null;
133
+ /**
134
+ * The minimum date that can be selected.
135
+ * @default null
136
+ */
137
+ this.minDate = null;
138
+ /**
139
+ * The maximum date that can be selected.
140
+ * @default null
141
+ */
142
+ this.maxDate = null;
143
+ /**
144
+ * Start of a date range.
145
+ * @default null
146
+ */
147
+ this.rangeStart = null;
148
+ /**
149
+ * End of a date range.
150
+ * @default null
151
+ */
152
+ this.rangeEnd = null;
153
+ /**
154
+ * A function used to determine whether a date cannot be selected.
155
+ * @default null
156
+ */
157
+ this.blackoutDates = null;
158
+ /**
159
+ * A function used to determine whether a date is special.
160
+ * @default null
161
+ */
162
+ this.specialDates = null;
163
+ /**
164
+ * The accessible label given to the button used to move to the previous month.
165
+ * @default "Previous month"
166
+ */
167
+ this.previousMonthLabel = "Previous month";
168
+ /**
169
+ * The accessible label given to the button used to move to the previous year.
170
+ * @default "Previous year"
171
+ */
172
+ this.previousYearLabel = "Previous year";
173
+ /**
174
+ * The accessible label given to the button used to move to the previous 24 years.
175
+ * @default "Previous 24 years"
176
+ */
177
+ this.previousMultiYearLabel = "Previous 24 years";
178
+ /**
179
+ * The accessible label given to the button used to move to the next month.
180
+ * @default "Next month"
181
+ */
182
+ this.nextMonthLabel = "Next month";
183
+ /**
184
+ * The accessible label given to the button used to move to the next year.
185
+ * @default "Next year"
186
+ */
187
+ this.nextYearLabel = "Next year";
188
+ /**
189
+ * The accessible label given to the button used to move to the next 24 years.
190
+ * @default "Next 24 years"
191
+ */
192
+ this.nextMultiYearLabel = "Next 24 years";
193
+ /**
194
+ * Whether the user can clear the selected date and close the picker.
195
+ * @default false
196
+ */
197
+ this.clearable = false;
198
+ /**
199
+ * The label given to the button used clear the selected date and close the picker.
200
+ * @default "Clear"
201
+ */
202
+ this.clearLabel = "Clear";
203
+ /**
204
+ * The label given to the button used apply the selected date and close the picker.
205
+ * @default "OK"
206
+ */
207
+ this.confirmLabel = "OK";
208
+ /**
209
+ * The label given to the button used discard the selected date and close the picker.
210
+ * @default "Cancel"
211
+ */
212
+ this.dismissLabel = "Cancel";
213
+ /**
214
+ * The label given to the the picker.
215
+ * @default "Select date"
216
+ */
217
+ this.label = "Select date";
218
+ }
219
+ /** Whether the picker is open. */
220
+ get isOpen() {
221
+ return __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") !== undefined;
222
+ }
223
+ /** The current variant applied to the picker. */
224
+ get currentVariant() {
225
+ return this._variant ?? (this.variant !== "modal" ? "docked" : "modal");
226
+ }
227
+ /** @inheritdoc */
228
+ connectedCallback() {
229
+ super.connectedCallback();
230
+ this.setAttribute("popover", "manual");
231
+ this.addEventListener("toggle", __classPrivateFieldGet(this, _M3eDatepickerElement_toggleHandler, "f"));
232
+ document.addEventListener("click", __classPrivateFieldGet(this, _M3eDatepickerElement_documentClickHandler, "f"));
233
+ document.addEventListener("keydown", __classPrivateFieldGet(this, _M3eDatepickerElement_documentKeyDownHandler, "f"));
234
+ }
235
+ /** @inheritdoc */
236
+ disconnectedCallback() {
237
+ super.disconnectedCallback();
238
+ this._variant = undefined;
239
+ __classPrivateFieldGet(this, _M3eDatepickerElement_breakpointUnobserve, "f")?.call(this);
240
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_clearAnchoring).call(this);
241
+ deleteCustomState(this, "-docked");
242
+ deleteCustomState(this, "-modal");
243
+ this.removeEventListener("toggle", __classPrivateFieldGet(this, _M3eDatepickerElement_toggleHandler, "f"));
244
+ document.removeEventListener("click", __classPrivateFieldGet(this, _M3eDatepickerElement_documentClickHandler, "f"));
245
+ document.removeEventListener("keydown", __classPrivateFieldGet(this, _M3eDatepickerElement_documentKeyDownHandler, "f"));
246
+ }
247
+ /** @inheritdoc */
248
+ reconnectedCallback() {
249
+ super.reconnectedCallback();
250
+ if (this.variant === "auto") {
251
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_initBreakpointMonitoring).call(this);
252
+ }
253
+ }
254
+ /**
255
+ * Opens the picker.
256
+ * @param {HTMLElement} trigger The element that triggered the picker.
257
+ * @param {HTMLElement | undefined} anchor The element used to position the picker.
258
+ * @returns {Promise<void>} A `Promise` that resolves when the picker is opened.
259
+ */
260
+ async show(trigger, anchor) {
261
+ if (__classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") && __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") !== trigger) {
262
+ this.hide();
263
+ }
264
+ if (this.currentVariant === "modal") {
265
+ __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").lock();
266
+ __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").lock();
267
+ }
268
+ const calendar = this._calendar;
269
+ calendar.date = this.date;
270
+ calendar.rangeStart = this.rangeStart;
271
+ calendar.rangeEnd = this.rangeEnd;
272
+ // Reset the start-view
273
+ calendar.requestUpdate("startView");
274
+ if (calendar.isUpdatePending) {
275
+ await calendar.updateComplete;
276
+ }
277
+ __classPrivateFieldSet(this, _M3eDatepickerElement_trigger, trigger, "f");
278
+ __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f").ariaExpanded = "true";
279
+ __classPrivateFieldSet(this, _M3eDatepickerElement_anchor, anchor, "f");
280
+ await __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_updatePosition).call(this);
281
+ this.showPopover();
282
+ await this._calendar.focusActiveCell();
283
+ }
284
+ /**
285
+ * Hides the picker.
286
+ * @param {boolean} [restoreFocus=false] Whether to restore focus to the picker's trigger.
287
+ */
288
+ hide(restoreFocus = false) {
289
+ if (this.currentVariant === "modal") {
290
+ __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").unlock();
291
+ __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").unlock();
292
+ }
293
+ this.hidePopover();
294
+ if (__classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f")) {
295
+ __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f").ariaExpanded = "false";
296
+ if (restoreFocus) {
297
+ __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f").focus();
298
+ }
299
+ __classPrivateFieldSet(this, _M3eDatepickerElement_trigger, undefined, "f");
300
+ }
301
+ }
302
+ /**
303
+ * Toggles the picker.
304
+ * @param {HTMLElement} trigger The element that triggered the picker.
305
+ * @param {HTMLElement | undefined} anchor The element used to position the picker.
306
+ * @returns {Promise<void>} A `Promise` that resolves when the picker is opened or closed.
307
+ */
308
+ async toggle(trigger, anchor) {
309
+ if (__classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f")) {
310
+ this.hide();
311
+ } else {
312
+ await this.show(trigger, anchor);
313
+ }
314
+ }
315
+ /** @inheritdoc */
316
+ render() {
317
+ return html`<m3e-focus-trap>${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_renderHeader).call(this)}<m3e-calendar class="calendar" start-view="${this.startView}" start-at="${ifDefined(this.startAt?.toISOString())}" min-date="${ifDefined(this.minDate?.toISOString())}" max-date="${ifDefined(this.maxDate?.toISOString())}" @change="${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleCalendarChange)}"></m3e-calendar><div class="actions">${this.clearable ? html`<m3e-button @click="${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleClearClick)}">${this.clearLabel}</m3e-button>` : nothing}<div class="spacer" aria-hidden="true"></div><m3e-button @click="${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleDismissClick)}">${this.dismissLabel}</m3e-button><m3e-button @click="${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleConfirmClick)}">${this.confirmLabel}</m3e-button></div></m3e-focus-trap>`;
318
+ }
319
+ /** @inheritdoc */
320
+ willUpdate(changedProperties) {
321
+ super.willUpdate(changedProperties);
322
+ if (["date", "rangeStart", "rangeEnd"].some(x => changedProperties.has(x))) {
323
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_clearSelectionState).call(this);
324
+ }
325
+ if (changedProperties.has("variant")) {
326
+ __classPrivateFieldGet(this, _M3eDatepickerElement_breakpointUnobserve, "f")?.call(this);
327
+ if (this.variant === "auto") {
328
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_initBreakpointMonitoring).call(this);
329
+ } else {
330
+ this._variant = undefined;
331
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_updateVariant).call(this);
332
+ }
333
+ }
334
+ }
335
+ /** @inheritdoc */
336
+ updated(_changedProperties) {
337
+ super.updated(_changedProperties);
338
+ if (_changedProperties.has("specialDates") || _changedProperties.has("blackoutDates")) {
339
+ this._calendar.specialDates = this.specialDates;
340
+ this._calendar.blackoutDates = this.blackoutDates;
341
+ }
342
+ }
343
+ };
344
+ _M3eDatepickerElement_breakpointUnobserve = new WeakMap();
345
+ _M3eDatepickerElement_trigger = new WeakMap();
346
+ _M3eDatepickerElement_anchor = new WeakMap();
347
+ _M3eDatepickerElement_anchorCleanup = new WeakMap();
348
+ _M3eDatepickerElement_scrollLockController = new WeakMap();
349
+ _M3eDatepickerElement_inertController = new WeakMap();
350
+ _M3eDatepickerElement_documentClickHandler = new WeakMap();
351
+ _M3eDatepickerElement_documentKeyDownHandler = new WeakMap();
352
+ _M3eDatepickerElement_toggleHandler = new WeakMap();
353
+ _M3eDatepickerElement_instances = new WeakSet();
354
+ _M3eDatepickerElement_renderHeader = function _M3eDatepickerElement_renderHeader() {
355
+ if (this.currentVariant === "docked") return nothing;
356
+ const selectedDate = this._date ?? this.date;
357
+ return html`<div class="supporting-text">${this.label}</div><div class="headline">${selectedDate ? new Intl.DateTimeFormat(navigator.language, {
358
+ weekday: "short",
359
+ month: "short",
360
+ day: "numeric"
361
+ }).format(selectedDate) : "––"}</div><div class="divider"></div>`;
362
+ };
363
+ _M3eDatepickerElement_handleDocumentClick = function _M3eDatepickerElement_handleDocumentClick(e) {
364
+ if (!e.composedPath().some(x => x instanceof M3eDatepickerElement_1 || x === __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") || x === __classPrivateFieldGet(this, _M3eDatepickerElement_anchor, "f"))) {
365
+ this.hide();
366
+ }
367
+ };
368
+ _M3eDatepickerElement_handleCalendarChange = function _M3eDatepickerElement_handleCalendarChange() {
369
+ this._date = this._calendar.date;
370
+ this._rangeStart = this._calendar.rangeStart;
371
+ this._rangeEnd = this._calendar.rangeEnd;
372
+ };
373
+ _M3eDatepickerElement_handleClearClick = function _M3eDatepickerElement_handleClearClick() {
374
+ this.date = null;
375
+ this.rangeStart = null;
376
+ this.rangeEnd = null;
377
+ this.hide(true);
378
+ this.dispatchEvent(new Event("change", {
379
+ bubbles: true
380
+ }));
381
+ };
382
+ _M3eDatepickerElement_handleDismissClick = function _M3eDatepickerElement_handleDismissClick() {
383
+ this.hide(true);
384
+ };
385
+ _M3eDatepickerElement_handleConfirmClick = function _M3eDatepickerElement_handleConfirmClick() {
386
+ this.date = this._date ?? this.date;
387
+ this.rangeStart = this._rangeStart === undefined ? this.rangeStart : this._rangeStart;
388
+ this.rangeEnd = this._rangeEnd === undefined ? this.rangeEnd : this._rangeEnd;
389
+ this.hide(true);
390
+ this.dispatchEvent(new Event("change", {
391
+ bubbles: true
392
+ }));
393
+ };
394
+ _M3eDatepickerElement_handleDocumentKeyDown = function _M3eDatepickerElement_handleDocumentKeyDown(e) {
395
+ if (this.isOpen && this.currentVariant === "modal" && e.key === "Escape" && !e.shiftKey && !e.ctrlKey) {
396
+ e.preventDefault();
397
+ this.hide(true);
398
+ }
399
+ };
400
+ _M3eDatepickerElement_initBreakpointMonitoring = function _M3eDatepickerElement_initBreakpointMonitoring() {
401
+ __classPrivateFieldSet(this, _M3eDatepickerElement_breakpointUnobserve, M3eBreakpointObserver.observe([Breakpoint.XSmall, Breakpoint.Small], matches => {
402
+ this._variant = matches.get(Breakpoint.XSmall) || matches.get(Breakpoint.Small) ? "modal" : "docked";
403
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_updateVariant).call(this);
404
+ }), "f");
405
+ };
406
+ _M3eDatepickerElement_updateVariant = function _M3eDatepickerElement_updateVariant() {
407
+ switch (this.currentVariant) {
408
+ case "docked":
409
+ this.ariaModal = null;
410
+ deleteCustomState(this, "-modal");
411
+ addCustomState(this, "-docked");
412
+ __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").unlock();
413
+ __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").unlock();
414
+ break;
415
+ case "modal":
416
+ this.ariaModal = "true";
417
+ deleteCustomState(this, "-docked");
418
+ addCustomState(this, "-modal");
419
+ if (this.isOpen) {
420
+ __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").lock();
421
+ __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").lock();
422
+ }
423
+ break;
424
+ }
425
+ if (this.isOpen) {
426
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_updatePosition).call(this);
427
+ }
428
+ };
429
+ _M3eDatepickerElement_updatePosition = /** @private */
430
+ async function _M3eDatepickerElement_updatePosition() {
431
+ if (this.currentVariant === "docked" && __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f")) {
432
+ __classPrivateFieldGet(this, _M3eDatepickerElement_anchorCleanup, "f")?.call(this);
433
+ __classPrivateFieldSet(this, _M3eDatepickerElement_anchorCleanup, await positionAnchor(this, __classPrivateFieldGet(this, _M3eDatepickerElement_anchor, "f") ?? __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f"), {
434
+ position: "bottom-start",
435
+ inline: true,
436
+ flip: true,
437
+ shift: "both"
438
+ }, (x, y, position) => {
439
+ setCustomState(this, "-top", position.includes("top"));
440
+ setCustomState(this, "-bottom", position.includes("bottom"));
441
+ if (M3eDirectionality.current === "rtl") {
442
+ this.style.right = `${window.innerWidth - x - this.clientWidth}px`;
443
+ this.style.left = "";
444
+ } else {
445
+ this.style.left = `${x}px`;
446
+ this.style.right = "";
447
+ }
448
+ this.style.top = `${y}px`;
449
+ }), "f");
450
+ } else {
451
+ __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_clearAnchoring).call(this);
452
+ }
453
+ };
454
+ _M3eDatepickerElement_clearAnchoring = function _M3eDatepickerElement_clearAnchoring() {
455
+ __classPrivateFieldGet(this, _M3eDatepickerElement_anchorCleanup, "f")?.call(this);
456
+ __classPrivateFieldSet(this, _M3eDatepickerElement_anchorCleanup, undefined, "f");
457
+ this.style.left = "";
458
+ this.style.right = "";
459
+ this.style.top = "";
460
+ };
461
+ _M3eDatepickerElement_clearSelectionState = function _M3eDatepickerElement_clearSelectionState() {
462
+ this._date = this._rangeStart = this._rangeEnd = undefined;
463
+ };
464
+ /** The styles of the element. */
465
+ M3eDatepickerElement.styles = css`:host { flex-direction: column; margin: unset; border: unset; padding-block: var(--m3e-datepicker-container-padding-block, 0.75rem); padding-inline: var(--m3e-datepicker-container-padding-inline, 0.25rem); background-color: var(--m3e-datepicker-container-color, ${DesignToken.color.surfaceContainer}); box-shadow: var(--m3e-datepicker-container-elevation, ${DesignToken.elevation.level3}); opacity: 0; display: none; } .calendar { --m3e-calendar-container-color: transparent; --m3e-calendar-container-elevation: ${DesignToken.elevation.level0}; --m3e-calendar-container-shape: ${DesignToken.shape.corner.none}; } .headline { font-size: var( --m3e-datepicker-modal-headline-font-size, ${DesignToken.typescale.standard.headline.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-headline-font-weight, ${DesignToken.typescale.standard.headline.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-headline-line-height, ${DesignToken.typescale.standard.headline.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-headline-tracking, ${DesignToken.typescale.standard.headline.large.tracking} ); margin-block-start: 2.25rem; margin-block-end: 0.75rem; margin-inline: 1.5rem; } .supporting-text { font-size: var( --m3e-datepicker-modal-supporting-text-font-size, ${DesignToken.typescale.standard.label.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-supporting-text-font-weight, ${DesignToken.typescale.standard.label.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-supporting-text-line-height, ${DesignToken.typescale.standard.label.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-supporting-text-tracking, ${DesignToken.typescale.standard.label.large.tracking} ); margin-block-start: 1rem; margin-inline: 1.5rem; } .divider { height: var(--m3e-divider-thickness, 1px); width: 100%; position: relative; } .divider::before { content: ""; box-sizing: border-box; position: absolute; border-bottom: var(--m3e-divider-thickness, 1px) solid var(--m3e-divider-color, ${DesignToken.color.outlineVariant}); height: inherit; left: -0.25rem; right: -0.25rem; } .actions { display: flex; align-items: center; column-gap: 0.5rem; padding-inline: var(--m3e-datepicker-actions-padding-inline, 0.5rem); } .spacer { flex: 1 1 auto; } :host(:state(-docked)) { position: absolute; background-color: var(--m3e-datepicker-docked-container-color, ${DesignToken.color.surfaceContainer}); border-radius: var(--m3e-datepicker-docked-container-shape, ${DesignToken.shape.corner.large}); } :host(:state(-modal)) { position: fixed; inset: 0; margin: auto; transform-origin: top; background-color: var(--m3e-datepicker-modal-container-color, ${DesignToken.color.surfaceContainerHigh}); border-radius: var(--m3e-datepicker-modal-container-shape, ${DesignToken.shape.corner.extraLarge}); } :host(:not(:state(-no-animate))) { transition: ${unsafeCSS(`opacity ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},
466
+ transform ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},
467
+ overlay ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete,
468
+ display ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host { transform: scaleY(0.8); } :host(:popover-open) { transform: scaleY(1); display: inline-flex; opacity: 1; } :host(:state(-docked))::backdrop { background-color: transparent; } :host(:state(-modal))::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent); margin-inline-end: -20px; } :host(:state(-modal):not(:popover-open))::backdrop { transition: ${unsafeCSS(`background-color ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard},
469
+ overlay ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete,
470
+ visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host(:state(-modal):popover-open)::backdrop { background-color: color-mix( in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%), transparent ); transition: ${unsafeCSS(`background-color ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard},
471
+ overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,
472
+ visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host(:state(-bottom)) { transform-origin: top; } :host(:state(-top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } :host(:state(-modal):popover-open)::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent); } } @media (prefers-reduced-motion) { :host(:not(:state(-no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; border: 1px solid CanvasText; } }`;
473
+ __decorate([state()], M3eDatepickerElement.prototype, "_date", void 0);
474
+ __decorate([state()], M3eDatepickerElement.prototype, "_rangeStart", void 0);
475
+ __decorate([state()], M3eDatepickerElement.prototype, "_rangeEnd", void 0);
476
+ __decorate([query("m3e-calendar")], M3eDatepickerElement.prototype, "_calendar", void 0);
477
+ __decorate([state()], M3eDatepickerElement.prototype, "_variant", void 0);
478
+ __decorate([property()], M3eDatepickerElement.prototype, "variant", void 0);
479
+ __decorate([property({
480
+ attribute: "start-view"
481
+ })], M3eDatepickerElement.prototype, "startView", void 0);
482
+ __decorate([property({
483
+ converter: dateConverter
484
+ })], M3eDatepickerElement.prototype, "date", void 0);
485
+ __decorate([property({
486
+ attribute: "start-at",
487
+ converter: dateConverter
488
+ })], M3eDatepickerElement.prototype, "startAt", void 0);
489
+ __decorate([property({
490
+ attribute: "min-date",
491
+ converter: dateConverter
492
+ })], M3eDatepickerElement.prototype, "minDate", void 0);
493
+ __decorate([property({
494
+ attribute: "max-date",
495
+ converter: dateConverter
496
+ })], M3eDatepickerElement.prototype, "maxDate", void 0);
497
+ __decorate([property({
498
+ attribute: "range-start",
499
+ converter: dateConverter
500
+ })], M3eDatepickerElement.prototype, "rangeStart", void 0);
501
+ __decorate([property({
502
+ attribute: "range-end",
503
+ converter: dateConverter
504
+ })], M3eDatepickerElement.prototype, "rangeEnd", void 0);
505
+ __decorate([property({
506
+ attribute: false
507
+ })], M3eDatepickerElement.prototype, "blackoutDates", void 0);
508
+ __decorate([property({
509
+ attribute: false
510
+ })], M3eDatepickerElement.prototype, "specialDates", void 0);
511
+ __decorate([property({
512
+ attribute: "previous-month-label"
513
+ })], M3eDatepickerElement.prototype, "previousMonthLabel", void 0);
514
+ __decorate([property({
515
+ attribute: "previous-year-label"
516
+ })], M3eDatepickerElement.prototype, "previousYearLabel", void 0);
517
+ __decorate([property({
518
+ attribute: "previous-multi-year-label"
519
+ })], M3eDatepickerElement.prototype, "previousMultiYearLabel", void 0);
520
+ __decorate([property({
521
+ attribute: "next-month-label"
522
+ })], M3eDatepickerElement.prototype, "nextMonthLabel", void 0);
523
+ __decorate([property({
524
+ attribute: "next-year-label"
525
+ })], M3eDatepickerElement.prototype, "nextYearLabel", void 0);
526
+ __decorate([property({
527
+ attribute: "next-multi-year-label"
528
+ })], M3eDatepickerElement.prototype, "nextMultiYearLabel", void 0);
529
+ __decorate([property({
530
+ type: Boolean
531
+ })], M3eDatepickerElement.prototype, "clearable", void 0);
532
+ __decorate([property({
533
+ attribute: "clear-label"
534
+ })], M3eDatepickerElement.prototype, "clearLabel", void 0);
535
+ __decorate([property({
536
+ attribute: "confirm-label"
537
+ })], M3eDatepickerElement.prototype, "confirmLabel", void 0);
538
+ __decorate([property({
539
+ attribute: "dismiss-label"
540
+ })], M3eDatepickerElement.prototype, "dismissLabel", void 0);
541
+ __decorate([property()], M3eDatepickerElement.prototype, "label", void 0);
542
+ M3eDatepickerElement = M3eDatepickerElement_1 = __decorate([customElement("m3e-datepicker")], M3eDatepickerElement);
543
+
544
+ /**
545
+ * An element, nested within a clickable element, used to toggle a datepicker.
546
+ * @tag m3e-datepicker-toggle
547
+ */
548
+ let M3eDatepickerToggleElement = class M3eDatepickerToggleElement extends HtmlFor(ActionElementBase) {
549
+ /** @inheritdoc */
550
+ connectedCallback() {
551
+ super.connectedCallback();
552
+ if (this.parentElement) {
553
+ this.parentElement.ariaHasPopup = "dialog";
554
+ }
555
+ }
556
+ /** @inheritdoc */
557
+ disconnectedCallback() {
558
+ super.disconnectedCallback();
559
+ if (this.parentElement) {
560
+ this.parentElement.ariaHasPopup = null;
561
+ }
562
+ }
563
+ /** @inheritdoc */
564
+ _onClick() {
565
+ if (this.control instanceof M3eDatepickerElement && this.parentElement) {
566
+ this.control.toggle(this.parentElement, this.closest("m3e-form-field") ?? undefined);
567
+ }
568
+ }
569
+ };
570
+ M3eDatepickerToggleElement = __decorate([customElement("m3e-datepicker-toggle")], M3eDatepickerToggleElement);
571
+
572
+ export { M3eDatepickerElement, M3eDatepickerToggleElement };
573
+ //# sourceMappingURL=datepicker.js.map