@m3e/web 2.5.12 → 2.5.13

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 (79) hide show
  1. package/dist/all.js +20442 -16034
  2. package/dist/all.js.map +1 -1
  3. package/dist/all.min.js +174 -62
  4. package/dist/all.min.js.map +1 -1
  5. package/dist/calendar.js +45 -9
  6. package/dist/calendar.js.map +1 -1
  7. package/dist/calendar.min.js +5 -5
  8. package/dist/calendar.min.js.map +1 -1
  9. package/dist/core-anchoring.js +19 -16
  10. package/dist/core-anchoring.js.map +1 -1
  11. package/dist/core-anchoring.min.js +1 -1
  12. package/dist/core-anchoring.min.js.map +1 -1
  13. package/dist/core.js +95 -82
  14. package/dist/core.js.map +1 -1
  15. package/dist/core.min.js +1 -1
  16. package/dist/core.min.js.map +1 -1
  17. package/dist/css-custom-data.json +50 -50
  18. package/dist/custom-elements.json +1209 -583
  19. package/dist/datepicker.js +53 -27
  20. package/dist/datepicker.js.map +1 -1
  21. package/dist/datepicker.min.js +1 -1
  22. package/dist/datepicker.min.js.map +1 -1
  23. package/dist/fab-menu.js +115 -113
  24. package/dist/fab-menu.js.map +1 -1
  25. package/dist/fab-menu.min.js +1 -1
  26. package/dist/fab-menu.min.js.map +1 -1
  27. package/dist/form-field.js +9 -6
  28. package/dist/form-field.js.map +1 -1
  29. package/dist/form-field.min.js +1 -1
  30. package/dist/form-field.min.js.map +1 -1
  31. package/dist/html-custom-data.json +29 -14
  32. package/dist/icon.js +1 -1
  33. package/dist/icon.js.map +1 -1
  34. package/dist/icon.min.js +1 -1
  35. package/dist/icon.min.js.map +1 -1
  36. package/dist/menu.js +26 -19
  37. package/dist/menu.js.map +1 -1
  38. package/dist/menu.min.js +1 -1
  39. package/dist/menu.min.js.map +1 -1
  40. package/dist/src/calendar/CalendarElement.d.ts +2 -0
  41. package/dist/src/calendar/CalendarElement.d.ts.map +1 -1
  42. package/dist/src/calendar/CalendarViewElementBase.d.ts +2 -0
  43. package/dist/src/calendar/CalendarViewElementBase.d.ts.map +1 -1
  44. package/dist/src/calendar/MonthViewElement.d.ts +1 -0
  45. package/dist/src/calendar/MonthViewElement.d.ts.map +1 -1
  46. package/dist/src/calendar/MultiYearViewElement.d.ts.map +1 -1
  47. package/dist/src/calendar/YearViewElement.d.ts.map +1 -1
  48. package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
  49. package/dist/src/core/shared/controllers/ClickOutsideController.d.ts +24 -0
  50. package/dist/src/core/shared/controllers/ClickOutsideController.d.ts.map +1 -0
  51. package/dist/src/core/shared/controllers/FocusController.d.ts +5 -11
  52. package/dist/src/core/shared/controllers/FocusController.d.ts.map +1 -1
  53. package/dist/src/core/shared/controllers/HoverController.d.ts +2 -8
  54. package/dist/src/core/shared/controllers/HoverController.d.ts.map +1 -1
  55. package/dist/src/core/shared/controllers/IntersectionController.d.ts +2 -8
  56. package/dist/src/core/shared/controllers/IntersectionController.d.ts.map +1 -1
  57. package/dist/src/core/shared/controllers/LongPressController.d.ts +2 -8
  58. package/dist/src/core/shared/controllers/LongPressController.d.ts.map +1 -1
  59. package/dist/src/core/shared/controllers/MonitorControllerBase.d.ts +4 -0
  60. package/dist/src/core/shared/controllers/MonitorControllerBase.d.ts.map +1 -1
  61. package/dist/src/core/shared/controllers/PressedController.d.ts +6 -8
  62. package/dist/src/core/shared/controllers/PressedController.d.ts.map +1 -1
  63. package/dist/src/core/shared/controllers/ResizeController.d.ts +2 -8
  64. package/dist/src/core/shared/controllers/ResizeController.d.ts.map +1 -1
  65. package/dist/src/core/shared/controllers/index.d.ts +1 -0
  66. package/dist/src/core/shared/controllers/index.d.ts.map +1 -1
  67. package/dist/src/datepicker/DatepickerElement.d.ts +1 -2
  68. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -1
  69. package/dist/src/fab-menu/FabMenuElement.d.ts.map +1 -1
  70. package/dist/src/form-field/FormFieldElement.d.ts +1 -0
  71. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  72. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  73. package/dist/src/tooltip/RichTooltipElement.d.ts +0 -2
  74. package/dist/src/tooltip/RichTooltipElement.d.ts.map +1 -1
  75. package/dist/tooltip.js +24 -25
  76. package/dist/tooltip.js.map +1 -1
  77. package/dist/tooltip.min.js +1 -1
  78. package/dist/tooltip.min.js.map +1 -1
  79. package/package.json +1 -1
@@ -4,10 +4,9 @@
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
6
  import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from 'tslib';
7
- import { LitElement, nothing, html, unsafeCSS, css } from 'lit';
7
+ import { LitElement, html, nothing, unsafeCSS, css } from 'lit';
8
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';
9
+ import { SuppressInitialAnimation, ReconnectedCallback, AttachInternals, Role, ScrollLockController, InertController, prefersReducedMotion, deleteCustomState, addCustomState, setCustomState, DesignToken, dateConverter, customElement, HtmlFor, ActionElementBase } from '@m3e/web/core';
11
10
  import { positionAnchor } from '@m3e/web/core/anchoring';
12
11
  import { M3eDirectionality } from '@m3e/web/core/bidi';
13
12
  import { M3eBreakpointObserver, Breakpoint } from '@m3e/web/core/layout';
@@ -15,8 +14,7 @@ import '@m3e/web/core/a11y';
15
14
  import '@m3e/web/button';
16
15
  import '@m3e/web/calendar';
17
16
 
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;
17
+ var _M3eDatepickerElement_instances, _M3eDatepickerElement_closeTimeout, _M3eDatepickerElement_breakpointUnobserve, _M3eDatepickerElement_trigger, _M3eDatepickerElement_anchor, _M3eDatepickerElement_anchorCleanup, _M3eDatepickerElement_scrollLockController, _M3eDatepickerElement_inertController, _M3eDatepickerElement_documentClickHandler, _M3eDatepickerElement_documentKeyDownHandler, _M3eDatepickerElement_toggleHandler, _M3eDatepickerElement_renderHeader, _M3eDatepickerElement_renderCalendar, _M3eDatepickerElement_renderActions, _M3eDatepickerElement_handleDocumentClick, _M3eDatepickerElement_handleCalendarChange, _M3eDatepickerElement_handleClearClick, _M3eDatepickerElement_handleDismissClick, _M3eDatepickerElement_handleConfirmClick, _M3eDatepickerElement_handleDocumentKeyDown, _M3eDatepickerElement_initBreakpointMonitoring, _M3eDatepickerElement_updateVariant, _M3eDatepickerElement_updatePosition, _M3eDatepickerElement_clearAnchoring, _M3eDatepickerElement_clearSelectionState;
20
18
  /**
21
19
  * Presents a date picker on a temporary surface.
22
20
  *
@@ -85,11 +83,15 @@ var M3eDatepickerElement_1;
85
83
  * @cssprop --m3e-dialog-scrim-color - Base color used for the modal scrim behind the picker.
86
84
  * @cssprop --m3e-dialog-scrim-opacity - Opacity applied to the scrim color in modal mode.
87
85
  */
88
- let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement extends SuppressInitialAnimation(ReconnectedCallback(AttachInternals(Role(LitElement, "dialog")))) {
86
+ let M3eDatepickerElement = class M3eDatepickerElement extends SuppressInitialAnimation(ReconnectedCallback(AttachInternals(Role(LitElement, "dialog")))) {
89
87
  constructor() {
90
88
  super(...arguments);
91
89
  _M3eDatepickerElement_instances.add(this);
92
90
  /** @private */
91
+ _M3eDatepickerElement_closeTimeout.set(this, -1);
92
+ /** @private */
93
+ this._open = false;
94
+ /** @private */
93
95
  _M3eDatepickerElement_breakpointUnobserve.set(this, void 0);
94
96
  /** @private */
95
97
  _M3eDatepickerElement_trigger.set(this, void 0);
@@ -111,6 +113,12 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
111
113
  __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_clearSelectionState).call(this);
112
114
  __classPrivateFieldGet(this, _M3eDatepickerElement_anchorCleanup, "f")?.call(this);
113
115
  __classPrivateFieldSet(this, _M3eDatepickerElement_anchorCleanup, undefined, "f");
116
+ clearTimeout(__classPrivateFieldGet(this, _M3eDatepickerElement_closeTimeout, "f"));
117
+ if (!prefersReducedMotion()) {
118
+ __classPrivateFieldSet(this, _M3eDatepickerElement_closeTimeout, setTimeout(() => this._open = false, 100), "f");
119
+ } else {
120
+ this._open = false;
121
+ }
114
122
  }
115
123
  });
116
124
  /**
@@ -237,8 +245,6 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
237
245
  super.connectedCallback();
238
246
  this.setAttribute("popover", "manual");
239
247
  this.addEventListener("toggle", __classPrivateFieldGet(this, _M3eDatepickerElement_toggleHandler, "f"));
240
- document.addEventListener("click", __classPrivateFieldGet(this, _M3eDatepickerElement_documentClickHandler, "f"));
241
- document.addEventListener("keydown", __classPrivateFieldGet(this, _M3eDatepickerElement_documentKeyDownHandler, "f"));
242
248
  }
243
249
  /** @inheritdoc */
244
250
  disconnectedCallback() {
@@ -269,16 +275,29 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
269
275
  if (__classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") && __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") !== trigger) {
270
276
  this.hide();
271
277
  }
278
+ clearTimeout(__classPrivateFieldGet(this, _M3eDatepickerElement_closeTimeout, "f"));
272
279
  if (this.currentVariant === "modal") {
273
280
  __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").lock();
274
281
  __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").lock();
275
282
  }
283
+ // The calendar is rendered on demand
284
+ this._open = true;
285
+ // Wait for the calendar to render
286
+ if (this.isUpdatePending) {
287
+ await this.updateComplete;
288
+ }
276
289
  const calendar = this._calendar;
290
+ calendar.startView = this.startView;
291
+ calendar.startAt = this.startAt;
292
+ calendar.minDate = this.minDate;
293
+ calendar.maxDate = this.maxDate;
277
294
  calendar.date = this.date;
278
295
  calendar.rangeStart = this.rangeStart;
279
296
  calendar.rangeEnd = this.rangeEnd;
280
- // Reset the start-view
281
- calendar.requestUpdate("startView");
297
+ calendar.specialDates = this.specialDates;
298
+ calendar.blackoutDates = this.blackoutDates;
299
+ // Ensure the active view is reset
300
+ calendar.resetActiveView();
282
301
  if (calendar.isUpdatePending) {
283
302
  await calendar.updateComplete;
284
303
  }
@@ -287,13 +306,18 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
287
306
  __classPrivateFieldSet(this, _M3eDatepickerElement_anchor, anchor, "f");
288
307
  await __classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_updatePosition).call(this);
289
308
  this.showPopover();
290
- await this._calendar.focusActiveCell();
309
+ document.addEventListener("click", __classPrivateFieldGet(this, _M3eDatepickerElement_documentClickHandler, "f"));
310
+ document.addEventListener("keydown", __classPrivateFieldGet(this, _M3eDatepickerElement_documentKeyDownHandler, "f"));
311
+ await calendar.focusActiveCell();
291
312
  }
292
313
  /**
293
314
  * Hides the picker.
294
315
  * @param {boolean} [restoreFocus=false] Whether to restore focus to the picker's trigger.
295
316
  */
296
317
  hide(restoreFocus = false) {
318
+ if (!this.isOpen) return;
319
+ document.removeEventListener("click", __classPrivateFieldGet(this, _M3eDatepickerElement_documentClickHandler, "f"));
320
+ document.removeEventListener("keydown", __classPrivateFieldGet(this, _M3eDatepickerElement_documentKeyDownHandler, "f"));
297
321
  if (this.currentVariant === "modal") {
298
322
  __classPrivateFieldGet(this, _M3eDatepickerElement_scrollLockController, "f").unlock();
299
323
  __classPrivateFieldGet(this, _M3eDatepickerElement_inertController, "f").unlock();
@@ -322,7 +346,7 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
322
346
  }
323
347
  /** @inheritdoc */
324
348
  render() {
325
- 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>`;
349
+ return html`<m3e-focus-trap ?disabled="${!this._open}">${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_renderHeader).call(this)}${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_renderCalendar).call(this)}${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_renderActions).call(this)}</m3e-focus-trap>`;
326
350
  }
327
351
  /** @inheritdoc */
328
352
  willUpdate(changedProperties) {
@@ -349,15 +373,8 @@ let M3eDatepickerElement = M3eDatepickerElement_1 = class M3eDatepickerElement e
349
373
  }
350
374
  }
351
375
  }
352
- /** @inheritdoc */
353
- updated(_changedProperties) {
354
- super.updated(_changedProperties);
355
- if (_changedProperties.has("specialDates") || _changedProperties.has("blackoutDates")) {
356
- this._calendar.specialDates = this.specialDates;
357
- this._calendar.blackoutDates = this.blackoutDates;
358
- }
359
- }
360
376
  };
377
+ _M3eDatepickerElement_closeTimeout = new WeakMap();
361
378
  _M3eDatepickerElement_breakpointUnobserve = new WeakMap();
362
379
  _M3eDatepickerElement_trigger = new WeakMap();
363
380
  _M3eDatepickerElement_anchor = new WeakMap();
@@ -385,18 +402,26 @@ _M3eDatepickerElement_renderHeader = function _M3eDatepickerElement_renderHeader
385
402
  day: "numeric"
386
403
  }).format(selectedDate) : "––"}</div>`}<div class="divider"></div>`;
387
404
  };
405
+ _M3eDatepickerElement_renderCalendar = function _M3eDatepickerElement_renderCalendar() {
406
+ // Calendar is rendered only when open
407
+ return this._open ? html`<m3e-calendar class="calendar" @change="${__classPrivateFieldGet(this, _M3eDatepickerElement_instances, "m", _M3eDatepickerElement_handleCalendarChange)}"></m3e-calendar>` : nothing;
408
+ };
409
+ _M3eDatepickerElement_renderActions = function _M3eDatepickerElement_renderActions() {
410
+ return html`<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>`;
411
+ };
388
412
  _M3eDatepickerElement_handleDocumentClick = function _M3eDatepickerElement_handleDocumentClick(e) {
389
- if (!e.composedPath().some(x => x instanceof M3eDatepickerElement_1 || x === __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f") || x === __classPrivateFieldGet(this, _M3eDatepickerElement_anchor, "f"))) {
413
+ if (this.isOpen && !e.composedPath().some(x => x === this || x === __classPrivateFieldGet(this, _M3eDatepickerElement_trigger, "f"))) {
390
414
  this.hide();
391
415
  }
392
416
  };
393
- _M3eDatepickerElement_handleCalendarChange = function _M3eDatepickerElement_handleCalendarChange() {
394
- this._date = this._calendar.date;
395
- this._rangeStart = this._calendar.rangeStart;
396
- this._rangeEnd = this._calendar.rangeEnd;
417
+ _M3eDatepickerElement_handleCalendarChange = function _M3eDatepickerElement_handleCalendarChange(e) {
418
+ const calendar = e.target;
419
+ this._date = calendar.date;
420
+ this._rangeStart = calendar.rangeStart;
421
+ this._rangeEnd = calendar.rangeEnd;
397
422
  if (this.range && !this._rangeStart && this._date) {
398
423
  this._rangeStart = new Date(this._date);
399
- this._calendar.rangeStart = this._rangeStart;
424
+ calendar.rangeStart = this._rangeStart;
400
425
  }
401
426
  };
402
427
  _M3eDatepickerElement_handleClearClick = function _M3eDatepickerElement_handleClearClick() {
@@ -499,6 +524,7 @@ M3eDatepickerElement.styles = css`:host { flex-direction: column; margin: unset;
499
524
  visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--modal), :--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},
500
525
  overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,
501
526
  visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--bottom), :--bottom)) { transform-origin: top; } :host(:is(:state(--top), :--top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } :host(:is(:state(--modal), :--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(:is(:state(--no-animate), :--no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; border: 1px solid CanvasText; } }`;
527
+ __decorate([state()], M3eDatepickerElement.prototype, "_open", void 0);
502
528
  __decorate([state()], M3eDatepickerElement.prototype, "_date", void 0);
503
529
  __decorate([state()], M3eDatepickerElement.prototype, "_rangeStart", void 0);
504
530
  __decorate([state()], M3eDatepickerElement.prototype, "_rangeEnd", void 0);
@@ -571,7 +597,7 @@ __decorate([property({
571
597
  attribute: "dismiss-label"
572
598
  })], M3eDatepickerElement.prototype, "dismissLabel", void 0);
573
599
  __decorate([property()], M3eDatepickerElement.prototype, "label", void 0);
574
- M3eDatepickerElement = M3eDatepickerElement_1 = __decorate([customElement("m3e-datepicker")], M3eDatepickerElement);
600
+ M3eDatepickerElement = __decorate([customElement("m3e-datepicker")], M3eDatepickerElement);
575
601
 
576
602
  /**
577
603
  * An element, nested within a clickable element, used to toggle a datepicker.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.js","sources":["../../src/datepicker/DatepickerElement.ts","../../src/datepicker/DatepickerToggleElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport {\r\n addCustomState,\r\n customElement,\r\n AttachInternals,\r\n dateConverter,\r\n deleteCustomState,\r\n DesignToken,\r\n Role,\r\n ScrollLockController,\r\n setCustomState,\r\n SuppressInitialAnimation,\r\n InertController,\r\n ReconnectedCallback,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { positionAnchor } from \"@m3e/web/core/anchoring\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\nimport { M3eCalendarElement, CalendarView } from \"@m3e/web/calendar\";\r\n\r\nimport \"@m3e/web/core/a11y\";\r\nimport \"@m3e/web/button\";\r\nimport \"@m3e/web/calendar\";\r\n\r\nimport { DatepickerVariant } from \"./DatepickerVariant\";\r\n\r\n/**\r\n * Presents a date picker on a temporary surface.\r\n *\r\n * @description\r\n * The `m3e-datepicker` component provides a date‑selection experience\r\n * consistent with Material 3 guidance for layout, motion, and accessibility.\r\n * It displays a temporary surface that allows users to select a date or date\r\n * range using calendar-based views. The picker supports month, year, and\r\n * multi‑year views, enabling users to navigate across time efficiently.\r\n *\r\n * While open, the picker uses a focused selection flow. Users review their\r\n * choice and complete the interaction through confirm, dismiss, or clear\r\n * actions, ensuring intentional updates to the field or control that invoked it.\r\n *\r\n * It accepts and emits plain `Date` values, allowing applications to apply their\r\n * own formatting, parsing, and localization.\r\n *\r\n * @tag m3e-datepicker\r\n *\r\n * @attr variant - The appearance variant of the picker.\r\n * @attr clearable - Whether the user can clear the selected date and close the picker.\r\n * @attr date - The selected date.\r\n * @attr max-date - The maximum date that can be selected.\r\n * @attr min-date - The minimum date that can be selected.\r\n * @attr range - Whether a range of dates can be selected.\r\n * @attr range-end - End of a date range.\r\n * @attr range-start - Start of a date range.\r\n * @attr start-at - A date specifying the period (month or year) to start the calendar in.\r\n * @attr start-view - The initial view used to select a date.\r\n * @attr previous-month-label - The accessible label given to the button used to move to the previous month.\r\n * @attr next-month-label - The accessible label given to the button used to move to the next month.\r\n * @attr previous-year-label - The accessible label given to the button used to move to the previous year.\r\n * @attr next-year-label - The accessible label given to the button used to move to the next year.\r\n * @attr previous-multi-year-label - The accessible label given to the button used to move to the previous 24 years.\r\n * @attr next-multi-year-label - The accessible label given to the button used to move to the next 24 years.\r\n * @attr clear-label - The label given to the button used clear the selected date and close the picker.\r\n * @attr confirm-label - The label given to the button used apply the selected date and close the picker.\r\n * @attr dismiss-label - The label given to the button used discard the selected date and close the picker.\r\n * @attr label - The label given to the the picker.\r\n *\r\n * @fires change - Dispatched when the selected date changes.\r\n * @fires beforetoggle - Dispatched before the toggle state changes.\r\n * @fires toggle - Dispatched after the toggle state has changed.\r\n *\r\n * @cssprop --m3e-datepicker-container-padding-block - Block‑axis padding of the date picker container.\r\n * @cssprop --m3e-datepicker-container-padding-inline - Inline‑axis padding of the date picker container.\r\n * @cssprop --m3e-datepicker-container-color - Background color of the standard container surface.\r\n * @cssprop --m3e-datepicker-container-elevation - Elevation shadow applied to the container surface.\r\n * @cssprop --m3e-datepicker-modal-headline-color - Color used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-font-size - Font size used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-font-weight - Font weight used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-line-height - Line height used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-tracking - Letter spacing used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-color - Color used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-font-size - Font size used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-font-weight - Font weight used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-line-height - Line height used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-tracking - Letter spacing used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-actions-padding-inline - Inline‑axis padding of the action row.\r\n * @cssprop --m3e-datepicker-docked-container-color - Background color of the container in docked mode.\r\n * @cssprop --m3e-datepicker-docked-container-shape - Corner radius of the container in docked mode.\r\n * @cssprop --m3e-datepicker-modal-container-color - Background color of the container in modal mode.\r\n * @cssprop --m3e-datepicker-modal-container-shape - Corner radius of the container in modal mode.\r\n * @cssprop --m3e-divider-thickness - Thickness of divider elements within the picker.\r\n * @cssprop --m3e-divider-color - Color of divider rules within the picker.\r\n * @cssprop --m3e-dialog-scrim-color - Base color used for the modal scrim behind the picker.\r\n * @cssprop --m3e-dialog-scrim-opacity - Opacity applied to the scrim color in modal mode.\r\n */\r\n@customElement(\"m3e-datepicker\")\r\nexport class M3eDatepickerElement extends SuppressInitialAnimation(\r\n ReconnectedCallback(AttachInternals(Role(LitElement, \"dialog\"))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n flex-direction: column;\r\n margin: unset;\r\n border: unset;\r\n padding-block: var(--m3e-datepicker-container-padding-block, 0.75rem);\r\n padding-inline: var(--m3e-datepicker-container-padding-inline, 0.25rem);\r\n background-color: var(--m3e-datepicker-container-color, ${DesignToken.color.surfaceContainer});\r\n box-shadow: var(--m3e-datepicker-container-elevation, ${DesignToken.elevation.level3});\r\n opacity: 0;\r\n display: none;\r\n }\r\n .calendar {\r\n --m3e-calendar-container-color: transparent;\r\n --m3e-calendar-container-elevation: ${DesignToken.elevation.level0};\r\n --m3e-calendar-container-shape: ${DesignToken.shape.corner.none};\r\n }\r\n .headline {\r\n color: var(--m3e-datepicker-modal-headline-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(\r\n --m3e-datepicker-modal-headline-font-size,\r\n ${DesignToken.typescale.standard.headline.large.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-datepicker-modal-headline-font-weight,\r\n ${DesignToken.typescale.standard.headline.large.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-datepicker-modal-headline-line-height,\r\n ${DesignToken.typescale.standard.headline.large.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-datepicker-modal-headline-tracking,\r\n ${DesignToken.typescale.standard.headline.large.tracking}\r\n );\r\n margin-block-start: 2.25rem;\r\n margin-block-end: 0.75rem;\r\n margin-inline: 1.5rem;\r\n }\r\n .supporting-text {\r\n color: var(--m3e-datepicker-modal-supporting-text-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(\r\n --m3e-datepicker-modal-supporting-text-font-size,\r\n ${DesignToken.typescale.standard.label.large.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-datepicker-modal-supporting-text-font-weight,\r\n ${DesignToken.typescale.standard.label.large.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-datepicker-modal-supporting-text-line-height,\r\n ${DesignToken.typescale.standard.label.large.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-datepicker-modal-supporting-text-tracking,\r\n ${DesignToken.typescale.standard.label.large.tracking}\r\n );\r\n margin-block-start: 1rem;\r\n margin-inline: 1.5rem;\r\n }\r\n .divider {\r\n height: var(--m3e-divider-thickness, 1px);\r\n width: 100%;\r\n position: relative;\r\n }\r\n .divider::before {\r\n content: \"\";\r\n box-sizing: border-box;\r\n position: absolute;\r\n border-bottom: var(--m3e-divider-thickness, 1px) solid\r\n var(--m3e-divider-color, ${DesignToken.color.outlineVariant});\r\n height: inherit;\r\n left: -0.25rem;\r\n right: -0.25rem;\r\n }\r\n .actions {\r\n display: flex;\r\n align-items: center;\r\n column-gap: 0.5rem;\r\n padding-inline: var(--m3e-datepicker-actions-padding-inline, 0.5rem);\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n :host(:is(:state(--docked), :--docked)) {\r\n position: absolute;\r\n background-color: var(--m3e-datepicker-docked-container-color, ${DesignToken.color.surfaceContainer});\r\n border-radius: var(--m3e-datepicker-docked-container-shape, ${DesignToken.shape.corner.large});\r\n }\r\n :host(:is(:state(--modal), :--modal)) {\r\n position: fixed;\r\n inset: 0;\r\n margin: auto;\r\n transform-origin: top;\r\n background-color: var(--m3e-datepicker-modal-container-color, ${DesignToken.color.surfaceContainerHigh});\r\n border-radius: var(--m3e-datepicker-modal-container-shape, ${DesignToken.shape.corner.extraLarge});\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: ${unsafeCSS(\r\n `opacity ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard}, \r\n transform ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},\r\n overlay ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n display ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host {\r\n transform: scaleY(0.8);\r\n }\r\n :host(:popover-open) {\r\n transform: scaleY(1);\r\n display: inline-flex;\r\n opacity: 1;\r\n }\r\n :host(:is(:state(--docked), :--docked))::backdrop {\r\n background-color: transparent;\r\n }\r\n :host(:is(:state(--modal), :--modal))::backdrop {\r\n background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent);\r\n margin-inline-end: -20px;\r\n }\r\n :host(:is(:state(--modal), :--modal):not(:popover-open))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host(:is(:state(--modal), :--modal):popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%),\r\n transparent\r\n );\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host(:is(:state(--bottom), :--bottom)) {\r\n transform-origin: top;\r\n }\r\n :host(:is(:state(--top), :--top)) {\r\n transform-origin: bottom;\r\n }\r\n @starting-style {\r\n :host(:popover-open) {\r\n transform: scaleY(0.8);\r\n }\r\n :host(:is(:state(--modal), :--modal):popover-open)::backdrop {\r\n background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent);\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host {\r\n background-color: Menu;\r\n color: MenuText;\r\n border: 1px solid CanvasText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ @state() private _date?: Date | null;\r\n /** @private */ @state() private _rangeStart?: Date | null;\r\n /** @private */ @state() private _rangeEnd?: Date | null;\r\n\r\n /** @private */ @query(\"m3e-calendar\") private readonly _calendar!: M3eCalendarElement;\r\n /** @private */ @state() private _variant?: Exclude<DatepickerVariant, \"auto\">;\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n\r\n /** @private */ #trigger?: HTMLElement;\r\n /** @private */ #anchor?: HTMLElement;\r\n /** @private */ #anchorCleanup?: () => void;\r\n\r\n /** @private */ readonly #scrollLockController = new ScrollLockController(this);\r\n /** @private */ readonly #inertController = new InertController(this);\r\n /** @private */ readonly #documentClickHandler = (e: MouseEvent) => this.#handleDocumentClick(e);\r\n /** @private */ readonly #documentKeyDownHandler = (e: KeyboardEvent) => this.#handleDocumentKeyDown(e);\r\n\r\n /** @private */\r\n readonly #toggleHandler = (e: ToggleEvent) => {\r\n if (e.newState === \"closed\") {\r\n this.#clearSelectionState();\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = undefined;\r\n }\r\n };\r\n\r\n /**\r\n * The appearance variant of the picker.\r\n * @default \"docked\"\r\n */\r\n @property() variant: DatepickerVariant = \"docked\";\r\n\r\n /**\r\n * The initial view used to select a date.\r\n * @default \"month\"\r\n */\r\n @property({ attribute: \"start-view\" }) startView: CalendarView = \"month\";\r\n\r\n /**\r\n * The selected date.\r\n * @default null\r\n */\r\n @property({ converter: dateConverter }) date: Date | null = null;\r\n\r\n /**\r\n * A date specifying the period (month or year) to start the calendar in.\r\n * @default null\r\n */\r\n @property({ attribute: \"start-at\", converter: dateConverter }) startAt: Date | null = null;\r\n\r\n /**\r\n * The minimum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"min-date\", converter: dateConverter }) minDate: Date | null = null;\r\n\r\n /**\r\n * The maximum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"max-date\", converter: dateConverter }) maxDate: Date | null = null;\r\n\r\n /**\r\n * Whether a range of dates can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) range = false;\r\n\r\n /**\r\n * Start of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-start\", converter: dateConverter }) rangeStart: Date | null = null;\r\n\r\n /**\r\n * End of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-end\", converter: dateConverter }) rangeEnd: Date | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date cannot be selected.\r\n * @default null\r\n */\r\n @property({ attribute: false }) blackoutDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date is special.\r\n * @default null\r\n */\r\n @property({ attribute: false }) specialDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous month.\r\n * @default \"Previous month\"\r\n */\r\n @property({ attribute: \"previous-month-label\" }) previousMonthLabel = \"Previous month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous year.\r\n * @default \"Previous year\"\r\n */\r\n @property({ attribute: \"previous-year-label\" }) previousYearLabel = \"Previous year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous 24 years.\r\n * @default \"Previous 24 years\"\r\n */\r\n @property({ attribute: \"previous-multi-year-label\" }) previousMultiYearLabel = \"Previous 24 years\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next month.\r\n * @default \"Next month\"\r\n */\r\n @property({ attribute: \"next-month-label\" }) nextMonthLabel = \"Next month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next year.\r\n * @default \"Next year\"\r\n */\r\n @property({ attribute: \"next-year-label\" }) nextYearLabel = \"Next year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next 24 years.\r\n * @default \"Next 24 years\"\r\n */\r\n @property({ attribute: \"next-multi-year-label\" }) nextMultiYearLabel = \"Next 24 years\";\r\n\r\n /**\r\n * Whether the user can clear the selected date and close the picker.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) clearable = false;\r\n\r\n /**\r\n * The label given to the button used clear the selected date and close the picker.\r\n * @default \"Clear\"\r\n */\r\n @property({ attribute: \"clear-label\" }) clearLabel = \"Clear\";\r\n\r\n /**\r\n * The label given to the button used apply the selected date and close the picker.\r\n * @default \"OK\"\r\n */\r\n @property({ attribute: \"confirm-label\" }) confirmLabel = \"OK\";\r\n\r\n /**\r\n * The label given to the button used discard the selected date and close the picker.\r\n * @default \"Cancel\"\r\n */\r\n @property({ attribute: \"dismiss-label\" }) dismissLabel = \"Cancel\";\r\n\r\n /**\r\n * The label given to the the picker.\r\n * @default \"Select date\"\r\n */\r\n @property() label = \"Select date\";\r\n\r\n /** Whether the picker is open. */\r\n get isOpen() {\r\n return this.#trigger !== undefined;\r\n }\r\n\r\n /** The current variant applied to the picker. */\r\n get currentVariant(): Exclude<DatepickerVariant, \"auto\"> {\r\n return this._variant ?? (this.variant !== \"modal\" ? \"docked\" : \"modal\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.setAttribute(\"popover\", \"manual\");\r\n this.addEventListener(\"toggle\", this.#toggleHandler);\r\n document.addEventListener(\"click\", this.#documentClickHandler);\r\n document.addEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._variant = undefined;\r\n this.#breakpointUnobserve?.();\r\n\r\n this.#clearAnchoring();\r\n\r\n deleteCustomState(this, \"--docked\");\r\n deleteCustomState(this, \"--modal\");\r\n\r\n this.removeEventListener(\"toggle\", this.#toggleHandler);\r\n document.removeEventListener(\"click\", this.#documentClickHandler);\r\n document.removeEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n if (this.variant === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /**\r\n * Opens the picker.\r\n * @param {HTMLElement} trigger The element that triggered the picker.\r\n * @param {HTMLElement | undefined} anchor The element used to position the picker.\r\n * @returns {Promise<void>} A `Promise` that resolves when the picker is opened.\r\n */\r\n async show(trigger: HTMLElement, anchor?: HTMLElement): Promise<void> {\r\n if (this.#trigger && this.#trigger !== trigger) {\r\n this.hide();\r\n }\r\n\r\n if (this.currentVariant === \"modal\") {\r\n this.#scrollLockController.lock();\r\n this.#inertController.lock();\r\n }\r\n\r\n const calendar = this._calendar;\r\n\r\n calendar.date = this.date;\r\n calendar.rangeStart = this.rangeStart;\r\n calendar.rangeEnd = this.rangeEnd;\r\n\r\n // Reset the start-view\r\n calendar.requestUpdate(\"startView\");\r\n if (calendar.isUpdatePending) {\r\n await calendar.updateComplete;\r\n }\r\n\r\n this.#trigger = trigger;\r\n this.#trigger.ariaExpanded = \"true\";\r\n this.#anchor = anchor;\r\n\r\n await this.#updatePosition();\r\n this.showPopover();\r\n\r\n await this._calendar.focusActiveCell();\r\n }\r\n\r\n /**\r\n * Hides the picker.\r\n * @param {boolean} [restoreFocus=false] Whether to restore focus to the picker's trigger.\r\n */\r\n hide(restoreFocus: boolean = false): void {\r\n if (this.currentVariant === \"modal\") {\r\n this.#scrollLockController.unlock();\r\n this.#inertController.unlock();\r\n }\r\n\r\n this.hidePopover();\r\n\r\n if (this.#trigger) {\r\n this.#trigger.ariaExpanded = \"false\";\r\n if (restoreFocus) {\r\n this.#trigger.focus();\r\n }\r\n this.#trigger = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the picker.\r\n * @param {HTMLElement} trigger The element that triggered the picker.\r\n * @param {HTMLElement | undefined} anchor The element used to position the picker.\r\n * @returns {Promise<void>} A `Promise` that resolves when the picker is opened or closed.\r\n */\r\n async toggle(trigger: HTMLElement, anchor?: HTMLElement): Promise<void> {\r\n if (this.#trigger) {\r\n this.hide();\r\n } else {\r\n await this.show(trigger, anchor);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-focus-trap>\r\n ${this.#renderHeader()}\r\n <m3e-calendar\r\n class=\"calendar\"\r\n start-view=\"${this.startView}\"\r\n start-at=\"${ifDefined(this.startAt?.toISOString())}\"\r\n min-date=\"${ifDefined(this.minDate?.toISOString())}\"\r\n max-date=\"${ifDefined(this.maxDate?.toISOString())}\"\r\n @change=\"${this.#handleCalendarChange}\"\r\n ></m3e-calendar>\r\n <div class=\"actions\">\r\n ${this.clearable\r\n ? html`<m3e-button @click=\"${this.#handleClearClick}\">${this.clearLabel}</m3e-button>`\r\n : nothing}\r\n <div class=\"spacer\" aria-hidden=\"true\"></div>\r\n <m3e-button @click=\"${this.#handleDismissClick}\">${this.dismissLabel}</m3e-button>\r\n <m3e-button @click=\"${this.#handleConfirmClick}\">${this.confirmLabel}</m3e-button>\r\n </div>\r\n </m3e-focus-trap>`;\r\n }\r\n\r\n /** @inheritdoc */\r\n #renderHeader(): unknown {\r\n if (this.currentVariant === \"docked\") return nothing;\r\n\r\n const rangeStart = this._rangeStart ?? this.rangeStart;\r\n const rangeEnd = this._rangeStart ? this._rangeEnd : (this._rangeEnd ?? this.rangeEnd);\r\n const selectedDate = this._date ?? this.date;\r\n\r\n return html`<div class=\"supporting-text\">${this.label}</div>\r\n ${rangeStart\r\n ? html`<div class=\"headline\">\r\n ${new Intl.DateTimeFormat(navigator.language, {\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(rangeStart) +\r\n \" – \" +\r\n (rangeEnd\r\n ? new Intl.DateTimeFormat(navigator.language, {\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(rangeEnd)\r\n : \"\")}\r\n </div>`\r\n : html`<div class=\"headline\">\r\n ${selectedDate\r\n ? new Intl.DateTimeFormat(navigator.language, {\r\n weekday: \"short\",\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(selectedDate)\r\n : \"––\"}\r\n </div>`}\r\n <div class=\"divider\"></div>`;\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if ([\"date\", \"rangeStart\", \"rangeEnd\"].some((x) => changedProperties.has(<keyof M3eDatepickerElement>x))) {\r\n this.#clearSelectionState();\r\n }\r\n if (changedProperties.has(\"rangeStart\") && this.rangeStart) {\r\n this.range = true;\r\n }\r\n if (changedProperties.has(\"rangeStart\") && this.rangeStart && !changedProperties.has(\"date\")) {\r\n this.date = new Date(this.rangeStart);\r\n }\r\n if (changedProperties.has(\"rangeEnd\") && this.rangeEnd && !changedProperties.has(\"date\")) {\r\n this.date = new Date(this.rangeEnd);\r\n }\r\n if (changedProperties.has(\"variant\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.variant === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._variant = undefined;\r\n this.#updateVariant();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"specialDates\") || _changedProperties.has(\"blackoutDates\")) {\r\n this._calendar.specialDates = this.specialDates;\r\n this._calendar.blackoutDates = this.blackoutDates;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentClick(e: MouseEvent): void {\r\n if (!e.composedPath().some((x) => x instanceof M3eDatepickerElement || x === this.#trigger || x === this.#anchor)) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCalendarChange(): void {\r\n this._date = this._calendar.date;\r\n this._rangeStart = this._calendar.rangeStart;\r\n this._rangeEnd = this._calendar.rangeEnd;\r\n\r\n if (this.range && !this._rangeStart && this._date) {\r\n this._rangeStart = new Date(this._date);\r\n this._calendar.rangeStart = this._rangeStart;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClearClick(): void {\r\n this.date = null;\r\n this.rangeStart = null;\r\n this.rangeEnd = null;\r\n\r\n this.hide(true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleDismissClick(): void {\r\n this.hide(true);\r\n }\r\n\r\n /** @private */\r\n #handleConfirmClick(): void {\r\n this.date = this._date ?? this.date;\r\n this.rangeStart = this._rangeStart === undefined ? this.rangeStart : this._rangeStart;\r\n this.rangeEnd = this._rangeEnd === undefined ? this.rangeEnd : this._rangeEnd;\r\n this.hide(true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleDocumentKeyDown(e: KeyboardEvent): void {\r\n if (this.isOpen && this.currentVariant === \"modal\" && e.key === \"Escape\" && !e.shiftKey && !e.ctrlKey) {\r\n e.preventDefault();\r\n this.hide(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall, Breakpoint.Small], (matches) => {\r\n this._variant = matches.get(Breakpoint.XSmall) || matches.get(Breakpoint.Small) ? \"modal\" : \"docked\";\r\n this.#updateVariant();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateVariant(): void {\r\n switch (this.currentVariant) {\r\n case \"docked\":\r\n this.ariaModal = null;\r\n deleteCustomState(this, \"--modal\");\r\n addCustomState(this, \"--docked\");\r\n this.#scrollLockController.unlock();\r\n this.#inertController.unlock();\r\n break;\r\n\r\n case \"modal\":\r\n this.ariaModal = \"true\";\r\n deleteCustomState(this, \"--docked\");\r\n addCustomState(this, \"--modal\");\r\n if (this.isOpen) {\r\n this.#scrollLockController.lock();\r\n this.#inertController.lock();\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (this.isOpen) {\r\n this.#updatePosition();\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updatePosition(): Promise<void> {\r\n if (this.currentVariant === \"docked\" && this.#trigger) {\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = await positionAnchor(\r\n this,\r\n this.#anchor ?? this.#trigger,\r\n {\r\n position: \"bottom-start\",\r\n inline: true,\r\n flip: true,\r\n shift: \"both\",\r\n },\r\n (x, y, position) => {\r\n setCustomState(this, \"--top\", position.includes(\"top\"));\r\n setCustomState(this, \"--bottom\", position.includes(\"bottom\"));\r\n\r\n if (M3eDirectionality.current === \"rtl\") {\r\n this.style.right = `${window.innerWidth - x - this.clientWidth}px`;\r\n this.style.left = \"\";\r\n } else {\r\n this.style.left = `${x}px`;\r\n this.style.right = \"\";\r\n }\r\n\r\n this.style.top = `${y}px`;\r\n },\r\n );\r\n } else {\r\n this.#clearAnchoring();\r\n }\r\n }\r\n\r\n /** @private */\r\n #clearAnchoring(): void {\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = undefined;\r\n this.style.left = \"\";\r\n this.style.right = \"\";\r\n this.style.top = \"\";\r\n }\r\n\r\n /** @private */\r\n #clearSelectionState(): void {\r\n this._date = this._rangeStart = this._rangeEnd = undefined;\r\n }\r\n}\r\n\r\ninterface M3eDatepickerElementEventMap extends HTMLElementEventMap {\r\n beforetoggle: ToggleEvent;\r\n toggle: ToggleEvent;\r\n}\r\n\r\nexport interface M3eDatepickerElement {\r\n addEventListener<K extends keyof M3eDatepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eDatepickerElement, ev: M3eDatepickerElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eDatepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eDatepickerElement, ev: M3eDatepickerElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-datepicker\": M3eDatepickerElement;\r\n }\r\n}\r\n","import { customElement, ActionElementBase, HtmlFor } from \"@m3e/web/core\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { M3eDatepickerElement } from \"./DatepickerElement\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to toggle a datepicker.\r\n * @tag m3e-datepicker-toggle\r\n */\r\n@customElement(\"m3e-datepicker-toggle\")\r\nexport class M3eDatepickerToggleElement extends HtmlFor(ActionElementBase) {\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n if (this.parentElement) {\r\n this.parentElement.ariaHasPopup = \"dialog\";\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n if (this.parentElement) {\r\n this.parentElement.ariaHasPopup = null;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override _onClick(): void {\r\n if (this.control instanceof M3eDatepickerElement && this.parentElement) {\r\n this.control.toggle(this.parentElement, this.closest<M3eFormFieldElement>(\"m3e-form-field\") ?? undefined);\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-datepicker-toggle\": M3eDatepickerToggleElement;\r\n }\r\n}\r\n"],"names":["M3eDatepickerElement","M3eDatepickerElement_1","SuppressInitialAnimation","ReconnectedCallback","AttachInternals","Role","LitElement","constructor","_M3eDatepickerElement_breakpointUnobserve","set","_M3eDatepickerElement_trigger","_M3eDatepickerElement_anchor","_M3eDatepickerElement_anchorCleanup","_M3eDatepickerElement_scrollLockController","ScrollLockController","_M3eDatepickerElement_inertController","InertController","_M3eDatepickerElement_documentClickHandler","e","__classPrivateFieldGet","call","_M3eDatepickerElement_documentKeyDownHandler","_M3eDatepickerElement_toggleHandler","newState","_M3eDatepickerElement_instances","_M3eDatepickerElement_clearSelectionState","__classPrivateFieldSet","undefined","variant","startView","date","startAt","minDate","maxDate","range","rangeStart","rangeEnd","blackoutDates","specialDates","previousMonthLabel","previousYearLabel","previousMultiYearLabel","nextMonthLabel","nextYearLabel","nextMultiYearLabel","clearable","clearLabel","confirmLabel","dismissLabel","label","isOpen","currentVariant","_variant","connectedCallback","setAttribute","addEventListener","document","disconnectedCallback","_M3eDatepickerElement_clearAnchoring","deleteCustomState","removeEventListener","reconnectedCallback","_M3eDatepickerElement_initBreakpointMonitoring","show","trigger","anchor","hide","lock","calendar","_calendar","requestUpdate","isUpdatePending","updateComplete","ariaExpanded","_M3eDatepickerElement_updatePosition","showPopover","focusActiveCell","restoreFocus","unlock","hidePopover","focus","toggle","render","html","_M3eDatepickerElement_renderHeader","ifDefined","toISOString","_M3eDatepickerElement_handleCalendarChange","_M3eDatepickerElement_handleClearClick","nothing","_M3eDatepickerElement_handleDismissClick","_M3eDatepickerElement_handleConfirmClick","willUpdate","changedProperties","some","x","has","Date","_M3eDatepickerElement_updateVariant","updated","_changedProperties","_rangeStart","_rangeEnd","selectedDate","_date","Intl","DateTimeFormat","navigator","language","month","day","format","weekday","composedPath","dispatchEvent","Event","bubbles","key","shiftKey","ctrlKey","preventDefault","M3eBreakpointObserver","observe","Breakpoint","XSmall","Small","matches","get","ariaModal","addCustomState","positionAnchor","position","inline","flip","shift","y","setCustomState","includes","M3eDirectionality","current","style","right","window","innerWidth","clientWidth","left","top","styles","css","DesignToken","color","surfaceContainer","elevation","level3","level0","shape","corner","none","onSurfaceVariant","typescale","standard","headline","large","fontSize","fontWeight","lineHeight","tracking","outlineVariant","surfaceContainerHigh","extraLarge","unsafeCSS","motion","duration","short2","easing","scrim","short3","long2","__decorate","state","prototype","query","property","attribute","converter","dateConverter","type","Boolean","customElement","M3eDatepickerToggleElement","HtmlFor","ActionElementBase","parentElement","ariaHasPopup","_onClick","control","closest"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker.js","sources":["../../src/datepicker/DatepickerElement.ts","../../src/datepicker/DatepickerToggleElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\n\r\nimport {\r\n addCustomState,\r\n customElement,\r\n AttachInternals,\r\n dateConverter,\r\n deleteCustomState,\r\n DesignToken,\r\n Role,\r\n ScrollLockController,\r\n setCustomState,\r\n SuppressInitialAnimation,\r\n InertController,\r\n ReconnectedCallback,\r\n prefersReducedMotion,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { positionAnchor } from \"@m3e/web/core/anchoring\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\nimport { M3eCalendarElement, CalendarView } from \"@m3e/web/calendar\";\r\n\r\nimport \"@m3e/web/core/a11y\";\r\nimport \"@m3e/web/button\";\r\nimport \"@m3e/web/calendar\";\r\n\r\nimport { DatepickerVariant } from \"./DatepickerVariant\";\r\n\r\n/**\r\n * Presents a date picker on a temporary surface.\r\n *\r\n * @description\r\n * The `m3e-datepicker` component provides a date‑selection experience\r\n * consistent with Material 3 guidance for layout, motion, and accessibility.\r\n * It displays a temporary surface that allows users to select a date or date\r\n * range using calendar-based views. The picker supports month, year, and\r\n * multi‑year views, enabling users to navigate across time efficiently.\r\n *\r\n * While open, the picker uses a focused selection flow. Users review their\r\n * choice and complete the interaction through confirm, dismiss, or clear\r\n * actions, ensuring intentional updates to the field or control that invoked it.\r\n *\r\n * It accepts and emits plain `Date` values, allowing applications to apply their\r\n * own formatting, parsing, and localization.\r\n *\r\n * @tag m3e-datepicker\r\n *\r\n * @attr variant - The appearance variant of the picker.\r\n * @attr clearable - Whether the user can clear the selected date and close the picker.\r\n * @attr date - The selected date.\r\n * @attr max-date - The maximum date that can be selected.\r\n * @attr min-date - The minimum date that can be selected.\r\n * @attr range - Whether a range of dates can be selected.\r\n * @attr range-end - End of a date range.\r\n * @attr range-start - Start of a date range.\r\n * @attr start-at - A date specifying the period (month or year) to start the calendar in.\r\n * @attr start-view - The initial view used to select a date.\r\n * @attr previous-month-label - The accessible label given to the button used to move to the previous month.\r\n * @attr next-month-label - The accessible label given to the button used to move to the next month.\r\n * @attr previous-year-label - The accessible label given to the button used to move to the previous year.\r\n * @attr next-year-label - The accessible label given to the button used to move to the next year.\r\n * @attr previous-multi-year-label - The accessible label given to the button used to move to the previous 24 years.\r\n * @attr next-multi-year-label - The accessible label given to the button used to move to the next 24 years.\r\n * @attr clear-label - The label given to the button used clear the selected date and close the picker.\r\n * @attr confirm-label - The label given to the button used apply the selected date and close the picker.\r\n * @attr dismiss-label - The label given to the button used discard the selected date and close the picker.\r\n * @attr label - The label given to the the picker.\r\n *\r\n * @fires change - Dispatched when the selected date changes.\r\n * @fires beforetoggle - Dispatched before the toggle state changes.\r\n * @fires toggle - Dispatched after the toggle state has changed.\r\n *\r\n * @cssprop --m3e-datepicker-container-padding-block - Block‑axis padding of the date picker container.\r\n * @cssprop --m3e-datepicker-container-padding-inline - Inline‑axis padding of the date picker container.\r\n * @cssprop --m3e-datepicker-container-color - Background color of the standard container surface.\r\n * @cssprop --m3e-datepicker-container-elevation - Elevation shadow applied to the container surface.\r\n * @cssprop --m3e-datepicker-modal-headline-color - Color used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-font-size - Font size used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-font-weight - Font weight used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-line-height - Line height used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-headline-tracking - Letter spacing used for the modal headline text.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-color - Color used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-font-size - Font size used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-font-weight - Font weight used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-line-height - Line height used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-modal-supporting-text-tracking - Letter spacing used for supporting text in modal mode.\r\n * @cssprop --m3e-datepicker-actions-padding-inline - Inline‑axis padding of the action row.\r\n * @cssprop --m3e-datepicker-docked-container-color - Background color of the container in docked mode.\r\n * @cssprop --m3e-datepicker-docked-container-shape - Corner radius of the container in docked mode.\r\n * @cssprop --m3e-datepicker-modal-container-color - Background color of the container in modal mode.\r\n * @cssprop --m3e-datepicker-modal-container-shape - Corner radius of the container in modal mode.\r\n * @cssprop --m3e-divider-thickness - Thickness of divider elements within the picker.\r\n * @cssprop --m3e-divider-color - Color of divider rules within the picker.\r\n * @cssprop --m3e-dialog-scrim-color - Base color used for the modal scrim behind the picker.\r\n * @cssprop --m3e-dialog-scrim-opacity - Opacity applied to the scrim color in modal mode.\r\n */\r\n@customElement(\"m3e-datepicker\")\r\nexport class M3eDatepickerElement extends SuppressInitialAnimation(\r\n ReconnectedCallback(AttachInternals(Role(LitElement, \"dialog\"))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n flex-direction: column;\r\n margin: unset;\r\n border: unset;\r\n padding-block: var(--m3e-datepicker-container-padding-block, 0.75rem);\r\n padding-inline: var(--m3e-datepicker-container-padding-inline, 0.25rem);\r\n background-color: var(--m3e-datepicker-container-color, ${DesignToken.color.surfaceContainer});\r\n box-shadow: var(--m3e-datepicker-container-elevation, ${DesignToken.elevation.level3});\r\n opacity: 0;\r\n display: none;\r\n }\r\n .calendar {\r\n --m3e-calendar-container-color: transparent;\r\n --m3e-calendar-container-elevation: ${DesignToken.elevation.level0};\r\n --m3e-calendar-container-shape: ${DesignToken.shape.corner.none};\r\n }\r\n .headline {\r\n color: var(--m3e-datepicker-modal-headline-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(\r\n --m3e-datepicker-modal-headline-font-size,\r\n ${DesignToken.typescale.standard.headline.large.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-datepicker-modal-headline-font-weight,\r\n ${DesignToken.typescale.standard.headline.large.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-datepicker-modal-headline-line-height,\r\n ${DesignToken.typescale.standard.headline.large.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-datepicker-modal-headline-tracking,\r\n ${DesignToken.typescale.standard.headline.large.tracking}\r\n );\r\n margin-block-start: 2.25rem;\r\n margin-block-end: 0.75rem;\r\n margin-inline: 1.5rem;\r\n }\r\n .supporting-text {\r\n color: var(--m3e-datepicker-modal-supporting-text-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(\r\n --m3e-datepicker-modal-supporting-text-font-size,\r\n ${DesignToken.typescale.standard.label.large.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-datepicker-modal-supporting-text-font-weight,\r\n ${DesignToken.typescale.standard.label.large.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-datepicker-modal-supporting-text-line-height,\r\n ${DesignToken.typescale.standard.label.large.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-datepicker-modal-supporting-text-tracking,\r\n ${DesignToken.typescale.standard.label.large.tracking}\r\n );\r\n margin-block-start: 1rem;\r\n margin-inline: 1.5rem;\r\n }\r\n .divider {\r\n height: var(--m3e-divider-thickness, 1px);\r\n width: 100%;\r\n position: relative;\r\n }\r\n .divider::before {\r\n content: \"\";\r\n box-sizing: border-box;\r\n position: absolute;\r\n border-bottom: var(--m3e-divider-thickness, 1px) solid\r\n var(--m3e-divider-color, ${DesignToken.color.outlineVariant});\r\n height: inherit;\r\n left: -0.25rem;\r\n right: -0.25rem;\r\n }\r\n .actions {\r\n display: flex;\r\n align-items: center;\r\n column-gap: 0.5rem;\r\n padding-inline: var(--m3e-datepicker-actions-padding-inline, 0.5rem);\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n :host(:is(:state(--docked), :--docked)) {\r\n position: absolute;\r\n background-color: var(--m3e-datepicker-docked-container-color, ${DesignToken.color.surfaceContainer});\r\n border-radius: var(--m3e-datepicker-docked-container-shape, ${DesignToken.shape.corner.large});\r\n }\r\n :host(:is(:state(--modal), :--modal)) {\r\n position: fixed;\r\n inset: 0;\r\n margin: auto;\r\n transform-origin: top;\r\n background-color: var(--m3e-datepicker-modal-container-color, ${DesignToken.color.surfaceContainerHigh});\r\n border-radius: var(--m3e-datepicker-modal-container-shape, ${DesignToken.shape.corner.extraLarge});\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: ${unsafeCSS(\r\n `opacity ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard}, \r\n transform ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard},\r\n overlay ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n display ${DesignToken.motion.duration.short2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host {\r\n transform: scaleY(0.8);\r\n }\r\n :host(:popover-open) {\r\n transform: scaleY(1);\r\n display: inline-flex;\r\n opacity: 1;\r\n }\r\n :host(:is(:state(--docked), :--docked))::backdrop {\r\n background-color: transparent;\r\n }\r\n :host(:is(:state(--modal), :--modal))::backdrop {\r\n background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent);\r\n margin-inline-end: -20px;\r\n }\r\n :host(:is(:state(--modal), :--modal):not(:popover-open))::backdrop {\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.short3} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host(:is(:state(--modal), :--modal):popover-open)::backdrop {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%),\r\n transparent\r\n );\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard}, \r\n overlay ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete,\r\n visibility ${DesignToken.motion.duration.long2} ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n :host(:is(:state(--bottom), :--bottom)) {\r\n transform-origin: top;\r\n }\r\n :host(:is(:state(--top), :--top)) {\r\n transform-origin: bottom;\r\n }\r\n @starting-style {\r\n :host(:popover-open) {\r\n transform: scaleY(0.8);\r\n }\r\n :host(:is(:state(--modal), :--modal):popover-open)::backdrop {\r\n background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${DesignToken.color.scrim}) 0%, transparent);\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n :host {\r\n background-color: Menu;\r\n color: MenuText;\r\n border: 1px solid CanvasText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ #closeTimeout = -1;\r\n /** @private */ @state() private _open = false;\r\n /** @private */ @state() private _date?: Date | null;\r\n /** @private */ @state() private _rangeStart?: Date | null;\r\n /** @private */ @state() private _rangeEnd?: Date | null;\r\n\r\n /** @private */ @query(\"m3e-calendar\") private readonly _calendar!: M3eCalendarElement;\r\n /** @private */ @state() private _variant?: Exclude<DatepickerVariant, \"auto\">;\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n\r\n /** @private */ #trigger?: HTMLElement;\r\n /** @private */ #anchor?: HTMLElement;\r\n /** @private */ #anchorCleanup?: () => void;\r\n\r\n /** @private */ readonly #scrollLockController = new ScrollLockController(this);\r\n /** @private */ readonly #inertController = new InertController(this);\r\n /** @private */ readonly #documentClickHandler = (e: MouseEvent) => this.#handleDocumentClick(e);\r\n /** @private */ readonly #documentKeyDownHandler = (e: KeyboardEvent) => this.#handleDocumentKeyDown(e);\r\n\r\n /** @private */\r\n readonly #toggleHandler = (e: ToggleEvent) => {\r\n if (e.newState === \"closed\") {\r\n this.#clearSelectionState();\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = undefined;\r\n\r\n clearTimeout(this.#closeTimeout);\r\n\r\n if (!prefersReducedMotion()) {\r\n this.#closeTimeout = setTimeout(() => (this._open = false), 100);\r\n } else {\r\n this._open = false;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * The appearance variant of the picker.\r\n * @default \"docked\"\r\n */\r\n @property() variant: DatepickerVariant = \"docked\";\r\n\r\n /**\r\n * The initial view used to select a date.\r\n * @default \"month\"\r\n */\r\n @property({ attribute: \"start-view\" }) startView: CalendarView = \"month\";\r\n\r\n /**\r\n * The selected date.\r\n * @default null\r\n */\r\n @property({ converter: dateConverter }) date: Date | null = null;\r\n\r\n /**\r\n * A date specifying the period (month or year) to start the calendar in.\r\n * @default null\r\n */\r\n @property({ attribute: \"start-at\", converter: dateConverter }) startAt: Date | null = null;\r\n\r\n /**\r\n * The minimum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"min-date\", converter: dateConverter }) minDate: Date | null = null;\r\n\r\n /**\r\n * The maximum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"max-date\", converter: dateConverter }) maxDate: Date | null = null;\r\n\r\n /**\r\n * Whether a range of dates can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) range = false;\r\n\r\n /**\r\n * Start of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-start\", converter: dateConverter }) rangeStart: Date | null = null;\r\n\r\n /**\r\n * End of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-end\", converter: dateConverter }) rangeEnd: Date | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date cannot be selected.\r\n * @default null\r\n */\r\n @property({ attribute: false }) blackoutDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date is special.\r\n * @default null\r\n */\r\n @property({ attribute: false }) specialDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous month.\r\n * @default \"Previous month\"\r\n */\r\n @property({ attribute: \"previous-month-label\" }) previousMonthLabel = \"Previous month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous year.\r\n * @default \"Previous year\"\r\n */\r\n @property({ attribute: \"previous-year-label\" }) previousYearLabel = \"Previous year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous 24 years.\r\n * @default \"Previous 24 years\"\r\n */\r\n @property({ attribute: \"previous-multi-year-label\" }) previousMultiYearLabel = \"Previous 24 years\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next month.\r\n * @default \"Next month\"\r\n */\r\n @property({ attribute: \"next-month-label\" }) nextMonthLabel = \"Next month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next year.\r\n * @default \"Next year\"\r\n */\r\n @property({ attribute: \"next-year-label\" }) nextYearLabel = \"Next year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next 24 years.\r\n * @default \"Next 24 years\"\r\n */\r\n @property({ attribute: \"next-multi-year-label\" }) nextMultiYearLabel = \"Next 24 years\";\r\n\r\n /**\r\n * Whether the user can clear the selected date and close the picker.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) clearable = false;\r\n\r\n /**\r\n * The label given to the button used clear the selected date and close the picker.\r\n * @default \"Clear\"\r\n */\r\n @property({ attribute: \"clear-label\" }) clearLabel = \"Clear\";\r\n\r\n /**\r\n * The label given to the button used apply the selected date and close the picker.\r\n * @default \"OK\"\r\n */\r\n @property({ attribute: \"confirm-label\" }) confirmLabel = \"OK\";\r\n\r\n /**\r\n * The label given to the button used discard the selected date and close the picker.\r\n * @default \"Cancel\"\r\n */\r\n @property({ attribute: \"dismiss-label\" }) dismissLabel = \"Cancel\";\r\n\r\n /**\r\n * The label given to the the picker.\r\n * @default \"Select date\"\r\n */\r\n @property() label = \"Select date\";\r\n\r\n /** Whether the picker is open. */\r\n get isOpen() {\r\n return this.#trigger !== undefined;\r\n }\r\n\r\n /** The current variant applied to the picker. */\r\n get currentVariant(): Exclude<DatepickerVariant, \"auto\"> {\r\n return this._variant ?? (this.variant !== \"modal\" ? \"docked\" : \"modal\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.setAttribute(\"popover\", \"manual\");\r\n this.addEventListener(\"toggle\", this.#toggleHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._variant = undefined;\r\n this.#breakpointUnobserve?.();\r\n\r\n this.#clearAnchoring();\r\n\r\n deleteCustomState(this, \"--docked\");\r\n deleteCustomState(this, \"--modal\");\r\n\r\n this.removeEventListener(\"toggle\", this.#toggleHandler);\r\n document.removeEventListener(\"click\", this.#documentClickHandler);\r\n document.removeEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n if (this.variant === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /**\r\n * Opens the picker.\r\n * @param {HTMLElement} trigger The element that triggered the picker.\r\n * @param {HTMLElement | undefined} anchor The element used to position the picker.\r\n * @returns {Promise<void>} A `Promise` that resolves when the picker is opened.\r\n */\r\n async show(trigger: HTMLElement, anchor?: HTMLElement): Promise<void> {\r\n if (this.#trigger && this.#trigger !== trigger) {\r\n this.hide();\r\n }\r\n\r\n clearTimeout(this.#closeTimeout);\r\n\r\n if (this.currentVariant === \"modal\") {\r\n this.#scrollLockController.lock();\r\n this.#inertController.lock();\r\n }\r\n\r\n // The calendar is rendered on demand\r\n this._open = true;\r\n\r\n // Wait for the calendar to render\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n const calendar = this._calendar;\r\n\r\n calendar.startView = this.startView;\r\n calendar.startAt = this.startAt;\r\n calendar.minDate = this.minDate;\r\n calendar.maxDate = this.maxDate;\r\n calendar.date = this.date;\r\n calendar.rangeStart = this.rangeStart;\r\n calendar.rangeEnd = this.rangeEnd;\r\n calendar.specialDates = this.specialDates;\r\n calendar.blackoutDates = this.blackoutDates;\r\n\r\n // Ensure the active view is reset\r\n calendar.resetActiveView();\r\n\r\n if (calendar.isUpdatePending) {\r\n await calendar.updateComplete;\r\n }\r\n\r\n this.#trigger = trigger;\r\n this.#trigger.ariaExpanded = \"true\";\r\n this.#anchor = anchor;\r\n\r\n await this.#updatePosition();\r\n this.showPopover();\r\n\r\n document.addEventListener(\"click\", this.#documentClickHandler);\r\n document.addEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n\r\n await calendar.focusActiveCell();\r\n }\r\n\r\n /**\r\n * Hides the picker.\r\n * @param {boolean} [restoreFocus=false] Whether to restore focus to the picker's trigger.\r\n */\r\n hide(restoreFocus: boolean = false): void {\r\n if (!this.isOpen) return;\r\n\r\n document.removeEventListener(\"click\", this.#documentClickHandler);\r\n document.removeEventListener(\"keydown\", this.#documentKeyDownHandler);\r\n\r\n if (this.currentVariant === \"modal\") {\r\n this.#scrollLockController.unlock();\r\n this.#inertController.unlock();\r\n }\r\n\r\n this.hidePopover();\r\n\r\n if (this.#trigger) {\r\n this.#trigger.ariaExpanded = \"false\";\r\n if (restoreFocus) {\r\n this.#trigger.focus();\r\n }\r\n this.#trigger = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the picker.\r\n * @param {HTMLElement} trigger The element that triggered the picker.\r\n * @param {HTMLElement | undefined} anchor The element used to position the picker.\r\n * @returns {Promise<void>} A `Promise` that resolves when the picker is opened or closed.\r\n */\r\n async toggle(trigger: HTMLElement, anchor?: HTMLElement): Promise<void> {\r\n if (this.#trigger) {\r\n this.hide();\r\n } else {\r\n await this.show(trigger, anchor);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-focus-trap ?disabled=\"${!this._open}\">\r\n ${this.#renderHeader()}${this.#renderCalendar()}${this.#renderActions()}\r\n </m3e-focus-trap>`;\r\n }\r\n\r\n /** @inheritdoc */\r\n #renderHeader(): unknown {\r\n if (this.currentVariant === \"docked\") return nothing;\r\n\r\n const rangeStart = this._rangeStart ?? this.rangeStart;\r\n const rangeEnd = this._rangeStart ? this._rangeEnd : (this._rangeEnd ?? this.rangeEnd);\r\n const selectedDate = this._date ?? this.date;\r\n\r\n return html`<div class=\"supporting-text\">${this.label}</div>\r\n ${rangeStart\r\n ? html`<div class=\"headline\">\r\n ${new Intl.DateTimeFormat(navigator.language, {\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(rangeStart) +\r\n \" – \" +\r\n (rangeEnd\r\n ? new Intl.DateTimeFormat(navigator.language, {\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(rangeEnd)\r\n : \"\")}\r\n </div>`\r\n : html`<div class=\"headline\">\r\n ${selectedDate\r\n ? new Intl.DateTimeFormat(navigator.language, {\r\n weekday: \"short\",\r\n month: \"short\",\r\n day: \"numeric\",\r\n }).format(selectedDate)\r\n : \"––\"}\r\n </div>`}\r\n <div class=\"divider\"></div>`;\r\n }\r\n\r\n /** @private */\r\n #renderCalendar(): unknown {\r\n // Calendar is rendered only when open\r\n return this._open\r\n ? html`<m3e-calendar class=\"calendar\" @change=\"${this.#handleCalendarChange}\"></m3e-calendar>`\r\n : nothing;\r\n }\r\n\r\n /** @private */\r\n #renderActions(): unknown {\r\n return html`<div class=\"actions\">\r\n ${this.clearable ? html`<m3e-button @click=\"${this.#handleClearClick}\">${this.clearLabel}</m3e-button>` : nothing}\r\n <div class=\"spacer\" aria-hidden=\"true\"></div>\r\n <m3e-button @click=\"${this.#handleDismissClick}\">${this.dismissLabel}</m3e-button>\r\n <m3e-button @click=\"${this.#handleConfirmClick}\">${this.confirmLabel}</m3e-button>\r\n </div>`;\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if ([\"date\", \"rangeStart\", \"rangeEnd\"].some((x) => changedProperties.has(<keyof M3eDatepickerElement>x))) {\r\n this.#clearSelectionState();\r\n }\r\n if (changedProperties.has(\"rangeStart\") && this.rangeStart) {\r\n this.range = true;\r\n }\r\n if (changedProperties.has(\"rangeStart\") && this.rangeStart && !changedProperties.has(\"date\")) {\r\n this.date = new Date(this.rangeStart);\r\n }\r\n if (changedProperties.has(\"rangeEnd\") && this.rangeEnd && !changedProperties.has(\"date\")) {\r\n this.date = new Date(this.rangeEnd);\r\n }\r\n if (changedProperties.has(\"variant\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.variant === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._variant = undefined;\r\n this.#updateVariant();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDocumentClick(e: MouseEvent): void {\r\n if (this.isOpen && !e.composedPath().some((x) => x === this || x === this.#trigger)) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleCalendarChange(e: Event): void {\r\n const calendar = <M3eCalendarElement>e.target;\r\n this._date = calendar.date;\r\n this._rangeStart = calendar.rangeStart;\r\n this._rangeEnd = calendar.rangeEnd;\r\n\r\n if (this.range && !this._rangeStart && this._date) {\r\n this._rangeStart = new Date(this._date);\r\n calendar.rangeStart = this._rangeStart;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClearClick(): void {\r\n this.date = null;\r\n this.rangeStart = null;\r\n this.rangeEnd = null;\r\n\r\n this.hide(true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleDismissClick(): void {\r\n this.hide(true);\r\n }\r\n\r\n /** @private */\r\n #handleConfirmClick(): void {\r\n this.date = this._date ?? this.date;\r\n this.rangeStart = this._rangeStart === undefined ? this.rangeStart : this._rangeStart;\r\n this.rangeEnd = this._rangeEnd === undefined ? this.rangeEnd : this._rangeEnd;\r\n this.hide(true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleDocumentKeyDown(e: KeyboardEvent): void {\r\n if (this.isOpen && this.currentVariant === \"modal\" && e.key === \"Escape\" && !e.shiftKey && !e.ctrlKey) {\r\n e.preventDefault();\r\n this.hide(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall, Breakpoint.Small], (matches) => {\r\n this._variant = matches.get(Breakpoint.XSmall) || matches.get(Breakpoint.Small) ? \"modal\" : \"docked\";\r\n this.#updateVariant();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateVariant(): void {\r\n switch (this.currentVariant) {\r\n case \"docked\":\r\n this.ariaModal = null;\r\n deleteCustomState(this, \"--modal\");\r\n addCustomState(this, \"--docked\");\r\n this.#scrollLockController.unlock();\r\n this.#inertController.unlock();\r\n break;\r\n\r\n case \"modal\":\r\n this.ariaModal = \"true\";\r\n deleteCustomState(this, \"--docked\");\r\n addCustomState(this, \"--modal\");\r\n if (this.isOpen) {\r\n this.#scrollLockController.lock();\r\n this.#inertController.lock();\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (this.isOpen) {\r\n this.#updatePosition();\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updatePosition(): Promise<void> {\r\n if (this.currentVariant === \"docked\" && this.#trigger) {\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = await positionAnchor(\r\n this,\r\n this.#anchor ?? this.#trigger,\r\n {\r\n position: \"bottom-start\",\r\n inline: true,\r\n flip: true,\r\n shift: \"both\",\r\n },\r\n (x, y, position) => {\r\n setCustomState(this, \"--top\", position.includes(\"top\"));\r\n setCustomState(this, \"--bottom\", position.includes(\"bottom\"));\r\n\r\n if (M3eDirectionality.current === \"rtl\") {\r\n this.style.right = `${window.innerWidth - x - this.clientWidth}px`;\r\n this.style.left = \"\";\r\n } else {\r\n this.style.left = `${x}px`;\r\n this.style.right = \"\";\r\n }\r\n\r\n this.style.top = `${y}px`;\r\n },\r\n );\r\n } else {\r\n this.#clearAnchoring();\r\n }\r\n }\r\n\r\n /** @private */\r\n #clearAnchoring(): void {\r\n this.#anchorCleanup?.();\r\n this.#anchorCleanup = undefined;\r\n this.style.left = \"\";\r\n this.style.right = \"\";\r\n this.style.top = \"\";\r\n }\r\n\r\n /** @private */\r\n #clearSelectionState(): void {\r\n this._date = this._rangeStart = this._rangeEnd = undefined;\r\n }\r\n}\r\n\r\ninterface M3eDatepickerElementEventMap extends HTMLElementEventMap {\r\n beforetoggle: ToggleEvent;\r\n toggle: ToggleEvent;\r\n}\r\n\r\nexport interface M3eDatepickerElement {\r\n addEventListener<K extends keyof M3eDatepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eDatepickerElement, ev: M3eDatepickerElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eDatepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eDatepickerElement, ev: M3eDatepickerElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-datepicker\": M3eDatepickerElement;\r\n }\r\n}\r\n","import { customElement, ActionElementBase, HtmlFor } from \"@m3e/web/core\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { M3eDatepickerElement } from \"./DatepickerElement\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to toggle a datepicker.\r\n * @tag m3e-datepicker-toggle\r\n */\r\n@customElement(\"m3e-datepicker-toggle\")\r\nexport class M3eDatepickerToggleElement extends HtmlFor(ActionElementBase) {\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n if (this.parentElement) {\r\n this.parentElement.ariaHasPopup = \"dialog\";\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n if (this.parentElement) {\r\n this.parentElement.ariaHasPopup = null;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override _onClick(): void {\r\n if (this.control instanceof M3eDatepickerElement && this.parentElement) {\r\n this.control.toggle(this.parentElement, this.closest<M3eFormFieldElement>(\"m3e-form-field\") ?? undefined);\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-datepicker-toggle\": M3eDatepickerToggleElement;\r\n }\r\n}\r\n"],"names":["M3eDatepickerElement","SuppressInitialAnimation","ReconnectedCallback","AttachInternals","Role","LitElement","constructor","_M3eDatepickerElement_closeTimeout","set","_open","_M3eDatepickerElement_breakpointUnobserve","_M3eDatepickerElement_trigger","_M3eDatepickerElement_anchor","_M3eDatepickerElement_anchorCleanup","_M3eDatepickerElement_scrollLockController","ScrollLockController","_M3eDatepickerElement_inertController","InertController","_M3eDatepickerElement_documentClickHandler","e","__classPrivateFieldGet","call","_M3eDatepickerElement_documentKeyDownHandler","_M3eDatepickerElement_toggleHandler","newState","_M3eDatepickerElement_instances","_M3eDatepickerElement_clearSelectionState","__classPrivateFieldSet","undefined","clearTimeout","prefersReducedMotion","setTimeout","variant","startView","date","startAt","minDate","maxDate","range","rangeStart","rangeEnd","blackoutDates","specialDates","previousMonthLabel","previousYearLabel","previousMultiYearLabel","nextMonthLabel","nextYearLabel","nextMultiYearLabel","clearable","clearLabel","confirmLabel","dismissLabel","label","isOpen","currentVariant","_variant","connectedCallback","setAttribute","addEventListener","disconnectedCallback","_M3eDatepickerElement_clearAnchoring","deleteCustomState","removeEventListener","document","reconnectedCallback","_M3eDatepickerElement_initBreakpointMonitoring","show","trigger","anchor","hide","lock","isUpdatePending","updateComplete","calendar","_calendar","resetActiveView","ariaExpanded","_M3eDatepickerElement_updatePosition","showPopover","focusActiveCell","restoreFocus","unlock","hidePopover","focus","toggle","render","html","_M3eDatepickerElement_renderHeader","_M3eDatepickerElement_renderCalendar","_M3eDatepickerElement_renderActions","willUpdate","changedProperties","some","x","has","Date","_M3eDatepickerElement_updateVariant","nothing","_rangeStart","_rangeEnd","selectedDate","_date","Intl","DateTimeFormat","navigator","language","month","day","format","weekday","_M3eDatepickerElement_handleClearClick","_M3eDatepickerElement_handleDismissClick","_M3eDatepickerElement_handleConfirmClick","composedPath","target","dispatchEvent","Event","bubbles","key","shiftKey","ctrlKey","preventDefault","M3eBreakpointObserver","observe","Breakpoint","XSmall","Small","matches","get","ariaModal","addCustomState","positionAnchor","position","inline","flip","shift","y","setCustomState","includes","M3eDirectionality","current","style","right","window","innerWidth","clientWidth","left","top","styles","css","DesignToken","color","surfaceContainer","elevation","level3","level0","shape","corner","none","onSurfaceVariant","typescale","standard","headline","large","fontSize","fontWeight","lineHeight","tracking","outlineVariant","surfaceContainerHigh","extraLarge","unsafeCSS","motion","duration","short2","easing","scrim","short3","long2","__decorate","state","prototype","query","property","attribute","converter","dateConverter","type","Boolean","customElement","M3eDatepickerToggleElement","HtmlFor","ActionElementBase","parentElement","ariaHasPopup","_onClick","control","closest"],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * Copyright (c) 2025–2026 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
- import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as a}from"tslib";import{LitElement as i,nothing as o,html as r,unsafeCSS as n,css as s}from"lit";import{state as l,query as d,property as h}from"lit/decorators.js";import{ifDefined as c}from"lit/directives/if-defined.js";import{SuppressInitialAnimation as m,ReconnectedCallback as p,AttachInternals as g,Role as u,ScrollLockController as v,InertController as b,deleteCustomState as f,addCustomState as k,setCustomState as y,DesignToken as $,dateConverter as w,customElement as x,HtmlFor as S,ActionElementBase as E}from"@m3e/web/core";import{positionAnchor as _}from"@m3e/web/core/anchoring";import{M3eDirectionality as L}from"@m3e/web/core/bidi";import{M3eBreakpointObserver as D,Breakpoint as M}from"@m3e/web/core/layout";import"@m3e/web/core/a11y";import"@m3e/web/button";import"@m3e/web/calendar";var C,V,W,Y,P,O,z,I,A,H,T,U,F,K,N,j,B,X,q,G,J,Q,R;let Z=R=class extends(m(p(g(u(i,"dialog"))))){constructor(){super(...arguments),C.add(this),V.set(this,void 0),W.set(this,void 0),Y.set(this,void 0),P.set(this,void 0),O.set(this,new v(this)),z.set(this,new b(this)),I.set(this,e=>t(this,C,"m",U).call(this,e)),A.set(this,e=>t(this,C,"m",B).call(this,e)),H.set(this,a=>{"closed"===a.newState&&(t(this,C,"m",Q).call(this),t(this,P,"f")?.call(this),e(this,P,void 0,"f"))}),this.variant="docked",this.startView="month",this.date=null,this.startAt=null,this.minDate=null,this.maxDate=null,this.range=!1,this.rangeStart=null,this.rangeEnd=null,this.blackoutDates=null,this.specialDates=null,this.previousMonthLabel="Previous month",this.previousYearLabel="Previous year",this.previousMultiYearLabel="Previous 24 years",this.nextMonthLabel="Next month",this.nextYearLabel="Next year",this.nextMultiYearLabel="Next 24 years",this.clearable=!1,this.clearLabel="Clear",this.confirmLabel="OK",this.dismissLabel="Cancel",this.label="Select date"}get isOpen(){return void 0!==t(this,W,"f")}get currentVariant(){return this._variant??("modal"!==this.variant?"docked":"modal")}connectedCallback(){super.connectedCallback(),this.setAttribute("popover","manual"),this.addEventListener("toggle",t(this,H,"f")),document.addEventListener("click",t(this,I,"f")),document.addEventListener("keydown",t(this,A,"f"))}disconnectedCallback(){super.disconnectedCallback(),this._variant=void 0,t(this,V,"f")?.call(this),t(this,C,"m",J).call(this),f(this,"--docked"),f(this,"--modal"),this.removeEventListener("toggle",t(this,H,"f")),document.removeEventListener("click",t(this,I,"f")),document.removeEventListener("keydown",t(this,A,"f"))}reconnectedCallback(){super.reconnectedCallback(),"auto"===this.variant&&t(this,C,"m",X).call(this)}async show(a,i){t(this,W,"f")&&t(this,W,"f")!==a&&this.hide(),"modal"===this.currentVariant&&(t(this,O,"f").lock(),t(this,z,"f").lock());const o=this._calendar;o.date=this.date,o.rangeStart=this.rangeStart,o.rangeEnd=this.rangeEnd,o.requestUpdate("startView"),o.isUpdatePending&&await o.updateComplete,e(this,W,a,"f"),t(this,W,"f").ariaExpanded="true",e(this,Y,i,"f"),await t(this,C,"m",G).call(this),this.showPopover(),await this._calendar.focusActiveCell()}hide(a=!1){"modal"===this.currentVariant&&(t(this,O,"f").unlock(),t(this,z,"f").unlock()),this.hidePopover(),t(this,W,"f")&&(t(this,W,"f").ariaExpanded="false",a&&t(this,W,"f").focus(),e(this,W,void 0,"f"))}async toggle(e,a){t(this,W,"f")?this.hide():await this.show(e,a)}render(){return r`<m3e-focus-trap>${t(this,C,"m",T).call(this)}<m3e-calendar class="calendar" start-view="${this.startView}" start-at="${c(this.startAt?.toISOString())}" min-date="${c(this.minDate?.toISOString())}" max-date="${c(this.maxDate?.toISOString())}" @change="${t(this,C,"m",F)}"></m3e-calendar><div class="actions">${this.clearable?r`<m3e-button @click="${t(this,C,"m",K)}">${this.clearLabel}</m3e-button>`:o}<div class="spacer" aria-hidden="true"></div><m3e-button @click="${t(this,C,"m",N)}">${this.dismissLabel}</m3e-button><m3e-button @click="${t(this,C,"m",j)}">${this.confirmLabel}</m3e-button></div></m3e-focus-trap>`}willUpdate(e){super.willUpdate(e),["date","rangeStart","rangeEnd"].some(t=>e.has(t))&&t(this,C,"m",Q).call(this),e.has("rangeStart")&&this.rangeStart&&(this.range=!0),e.has("rangeStart")&&this.rangeStart&&!e.has("date")&&(this.date=new Date(this.rangeStart)),e.has("rangeEnd")&&this.rangeEnd&&!e.has("date")&&(this.date=new Date(this.rangeEnd)),e.has("variant")&&(t(this,V,"f")?.call(this),"auto"===this.variant?t(this,C,"m",X).call(this):(this._variant=void 0,t(this,C,"m",q).call(this)))}updated(t){super.updated(t),(t.has("specialDates")||t.has("blackoutDates"))&&(this._calendar.specialDates=this.specialDates,this._calendar.blackoutDates=this.blackoutDates)}};V=new WeakMap,W=new WeakMap,Y=new WeakMap,P=new WeakMap,O=new WeakMap,z=new WeakMap,I=new WeakMap,A=new WeakMap,H=new WeakMap,C=new WeakSet,T=function(){if("docked"===this.currentVariant)return o;const t=this._rangeStart??this.rangeStart,e=this._rangeStart?this._rangeEnd:this._rangeEnd??this.rangeEnd,a=this._date??this.date;return r`<div class="supporting-text">${this.label}</div>${t?r`<div class="headline">${new Intl.DateTimeFormat(navigator.language,{month:"short",day:"numeric"}).format(t)+" – "+(e?new Intl.DateTimeFormat(navigator.language,{month:"short",day:"numeric"}).format(e):"")}</div>`:r`<div class="headline">${a?new Intl.DateTimeFormat(navigator.language,{weekday:"short",month:"short",day:"numeric"}).format(a):"––"}</div>`}<div class="divider"></div>`},U=function(e){e.composedPath().some(e=>e instanceof R||e===t(this,W,"f")||e===t(this,Y,"f"))||this.hide()},F=function(){this._date=this._calendar.date,this._rangeStart=this._calendar.rangeStart,this._rangeEnd=this._calendar.rangeEnd,this.range&&!this._rangeStart&&this._date&&(this._rangeStart=new Date(this._date),this._calendar.rangeStart=this._rangeStart)},K=function(){this.date=null,this.rangeStart=null,this.rangeEnd=null,this.hide(!0),this.dispatchEvent(new Event("change",{bubbles:!0}))},N=function(){this.hide(!0)},j=function(){this.date=this._date??this.date,this.rangeStart=void 0===this._rangeStart?this.rangeStart:this._rangeStart,this.rangeEnd=void 0===this._rangeEnd?this.rangeEnd:this._rangeEnd,this.hide(!0),this.dispatchEvent(new Event("change",{bubbles:!0}))},B=function(t){!this.isOpen||"modal"!==this.currentVariant||"Escape"!==t.key||t.shiftKey||t.ctrlKey||(t.preventDefault(),this.hide(!0))},X=function(){e(this,V,D.observe([M.XSmall,M.Small],e=>{this._variant=e.get(M.XSmall)||e.get(M.Small)?"modal":"docked",t(this,C,"m",q).call(this)}),"f")},q=function(){switch(this.currentVariant){case"docked":this.ariaModal=null,f(this,"--modal"),k(this,"--docked"),t(this,O,"f").unlock(),t(this,z,"f").unlock();break;case"modal":this.ariaModal="true",f(this,"--docked"),k(this,"--modal"),this.isOpen&&(t(this,O,"f").lock(),t(this,z,"f").lock())}this.isOpen&&t(this,C,"m",G).call(this)},G=async function(){"docked"===this.currentVariant&&t(this,W,"f")?(t(this,P,"f")?.call(this),e(this,P,await _(this,t(this,Y,"f")??t(this,W,"f"),{position:"bottom-start",inline:!0,flip:!0,shift:"both"},(t,e,a)=>{y(this,"--top",a.includes("top")),y(this,"--bottom",a.includes("bottom")),"rtl"===L.current?(this.style.right=window.innerWidth-t-this.clientWidth+"px",this.style.left=""):(this.style.left=`${t}px`,this.style.right=""),this.style.top=`${e}px`}),"f")):t(this,C,"m",J).call(this)},J=function(){t(this,P,"f")?.call(this),e(this,P,void 0,"f"),this.style.left="",this.style.right="",this.style.top=""},Q=function(){this._date=this._rangeStart=this._rangeEnd=void 0},Z.styles=s`: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, ${$.color.surfaceContainer}); box-shadow: var(--m3e-datepicker-container-elevation, ${$.elevation.level3}); opacity: 0; display: none; } .calendar { --m3e-calendar-container-color: transparent; --m3e-calendar-container-elevation: ${$.elevation.level0}; --m3e-calendar-container-shape: ${$.shape.corner.none}; } .headline { color: var(--m3e-datepicker-modal-headline-color, ${$.color.onSurfaceVariant}); font-size: var( --m3e-datepicker-modal-headline-font-size, ${$.typescale.standard.headline.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-headline-font-weight, ${$.typescale.standard.headline.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-headline-line-height, ${$.typescale.standard.headline.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-headline-tracking, ${$.typescale.standard.headline.large.tracking} ); margin-block-start: 2.25rem; margin-block-end: 0.75rem; margin-inline: 1.5rem; } .supporting-text { color: var(--m3e-datepicker-modal-supporting-text-color, ${$.color.onSurfaceVariant}); font-size: var( --m3e-datepicker-modal-supporting-text-font-size, ${$.typescale.standard.label.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-supporting-text-font-weight, ${$.typescale.standard.label.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-supporting-text-line-height, ${$.typescale.standard.label.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-supporting-text-tracking, ${$.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, ${$.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(:is(:state(--docked), :--docked)) { position: absolute; background-color: var(--m3e-datepicker-docked-container-color, ${$.color.surfaceContainer}); border-radius: var(--m3e-datepicker-docked-container-shape, ${$.shape.corner.large}); } :host(:is(:state(--modal), :--modal)) { position: fixed; inset: 0; margin: auto; transform-origin: top; background-color: var(--m3e-datepicker-modal-container-color, ${$.color.surfaceContainerHigh}); border-radius: var(--m3e-datepicker-modal-container-shape, ${$.shape.corner.extraLarge}); } :host(:not(:is(:state(--no-animate), :--no-animate))) { transition: ${n(`opacity ${$.motion.duration.short2} ${$.motion.easing.standard}, \n transform ${$.motion.duration.short2} ${$.motion.easing.standard},\n overlay ${$.motion.duration.short2} ${$.motion.easing.standard} allow-discrete,\n display ${$.motion.duration.short2} ${$.motion.easing.standard} allow-discrete`)}; } :host { transform: scaleY(0.8); } :host(:popover-open) { transform: scaleY(1); display: inline-flex; opacity: 1; } :host(:is(:state(--docked), :--docked))::backdrop { background-color: transparent; } :host(:is(:state(--modal), :--modal))::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${$.color.scrim}) 0%, transparent); margin-inline-end: -20px; } :host(:is(:state(--modal), :--modal):not(:popover-open))::backdrop { transition: ${n(`background-color ${$.motion.duration.short3} ${$.motion.easing.standard}, \n overlay ${$.motion.duration.short3} ${$.motion.easing.standard} allow-discrete,\n visibility ${$.motion.duration.short3} ${$.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--modal), :--modal):popover-open)::backdrop { background-color: color-mix( in srgb, var(--m3e-dialog-scrim-color, ${$.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%), transparent ); transition: ${n(`background-color ${$.motion.duration.long2} ${$.motion.easing.standard}, \n overlay ${$.motion.duration.long2} ${$.motion.easing.standard} allow-discrete,\n visibility ${$.motion.duration.long2} ${$.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--bottom), :--bottom)) { transform-origin: top; } :host(:is(:state(--top), :--top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } :host(:is(:state(--modal), :--modal):popover-open)::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${$.color.scrim}) 0%, transparent); } } @media (prefers-reduced-motion) { :host(:not(:is(:state(--no-animate), :--no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; border: 1px solid CanvasText; } }`,a([l()],Z.prototype,"_date",void 0),a([l()],Z.prototype,"_rangeStart",void 0),a([l()],Z.prototype,"_rangeEnd",void 0),a([d("m3e-calendar")],Z.prototype,"_calendar",void 0),a([l()],Z.prototype,"_variant",void 0),a([h()],Z.prototype,"variant",void 0),a([h({attribute:"start-view"})],Z.prototype,"startView",void 0),a([h({converter:w})],Z.prototype,"date",void 0),a([h({attribute:"start-at",converter:w})],Z.prototype,"startAt",void 0),a([h({attribute:"min-date",converter:w})],Z.prototype,"minDate",void 0),a([h({attribute:"max-date",converter:w})],Z.prototype,"maxDate",void 0),a([h({type:Boolean})],Z.prototype,"range",void 0),a([h({attribute:"range-start",converter:w})],Z.prototype,"rangeStart",void 0),a([h({attribute:"range-end",converter:w})],Z.prototype,"rangeEnd",void 0),a([h({attribute:!1})],Z.prototype,"blackoutDates",void 0),a([h({attribute:!1})],Z.prototype,"specialDates",void 0),a([h({attribute:"previous-month-label"})],Z.prototype,"previousMonthLabel",void 0),a([h({attribute:"previous-year-label"})],Z.prototype,"previousYearLabel",void 0),a([h({attribute:"previous-multi-year-label"})],Z.prototype,"previousMultiYearLabel",void 0),a([h({attribute:"next-month-label"})],Z.prototype,"nextMonthLabel",void 0),a([h({attribute:"next-year-label"})],Z.prototype,"nextYearLabel",void 0),a([h({attribute:"next-multi-year-label"})],Z.prototype,"nextMultiYearLabel",void 0),a([h({type:Boolean})],Z.prototype,"clearable",void 0),a([h({attribute:"clear-label"})],Z.prototype,"clearLabel",void 0),a([h({attribute:"confirm-label"})],Z.prototype,"confirmLabel",void 0),a([h({attribute:"dismiss-label"})],Z.prototype,"dismissLabel",void 0),a([h()],Z.prototype,"label",void 0),Z=R=a([x("m3e-datepicker")],Z);let tt=class extends(S(E)){connectedCallback(){super.connectedCallback(),this.parentElement&&(this.parentElement.ariaHasPopup="dialog")}disconnectedCallback(){super.disconnectedCallback(),this.parentElement&&(this.parentElement.ariaHasPopup=null)}_onClick(){this.control instanceof Z&&this.parentElement&&this.control.toggle(this.parentElement,this.closest("m3e-form-field")??void 0)}};tt=a([x("m3e-datepicker-toggle")],tt);export{Z as M3eDatepickerElement,tt as M3eDatepickerToggleElement};
6
+ import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as a}from"tslib";import{LitElement as i,html as o,nothing as r,unsafeCSS as n,css as s}from"lit";import{state as l,query as d,property as h}from"lit/decorators.js";import{SuppressInitialAnimation as c,ReconnectedCallback as m,AttachInternals as p,Role as u,ScrollLockController as g,InertController as v,prefersReducedMotion as b,deleteCustomState as f,addCustomState as k,setCustomState as y,DesignToken as w,dateConverter as $,customElement as x,HtmlFor as E,ActionElementBase as _}from"@m3e/web/core";import{positionAnchor as S}from"@m3e/web/core/anchoring";import{M3eDirectionality as L}from"@m3e/web/core/bidi";import{M3eBreakpointObserver as D,Breakpoint as M}from"@m3e/web/core/layout";import"@m3e/web/core/a11y";import"@m3e/web/button";import"@m3e/web/calendar";var C,V,W,Y,P,T,z,A,O,H,U,F,I,K,N,B,X,j,q,G,J,Q,R,Z,tt;let et=class extends(c(m(p(u(i,"dialog"))))){constructor(){super(...arguments),C.add(this),V.set(this,-1),this._open=!1,W.set(this,void 0),Y.set(this,void 0),P.set(this,void 0),T.set(this,void 0),z.set(this,new g(this)),A.set(this,new v(this)),O.set(this,e=>t(this,C,"m",N).call(this,e)),H.set(this,e=>t(this,C,"m",G).call(this,e)),U.set(this,a=>{"closed"===a.newState&&(t(this,C,"m",tt).call(this),t(this,T,"f")?.call(this),e(this,T,void 0,"f"),clearTimeout(t(this,V,"f")),b()?this._open=!1:e(this,V,setTimeout(()=>this._open=!1,100),"f"))}),this.variant="docked",this.startView="month",this.date=null,this.startAt=null,this.minDate=null,this.maxDate=null,this.range=!1,this.rangeStart=null,this.rangeEnd=null,this.blackoutDates=null,this.specialDates=null,this.previousMonthLabel="Previous month",this.previousYearLabel="Previous year",this.previousMultiYearLabel="Previous 24 years",this.nextMonthLabel="Next month",this.nextYearLabel="Next year",this.nextMultiYearLabel="Next 24 years",this.clearable=!1,this.clearLabel="Clear",this.confirmLabel="OK",this.dismissLabel="Cancel",this.label="Select date"}get isOpen(){return void 0!==t(this,Y,"f")}get currentVariant(){return this._variant??("modal"!==this.variant?"docked":"modal")}connectedCallback(){super.connectedCallback(),this.setAttribute("popover","manual"),this.addEventListener("toggle",t(this,U,"f"))}disconnectedCallback(){super.disconnectedCallback(),this._variant=void 0,t(this,W,"f")?.call(this),t(this,C,"m",Z).call(this),f(this,"--docked"),f(this,"--modal"),this.removeEventListener("toggle",t(this,U,"f")),document.removeEventListener("click",t(this,O,"f")),document.removeEventListener("keydown",t(this,H,"f"))}reconnectedCallback(){super.reconnectedCallback(),"auto"===this.variant&&t(this,C,"m",J).call(this)}async show(a,i){t(this,Y,"f")&&t(this,Y,"f")!==a&&this.hide(),clearTimeout(t(this,V,"f")),"modal"===this.currentVariant&&(t(this,z,"f").lock(),t(this,A,"f").lock()),this._open=!0,this.isUpdatePending&&await this.updateComplete;const o=this._calendar;o.startView=this.startView,o.startAt=this.startAt,o.minDate=this.minDate,o.maxDate=this.maxDate,o.date=this.date,o.rangeStart=this.rangeStart,o.rangeEnd=this.rangeEnd,o.specialDates=this.specialDates,o.blackoutDates=this.blackoutDates,o.resetActiveView(),o.isUpdatePending&&await o.updateComplete,e(this,Y,a,"f"),t(this,Y,"f").ariaExpanded="true",e(this,P,i,"f"),await t(this,C,"m",R).call(this),this.showPopover(),document.addEventListener("click",t(this,O,"f")),document.addEventListener("keydown",t(this,H,"f")),await o.focusActiveCell()}hide(a=!1){this.isOpen&&(document.removeEventListener("click",t(this,O,"f")),document.removeEventListener("keydown",t(this,H,"f")),"modal"===this.currentVariant&&(t(this,z,"f").unlock(),t(this,A,"f").unlock()),this.hidePopover(),t(this,Y,"f")&&(t(this,Y,"f").ariaExpanded="false",a&&t(this,Y,"f").focus(),e(this,Y,void 0,"f")))}async toggle(e,a){t(this,Y,"f")?this.hide():await this.show(e,a)}render(){return o`<m3e-focus-trap ?disabled="${!this._open}">${t(this,C,"m",F).call(this)}${t(this,C,"m",I).call(this)}${t(this,C,"m",K).call(this)}</m3e-focus-trap>`}willUpdate(e){super.willUpdate(e),["date","rangeStart","rangeEnd"].some(t=>e.has(t))&&t(this,C,"m",tt).call(this),e.has("rangeStart")&&this.rangeStart&&(this.range=!0),e.has("rangeStart")&&this.rangeStart&&!e.has("date")&&(this.date=new Date(this.rangeStart)),e.has("rangeEnd")&&this.rangeEnd&&!e.has("date")&&(this.date=new Date(this.rangeEnd)),e.has("variant")&&(t(this,W,"f")?.call(this),"auto"===this.variant?t(this,C,"m",J).call(this):(this._variant=void 0,t(this,C,"m",Q).call(this)))}};V=new WeakMap,W=new WeakMap,Y=new WeakMap,P=new WeakMap,T=new WeakMap,z=new WeakMap,A=new WeakMap,O=new WeakMap,H=new WeakMap,U=new WeakMap,C=new WeakSet,F=function(){if("docked"===this.currentVariant)return r;const t=this._rangeStart??this.rangeStart,e=this._rangeStart?this._rangeEnd:this._rangeEnd??this.rangeEnd,a=this._date??this.date;return o`<div class="supporting-text">${this.label}</div>${t?o`<div class="headline">${new Intl.DateTimeFormat(navigator.language,{month:"short",day:"numeric"}).format(t)+" – "+(e?new Intl.DateTimeFormat(navigator.language,{month:"short",day:"numeric"}).format(e):"")}</div>`:o`<div class="headline">${a?new Intl.DateTimeFormat(navigator.language,{weekday:"short",month:"short",day:"numeric"}).format(a):"––"}</div>`}<div class="divider"></div>`},I=function(){return this._open?o`<m3e-calendar class="calendar" @change="${t(this,C,"m",B)}"></m3e-calendar>`:r},K=function(){return o`<div class="actions">${this.clearable?o`<m3e-button @click="${t(this,C,"m",X)}">${this.clearLabel}</m3e-button>`:r}<div class="spacer" aria-hidden="true"></div><m3e-button @click="${t(this,C,"m",j)}">${this.dismissLabel}</m3e-button><m3e-button @click="${t(this,C,"m",q)}">${this.confirmLabel}</m3e-button></div>`},N=function(e){this.isOpen&&!e.composedPath().some(e=>e===this||e===t(this,Y,"f"))&&this.hide()},B=function(t){const e=t.target;this._date=e.date,this._rangeStart=e.rangeStart,this._rangeEnd=e.rangeEnd,this.range&&!this._rangeStart&&this._date&&(this._rangeStart=new Date(this._date),e.rangeStart=this._rangeStart)},X=function(){this.date=null,this.rangeStart=null,this.rangeEnd=null,this.hide(!0),this.dispatchEvent(new Event("change",{bubbles:!0}))},j=function(){this.hide(!0)},q=function(){this.date=this._date??this.date,this.rangeStart=void 0===this._rangeStart?this.rangeStart:this._rangeStart,this.rangeEnd=void 0===this._rangeEnd?this.rangeEnd:this._rangeEnd,this.hide(!0),this.dispatchEvent(new Event("change",{bubbles:!0}))},G=function(t){!this.isOpen||"modal"!==this.currentVariant||"Escape"!==t.key||t.shiftKey||t.ctrlKey||(t.preventDefault(),this.hide(!0))},J=function(){e(this,W,D.observe([M.XSmall,M.Small],e=>{this._variant=e.get(M.XSmall)||e.get(M.Small)?"modal":"docked",t(this,C,"m",Q).call(this)}),"f")},Q=function(){switch(this.currentVariant){case"docked":this.ariaModal=null,f(this,"--modal"),k(this,"--docked"),t(this,z,"f").unlock(),t(this,A,"f").unlock();break;case"modal":this.ariaModal="true",f(this,"--docked"),k(this,"--modal"),this.isOpen&&(t(this,z,"f").lock(),t(this,A,"f").lock())}this.isOpen&&t(this,C,"m",R).call(this)},R=async function(){"docked"===this.currentVariant&&t(this,Y,"f")?(t(this,T,"f")?.call(this),e(this,T,await S(this,t(this,P,"f")??t(this,Y,"f"),{position:"bottom-start",inline:!0,flip:!0,shift:"both"},(t,e,a)=>{y(this,"--top",a.includes("top")),y(this,"--bottom",a.includes("bottom")),"rtl"===L.current?(this.style.right=window.innerWidth-t-this.clientWidth+"px",this.style.left=""):(this.style.left=`${t}px`,this.style.right=""),this.style.top=`${e}px`}),"f")):t(this,C,"m",Z).call(this)},Z=function(){t(this,T,"f")?.call(this),e(this,T,void 0,"f"),this.style.left="",this.style.right="",this.style.top=""},tt=function(){this._date=this._rangeStart=this._rangeEnd=void 0},et.styles=s`: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, ${w.color.surfaceContainer}); box-shadow: var(--m3e-datepicker-container-elevation, ${w.elevation.level3}); opacity: 0; display: none; } .calendar { --m3e-calendar-container-color: transparent; --m3e-calendar-container-elevation: ${w.elevation.level0}; --m3e-calendar-container-shape: ${w.shape.corner.none}; } .headline { color: var(--m3e-datepicker-modal-headline-color, ${w.color.onSurfaceVariant}); font-size: var( --m3e-datepicker-modal-headline-font-size, ${w.typescale.standard.headline.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-headline-font-weight, ${w.typescale.standard.headline.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-headline-line-height, ${w.typescale.standard.headline.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-headline-tracking, ${w.typescale.standard.headline.large.tracking} ); margin-block-start: 2.25rem; margin-block-end: 0.75rem; margin-inline: 1.5rem; } .supporting-text { color: var(--m3e-datepicker-modal-supporting-text-color, ${w.color.onSurfaceVariant}); font-size: var( --m3e-datepicker-modal-supporting-text-font-size, ${w.typescale.standard.label.large.fontSize} ); font-weight: var( --m3e-datepicker-modal-supporting-text-font-weight, ${w.typescale.standard.label.large.fontWeight} ); line-height: var( --m3e-datepicker-modal-supporting-text-line-height, ${w.typescale.standard.label.large.lineHeight} ); letter-spacing: var( --m3e-datepicker-modal-supporting-text-tracking, ${w.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, ${w.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(:is(:state(--docked), :--docked)) { position: absolute; background-color: var(--m3e-datepicker-docked-container-color, ${w.color.surfaceContainer}); border-radius: var(--m3e-datepicker-docked-container-shape, ${w.shape.corner.large}); } :host(:is(:state(--modal), :--modal)) { position: fixed; inset: 0; margin: auto; transform-origin: top; background-color: var(--m3e-datepicker-modal-container-color, ${w.color.surfaceContainerHigh}); border-radius: var(--m3e-datepicker-modal-container-shape, ${w.shape.corner.extraLarge}); } :host(:not(:is(:state(--no-animate), :--no-animate))) { transition: ${n(`opacity ${w.motion.duration.short2} ${w.motion.easing.standard}, \n transform ${w.motion.duration.short2} ${w.motion.easing.standard},\n overlay ${w.motion.duration.short2} ${w.motion.easing.standard} allow-discrete,\n display ${w.motion.duration.short2} ${w.motion.easing.standard} allow-discrete`)}; } :host { transform: scaleY(0.8); } :host(:popover-open) { transform: scaleY(1); display: inline-flex; opacity: 1; } :host(:is(:state(--docked), :--docked))::backdrop { background-color: transparent; } :host(:is(:state(--modal), :--modal))::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${w.color.scrim}) 0%, transparent); margin-inline-end: -20px; } :host(:is(:state(--modal), :--modal):not(:popover-open))::backdrop { transition: ${n(`background-color ${w.motion.duration.short3} ${w.motion.easing.standard}, \n overlay ${w.motion.duration.short3} ${w.motion.easing.standard} allow-discrete,\n visibility ${w.motion.duration.short3} ${w.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--modal), :--modal):popover-open)::backdrop { background-color: color-mix( in srgb, var(--m3e-dialog-scrim-color, ${w.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%), transparent ); transition: ${n(`background-color ${w.motion.duration.long2} ${w.motion.easing.standard}, \n overlay ${w.motion.duration.long2} ${w.motion.easing.standard} allow-discrete,\n visibility ${w.motion.duration.long2} ${w.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--bottom), :--bottom)) { transform-origin: top; } :host(:is(:state(--top), :--top)) { transform-origin: bottom; } @starting-style { :host(:popover-open) { transform: scaleY(0.8); } :host(:is(:state(--modal), :--modal):popover-open)::backdrop { background-color: color-mix(in srgb, var(--m3e-dialog-scrim-color, ${w.color.scrim}) 0%, transparent); } } @media (prefers-reduced-motion) { :host(:not(:is(:state(--no-animate), :--no-animate))) { transition: none; } } @media (forced-colors: active) { :host { background-color: Menu; color: MenuText; border: 1px solid CanvasText; } }`,a([l()],et.prototype,"_open",void 0),a([l()],et.prototype,"_date",void 0),a([l()],et.prototype,"_rangeStart",void 0),a([l()],et.prototype,"_rangeEnd",void 0),a([d("m3e-calendar")],et.prototype,"_calendar",void 0),a([l()],et.prototype,"_variant",void 0),a([h()],et.prototype,"variant",void 0),a([h({attribute:"start-view"})],et.prototype,"startView",void 0),a([h({converter:$})],et.prototype,"date",void 0),a([h({attribute:"start-at",converter:$})],et.prototype,"startAt",void 0),a([h({attribute:"min-date",converter:$})],et.prototype,"minDate",void 0),a([h({attribute:"max-date",converter:$})],et.prototype,"maxDate",void 0),a([h({type:Boolean})],et.prototype,"range",void 0),a([h({attribute:"range-start",converter:$})],et.prototype,"rangeStart",void 0),a([h({attribute:"range-end",converter:$})],et.prototype,"rangeEnd",void 0),a([h({attribute:!1})],et.prototype,"blackoutDates",void 0),a([h({attribute:!1})],et.prototype,"specialDates",void 0),a([h({attribute:"previous-month-label"})],et.prototype,"previousMonthLabel",void 0),a([h({attribute:"previous-year-label"})],et.prototype,"previousYearLabel",void 0),a([h({attribute:"previous-multi-year-label"})],et.prototype,"previousMultiYearLabel",void 0),a([h({attribute:"next-month-label"})],et.prototype,"nextMonthLabel",void 0),a([h({attribute:"next-year-label"})],et.prototype,"nextYearLabel",void 0),a([h({attribute:"next-multi-year-label"})],et.prototype,"nextMultiYearLabel",void 0),a([h({type:Boolean})],et.prototype,"clearable",void 0),a([h({attribute:"clear-label"})],et.prototype,"clearLabel",void 0),a([h({attribute:"confirm-label"})],et.prototype,"confirmLabel",void 0),a([h({attribute:"dismiss-label"})],et.prototype,"dismissLabel",void 0),a([h()],et.prototype,"label",void 0),et=a([x("m3e-datepicker")],et);let at=class extends(E(_)){connectedCallback(){super.connectedCallback(),this.parentElement&&(this.parentElement.ariaHasPopup="dialog")}disconnectedCallback(){super.disconnectedCallback(),this.parentElement&&(this.parentElement.ariaHasPopup=null)}_onClick(){this.control instanceof et&&this.parentElement&&this.control.toggle(this.parentElement,this.closest("m3e-form-field")??void 0)}};at=a([x("m3e-datepicker-toggle")],at);export{et as M3eDatepickerElement,at as M3eDatepickerToggleElement};
7
7
  //# sourceMappingURL=datepicker.min.js.map