@m3e/web 2.5.14 → 2.5.15

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 (49) hide show
  1. package/dist/all.js +133 -81
  2. package/dist/all.js.map +1 -1
  3. package/dist/all.min.js +35 -35
  4. package/dist/all.min.js.map +1 -1
  5. package/dist/core.js +46 -11
  6. package/dist/core.js.map +1 -1
  7. package/dist/core.min.js +1 -1
  8. package/dist/core.min.js.map +1 -1
  9. package/dist/css-custom-data.json +20 -0
  10. package/dist/custom-elements.json +89 -30
  11. package/dist/datepicker.js +0 -2
  12. package/dist/datepicker.js.map +1 -1
  13. package/dist/datepicker.min.js +1 -1
  14. package/dist/datepicker.min.js.map +1 -1
  15. package/dist/form-field.js +1 -1
  16. package/dist/form-field.js.map +1 -1
  17. package/dist/form-field.min.js +1 -1
  18. package/dist/form-field.min.js.map +1 -1
  19. package/dist/html-custom-data.json +2 -2
  20. package/dist/nav-bar.js +4 -2
  21. package/dist/nav-bar.js.map +1 -1
  22. package/dist/nav-bar.min.js +1 -1
  23. package/dist/nav-bar.min.js.map +1 -1
  24. package/dist/nav-rail.js +1 -1
  25. package/dist/nav-rail.js.map +1 -1
  26. package/dist/nav-rail.min.js +1 -1
  27. package/dist/nav-rail.min.js.map +1 -1
  28. package/dist/skeleton.js +81 -65
  29. package/dist/skeleton.js.map +1 -1
  30. package/dist/skeleton.min.js +1 -1
  31. package/dist/skeleton.min.js.map +1 -1
  32. package/dist/slider.js +1 -0
  33. package/dist/slider.js.map +1 -1
  34. package/dist/slider.min.js +1 -1
  35. package/dist/slider.min.js.map +1 -1
  36. package/dist/src/core/shared/primitives/CollapsibleElement.d.ts +1 -1
  37. package/dist/src/core/shared/primitives/CollapsibleElement.d.ts.map +1 -1
  38. package/dist/src/core/shared/primitives/CollapsibleOrientation.d.ts +1 -1
  39. package/dist/src/core/shared/primitives/CollapsibleOrientation.d.ts.map +1 -1
  40. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -1
  41. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  42. package/dist/src/nav-bar/NavBarElement.d.ts +2 -0
  43. package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
  44. package/dist/src/nav-bar/NavItemElement.d.ts.map +1 -1
  45. package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
  46. package/dist/src/skeleton/SkeletonElement.d.ts +12 -6
  47. package/dist/src/skeleton/SkeletonElement.d.ts.map +1 -1
  48. package/dist/src/slider/SliderElement.d.ts.map +1 -1
  49. package/package.json +1 -1
@@ -11297,6 +11297,16 @@
11297
11297
  "description": "Minimum width of vertical nav items.",
11298
11298
  "values": []
11299
11299
  },
11300
+ {
11301
+ "name": "--m3e-nav-bar-horizontal-nav-item-leading-space",
11302
+ "description": "Leading space for horizontal nav items.",
11303
+ "values": []
11304
+ },
11305
+ {
11306
+ "name": "--m3e-nav-bar-horizontal-nav-item-trailing-space",
11307
+ "description": "Trailing space for horizontal nav items.",
11308
+ "values": []
11309
+ },
11300
11310
  {
11301
11311
  "name": "--m3e-nav-menu-item-font-size",
11302
11312
  "description": "Font size for the item label.",
@@ -11572,6 +11582,16 @@
11572
11582
  "description": "Minimum width of vertical nav items.",
11573
11583
  "values": []
11574
11584
  },
11585
+ {
11586
+ "name": "--m3e-nav-bar-horizontal-nav-item-leading-space",
11587
+ "description": "Leading space for horizontal nav items.",
11588
+ "values": []
11589
+ },
11590
+ {
11591
+ "name": "--m3e-nav-bar-horizontal-nav-item-trailing-space",
11592
+ "description": "Trailing space for horizontal nav items.",
11593
+ "values": []
11594
+ },
11575
11595
  {
11576
11596
  "name": "--m3e-form-field-font-size",
11577
11597
  "description": "The font size of the select control.",
@@ -8127,7 +8127,7 @@
8127
8127
  "attribute": "orientation",
8128
8128
  "reflects": true,
8129
8129
  "parsedType": {
8130
- "text": "'vertical' | 'horizontal'"
8130
+ "text": "'vertical' | 'horizontal' | 'both'"
8131
8131
  }
8132
8132
  },
8133
8133
  {
@@ -8260,7 +8260,7 @@
8260
8260
  "default": "\"vertical\"",
8261
8261
  "fieldName": "orientation",
8262
8262
  "parsedType": {
8263
- "text": "'vertical' | 'horizontal'"
8263
+ "text": "'vertical' | 'horizontal' | 'both'"
8264
8264
  }
8265
8265
  },
8266
8266
  {
@@ -57771,6 +57771,14 @@
57771
57771
  {
57772
57772
  "description": "Minimum width of vertical nav items.",
57773
57773
  "name": "--m3e-nav-bar-vertical-item-width"
57774
+ },
57775
+ {
57776
+ "description": "Leading space for horizontal nav items.",
57777
+ "name": "--m3e-nav-bar-horizontal-nav-item-leading-space"
57778
+ },
57779
+ {
57780
+ "description": "Trailing space for horizontal nav items.",
57781
+ "name": "--m3e-nav-bar-horizontal-nav-item-trailing-space"
57774
57782
  }
57775
57783
  ],
57776
57784
  "slots": [
@@ -59272,6 +59280,22 @@
59272
59280
  "name": "M3eNavBarElement",
59273
59281
  "module": "src/nav-bar/NavBarElement.ts"
59274
59282
  }
59283
+ },
59284
+ {
59285
+ "description": "Leading space for horizontal nav items.",
59286
+ "name": "--m3e-nav-bar-horizontal-nav-item-leading-space",
59287
+ "inheritedFrom": {
59288
+ "name": "M3eNavBarElement",
59289
+ "module": "src/nav-bar/NavBarElement.ts"
59290
+ }
59291
+ },
59292
+ {
59293
+ "description": "Trailing space for horizontal nav items.",
59294
+ "name": "--m3e-nav-bar-horizontal-nav-item-trailing-space",
59295
+ "inheritedFrom": {
59296
+ "name": "M3eNavBarElement",
59297
+ "module": "src/nav-bar/NavBarElement.ts"
59298
+ }
59275
59299
  }
59276
59300
  ],
59277
59301
  "members": [
@@ -66579,35 +66603,22 @@
66579
66603
  "members": [
66580
66604
  {
66581
66605
  "kind": "field",
66582
- "name": "__pulseLoading",
66606
+ "name": "__animating",
66583
66607
  "privacy": "private",
66584
66608
  "static": true,
66585
- "default": "new Set<M3eSkeletonElement>()"
66609
+ "default": "new Set<M3eSkeletonElement>()",
66610
+ "description": "Skeletons with a live per-instance animation, so preference changes re-sync them all."
66586
66611
  },
66587
66612
  {
66588
66613
  "kind": "field",
66589
- "name": "__pulseAnimation",
66614
+ "name": "__motionOrigin",
66590
66615
  "type": {
66591
- "text": "Animation"
66616
+ "text": "number | null"
66592
66617
  },
66593
66618
  "privacy": "private",
66594
- "static": true
66595
- },
66596
- {
66597
- "kind": "field",
66598
- "name": "__waveLoading",
66599
- "privacy": "private",
66600
66619
  "static": true,
66601
- "default": "new Set<M3eSkeletonElement>()"
66602
- },
66603
- {
66604
- "kind": "field",
66605
- "name": "__waveAnimation",
66606
- "type": {
66607
- "text": "Animation"
66608
- },
66609
- "privacy": "private",
66610
- "static": true
66620
+ "default": "null",
66621
+ "description": "Shared timeline origin so every skeleton's wave/pulse stays in phase."
66611
66622
  },
66612
66623
  {
66613
66624
  "kind": "field",
@@ -66634,6 +66645,28 @@
66634
66645
  "readonly": true,
66635
66646
  "default": "new Map<HTMLElement, () => void>()"
66636
66647
  },
66648
+ {
66649
+ "kind": "field",
66650
+ "name": "#animation",
66651
+ "privacy": "private",
66652
+ "type": {
66653
+ "text": "Animation | null"
66654
+ },
66655
+ "default": "null"
66656
+ },
66657
+ {
66658
+ "kind": "field",
66659
+ "name": "#animationMode",
66660
+ "privacy": "private",
66661
+ "type": {
66662
+ "text": "SkeletonAnimation | null"
66663
+ },
66664
+ "default": "null",
66665
+ "description": "The animation mode `#animation` was created for, so mode changes recreate it.",
66666
+ "parsedType": {
66667
+ "text": "'none' | 'pulse' | 'wave' | null"
66668
+ }
66669
+ },
66637
66670
  {
66638
66671
  "kind": "field",
66639
66672
  "name": "shape",
@@ -66742,21 +66775,23 @@
66742
66775
  "type": {
66743
66776
  "text": "void"
66744
66777
  }
66745
- }
66778
+ },
66779
+ "description": "Starts or stops this skeleton's own wave/pulse animation to reflect its current\r\nloaded/animation/connected state, then aligns its play/pause with the active\r\naccessibility and forced-colors preferences."
66746
66780
  },
66747
66781
  {
66748
66782
  "kind": "method",
66749
- "name": "#registerLoading",
66783
+ "name": "#startMotion",
66750
66784
  "privacy": "private",
66751
66785
  "return": {
66752
66786
  "type": {
66753
66787
  "text": "void"
66754
66788
  }
66755
- }
66789
+ },
66790
+ "description": "Starts the wave/pulse animation on this skeleton itself rather than on\r\n`document.documentElement`. The `--_m3e-skeleton-*` properties are registered\r\n`inherits: true`, so animating them on the document root recalculates style for the\r\nwhole document every frame; scoping to the instance limits that to its own subtree.\r\nAligned to a shared timeline origin so multiple skeletons animate in phase, and\r\nre-created when the effect mode (wave vs pulse) changes."
66756
66791
  },
66757
66792
  {
66758
66793
  "kind": "method",
66759
- "name": "#unregisterLoading",
66794
+ "name": "#stopMotion",
66760
66795
  "privacy": "private",
66761
66796
  "return": {
66762
66797
  "type": {
@@ -66766,14 +66801,38 @@
66766
66801
  },
66767
66802
  {
66768
66803
  "kind": "method",
66769
- "name": "__updateAnimations",
66804
+ "name": "__motionDisabled",
66805
+ "privacy": "private",
66806
+ "static": true,
66807
+ "return": {
66808
+ "type": {
66809
+ "text": "boolean"
66810
+ }
66811
+ },
66812
+ "description": "Whether motion is currently suppressed for accessibility or forced-colors reasons."
66813
+ },
66814
+ {
66815
+ "kind": "method",
66816
+ "name": "__updateMotion",
66817
+ "privacy": "private",
66770
66818
  "static": true,
66771
66819
  "return": {
66772
66820
  "type": {
66773
66821
  "text": "void"
66774
66822
  }
66775
66823
  },
66776
- "privacy": "private"
66824
+ "description": "Re-applies the current motion preference to every animating skeleton. Invoked when\r\nthe reduced-motion or forced-colors preference changes."
66825
+ },
66826
+ {
66827
+ "kind": "method",
66828
+ "name": "#syncMotionState",
66829
+ "privacy": "private",
66830
+ "return": {
66831
+ "type": {
66832
+ "text": "void"
66833
+ }
66834
+ },
66835
+ "description": "Aligns this skeleton's animation play state with the current reduced-motion and\r\nforced-colors preferences."
66777
66836
  },
66778
66837
  {
66779
66838
  "kind": "field",
@@ -72647,7 +72706,7 @@
72647
72706
  "attribute": "icons",
72648
72707
  "reflects": true,
72649
72708
  "parsedType": {
72650
- "text": "'none' | 'selected' | 'both'"
72709
+ "text": "'none' | 'both' | 'selected'"
72651
72710
  }
72652
72711
  },
72653
72712
  {
@@ -73300,7 +73359,7 @@
73300
73359
  "default": "\"none\"",
73301
73360
  "fieldName": "icons",
73302
73361
  "parsedType": {
73303
- "text": "'none' | 'selected' | 'both'"
73362
+ "text": "'none' | 'both' | 'selected'"
73304
73363
  }
73305
73364
  },
73306
73365
  {
@@ -299,8 +299,6 @@ let M3eDatepickerElement = class M3eDatepickerElement extends SuppressInitialAni
299
299
  calendar.rangeEnd = this.rangeEnd;
300
300
  calendar.specialDates = this.specialDates;
301
301
  calendar.blackoutDates = this.blackoutDates;
302
- // Ensure the active view is reset
303
- calendar.resetActiveView();
304
302
  if (calendar.isUpdatePending) {
305
303
  await calendar.updateComplete;
306
304
  }
@@ -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\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 { Direction, 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 /** @private */ #anchorLastPosition?: { x: number; y: number; dir: Direction };\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 this.#anchorLastPosition = 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.#anchorLastPosition = undefined;\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 (this.#anchorLastPosition?.dir !== M3eDirectionality.current || this.#anchorLastPosition?.x !== x) {\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\r\n if (this.#anchorLastPosition?.y !== y) {\r\n this.style.top = `${y}px`;\r\n }\r\n\r\n this.#anchorLastPosition = { x, y, dir: M3eDirectionality.current };\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.#anchorLastPosition = 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_anchorLastPosition","_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","dir","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 { Direction, 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 /** @private */ #anchorLastPosition?: { x: number; y: number; dir: Direction };\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 this.#anchorLastPosition = 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 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.#anchorLastPosition = undefined;\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 (this.#anchorLastPosition?.dir !== M3eDirectionality.current || this.#anchorLastPosition?.x !== x) {\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\r\n if (this.#anchorLastPosition?.y !== y) {\r\n this.style.top = `${y}px`;\r\n }\r\n\r\n this.#anchorLastPosition = { x, y, dir: M3eDirectionality.current };\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.#anchorLastPosition = 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_anchorLastPosition","_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","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","dir","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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"}