@m3e/web 2.5.15 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TextOverflowElement.js +3605 -0
- package/dist/TextOverflowElement.js.map +1 -0
- package/dist/TextOverflowElement.min.js +7 -0
- package/dist/TextOverflowElement.min.js.map +1 -0
- package/dist/all.js +1566 -7
- package/dist/all.js.map +1 -1
- package/dist/all.min.js +89 -81
- package/dist/all.min.js.map +1 -1
- package/dist/badge.js +2 -1
- package/dist/badge.js.map +1 -1
- package/dist/badge.min.js +1 -1
- package/dist/badge.min.js.map +1 -1
- package/dist/core.js +415 -3968
- package/dist/core.js.map +1 -1
- package/dist/core.min.js +1 -1
- package/dist/core.min.js.map +1 -1
- package/dist/css-custom-data.json +590 -0
- package/dist/custom-elements.json +4385 -611
- package/dist/html-custom-data.json +251 -0
- package/dist/list.js +12 -4
- package/dist/list.js.map +1 -1
- package/dist/list.min.js +1 -1
- package/dist/list.min.js.map +1 -1
- package/dist/nav-bar.js +1 -1
- package/dist/nav-bar.js.map +1 -1
- package/dist/nav-bar.min.js +1 -1
- package/dist/nav-bar.min.js.map +1 -1
- package/dist/src/all.d.ts +1 -0
- package/dist/src/all.d.ts.map +1 -1
- package/dist/src/badge/BadgeElement.d.ts.map +1 -1
- package/dist/src/core/shared/converters/index.d.ts +1 -0
- package/dist/src/core/shared/converters/index.d.ts.map +1 -1
- package/dist/src/core/shared/converters/timeConverter.d.ts +11 -0
- package/dist/src/core/shared/converters/timeConverter.d.ts.map +1 -0
- package/dist/src/list/ListItemElement.d.ts.map +1 -1
- package/dist/src/nav-bar/NavItemElement.d.ts.map +1 -1
- package/dist/src/timepicker/TimepickerDialElement.d.ts +76 -0
- package/dist/src/timepicker/TimepickerDialElement.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerElement.d.ts +266 -0
- package/dist/src/timepicker/TimepickerElement.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerFormat.d.ts +3 -0
- package/dist/src/timepicker/TimepickerFormat.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerInputElement.d.ts +110 -0
- package/dist/src/timepicker/TimepickerInputElement.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerInputElementBase.d.ts +69 -0
- package/dist/src/timepicker/TimepickerInputElementBase.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerInputPeriodToggleElement.d.ts +18 -0
- package/dist/src/timepicker/TimepickerInputPeriodToggleElement.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerMode.d.ts +3 -0
- package/dist/src/timepicker/TimepickerMode.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerOrientation.d.ts +3 -0
- package/dist/src/timepicker/TimepickerOrientation.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerPeriod.d.ts +8 -0
- package/dist/src/timepicker/TimepickerPeriod.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerToggleElement.d.ts +21 -0
- package/dist/src/timepicker/TimepickerToggleElement.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerVariant.d.ts +3 -0
- package/dist/src/timepicker/TimepickerVariant.d.ts.map +1 -0
- package/dist/src/timepicker/TimepickerView.d.ts +3 -0
- package/dist/src/timepicker/TimepickerView.d.ts.map +1 -0
- package/dist/src/timepicker/index.d.ts +11 -0
- package/dist/src/timepicker/index.d.ts.map +1 -0
- package/dist/timepicker.js +1533 -0
- package/dist/timepicker.js.map +1 -0
- package/dist/timepicker.min.js +15 -0
- package/dist/timepicker.min.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timepicker.js","sources":["../../src/timepicker/TimepickerInputElementBase.ts","../../src/timepicker/TimepickerDialElement.ts","../../src/timepicker/TimepickerInputPeriodToggleElement.ts","../../src/timepicker/TimepickerInputElement.ts","../../src/timepicker/TimepickerElement.ts","../../src/timepicker/TimepickerToggleElement.ts"],"sourcesContent":["import { LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport { TimepickerFormat } from \"./TimepickerFormat\";\r\nimport { TimepickerView } from \"./TimepickerView\";\r\nimport { TimepickerPeriod } from \"./TimepickerPeriod\";\r\nimport { timeConverter, TimeParts } from \"../core\";\r\n\r\n/** A base implementation for an element used to input time. This class must be inherited. */\r\nexport class TimepickerInputElementBase extends LitElement {\r\n /** @private */ #hour: number | null = null;\r\n /** @private */ #minute: number | null = null;\r\n /** @private */ #format: Exclude<TimepickerFormat, \"auto\"> = \"12\";\r\n\r\n /**\r\n * The hour, in 24-hour time, from 0..23.\r\n * @default null\r\n */\r\n @property({ type: Number }) get hour(): number | null {\r\n return this.#hour;\r\n }\r\n set hour(value: number | null) {\r\n this.#hour = value === null ? null : Math.max(0, Math.min(value, 23));\r\n }\r\n\r\n /**\r\n * The minute, from 0..59.\r\n * @default null\r\n */\r\n @property({ type: Number }) get minute(): number | null {\r\n return this.#minute;\r\n }\r\n set minute(value: number | null) {\r\n this.#minute = value === null ? null : Math.max(0, Math.min(value, 59));\r\n }\r\n\r\n /**\r\n * Whether to use a 12‑hour or 24‑hour clock.\r\n * @default \"12\"\r\n */\r\n @property() format: TimepickerFormat = \"12\";\r\n\r\n /**\r\n * The view used to input time.\r\n * @default \"hour\"\r\n */\r\n @property() view: TimepickerView = \"hour\";\r\n\r\n /**\r\n * The 12-hour time period.\r\n * @default \"am\"\r\n */\r\n @property() period: TimepickerPeriod = \"am\";\r\n\r\n /**\r\n * The minimum time that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"min-time\", converter: timeConverter }) minTime: TimeParts | null = null;\r\n\r\n /**\r\n * The maximum time that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"max-time\", converter: timeConverter }) maxTime: TimeParts | null = null;\r\n\r\n /** A function used to determine whether a time cannot be selected. */\r\n @property() blackoutTimes?: (time: TimeParts) => boolean;\r\n\r\n /** The hour in 12‑hour time from 1..12. */\r\n get hourOfPeriod(): number | null {\r\n if (this.hour === null) return null;\r\n const h = this.hour % 12;\r\n return h === 0 ? 12 : h;\r\n }\r\n set hourOfPeriod(value: number | null) {\r\n if (value === null) {\r\n this.hour = null;\r\n } else {\r\n const h = Math.max(1, Math.min(value, 12));\r\n this.hour = this.period === \"am\" ? (h === 12 ? 0 : h) : h === 12 ? 12 : h + 12;\r\n }\r\n }\r\n\r\n /** The current time format. */\r\n get currentFormat(): Exclude<TimepickerFormat, \"auto\"> {\r\n return this.#format;\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 (_changedProperties.has(\"format\")) {\r\n this.#format =\r\n this.format !== \"auto\"\r\n ? this.format\r\n : new Intl.DateTimeFormat(undefined, { hour: \"numeric\" }).resolvedOptions().hour12\r\n ? \"12\"\r\n : \"24\";\r\n }\r\n\r\n // If the hour changes, ensure the correct period; otherwise, if period changes, adjust hour.\r\n if (_changedProperties.has(\"hour\")) {\r\n this.period = this.hour !== null && this.hour >= 12 ? \"pm\" : \"am\";\r\n } else if (_changedProperties.has(\"period\")) {\r\n if (this.hour !== null) {\r\n const h = this.hour % 12 || 12;\r\n this.hour = this.period === \"am\" ? (h === 12 ? 0 : h) : h === 12 ? 12 : h + 12;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determines whether the given hour is disabled.\r\n * @param {number} hour The hour to test.\r\n * @returns Whether `hour` is disabled.\r\n */\r\n isHourDisabled(hour: number): boolean {\r\n if ((this.minTime && hour < this.minTime.hour) || (this.maxTime && hour > this.maxTime.hour)) {\r\n return true;\r\n }\r\n if (this.blackoutTimes) {\r\n for (let minute = 0; minute < 60; minute++) {\r\n if (!this.blackoutTimes({ hour, minute })) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Determines whether the given minute of an hour is disabled.\r\n * @param {number} hour The hour to test.\r\n * @param {number} minute The minute to test.\r\n * @returns Whether `minute` is disabled for `hour`.\r\n */\r\n isMinuteDisabled(hour: number, minute: number): boolean {\r\n if (this.minTime) {\r\n if (hour < this.minTime.hour || (hour === this.minTime.hour && minute < this.minTime.minute)) {\r\n return true;\r\n }\r\n }\r\n\r\n if (this.maxTime) {\r\n if (hour > this.maxTime.hour || (hour === this.maxTime.hour && minute > this.maxTime.minute)) {\r\n return true;\r\n }\r\n }\r\n\r\n if (this.blackoutTimes?.({ hour, minute })) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n computeCssSize,\r\n customElement,\r\n DesignToken,\r\n Role,\r\n safeStyleMap,\r\n SuppressInitialAnimation,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { TimepickerInputElementBase } from \"./TimepickerInputElementBase\";\r\n\r\n/**\r\n * A clock‑face surface for selecting hours and minutes using a movable hand.\r\n * @description\r\n * The `m3e-timepicker-dial` component provides a clock-face experience\r\n * for selecting hours and minutes. It supports both 12- and 24-hour formats,\r\n * and exposes view changes through accessible events.\r\n *\r\n * @tag m3e-timepicker-dial\r\n *\r\n * @attr format - Whether to use a 12‑hour or 24‑hour clock.\r\n * @attr hour - The hour, in 24-hour time, from 0..23.\r\n * @attr max-time - The maximum time that can be selected.\r\n * @attr min-time - The minimum time that can be selected.\r\n * @attr minute - The minute, from 0..59.\r\n * @attr period - The 12-hour time period.\r\n * @attr view - The view used to input time.\r\n *\r\n * @fires change - Dispatched when the selected time changes.\r\n * @fires view-change - Dispatched when the view changes.\r\n *\r\n * @cssprop --m3e-timepicker-dial-container-size - Size of the dial container.\r\n * @cssprop --m3e-timepicker-dial-container-shape - Corner radius of the dial container.\r\n * @cssprop --m3e-timepicker-dial-container-color - Background color of the dial container.\r\n * @cssprop --m3e-timepicker-dial-inset - Inset offset applied to the dial surface.\r\n * @cssprop --m3e-timepicker-dial-center-size - Size of the dial center.\r\n * @cssprop --m3e-timepicker-dial-handle-color - Color of the active handle.\r\n * @cssprop --m3e-timepicker-dial-handle-size - Size of the handle.\r\n * @cssprop --m3e-timepicker-dial-handle-disabled-color - Color of a disabled handle.\r\n * @cssprop --m3e-timepicker-dial-handle-disabled-opacity - Opacity of a disabled handle.\r\n * @cssprop --m3e-timepicker-dial-dial-inset - Inset applied to the handle area.\r\n * @cssprop --m3e-timepicker-dial-numeral-size - Size of the dial numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-color - Text color of inactive numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-shape - Corner radius of the numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-font-size - Font size of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-font-weight - Font weight of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-line-height - Line height of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-tracking - Letter spacing of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-font-size - Font size of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-font-weight - Font weight of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-line-height - Line height of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-tracking - Letter spacing of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-active-color - Color of active numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-disabled-color - Color of disabled numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-disabled-opacity - Opacity of disabled numerals.\r\n * @cssprop --m3e-timepicker-dial-handle-center-size - Size of the handle center indicator.\r\n */\r\n@customElement(\"m3e-timepicker-dial\")\r\nexport class M3eTimepickerDialElement extends SuppressInitialAnimation(\r\n AttachInternals(Role(TimepickerInputElementBase, \"none\")),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n width: var(--m3e-timepicker-dial-container-size, 16rem);\r\n aspect-ratio: 1 / 1;\r\n }\r\n .base {\r\n contain: layout style paint;\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n touch-action: none;\r\n border-radius: var(--m3e-timepicker-dial-container-shape, ${DesignToken.shape.corner.full});\r\n background-color: var(--m3e-timepicker-dial-container-color, ${DesignToken.color.surfaceContainerHighest});\r\n }\r\n .base:not(.dragging) {\r\n cursor: grab;\r\n }\r\n .base.dragging {\r\n cursor: grabbing;\r\n }\r\n .dial {\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n touch-action: inherit;\r\n pointer-events: none;\r\n border-radius: inherit;\r\n\r\n --_numeral-radius: calc(\r\n calc(var(--m3e-timepicker-dial-container-size, 16rem) / 2) - calc(\r\n var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2\r\n ) - var(--m3e-timepicker-dial-inset, 4px)\r\n );\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .dial {\r\n transition: ${unsafeCSS(`opacity ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},\r\n transform ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`)};\r\n }\r\n .dial:not(.hidden) {\r\n opacity: 1;\r\n transform: scale(1);\r\n }\r\n .dial.hidden {\r\n opacity: 0;\r\n }\r\n .dial.hour.hidden {\r\n transform: scale(1.2);\r\n }\r\n .dial.minute.hidden {\r\n transform: scale(0.8);\r\n }\r\n .center {\r\n position: absolute;\r\n box-sizing: border-box;\r\n bottom: calc(50% - calc(var(--m3e-timepicker-dial-center-size, 8px) / 2));\r\n left: calc(50% - calc(var(--m3e-timepicker-dial-center-size, 8px) / 2));\r\n width: var(--m3e-timepicker-dial-center-size, 8px);\r\n height: var(--m3e-timepicker-dial-center-size, 8px);\r\n touch-action: inherit;\r\n pointer-events: none;\r\n border-radius: 50%;\r\n }\r\n .center::before,\r\n .center::after {\r\n content: \"\";\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n border-radius: inherit;\r\n }\r\n .center::before {\r\n background-color: var(--m3e-timepicker-dial-container-color, ${DesignToken.color.surfaceContainerHighest});\r\n }\r\n .center:not(.disabled)::after {\r\n background-color: var(--m3e-timepicker-dial-handle-color, ${DesignToken.color.primary});\r\n }\r\n .center.disabled::after {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-timepicker-dial-handle-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-timepicker-dial-handle-disabled-opacity, 10%),\r\n transparent\r\n );\r\n }\r\n .handle {\r\n position: absolute;\r\n touch-action: inherit;\r\n left: calc(50% - calc(var(--m3e-timepicker-dial-handle-size, 2px) / 2));\r\n width: var(--m3e-timepicker-dial-handle-size, 2px);\r\n transform: rotate(calc(var(--_hand-angle, 0) * 1deg));\r\n transform-origin: bottom;\r\n }\r\n .handle:not(.disabled) {\r\n background-color: var(--m3e-timepicker-dial-handle-color, ${DesignToken.color.primary});\r\n }\r\n .handle.disabled {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-timepicker-dial-handle-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-timepicker-dial-handle-disabled-opacity, 10%),\r\n transparent\r\n );\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .base:not(.dragging) .handle {\r\n transition: ${unsafeCSS(\r\n `transform ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .handle:not(.inner) {\r\n top: calc(var(--m3e-timepicker-dial-dial-inset, 4px) + var(--m3e-timepicker-dial-numeral-size, 2.5rem));\r\n height: calc(50% - var(--m3e-timepicker-dial-dial-inset, 4px) - var(--m3e-timepicker-dial-numeral-size, 2.5rem));\r\n }\r\n .handle.inner {\r\n top: calc(\r\n var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-dial-inset, 4px) +\r\n var(--m3e-timepicker-dial-numeral-size, 2.5rem)\r\n );\r\n height: calc(\r\n 50% - calc(\r\n var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-dial-inset, 4px) +\r\n var(--m3e-timepicker-dial-numeral-size, 2.5rem)\r\n )\r\n );\r\n }\r\n .handle::before {\r\n content: \"\";\r\n position: absolute;\r\n touch-action: inherit;\r\n width: var(--m3e-timepicker-dial-numeral-size, 2.5rem);\r\n height: var(--m3e-timepicker-dial-numeral-size, 2.5rem);\r\n top: calc(0px - var(--m3e-timepicker-dial-numeral-size, 2.5rem));\r\n left: calc(\r\n 0px - calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2) +\r\n calc(var(--m3e-timepicker-dial-handle-size, 2px) / 2)\r\n );\r\n border-radius: 50%;\r\n box-sizing: border-box;\r\n }\r\n .handle:not(.disabled)::before {\r\n background-color: var(--m3e-timepicker-dial-handle-color, ${DesignToken.color.primary});\r\n }\r\n .handle.disabled::before {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-timepicker-dial-handle-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-timepicker-dial-handle-disabled-opacity, 10%),\r\n transparent\r\n );\r\n }\r\n .handle:not(.active)::after {\r\n content: \"\";\r\n position: absolute;\r\n touch-action: inherit;\r\n width: var(--m3e-timepicker-dial-handle-center-size, 4px);\r\n height: var(--m3e-timepicker-dial-handle-center-size, 4px);\r\n top: calc(\r\n 0px - calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2) - calc(\r\n var(--m3e-timepicker-dial-handle-center-size, 4px) / 2\r\n )\r\n );\r\n left: calc(50% - calc(var(--m3e-timepicker-dial-handle-center-size, 4px) / 2));\r\n border-radius: 50%;\r\n box-sizing: border-box;\r\n }\r\n .handle:not(.active):not(.disabled)::after {\r\n background-color: var(--m3e-timepicker-dial-numeral-active-color, ${DesignToken.color.onPrimary});\r\n }\r\n .handle:not(.active).disabled::after {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-timepicker-dial-numeral-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-timepicker-dial-numeral-disabled-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n .numeral {\r\n user-select: none;\r\n touch-action: inherit;\r\n position: absolute;\r\n inset: 50%;\r\n translate: -50% -50%;\r\n width: var(--m3e-timepicker-dial-numeral-size, 2.5rem);\r\n aspect-ratio: 1 / 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--m3e-timepicker-dial-numeral-shape, ${DesignToken.shape.corner.full});\r\n }\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .numeral.active {\r\n transition-delay: ${DesignToken.motion.duration.medium1};\r\n transition: ${unsafeCSS(`color ${DesignToken.motion.duration.short1} ${DesignToken.motion.easing.standard}`)};\r\n }\r\n .numeral:not(.active):not(.disabled) {\r\n color: var(--m3e-timepicker-dial-numeral-color, ${DesignToken.color.onSurface});\r\n }\r\n .numeral.active:not(.disabled) {\r\n color: var(--m3e-timepicker-dial-numeral-active-color, ${DesignToken.color.onPrimary});\r\n }\r\n .numeral.disabled {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-timepicker-dial-numeral-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-timepicker-dial-numeral-disabled-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n .numeral:not(.inner) {\r\n transform: rotate(var(--_numeral-angle)) translateY(calc(-1 * var(--_numeral-radius)))\r\n rotate(calc(-1 * var(--_numeral-angle)));\r\n font-size: var(--m3e-timepicker-dial-numeral-font-size, ${DesignToken.typescale.standard.body.large.fontSize});\r\n font-weight: var(\r\n --m3e-timepicker-dial-numeral-font-weight,\r\n ${DesignToken.typescale.standard.body.large.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-timepicker-dial-numeral-line-height,\r\n ${DesignToken.typescale.standard.body.large.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-dial-numeral-tracking,\r\n ${DesignToken.typescale.standard.body.large.tracking}\r\n );\r\n }\r\n .numeral.inner {\r\n transform: rotate(var(--_numeral-angle))\r\n translateY(calc(calc(-1 * var(--_numeral-radius)) + var(--m3e-timepicker-dial-numeral-size, 2.5rem)))\r\n rotate(calc(-1 * var(--_numeral-angle)));\r\n font-size: var(\r\n --m3e-timepicker-dial-inner-numeral-font-size,\r\n ${DesignToken.typescale.standard.body.small.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-timepicker-dial-inner-numeral-font-weight,\r\n ${DesignToken.typescale.standard.body.small.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-timepicker-dial-inner-numeral-line-height,\r\n ${DesignToken.typescale.standard.body.small.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-dial-inner-numeral-tracking,\r\n ${DesignToken.typescale.standard.body.small.tracking}\r\n );\r\n }\r\n @media (forced-colors: active) {\r\n .base,\r\n .center::before {\r\n background-color: Canvas;\r\n }\r\n .numeral:not(.active):not(.disabled) {\r\n color: CanvasText;\r\n }\r\n .center:not(.disabled)::after,\r\n .handle:not(.disabled) {\r\n background-color: Highlight;\r\n }\r\n .handle:not(.disabled)::before {\r\n background-color: unset;\r\n outline: var(--m3e-timepicker-dial-handle-size, 2px) solid Highlight;\r\n }\r\n .handle:not(.active):not(.disabled)::after {\r\n background-color: Highlight;\r\n }\r\n .numeral.active:not(.disabled) {\r\n color: Highlight;\r\n }\r\n .center.disabled::after,\r\n .handle:not(.active).disabled::after,\r\n .handle.disabled {\r\n background-color: GrayText;\r\n }\r\n .handle.disabled::before {\r\n background-color: unset;\r\n outline: var(--m3e-timepicker-dial-handle-size, 2px) solid GrayText;\r\n }\r\n .numeral.disabled:not(.active),\r\n .numeral.disabled.active {\r\n color: GrayText;\r\n }\r\n .numeral {\r\n forced-color-adjust: none;\r\n background-color: transparent;\r\n }\r\n .base {\r\n outline: 1px solid CanvasText;\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .dial,\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .base:not(.dragging) .handle,\r\n :host(:not(:is(:state(--no-animate), :--no-animate))) .numeral.active {\r\n transition: none;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ #dragState?: { cachedRect: DOMRect; cachedInnerInset: number; timeChanged: boolean };\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n this.ariaHidden = \"true\";\r\n super.connectedCallback();\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 (\r\n _changedProperties.has(\"hour\") ||\r\n _changedProperties.has(\"minute\") ||\r\n _changedProperties.has(\"view\") ||\r\n _changedProperties.has(\"period\") ||\r\n _changedProperties.has(\"minTime\") ||\r\n _changedProperties.has(\"maxTime\") ||\r\n _changedProperties.has(\"blackoutTimes\")\r\n ) {\r\n this.#updateHand();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div\r\n class=\"base\"\r\n @pointerdown=\"${this.#handlePointerDown}\"\r\n @pointermove=\"${this.#handlePointerMove}\"\r\n @pointerup=\"${this.#handlePointerUp}\"\r\n >\r\n ${this.#renderHandle()} ${this.#renderHourFace()} ${this.#renderMinuteFace()}\r\n <div class=\"center\"></div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderHandle(): unknown {\r\n const showHand = (this.view === \"hour\" && this.hour !== null) || (this.view === \"minute\" && this.minute !== null);\r\n return showHand ? html`<div class=\"handle\"></div>` : nothing;\r\n }\r\n\r\n /** @private */\r\n #renderHourFace(): unknown {\r\n const use24 = this.currentFormat === \"24\";\r\n const step = 30;\r\n const outer = Array.from({ length: 12 }, (_, i) => {\r\n const hour = i === 0 ? 12 : i;\r\n const angle = i * step;\r\n const active =\r\n this.hour === null\r\n ? false\r\n : !use24\r\n ? this.hour % 12 === i\r\n : this.hour < 13 && this.hour > 0 && this.hour % 12 === i;\r\n const disabled = this.isHourDisabled(use24 ? hour : this.period === \"pm\" ? (hour % 12) + 12 : hour % 12);\r\n return this.#renderNumeral(`${hour}`, angle, active, disabled);\r\n });\r\n\r\n const inner = !use24\r\n ? nothing\r\n : Array.from({ length: 12 }, (_, i) => {\r\n const hour = i + 13;\r\n const angle = (i + 1) * step;\r\n const active = (this.hour === 0 && hour === 24) || this.hour === hour;\r\n const disabled = this.isHourDisabled(hour === 24 ? 0 : hour);\r\n return this.#renderNumeral(hour == 24 ? \"00\" : `${hour}`, angle, active, disabled, true);\r\n });\r\n\r\n return html`<div class=\"${classMap({ dial: true, hour: true, hidden: this.view !== \"hour\" })}\">\r\n ${outer}${inner}\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderMinuteFace(): unknown {\r\n return html`<div class=\"${classMap({ dial: true, minute: true, hidden: this.view !== \"minute\" })}\">\r\n ${Array.from({ length: 60 }, (_, i) => {\r\n if (i % 5 !== 0) return;\r\n const angle = i * 6;\r\n const label = i % 5 === 0 ? i.toString().padStart(2, \"0\") : \"\";\r\n const active = i === this.minute;\r\n const disabled = this.hour !== null && this.isMinuteDisabled(this.hour, i);\r\n return this.#renderNumeral(label, angle, active, disabled);\r\n })}\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderNumeral(label: string, angle: number, active: boolean, disabled: boolean, inner: boolean = false): unknown {\r\n return html`<div\r\n class=\"${classMap({ numeral: true, inner, active, disabled })}\"\r\n style=\"${safeStyleMap({ \"--_numeral-angle\": `${angle}deg` })}\"\r\n >\r\n ${label}\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #updateHand(): void {\r\n const hand = this.shadowRoot?.querySelector<HTMLElement>(\".handle\");\r\n const center = this.shadowRoot?.querySelector<HTMLElement>(\".center\");\r\n if (!hand || !center) return;\r\n\r\n let active = false;\r\n let inner = false;\r\n let angle: number | null = null;\r\n let disabled = false;\r\n\r\n switch (this.view) {\r\n case \"hour\":\r\n if (this.hour !== null) {\r\n active = true;\r\n angle = (this.hour % 12) * 30;\r\n inner = this.currentFormat === \"24\" && (this.hour < 1 || this.hour > 12);\r\n disabled = this.isHourDisabled(this.hour);\r\n }\r\n break;\r\n\r\n case \"minute\":\r\n if (this.minute !== null) {\r\n angle = this.minute * 6;\r\n active = this.minute % 5 === 0;\r\n disabled = this.hour !== null && this.isMinuteDisabled(this.hour, this.minute);\r\n }\r\n break;\r\n }\r\n\r\n hand.classList.toggle(\"active\", active);\r\n hand.classList.toggle(\"inner\", inner);\r\n hand.classList.toggle(\"disabled\", disabled);\r\n center.classList.toggle(\"disabled\", disabled);\r\n\r\n if (angle != null) {\r\n hand.style.setProperty(\"--_hand-angle\", `${angle}`);\r\n } else {\r\n hand.style.removeProperty(\"--_hand-angle\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handlePointerDown(e: PointerEvent): void {\r\n if ((e.pointerType === \"mouse\" && e.button > 1) || !(e.currentTarget instanceof HTMLElement)) return;\r\n e.currentTarget.setPointerCapture(e.pointerId);\r\n e.currentTarget.classList.add(\"dragging\");\r\n\r\n this.#dragState = {\r\n timeChanged: false,\r\n cachedRect: e.currentTarget.getBoundingClientRect(),\r\n cachedInnerInset:\r\n this.view === \"hour\" && this.currentFormat === \"24\"\r\n ? computeCssSize(\r\n e.currentTarget,\r\n \"calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-inset, 4px))\",\r\n )\r\n : 0,\r\n };\r\n\r\n this.#dragState.timeChanged =\r\n this.view === \"hour\"\r\n ? this.#changeHour(\r\n this.#hourFromAngle(\r\n this.#angleFromPointer(e, this.#dragState),\r\n this.#isPointerInsideInnerRing(e, this.#dragState),\r\n ),\r\n )\r\n : this.#changeMinute(this.#minuteFromAngle(this.#angleFromPointer(e, this.#dragState)));\r\n }\r\n\r\n /** @private */\r\n #handlePointerMove(e: PointerEvent): void {\r\n if (\r\n !(e.currentTarget instanceof HTMLElement) ||\r\n !e.currentTarget.hasPointerCapture(e.pointerId) ||\r\n !this.#dragState\r\n )\r\n return;\r\n\r\n this.#dragState.timeChanged =\r\n (this.view === \"hour\"\r\n ? this.#changeHour(\r\n this.#hourFromAngle(\r\n this.#angleFromPointer(e, this.#dragState),\r\n this.#isPointerInsideInnerRing(e, this.#dragState),\r\n ),\r\n )\r\n : this.#changeMinute(this.#minuteFromAngle(this.#angleFromPointer(e, this.#dragState)))) ||\r\n this.#dragState.timeChanged;\r\n }\r\n\r\n /** @private */\r\n #handlePointerUp(e: PointerEvent): void {\r\n if (\r\n !(e.currentTarget instanceof HTMLElement) ||\r\n !e.currentTarget.hasPointerCapture(e.pointerId) ||\r\n !this.#dragState\r\n )\r\n return;\r\n\r\n e.currentTarget.releasePointerCapture(e.pointerId);\r\n e.currentTarget.classList.remove(\"dragging\");\r\n\r\n if (this.#dragState.timeChanged) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n if (\r\n this.view === \"hour\" &&\r\n (this.#dragState.timeChanged ||\r\n this.isHourDisabled(\r\n this.#hourFromAngle(\r\n this.#angleFromPointer(e, this.#dragState),\r\n this.#isPointerInsideInnerRing(e, this.#dragState),\r\n ),\r\n ) !== true)\r\n ) {\r\n this.view = \"minute\";\r\n this.dispatchEvent(new CustomEvent(\"view-change\"));\r\n }\r\n\r\n this.#dragState = undefined;\r\n }\r\n\r\n /** @private */\r\n #angleFromPointer(e: PointerEvent, state: { cachedRect: DOMRect }): number {\r\n const cx = state.cachedRect.left + state.cachedRect.width / 2;\r\n const cy = state.cachedRect.top + state.cachedRect.height / 2;\r\n return ((Math.atan2(e.clientY - cy, e.clientX - cx) * 180) / Math.PI + 450) % 360;\r\n }\r\n\r\n /** @private */\r\n #radiusFromPointer(e: PointerEvent, state: { cachedRect: DOMRect }): number {\r\n const cx = state.cachedRect.left + state.cachedRect.width / 2;\r\n const cy = state.cachedRect.top + state.cachedRect.height / 2;\r\n const dx = e.clientX - cx;\r\n const dy = e.clientY - cy;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n }\r\n\r\n /** @private */\r\n #isPointerInsideInnerRing(e: PointerEvent, state: { cachedRect: DOMRect; cachedInnerInset: number }): boolean {\r\n if (state.cachedInnerInset <= 0) return false;\r\n return this.#radiusFromPointer(e, state) < state.cachedRect.width / 2 - state.cachedInnerInset;\r\n }\r\n\r\n /** @private */\r\n #hourFromAngle(angle: number, inner: boolean): number {\r\n const index = Math.round(angle / 30) % 12;\r\n const hour = inner ? (index === 0 ? 0 : index + 12) : index === 0 ? 12 : index;\r\n return this.currentFormat === \"24\" ? hour : this.period === \"pm\" ? (hour % 12) + 12 : hour % 12;\r\n }\r\n\r\n /** @private */\r\n #minuteFromAngle(angle: number): number {\r\n return Math.round(angle / 6) % 60;\r\n }\r\n\r\n /** @private */\r\n #changeHour(hour: number): boolean {\r\n if (this.hour !== hour && !this.isHourDisabled(hour)) {\r\n this.hour = hour;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #changeMinute(minute: number): boolean {\r\n if (this.hour !== null && this.isMinuteDisabled(this.hour, minute)) return false;\r\n if (this.minute !== minute) {\r\n this.minute = minute;\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\ninterface M3eTimepickerDialElementEventMap extends HTMLElementEventMap {\r\n \"view-change\": CustomEvent;\r\n}\r\n\r\nexport interface M3eTimepickerDialElement {\r\n addEventListener<K extends keyof M3eTimepickerDialElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerDialElement, ev: M3eTimepickerDialElementEventMap[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 M3eTimepickerDialElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerDialElement, ev: M3eTimepickerDialElementEventMap[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-timepicker-dial\": M3eTimepickerDialElement;\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport { customElement, DesignToken, Role } from \"@m3e/web/core\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { TimepickerOrientation } from \"./TimepickerOrientation\";\r\nimport { TimepickerPeriod } from \"./TimepickerPeriod\";\r\n\r\n/** @internal An internal element responsible for selecting a time period (AM/PM). */\r\n@customElement(\"m3e-timepicker-input-period-toggle\")\r\nexport class M3eTimepickerInputPeriodToggleElement extends Role(LitElement, \"radiogroup\") {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .base {\r\n contain: layout style;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n border-radius: var(--m3e-timepicker-input-period-toggle-shape, ${DesignToken.shape.corner.small});\r\n border: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid\r\n var(--m3e-timepicker-input-period-toggle-outline-color, ${DesignToken.color.outline});\r\n }\r\n :host([orientation=\"vertical\"]) {\r\n height: var(--m3e-timepicker-input-period-toggle-vertical-height, 5rem);\r\n width: var(--m3e-timepicker-input-period-toggle-vertical-width, 3.25rem);\r\n }\r\n :host([orientation=\"vertical\"]) .base {\r\n flex-direction: column;\r\n }\r\n :host([orientation=\"horizontal\"]) {\r\n height: var(--m3e-timepicker-input-period-toggle-horizontal-height, 2.375rem);\r\n width: var(--m3e-timepicker-input-period-toggle-horizontal-width, 13.5rem);\r\n }\r\n .period-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n outline: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n cursor: pointer;\r\n position: relative;\r\n transition: ${unsafeCSS(\r\n `background-color color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n font-size: var(\r\n --m3e-timepicker-input-period-toggle-label-font-size,\r\n ${DesignToken.typescale.standard.title.medium.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-timepicker-input-period-toggle-label-font-weight,\r\n ${DesignToken.typescale.standard.title.medium.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-timepicker-input-period-toggle-label-line-height,\r\n ${DesignToken.typescale.standard.title.medium.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-input-period-toggle-label-tracking,\r\n ${DesignToken.typescale.standard.title.medium.tracking}\r\n );\r\n }\r\n :host([orientation=\"vertical\"]) .period-button {\r\n height: 50%;\r\n width: 100%;\r\n }\r\n :host([orientation=\"horizontal\"]) .period-button {\r\n height: 100%;\r\n width: 50%;\r\n }\r\n :host([orientation=\"vertical\"]) .period-button:first-child {\r\n border-start-start-radius: inherit;\r\n border-start-end-radius: inherit;\r\n }\r\n :host([orientation=\"horizontal\"]) .period-button:first-child {\r\n border-start-start-radius: inherit;\r\n border-end-start-radius: inherit;\r\n }\r\n .divider {\r\n flex: none;\r\n }\r\n :host([orientation=\"vertical\"]) .divider {\r\n width: 100%;\r\n border-bottom: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid\r\n var(--m3e-timepicker-input-period-toggle-outline-color, ${DesignToken.color.outline});\r\n }\r\n :host([orientation=\"horizontal\"]) .divider {\r\n height: 100%;\r\n border-inline-end: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid\r\n var(--m3e-timepicker-input-period-toggle-outline-color, ${DesignToken.color.outline});\r\n }\r\n :host([orientation=\"vertical\"]) .period-button:last-child {\r\n border-end-start-radius: inherit;\r\n border-end-end-radius: inherit;\r\n }\r\n :host([orientation=\"horizontal\"]) .period-button:last-child {\r\n border-start-end-radius: inherit;\r\n border-end-end-radius: inherit;\r\n }\r\n .period-button[aria-checked=\"true\"] {\r\n background-color: var(\r\n --m3e-timepicker-input-period-toggle-selected-container-color,\r\n ${DesignToken.color.tertiaryContainer}\r\n );\r\n color: var(--m3e-timepicker-input-period-toggle-selected-label-color, ${DesignToken.color.onTertiaryContainer});\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-timepicker-input-period-toggle-selected-hover-state-layer-color,\r\n ${DesignToken.color.onTertiaryContainer}\r\n );\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-timepicker-input-period-toggle-selected-focus-state-layer-color,\r\n ${DesignToken.color.onTertiaryContainer}\r\n );\r\n --m3e-ripple-color: var(\r\n --m3e-timepicker-input-period-toggle-selected-pressed-state-layer-color,\r\n ${DesignToken.color.onTertiaryContainer}\r\n );\r\n }\r\n .period-button[aria-checked=\"false\"] {\r\n color: var(--m3e-timepicker-input-period-toggle-unselected-label-color, ${DesignToken.color.onSurfaceVariant});\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-timepicker-input-period-toggle-unselected-hover-state-layer-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-timepicker-input-period-toggle-unselected-focus-state-layer-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n --m3e-ripple-color: var(\r\n --m3e-timepicker-input-period-toggle-unselected-pressed-state-layer-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n }\r\n `;\r\n\r\n /** The 12-hour time period. */\r\n @property() period: TimepickerPeriod = \"am\";\r\n\r\n /** The orientation of the toggle. */\r\n @property({ reflect: true }) orientation: Exclude<TimepickerOrientation, \"auto\"> = \"vertical\";\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const format = new Intl.DateTimeFormat(navigator.language, { hour: \"numeric\", hour12: true });\r\n\r\n return html`<div class=\"base\" tabindex=\"-1\" @keydown=\"${this.#handleKeyDown}\">\r\n <div\r\n id=\"am\"\r\n class=\"period-button\"\r\n role=\"radio\"\r\n aria-checked=\"${this.period === \"am\" ? \"true\" : \"false\"}\"\r\n tabindex=\"${this.period === \"am\" ? \"0\" : \"-1\"}\"\r\n @click=\"${this.#handleClick}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"am\"></m3e-focus-ring>\r\n <m3e-state-layer class=\"state-layer\" for=\"am\"></m3e-state-layer>\r\n <m3e-ripple class=\"ripple\" centered for=\"am\"></m3e-ripple>\r\n ${format.formatToParts(new Date(2020, 0, 1, 9)).find((p) => p.type === \"dayPeriod\")?.value ?? \"AM\"}\r\n </div>\r\n <div class=\"divider\" aria-hidden=\"true\"></div>\r\n <div\r\n id=\"pm\"\r\n class=\"period-button\"\r\n role=\"radio\"\r\n aria-checked=\"${this.period === \"pm\" ? \"true\" : \"false\"}\"\r\n tabindex=\"${this.period === \"pm\" ? \"0\" : \"-1\"}\"\r\n @click=\"${this.#handleClick}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"pm\"></m3e-focus-ring>\r\n <m3e-state-layer class=\"state-layer\" for=\"pm\"></m3e-state-layer>\r\n <m3e-ripple class=\"ripple\" centered for=\"pm\"></m3e-ripple>\r\n ${format.formatToParts(new Date(2020, 0, 1, 21)).find((p) => p.type === \"dayPeriod\")?.value ?? \"PM\"}\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n const changePeriod = (prev: TimepickerPeriod, next: TimepickerPeriod) => {\r\n if (this.period === prev) {\r\n this.period = next;\r\n this.shadowRoot?.querySelector<HTMLElement>(`#${this.period}`)?.focus();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n };\r\n\r\n switch (e.key) {\r\n case \"Left\":\r\n case \"ArrowLeft\":\r\n e.preventDefault();\r\n if (this.orientation === \"horizontal\") {\r\n if (M3eDirectionality.current === \"rtl\") {\r\n changePeriod(\"am\", \"pm\");\r\n } else {\r\n changePeriod(\"pm\", \"am\");\r\n }\r\n }\r\n break;\r\n\r\n case \"Right\":\r\n case \"ArrowRight\":\r\n e.preventDefault();\r\n if (this.orientation === \"horizontal\") {\r\n if (M3eDirectionality.current === \"rtl\") {\r\n changePeriod(\"pm\", \"am\");\r\n } else {\r\n changePeriod(\"am\", \"pm\");\r\n }\r\n }\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n e.preventDefault();\r\n if (this.orientation === \"vertical\") {\r\n changePeriod(\"pm\", \"am\");\r\n }\r\n\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n e.preventDefault();\r\n if (this.orientation === \"vertical\") {\r\n changePeriod(\"am\", \"pm\");\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n const period = <TimepickerPeriod>(<HTMLElement>e.currentTarget).id;\r\n if (period !== this.period) {\r\n this.period = period;\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, nothing, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport { customElement, DesignToken, HtmlFor } from \"@m3e/web/core\";\r\n\r\nimport { TimepickerOrientation } from \"./TimepickerOrientation\";\r\nimport { M3eTimepickerDialElement } from \"./TimepickerDialElement\";\r\nimport { M3eTimepickerInputPeriodToggleElement } from \"./TimepickerInputPeriodToggleElement\";\r\nimport { TimepickerInputElementBase } from \"./TimepickerInputElementBase\";\r\nimport { TimepickerView } from \"./TimepickerView\";\r\n\r\nimport \"./TimepickerInputPeriodToggleElement\";\r\n\r\n/**\r\n * A keyboard‑based time surface for choosing hours and minutes.\r\n * @description\r\n * The `m3e-timepicker-input` component provides a keyboard-focused time\r\n * entry surface, allowing users to type or navigate hour and minute fields,\r\n * toggle AM/PM, and receive accessible validation feedback.\r\n *\r\n * @tag m3e-timepicker-input\r\n *\r\n * @attr format - Whether to use a 12‑hour or 24‑hour clock.\r\n * @attr hide-labels - Whether to hide field labels.\r\n * @attr hour - The hour, in 24-hour time, from 0..23.\r\n * @attr max-time - The maximum time that can be selected.\r\n * @attr min-time - The minimum time that can be selected.\r\n * @attr minute - The minute, from 0..59.\r\n * @attr orientation - The orientation of the input.\r\n * @attr period - The 12-hour time period.\r\n * @attr view - The view used to input time.\r\n * @attr hour-label - The label for the hour field.\r\n * @attr minute-label - The label for the minute field.\r\n * @attr period-toggle-label - The accessible label given to the period toggle.\r\n *\r\n * @fires change - Dispatched when the selected time changes.\r\n * @fires view-change - Dispatched when the view changes.\r\n *\r\n * @cssprop --m3e-timepicker-input-field-container-width - Width of the input field container.\r\n * @cssprop --m3e-timepicker-input-field-height - Height of the input fields.\r\n * @cssprop --m3e-timepicker-input-field-container-shape - Corner radius of the input field container.\r\n * @cssprop --m3e-timepicker-input-field-font-size - Font size of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-font-weight - Font weight of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-line-height - Line height of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-tracking - Letter spacing of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-label-unselected-color - Text color of unselected input field labels.\r\n * @cssprop --m3e-timepicker-input-field-unselected-container-color - Background color of unselected input fields.\r\n * @cssprop --m3e-timepicker-input-field-label-selected-color - Text color of selected input field labels.\r\n * @cssprop --m3e-timepicker-input-field-selected-container-color - Background color of selected input fields.\r\n * @cssprop --m3e-timepicker-input-field-label-invalid-color - Text color of invalid input field labels.\r\n * @cssprop --m3e-timepicker-input-field-invalid-container-color - Background color of invalid input fields.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-color - Text color of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-font-size - Font size of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-font-weight - Font weight of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-line-height - Line height of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-tracking - Letter spacing of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-separator-width - Width of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-color - Color of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-font-size - Font size of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-font-weight - Font weight of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-tracking - Letter spacing of the field separator.\r\n * @cssprop --m3e-timepicker-input-horizontal-period-toggle-space - Space between the fields and period toggle in horizontal orientation.\r\n * @cssprop --m3e-timepicker-input-vertical-period-toggle-space - Space between the fields and period toggle in vertical orientation.\r\n */\r\n@customElement(\"m3e-timepicker-input\")\r\nexport class M3eTimepickerInputElement extends HtmlFor(TimepickerInputElementBase) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .base {\r\n display: flex;\r\n align-items: flex-start;\r\n height: 100%;\r\n }\r\n .field-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: stretch;\r\n position: relative;\r\n }\r\n .field,\r\n .focus-ring {\r\n width: var(--m3e-timepicker-input-field-container-width, 6rem);\r\n height: var(--m3e-timepicker-input-field-height, 5rem);\r\n border-radius: var(--m3e-timepicker-input-field-container-shape, ${DesignToken.shape.corner.small});\r\n }\r\n .field {\r\n display: block;\r\n text-align: center;\r\n cursor: text;\r\n outline: none;\r\n border: unset;\r\n box-shadow: none;\r\n padding: unset;\r\n\r\n font-size: var(--m3e-timepicker-input-field-font-size, ${DesignToken.typescale.standard.display.medium.fontSize});\r\n font-weight: var(\r\n --m3e-timepicker-input-field-font-weight,\r\n ${DesignToken.typescale.standard.display.medium.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-timepicker-input-field-line-height,\r\n ${DesignToken.typescale.standard.display.medium.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-input-field-tracking,\r\n ${DesignToken.typescale.standard.display.medium.tracking}\r\n );\r\n }\r\n .field:not(.selected):not(.invalid) {\r\n color: var(--m3e-timepicker-input-field-label-unselected-color, ${DesignToken.color.onSurface});\r\n background-color: var(\r\n --m3e-timepicker-input-field-unselected-container-color,\r\n ${DesignToken.color.surfaceContainerHighest}\r\n );\r\n }\r\n .field.selected:not(.invalid) {\r\n color: var(--m3e-timepicker-input-field-label-selected-color, ${DesignToken.color.onPrimaryContainer});\r\n background-color: var(\r\n --m3e-timepicker-input-field-selected-container-color,\r\n ${DesignToken.color.primaryContainer}\r\n );\r\n }\r\n .field.invalid {\r\n color: var(--m3e-timepicker-input-field-label-invalid-color, ${DesignToken.color.onErrorContainer});\r\n background-color: var(--m3e-timepicker-input-field-invalid-container-color, ${DesignToken.color.errorContainer});\r\n }\r\n .field::placeholder {\r\n user-select: none;\r\n color: currentColor;\r\n transition: opacity ${DesignToken.motion.duration.short4};\r\n }\r\n .field:focus::placeholder {\r\n opacity: 0;\r\n }\r\n .label {\r\n user-select: none;\r\n margin-top: 0.25rem;\r\n color: var(--m3e-timepicker-input-field-supporting-text-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(\r\n --m3e-timepicker-input-field-supporting-text-font-size,\r\n ${DesignToken.typescale.standard.body.small.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-timepicker-input-field-supporting-text-font-weight,\r\n ${DesignToken.typescale.standard.body.small.fontWeight}\r\n );\r\n line-height: var(\r\n --m3e-timepicker-input-field-supporting-text-line-height,\r\n ${DesignToken.typescale.standard.body.small.lineHeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-input-field-supporting-text-tracking,\r\n ${DesignToken.typescale.standard.body.small.tracking}\r\n );\r\n }\r\n .field-separator {\r\n user-select: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--m3e-timepicker-input-field-separator-width, 1.5rem);\r\n height: var(--m3e-timepicker-input-field-height, 5rem);\r\n color: var(--m3e-timepicker-input-field-separator-color, ${DesignToken.color.onSurface});\r\n font-size: var(\r\n --m3e-timepicker-input-field-separator-font-size,\r\n ${DesignToken.typescale.standard.display.large.fontSize}\r\n );\r\n font-weight: var(\r\n --m3e-timepicker-input-field-separator-font-weight,\r\n ${DesignToken.typescale.standard.display.large.fontWeight}\r\n );\r\n letter-spacing: var(\r\n --m3e-timepicker-input-field-separator-tracking,\r\n ${DesignToken.typescale.standard.display.large.tracking}\r\n );\r\n }\r\n :host([orientation=\"horizontal\"]) .period-toggle {\r\n margin-inline-start: var(--m3e-timepicker-input-horizontal-period-toggle-space, 0.75rem);\r\n }\r\n :host([orientation=\"vertical\"]) .period-toggle {\r\n margin-block-start: var(--m3e-timepicker-input-vertical-period-toggle-space, 1rem);\r\n }\r\n `;\r\n\r\n /** @private */ readonly #clockChangeHandler = () => this.#handleClockChange();\r\n /** @private */ readonly #clockViewChangeHandler = () => this.#handleClockViewChange();\r\n\r\n /**\r\n * The orientation of the input.\r\n * @default \"horizontal\"\r\n */\r\n @property({ reflect: true }) orientation: Exclude<TimepickerOrientation, \"auto\"> = \"horizontal\";\r\n\r\n /**\r\n * Whether to hide field labels.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-labels\", type: Boolean }) hideLabels = false;\r\n\r\n /**\r\n * The label for the hour field.\r\n * @default \"Hour\"\r\n */\r\n @property({ attribute: \"hour-label\" }) hourLabel = \"Hour\";\r\n\r\n /**\r\n * The label for the minute field.\r\n * @default \"Minute\"\r\n */\r\n @property({ attribute: \"minute-label\" }) minuteLabel = \"Minute\";\r\n\r\n /**\r\n * The accessible label given to the period toggle.\r\n * @default \"AM or PM\"\r\n */\r\n @property({ attribute: \"period-toggle-label\" }) periodToggleLabel = \"AM or PM\";\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n super.attach(control);\r\n\r\n if (this.control instanceof M3eTimepickerDialElement) {\r\n this.#syncControl();\r\n this.control.addEventListener(\"change\", this.#clockChangeHandler);\r\n this.control.addEventListener(\"view-change\", this.#clockViewChangeHandler);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control instanceof M3eTimepickerDialElement) {\r\n this.control.removeEventListener(\"change\", this.#clockChangeHandler);\r\n this.control.removeEventListener(\"view-change\", this.#clockViewChangeHandler);\r\n }\r\n super.detach();\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 (\r\n _changedProperties.has(\"hour\") ||\r\n _changedProperties.has(\"minute\") ||\r\n _changedProperties.has(\"view\") ||\r\n _changedProperties.has(\"period\") ||\r\n _changedProperties.has(\"format\") ||\r\n _changedProperties.has(\"minTime\") ||\r\n _changedProperties.has(\"maxTime\") ||\r\n _changedProperties.has(\"blackoutTimes\")\r\n ) {\r\n this.#syncControl();\r\n }\r\n }\r\n\r\n /** @private */\r\n #syncControl(): void {\r\n if (this.control instanceof M3eTimepickerDialElement) {\r\n this.control.view = this.view;\r\n this.control.format = this.currentFormat;\r\n this.control.hour = this.hour;\r\n this.control.minute = this.minute;\r\n this.control.minTime = this.minTime;\r\n this.control.maxTime = this.maxTime;\r\n this.control.blackoutTimes = this.blackoutTimes;\r\n this.control.period = this.period;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n ${this.#renderField(\"hour\")}\r\n <div class=\"field-separator\">:</div>\r\n ${this.#renderField(\"minute\")}\r\n ${this.currentFormat === \"12\" && this.orientation === \"horizontal\"\r\n ? html`<m3e-timepicker-input-period-toggle\r\n class=\"period-toggle\"\r\n period=\"${this.period}\"\r\n orientation=\"vertical\"\r\n aria-label=\"${this.periodToggleLabel}\"\r\n @change=\"${this.#handlePeriodChange}\"\r\n ></m3e-timepicker-input-period-toggle>`\r\n : nothing}\r\n </div>\r\n ${this.currentFormat === \"12\" && this.orientation === \"vertical\"\r\n ? html`<m3e-timepicker-input-period-toggle\r\n class=\"period-toggle\"\r\n period=\"${this.period}\"\r\n orientation=\"horizontal\"\r\n @change=\"${this.#handlePeriodChange}\"\r\n ></m3e-timepicker-input-period-toggle>`\r\n : nothing}`;\r\n }\r\n\r\n /** @private */\r\n #renderField(view: TimepickerView): unknown {\r\n const pad = (n: number | null) => (n === null ? \"\" : n < 10 ? \"0\" + n : String(n));\r\n const label = view === \"hour\" ? this.hourLabel : this.minuteLabel;\r\n const invalid = this.#isDisabled(this[view], view);\r\n\r\n let valueText: string | undefined;\r\n\r\n if (this[view] !== null) {\r\n const date = new Date();\r\n date.setHours(this.hour ?? 0, this.minute ?? 0, 0, 0);\r\n\r\n valueText = new Intl.DateTimeFormat(\r\n navigator.language,\r\n view === \"hour\" ? { hour: \"numeric\", hour12: this.currentFormat === \"12\" } : { minute: \"2-digit\" },\r\n ).format(date);\r\n }\r\n\r\n return html`<div class=\"field-wrapper\">\r\n <input\r\n id=\"${view}\"\r\n class=\"${classMap({\r\n field: true,\r\n selected: this.view === view,\r\n invalid,\r\n })}\"\r\n role=\"spinbutton\"\r\n placeholder=\"––\"\r\n inputmode=\"numeric\"\r\n autocomplete=\"off\"\r\n aria-label=\"${label}\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"${view === \"hour\" ? 23 : 59}\"\r\n aria-valuenow=\"${ifDefined(valueText ? pad(this[view]) : undefined)}\"\r\n aria-valuetext=\"${ifDefined(valueText)}\"\r\n @focus=\"${this.#handleFieldFocus}\"\r\n @keydown=\"${this.#handleFieldKeyDown}\"\r\n @input=\"${this.#handleFieldInput}\"\r\n .value=\"${pad(view === \"hour\" ? (this.currentFormat === \"12\" ? this.hourOfPeriod : this.hour) : this.minute)}\"\r\n />\r\n <m3e-collapsible aria-hidden=\"true\" ?open=\"${!this.hideLabels}\">\r\n <span class=\"label\">${label}</span>\r\n </m3e-collapsible>\r\n <m3e-focus-ring class=\"focus-ring\" for=\"${view}\"></m3e-focus-ring>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleFieldFocus(e: Event): void {\r\n const input = <HTMLInputElement>e.target;\r\n const view = <TimepickerView>input.id;\r\n if (this.view !== view) {\r\n this.view = view;\r\n this.dispatchEvent(new CustomEvent(\"view-change\"));\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleFieldKeyDown(e: KeyboardEvent): void {\r\n const input = <HTMLInputElement>e.target;\r\n const view = <TimepickerView>input.id;\r\n\r\n switch (e.key) {\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n e.preventDefault();\r\n this.#increment(view, 1, true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n\r\n case \"PageUp\":\r\n e.preventDefault();\r\n this.#increment(view, view === \"hour\" ? 1 : 5);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n e.preventDefault();\r\n this.#increment(view, -1, true);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n\r\n case \"PageDown\":\r\n e.preventDefault();\r\n this.#increment(view, view === \"hour\" ? -1 : -5);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n\r\n case \"Backspace\":\r\n case \"Delete\":\r\n e.preventDefault();\r\n this[view] = null;\r\n input.value = \"\";\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n break;\r\n\r\n case \"Tab\":\r\n case \"ArrowLeft\":\r\n case \"Left\":\r\n case \"ArrowRight\":\r\n case \"Right\":\r\n return;\r\n }\r\n\r\n if (e.ctrlKey || e.metaKey) {\r\n return;\r\n }\r\n\r\n if (!/^\\d$/.test(e.key)) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleFieldInput(e: InputEvent): void {\r\n if (e.isComposing) return;\r\n\r\n const input = e.target as HTMLInputElement;\r\n const view = input.id as TimepickerView;\r\n\r\n const raw = input.value.replace(/\\D/g, \"\");\r\n if (raw.length === 0) {\r\n this[view] = null;\r\n input.value = \"\";\r\n this.requestUpdate();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n }\r\n\r\n const isValid = (v: number) =>\r\n view === \"hour\" ? (this.currentFormat === \"12\" ? v >= 1 && v <= 12 : v >= 0 && v <= 23) : v >= 0 && v <= 59;\r\n\r\n const cursor = input.selectionStart ?? input.value.length;\r\n const atEnd = cursor === input.value.length;\r\n\r\n // Typed digit (only valid for insertText)\r\n const typedDigit = typeof e.data === \"string\" && /^\\d$/.test(e.data) ? Number(e.data) : null;\r\n\r\n let value: number;\r\n\r\n if (typedDigit !== null && !atEnd) {\r\n // Cursor not at end, always treat as fresh single-digit overwrite\r\n value = typedDigit;\r\n } else if (raw.length >= 2 && atEnd && raw.startsWith(\"0\")) {\r\n // Natural 2-digit typing or paste\r\n const candidate = parseInt(raw.slice(-2));\r\n value = isValid(candidate) ? candidate : Number(raw.slice(-1));\r\n } else {\r\n // Single-digit typing or fallback\r\n value = typedDigit !== null ? typedDigit : Number(raw.slice(-1));\r\n }\r\n\r\n // 12-hour correction\r\n if (view === \"hour\" && this.currentFormat === \"12\" && value === 0) {\r\n value = 12;\r\n }\r\n\r\n input.value = value < 10 ? `0${value}` : String(value);\r\n\r\n try {\r\n input.setSelectionRange(input.value.length, input.value.length);\r\n } catch {\r\n // ignore\r\n }\r\n\r\n if (view === \"hour\" && this.currentFormat === \"12\") {\r\n this.hourOfPeriod = value;\r\n } else {\r\n this[view] = value;\r\n }\r\n\r\n this.requestUpdate();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #increment(view: TimepickerView, by: number, wrap: boolean = false): void {\r\n const max = view === \"hour\" ? 24 : 60;\r\n\r\n const step = Math.sign(by);\r\n let candidate = this[view] ?? 0;\r\n let remaining = Math.abs(by);\r\n\r\n while (remaining > 0) {\r\n candidate += step;\r\n\r\n if (!wrap) {\r\n if (candidate < 0) {\r\n candidate = 0;\r\n break;\r\n }\r\n if (candidate >= max) {\r\n candidate = max - 1;\r\n break;\r\n }\r\n }\r\n\r\n candidate = ((candidate % max) + max) % max;\r\n remaining--;\r\n }\r\n\r\n let skipStep = step;\r\n\r\n if (!wrap) {\r\n if (candidate === 0) skipStep = +1;\r\n else if (candidate === max - 1) skipStep = -1;\r\n }\r\n\r\n if (this.#isDisabled(candidate, view)) {\r\n let attempts = 0;\r\n\r\n while (this.#isDisabled(candidate, view)) {\r\n candidate += skipStep;\r\n if (!wrap) {\r\n if (candidate < 0 || candidate >= max) return;\r\n }\r\n\r\n candidate = ((candidate % max) + max) % max;\r\n if (++attempts > max) return;\r\n }\r\n }\r\n\r\n this[view] = candidate;\r\n }\r\n\r\n /** @private */\r\n #handlePeriodChange(e: Event): void {\r\n e.stopPropagation();\r\n this.period = (<M3eTimepickerInputPeriodToggleElement>e.currentTarget).period;\r\n if (this.hour !== null) {\r\n const h = this.hour % 12 || 12;\r\n this.hour = this.period === \"am\" ? (h === 12 ? 0 : h) : h === 12 ? 12 : h + 12;\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClockChange(): void {\r\n if (!this.control) return;\r\n this.hour = (<M3eTimepickerDialElement>this.control).hour;\r\n this.minute = (<M3eTimepickerDialElement>this.control).minute;\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleClockViewChange(): void {\r\n if (!this.control) return;\r\n this.view = (<M3eTimepickerDialElement>this.control).view;\r\n this.dispatchEvent(new CustomEvent(\"view-change\"));\r\n }\r\n\r\n /** @private */\r\n #isDisabled(value: number | null, view: TimepickerView): boolean {\r\n if (value === null) return false;\r\n switch (view) {\r\n case \"hour\":\r\n return this.isHourDisabled(value);\r\n case \"minute\":\r\n return this.hour != null && this.isMinuteDisabled(this.hour, value);\r\n }\r\n }\r\n}\r\n\r\ninterface M3eTimepickerInputElementEventMap extends HTMLElementEventMap {\r\n \"view-change\": CustomEvent;\r\n}\r\n\r\nexport interface M3eTimepickerInputElement {\r\n addEventListener<K extends keyof M3eTimepickerInputElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerInputElement, ev: M3eTimepickerInputElementEventMap[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 M3eTimepickerInputElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerInputElement, ev: M3eTimepickerInputElementEventMap[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-timepicker-input\": M3eTimepickerInputElement;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, nothing, PropertyValues, svg, 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 prefersReducedMotion,\r\n timeConverter,\r\n TimeParts,\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\n\r\nimport \"@m3e/web/core/a11y\";\r\nimport \"@m3e/web/button\";\r\nimport \"@m3e/web/icon-button\";\r\n\r\nimport { M3eTimepickerInputElement } from \"./TimepickerInputElement\";\r\nimport { TimepickerVariant } from \"./TimepickerVariant\";\r\nimport { TimepickerMode } from \"./TimepickerMode\";\r\nimport { TimepickerOrientation } from \"./TimepickerOrientation\";\r\nimport { TimepickerFormat } from \"./TimepickerFormat\";\r\n\r\nimport \"./TimepickerDialElement\";\r\nimport \"./TimepickerInputElement\";\r\n\r\n/**\r\n * Presents a time picker on a temporary surface.\r\n * @description\r\n * The `m3e-timepicker` component provides a time-selection experience consistent\r\n * with Material 3 guidance for layout, motion, and accessibility. It displays a\r\n * temporary surface that allows users to choose a time using both keyboard-based\r\n * input and clock-face dial controls.\r\n *\r\n * While open, the picker ensures users can review their selection and complete\r\n * the interaction through confirm, dismiss, or toggle actions, making updates\r\n * intentional and accessible.\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-timepicker\r\n *\r\n * @attr variant - The appearance variant of the picker.\r\n * @attr mode - The mode in which to select time.\r\n * @attr orientation - The orientation of the picker.\r\n * @attr date - The selected date.\r\n * @attr format - Whether to use a 12‑hour or 24‑hour clock.\r\n * @attr max-time - The maximum time that can be selected.\r\n * @attr min-time - The minimum time that can be selected.\r\n * @attr confirm-label - Label given to the button used apply the selected date and close the picker.\r\n * @attr dismiss-label - Label given to the button used discard the selected date and close the picker.\r\n * @attr dial-label - Label given to the the picker when in dial mode.\r\n * @attr input-label - Label given to the the picker when in input mode.\r\n * @attr hour-label - Label for the hour field.\r\n * @attr minute-label - Label for the minute field.\r\n * @attr mode-toggle-label - The accessible label given to the mode toggle button.\r\n * @attr hide-mode-toggle - Whether to hide the mode toggle button.\r\n * @attr period-toggle-label - The accessible label given to the period toggle.\r\n *\r\n * @fires change - Dispatched when the selected time is confirmed.\r\n * @fires beforetoggle - Dispatched before the picker toggles.\r\n * @fires toggle - Dispatched when the picker toggles.\r\n *\r\n * @cssprop --m3e-timepicker-container-padding-block - Block padding inside the picker container.\r\n * @cssprop --m3e-timepicker-container-padding-inline - Inline padding inside the picker container.\r\n * @cssprop --m3e-timepicker-container-color - Background color of the picker container.\r\n * @cssprop --m3e-timepicker-container-elevation - Box shadow / elevation of the picker container.\r\n * @cssprop --m3e-timepicker-docked-container-color - Background color of the docked picker container.\r\n * @cssprop --m3e-timepicker-docked-container-shape - Border radius of the docked picker container.\r\n * @cssprop --m3e-timepicker-modal-container-color - Background color of the modal picker container.\r\n * @cssprop --m3e-timepicker-modal-container-shape - Border radius of the modal picker container.\r\n * @cssprop --m3e-timepicker-headline-color - Color of the headline.\r\n * @cssprop --m3e-timepicker-headline-font-size - Font size of the headline.\r\n * @cssprop --m3e-timepicker-headline-font-weight - Font weight of the headline.\r\n * @cssprop --m3e-timepicker-headline-line-height - Line height of the headline.\r\n * @cssprop --m3e-timepicker-headline-tracking - Letter spacing of the headline.\r\n * @cssprop --m3e-timepicker-headline-top-space - Top margin above the headline.\r\n * @cssprop --m3e-timepicker-actions-space - Space above the action buttons.\r\n * @cssprop --m3e-timepicker-label-input-space - Space between Label and the input.\r\n * @cssprop --m3e-timepicker-vertical-input-dial-space - Space between the input and dial in vertical orientation.\r\n * @cssprop --m3e-timepicker-horizontal-input-dial-space - Space between the input and dial in horizontal orientation.\r\n * @cssprop --m3e-timepicker-input-field-container-width - Width of the input field container.\r\n * @cssprop --m3e-timepicker-input-field-height - Height of the input fields.\r\n * @cssprop --m3e-timepicker-input-field-container-shape - Corner radius of the input field container.\r\n * @cssprop --m3e-timepicker-input-field-font-size - Font size of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-font-weight - Font weight of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-line-height - Line height of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-tracking - Letter spacing of the input field text.\r\n * @cssprop --m3e-timepicker-input-field-label-unselected-color - Text color of unselected input field labels.\r\n * @cssprop --m3e-timepicker-input-field-unselected-container-color - Background color of unselected input fields.\r\n * @cssprop --m3e-timepicker-input-field-label-selected-color - Text color of selected input field labels.\r\n * @cssprop --m3e-timepicker-input-field-selected-container-color - Background color of selected input fields.\r\n * @cssprop --m3e-timepicker-input-field-label-invalid-color - Text color of invalid input field labels.\r\n * @cssprop --m3e-timepicker-input-field-invalid-container-color - Background color of invalid input fields.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-color - Text color of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-font-size - Font size of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-font-weight - Font weight of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-line-height - Line height of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-supporting-text-tracking - Letter spacing of supporting labels.\r\n * @cssprop --m3e-timepicker-input-field-separator-width - Width of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-color - Color of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-font-size - Font size of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-font-weight - Font weight of the field separator.\r\n * @cssprop --m3e-timepicker-input-field-separator-tracking - Letter spacing of the field separator.\r\n * @cssprop --m3e-timepicker-input-horizontal-period-toggle-space - Space between the fields and period toggle in horizontal orientation.\r\n * @cssprop --m3e-timepicker-input-vertical-period-toggle-space - Space between the fields and period toggle in vertical orientation.\r\n * @cssprop --m3e-timepicker-dial-container-size - Size of the dial container.\r\n * @cssprop --m3e-timepicker-dial-container-shape - Corner radius of the dial container.\r\n * @cssprop --m3e-timepicker-dial-container-color - Background color of the dial container.\r\n * @cssprop --m3e-timepicker-dial-inset - Inset offset applied to the dial surface.\r\n * @cssprop --m3e-timepicker-dial-center-size - Size of the dial center.\r\n * @cssprop --m3e-timepicker-dial-handle-color - Color of the active handle.\r\n * @cssprop --m3e-timepicker-dial-handle-size - Size of the handle.\r\n * @cssprop --m3e-timepicker-dial-handle-disabled-color - Color of a disabled handle.\r\n * @cssprop --m3e-timepicker-dial-handle-disabled-opacity - Opacity of a disabled handle.\r\n * @cssprop --m3e-timepicker-dial-dial-inset - Inset applied to the handle area.\r\n * @cssprop --m3e-timepicker-dial-numeral-size - Size of the dial numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-color - Text color of inactive numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-shape - Corner radius of the numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-font-size - Font size of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-font-weight - Font weight of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-line-height - Line height of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-tracking - Letter spacing of the outer numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-font-size - Font size of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-font-weight - Font weight of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-line-height - Line height of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-inner-numeral-tracking - Letter spacing of the inner numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-active-color - Color of active numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-disabled-color - Color of disabled numerals.\r\n * @cssprop --m3e-timepicker-dial-numeral-disabled-opacity - Opacity of disabled numerals.\r\n * @cssprop --m3e-timepicker-dial-handle-center-size - Size of the handle center indicator.\r\n */\r\n@customElement(\"m3e-timepicker\")\r\nexport class M3eTimepickerElement 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-timepicker-container-padding-block, 0.75rem);\r\n padding-inline: var(--m3e-timepicker-container-padding-inline, 1.75rem);\r\n background-color: var(--m3e-timepicker-container-color, ${DesignToken.color.surfaceContainer});\r\n box-shadow: var(--m3e-timepicker-container-elevation, ${DesignToken.elevation.level3});\r\n opacity: 0;\r\n display: none;\r\n }\r\n .headline {\r\n color: var(--m3e-timepicker-headline-color, ${DesignToken.color.onSurfaceVariant});\r\n font-size: var(--m3e-timepicker-headline-font-size, ${DesignToken.typescale.standard.label.large.fontSize});\r\n font-weight: var(--m3e-timepicker-headline-font-weight, ${DesignToken.typescale.standard.label.large.fontWeight});\r\n line-height: var(--m3e-timepicker-headline-line-height, ${DesignToken.typescale.standard.label.large.lineHeight});\r\n letter-spacing: var(--m3e-timepicker-headline-tracking, ${DesignToken.typescale.standard.label.large.tracking});\r\n margin-block-start: var(--m3e-timepicker-headline-top-space, 1rem);\r\n }\r\n .actions {\r\n margin-block-start: var(--m3e-timepicker-actions-space, 1.5rem);\r\n display: flex;\r\n align-items: center;\r\n column-gap: 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-timepicker-docked-container-color, ${DesignToken.color.surfaceContainer});\r\n border-radius: var(--m3e-timepicker-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-timepicker-modal-container-color, ${DesignToken.color.surfaceContainerHigh});\r\n border-radius: var(--m3e-timepicker-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 .base {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n :host(:not(:is(:state(--horizontal), :--horizontal))) .base {\r\n flex-direction: column;\r\n }\r\n .input {\r\n margin-top: var(--m3e-timepicker-label-input-space, 1.25rem);\r\n }\r\n .dial-wrapper {\r\n display: flex;\r\n transition: ${unsafeCSS(\r\n `opacity var(--m3e-collapsible-animation-duration, ${DesignToken.motion.duration.medium1}) ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .dial-spacer,\r\n .dial {\r\n flex: none;\r\n }\r\n :host(:not([mode=\"dial\"])) .dial-wrapper {\r\n opacity: 0;\r\n }\r\n :host([mode=\"dial\"]) .dial-wrapper {\r\n opacity: 1;\r\n }\r\n :host(:not(:is(:state(--horizontal), :--horizontal))) .dial-wrapper {\r\n flex-direction: column;\r\n }\r\n :host(:not(:is(:state(--horizontal), :--horizontal))) .dial-spacer {\r\n height: var(--m3e-timepicker-vertical-input-dial-space, 2.25rem);\r\n }\r\n :host(:is(:state(--horizontal), :--horizontal)) .dial-spacer {\r\n width: var(--m3e-timepicker-horizontal-input-dial-space, 3.25rem);\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 */ #date?: Date | null;\r\n\r\n /** @private */ @state() private _open = false;\r\n\r\n /** @private */ @query(\"m3e-timepicker-input\") private readonly _input!: M3eTimepickerInputElement;\r\n /** @private */ @state() _invalid = false;\r\n /** @private */ @state() private _variant?: Exclude<TimepickerVariant, \"auto\">;\r\n /** @private */ @state() private _orientation?: Exclude<TimepickerOrientation, \"auto\">;\r\n /** @private */ @state() private _mode?: TimepickerMode;\r\n\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 /** @private */ readonly #toggleHandler = (e: ToggleEvent) => this.#handleToggle(e);\r\n\r\n /**\r\n * The appearance variant of the picker.\r\n * @default \"docked\"\r\n */\r\n @property() variant: TimepickerVariant = \"docked\";\r\n\r\n /**\r\n * The mode in which to select time.\r\n * @default \"dial\"\r\n */\r\n @property({ reflect: true }) mode: TimepickerMode = \"dial\";\r\n\r\n /**\r\n * The orientation of the picker.\r\n * @default \"vertical\"\r\n */\r\n @property({ reflect: true }) orientation: TimepickerOrientation = \"vertical\";\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 * Whether to use a 12‑hour or 24‑hour clock.\r\n * @default \"12\"\r\n */\r\n @property() format: TimepickerFormat = \"12\";\r\n\r\n /**\r\n * The minimum time that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"min-time\", converter: timeConverter }) minTime: TimeParts | null = null;\r\n\r\n /**\r\n * The maximum time that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"max-time\", converter: timeConverter }) maxTime: TimeParts | null = null;\r\n\r\n /** A function used to determine whether a time cannot be selected. */\r\n @property() blackoutTimes?: (time: TimeParts) => boolean;\r\n\r\n /**\r\n * Whether to hide the mode toggle button.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-mode-toggle\", type: Boolean }) hideModeToggle = false;\r\n\r\n /**\r\n * 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 * 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 * Label given to the the picker when in dial mode.\r\n * @default \"Select time\"\r\n */\r\n @property({ attribute: \"dial-label\" }) dialLabel = \"Select time\";\r\n\r\n /**\r\n * Label given to the the picker when in input mode.\r\n * @default \"Edit time\"\r\n */\r\n @property({ attribute: \"input-label\" }) inputLabel = \"Edit time\";\r\n\r\n /**\r\n * Label for the hour field.\r\n * @default \"Hour\"\r\n */\r\n @property({ attribute: \"hour-label\" }) hourLabel = \"Hour\";\r\n\r\n /**\r\n * Label for the minute field.\r\n * @default \"Minute\"\r\n */\r\n @property({ attribute: \"minute-label\" }) minuteLabel = \"Minute\";\r\n\r\n /**\r\n * The accessible label given to the mode toggle button.\r\n * @default \"Toggle input picker\"\r\n */\r\n @property({ attribute: \"mode-toggle-label\" }) modeToggleLabel = \"Toggle input picker\";\r\n\r\n /**\r\n * The accessible label given to the period toggle.\r\n * @default \"AM or PM\"\r\n */\r\n @property({ attribute: \"period-toggle-label\" }) periodToggleLabel = \"AM or PM\";\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<TimepickerVariant, \"auto\"> {\r\n return this._variant ?? (this.variant !== \"modal\" ? \"docked\" : \"modal\");\r\n }\r\n\r\n /** The current orientation applied to the picker. */\r\n get currentOrientation(): Exclude<TimepickerOrientation, \"auto\"> {\r\n return this._orientation ?? (this.orientation !== \"horizontal\" ? \"vertical\" : \"horizontal\");\r\n }\r\n\r\n /** The current input mode applied to the picker. */\r\n get currentMode(): Exclude<TimepickerMode, \"auto\"> {\r\n return this._mode ?? this.mode;\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\" || this.orientation === \"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 // Validate the current value prior to opening\r\n this.#validate();\r\n\r\n // The picker is rendered on demand\r\n this._open = true;\r\n\r\n // Wait for the picker to render\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n const input = this._input;\r\n input.hour = this.date?.getHours() ?? null;\r\n input.minute = this.date?.getMinutes() ?? null;\r\n input.minTime = this.minTime;\r\n input.maxTime = this.maxTime;\r\n input.blackoutTimes = this.blackoutTimes;\r\n\r\n if (input.isUpdatePending) {\r\n await input.updateComplete;\r\n }\r\n\r\n this.#date = undefined;\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\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.#renderPicker()}${this.#renderActions()}\r\n </m3e-focus-trap>`;\r\n }\r\n\r\n /** @inheritdoc */\r\n #renderHeader(): unknown {\r\n return html`<div class=\"headline\">${this.currentMode === \"dial\" ? this.dialLabel : this.inputLabel}</div>`;\r\n }\r\n\r\n /** @private */\r\n #renderPicker(): unknown {\r\n // Picker is rendered only when open\r\n return this._open\r\n ? html`<div class=\"base\">\r\n <m3e-timepicker-input\r\n class=\"input\"\r\n for=\"${ifDefined(this.currentMode === \"input\" ? undefined : \"dial\")}\"\r\n ?hide-labels=\"${this.currentMode === \"dial\"}\"\r\n period-toggle-label=\"${this.periodToggleLabel}\"\r\n hour-label=\"${this.hourLabel}\"\r\n minute-label=\"${this.minuteLabel}\"\r\n orientation=\"${this.currentOrientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\"\r\n format=\"${this.format}\"\r\n @change=\"${this.#handleInputChange}\"\r\n ></m3e-timepicker-input>\r\n\r\n <m3e-collapsible\r\n orientation=\"${this.currentOrientation === \"horizontal\" ? \"both\" : \"vertical\"}\"\r\n ?open=\"${this.currentMode === \"dial\"}\"\r\n >\r\n <div class=\"dial-wrapper\">\r\n <div class=\"dial-spacer\"></div>\r\n <m3e-timepicker-dial id=\"dial\" class=\"dial\"></m3e-timepicker-dial>\r\n </div>\r\n </m3e-collapsible>\r\n </div>`\r\n : nothing;\r\n }\r\n\r\n /** @private */\r\n #renderActions(): unknown {\r\n return html`<div class=\"actions\">\r\n ${this.#renderModeToggleButton()}\r\n <div class=\"spacer\" aria-hidden=\"true\"></div>\r\n <m3e-button @click=\"${this.#handleDismissClick}\">${this.dismissLabel}</m3e-button>\r\n <m3e-button ?disabled=\"${this._invalid}\" @click=\"${this.#handleConfirmClick}\">${this.confirmLabel}</m3e-button>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderModeToggleButton(): unknown {\r\n if (this.hideModeToggle) return nothing;\r\n return html`<m3e-icon-button\r\n aria-label=\"${this.modeToggleLabel}\"\r\n aria-expanded=\"${this.currentMode === \"dial\"}\"\r\n aria-controls=\"dial\"\r\n @click=\"${this.#handleModeClick}\"\r\n >\r\n ${this.currentMode === \"dial\"\r\n ? svg`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"M160-200q-33 0-56.5-23.5T80-280v-400q0-33 23.5-56.5T160-760h640q33 0 56.5 23.5T880-680v400q0 33-23.5 56.5T800-200H160Zm0-80h640v-400H160v400Zm160-40h320v-80H320v80ZM200-440h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM200-560h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM160-280v-400 400Z\"\r\n />\r\n </svg>`\r\n : svg`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"\r\n />\r\n </svg>`}\r\n </m3e-icon-button>`;\r\n }\r\n\r\n /** @private */\r\n #handleModeClick(): void {\r\n this._mode = this.currentMode === \"dial\" ? \"input\" : \"dial\";\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 (changedProperties.has(\"date\")) {\r\n this.#clearSelectionState();\r\n }\r\n if (changedProperties.has(\"variant\") || changedProperties.has(\"orientation\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.variant !== \"auto\") {\r\n this._variant = undefined;\r\n this.#updateVariant();\r\n }\r\n if (this.orientation !== \"auto\") {\r\n this._orientation = undefined;\r\n this.#updateOrientation();\r\n }\r\n\r\n if (this.variant === \"auto\" || this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\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 #handleInputChange(e: Event): void {\r\n const input = <M3eTimepickerInputElement>e.target;\r\n\r\n if (input.hour === null || input.minute === null) {\r\n this.#date = null;\r\n } else {\r\n this.#date = new Date(this.date ?? Date.now());\r\n this.#date.setHours(input.hour);\r\n this.#date.setMinutes(input.minute);\r\n }\r\n\r\n this.#validate();\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 if (this.#date !== undefined) {\r\n this.date = this.#date;\r\n }\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 #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 #handleToggle(e: ToggleEvent): void {\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 /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall, Breakpoint.Small], (matches) => {\r\n if (this.variant === \"auto\") {\r\n this._variant = matches.get(Breakpoint.XSmall) || matches.get(Breakpoint.Small) ? \"modal\" : \"docked\";\r\n this.#updateVariant();\r\n }\r\n if (this.orientation === \"auto\") {\r\n this._orientation = matches.get(Breakpoint.Small) ? \"horizontal\" : \"vertical\";\r\n this.#updateOrientation();\r\n }\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 #updateOrientation(): void {\r\n switch (this.currentOrientation) {\r\n case \"horizontal\":\r\n addCustomState(this, \"--horizontal\");\r\n break;\r\n\r\n case \"vertical\":\r\n deleteCustomState(this, \"--horizontal\");\r\n break;\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 = undefined;\r\n }\r\n\r\n /** @private */\r\n #validate(): void {\r\n if (this.#date === undefined && this.date) {\r\n // There is a value, but the value didn't change\r\n this._invalid = false;\r\n return;\r\n }\r\n\r\n if (this.#date === null || this.#date === undefined) {\r\n this._invalid = true;\r\n return;\r\n }\r\n\r\n const hour = this.#date.getHours();\r\n const minute = this.#date.getMinutes();\r\n\r\n if (this.minTime) {\r\n if (hour < this.minTime.hour || (hour === this.minTime.hour && minute < this.minTime.minute)) {\r\n this._invalid = true;\r\n return;\r\n }\r\n }\r\n\r\n if (this.maxTime) {\r\n if (hour > this.maxTime.hour || (hour === this.maxTime.hour && minute > this.maxTime.minute)) {\r\n this._invalid = true;\r\n return;\r\n }\r\n }\r\n\r\n if (this.blackoutTimes?.({ hour, minute })) {\r\n this._invalid = true;\r\n return;\r\n }\r\n\r\n this._invalid = false;\r\n }\r\n}\r\n\r\ninterface M3eTimepickerElementEventMap extends HTMLElementEventMap {\r\n beforetoggle: ToggleEvent;\r\n toggle: ToggleEvent;\r\n}\r\n\r\nexport interface M3eTimepickerElement {\r\n addEventListener<K extends keyof M3eTimepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerElement, ev: M3eTimepickerElementEventMap[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 M3eTimepickerElementEventMap>(\r\n type: K,\r\n listener: (this: M3eTimepickerElement, ev: M3eTimepickerElementEventMap[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-timepicker\": M3eTimepickerElement;\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 { M3eTimepickerElement } from \"./TimepickerElement\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to toggle a timepicker.\r\n * @tag m3e-timepicker-toggle\r\n */\r\n@customElement(\"m3e-timepicker-toggle\")\r\nexport class M3eTimepickerToggleElement 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 M3eTimepickerElement && 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-timepicker-toggle\": M3eTimepickerToggleElement;\r\n }\r\n}\r\n"],"names":["TimepickerInputElementBase","LitElement","constructor","_TimepickerInputElementBase_hour","set","_TimepickerInputElementBase_minute","_TimepickerInputElementBase_format","format","view","period","minTime","maxTime","hour","__classPrivateFieldGet","value","__classPrivateFieldSet","Math","max","min","minute","hourOfPeriod","h","currentFormat","willUpdate","_changedProperties","has","Intl","DateTimeFormat","undefined","resolvedOptions","hour12","isHourDisabled","blackoutTimes","isMinuteDisabled","__decorate","property","type","Number","prototype","attribute","converter","timeConverter","M3eTimepickerDialElement","SuppressInitialAnimation","AttachInternals","Role","_M3eTimepickerDialElement_dragState","connectedCallback","ariaHidden","updated","_M3eTimepickerDialElement_instances","_M3eTimepickerDialElement_updateHand","call","render","html","_M3eTimepickerDialElement_handlePointerDown","_M3eTimepickerDialElement_handlePointerMove","_M3eTimepickerDialElement_handlePointerUp","_M3eTimepickerDialElement_renderHandle","_M3eTimepickerDialElement_renderHourFace","_M3eTimepickerDialElement_renderMinuteFace","showHand","nothing","use24","step","outer","Array","from","length","_","i","angle","active","disabled","_M3eTimepickerDialElement_renderNumeral","inner","classMap","dial","hidden","label","toString","padStart","numeral","safeStyleMap","hand","shadowRoot","querySelector","center","classList","toggle","style","setProperty","removeProperty","e","pointerType","button","currentTarget","HTMLElement","setPointerCapture","pointerId","add","timeChanged","cachedRect","getBoundingClientRect","cachedInnerInset","computeCssSize","_M3eTimepickerDialElement_changeHour","_M3eTimepickerDialElement_hourFromAngle","_M3eTimepickerDialElement_angleFromPointer","_M3eTimepickerDialElement_isPointerInsideInnerRing","_M3eTimepickerDialElement_changeMinute","_M3eTimepickerDialElement_minuteFromAngle","hasPointerCapture","releasePointerCapture","remove","dispatchEvent","Event","bubbles","CustomEvent","state","cx","left","width","cy","top","height","atan2","clientY","clientX","PI","_M3eTimepickerDialElement_radiusFromPointer","dx","dy","sqrt","index","round","styles","css","DesignToken","shape","corner","full","color","surfaceContainerHighest","unsafeCSS","motion","duration","medium1","easing","standard","primary","onSurface","onPrimary","short1","typescale","body","large","fontSize","fontWeight","lineHeight","tracking","small","customElement","M3eTimepickerInputPeriodToggleElement","orientation","navigator","language","_M3eTimepickerInputPeriodToggleElement_instances","_M3eTimepickerInputPeriodToggleElement_handleKeyDown","_M3eTimepickerInputPeriodToggleElement_handleClick","formatToParts","Date","find","p","defaultPrevented","changePeriod","prev","next","focus","key","preventDefault","M3eDirectionality","current","id","outline","short4","title","medium","tertiaryContainer","onTertiaryContainer","onSurfaceVariant","reflect","M3eTimepickerInputElement","HtmlFor","_M3eTimepickerInputElement_clockChangeHandler","_M3eTimepickerInputElement_instances","_M3eTimepickerInputElement_handleClockChange","_M3eTimepickerInputElement_clockViewChangeHandler","_M3eTimepickerInputElement_handleClockViewChange","hideLabels","hourLabel","minuteLabel","periodToggleLabel","attach","control","_M3eTimepickerInputElement_syncControl","addEventListener","detach","removeEventListener","_M3eTimepickerInputElement_renderField","_M3eTimepickerInputElement_handlePeriodChange","pad","n","String","invalid","valueText","date","setHours","field","selected","ifDefined","_M3eTimepickerInputElement_handleFieldFocus","_M3eTimepickerInputElement_handleFieldKeyDown","_M3eTimepickerInputElement_handleFieldInput","input","target","_M3eTimepickerInputElement_increment","ctrlKey","metaKey","test","isComposing","raw","replace","requestUpdate","isValid","v","cursor","selectionStart","atEnd","typedDigit","data","startsWith","candidate","parseInt","slice","setSelectionRange","by","wrap","sign","remaining","abs","skipStep","_M3eTimepickerInputElement_isDisabled","attempts","stopPropagation","display","onPrimaryContainer","primaryContainer","onErrorContainer","errorContainer","Boolean","M3eTimepickerElement","ReconnectedCallback","_M3eTimepickerElement_closeTimeout","_M3eTimepickerElement_date","_open","_invalid","_M3eTimepickerElement_breakpointUnobserve","_M3eTimepickerElement_trigger","_M3eTimepickerElement_anchor","_M3eTimepickerElement_anchorCleanup","_M3eTimepickerElement_anchorLastPosition","_M3eTimepickerElement_scrollLockController","ScrollLockController","_M3eTimepickerElement_inertController","InertController","_M3eTimepickerElement_documentClickHandler","_M3eTimepickerElement_documentKeyDownHandler","_M3eTimepickerElement_toggleHandler","variant","mode","hideModeToggle","confirmLabel","dismissLabel","dialLabel","inputLabel","modeToggleLabel","isOpen","currentVariant","_variant","currentOrientation","_orientation","currentMode","_mode","setAttribute","disconnectedCallback","_M3eTimepickerElement_instances","_M3eTimepickerElement_clearAnchoring","deleteCustomState","document","reconnectedCallback","_M3eTimepickerElement_initBreakpointMonitoring","show","trigger","anchor","hide","clearTimeout","lock","_M3eTimepickerElement_validate","isUpdatePending","updateComplete","_input","getHours","getMinutes","ariaExpanded","_M3eTimepickerElement_updatePosition","showPopover","restoreFocus","unlock","hidePopover","_M3eTimepickerElement_renderHeader","_M3eTimepickerElement_renderPicker","_M3eTimepickerElement_renderActions","changedProperties","_M3eTimepickerElement_clearSelectionState","_M3eTimepickerElement_updateVariant","_M3eTimepickerElement_updateOrientation","_M3eTimepickerElement_handleInputChange","_M3eTimepickerElement_renderModeToggleButton","_M3eTimepickerElement_handleDismissClick","_M3eTimepickerElement_handleConfirmClick","_M3eTimepickerElement_handleModeClick","svg","composedPath","some","x","now","setMinutes","shiftKey","newState","prefersReducedMotion","setTimeout","M3eBreakpointObserver","observe","Breakpoint","XSmall","Small","matches","get","ariaModal","addCustomState","positionAnchor","position","inline","flip","shift","y","setCustomState","includes","dir","right","window","innerWidth","clientWidth","surfaceContainer","elevation","level3","surfaceContainerHigh","extraLarge","short2","scrim","short3","long2","query","dateConverter","M3eTimepickerToggleElement","ActionElementBase","parentElement","ariaHasPopup","_onClick","closest"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* Copyright (c) 2025–2026 matraic
|
|
4
|
+
* See LICENSE file in the project root for full license text.
|
|
5
|
+
*/
|
|
6
|
+
import{__decorate as e,__classPrivateFieldGet as t,__classPrivateFieldSet as i}from"tslib";import{LitElement as r,html as a,nothing as o,unsafeCSS as n,css as s,svg as l}from"lit";import{classMap as c}from"lit/directives/class-map.js";import{SuppressInitialAnimation as h,AttachInternals as d,Role as m,safeStyleMap as u,computeCssSize as p,DesignToken as v,customElement as g,HtmlFor as f,ReconnectedCallback as b,ScrollLockController as k,InertController as y,deleteCustomState as $,prefersReducedMotion as w,addCustomState as x,setCustomState as T,dateConverter as z,timeConverter as M,ActionElementBase as L}from"@m3e/web/core";import{property as E,state as C,query as S}from"lit/decorators.js";import{timeConverter as _}from"./TextOverflowElement.min.js";import{ifDefined as D}from"lit/directives/if-defined.js";import{positionAnchor as H}from"@m3e/web/core/anchoring";import{M3eDirectionality as P}from"@m3e/web/core/bidi";import{M3eBreakpointObserver as W,Breakpoint as q}from"@m3e/web/core/layout";import"@m3e/web/core/a11y";import"@m3e/web/button";import"@m3e/web/icon-button";var R,Z,O,F,A,I,U,V,j,Y,B,K,N,X,G,J,Q,ee,te,ie;class re extends r{constructor(){super(...arguments),R.set(this,null),Z.set(this,null),O.set(this,"12"),this.format="12",this.view="hour",this.period="am",this.minTime=null,this.maxTime=null}get hour(){return t(this,R,"f")}set hour(e){i(this,R,null===e?null:Math.max(0,Math.min(e,23)),"f")}get minute(){return t(this,Z,"f")}set minute(e){i(this,Z,null===e?null:Math.max(0,Math.min(e,59)),"f")}get hourOfPeriod(){if(null===this.hour)return null;const e=this.hour%12;return 0===e?12:e}set hourOfPeriod(e){if(null===e)this.hour=null;else{const t=Math.max(1,Math.min(e,12));this.hour="am"===this.period?12===t?0:t:12===t?12:t+12}}get currentFormat(){return t(this,O,"f")}willUpdate(e){if(super.willUpdate(e),e.has("format")&&i(this,O,"auto"!==this.format?this.format:new Intl.DateTimeFormat(void 0,{hour:"numeric"}).resolvedOptions().hour12?"12":"24","f"),e.has("hour"))this.period=null!==this.hour&&this.hour>=12?"pm":"am";else if(e.has("period")&&null!==this.hour){const e=this.hour%12||12;this.hour="am"===this.period?12===e?0:e:12===e?12:e+12}}isHourDisabled(e){if(this.minTime&&e<this.minTime.hour||this.maxTime&&e>this.maxTime.hour)return!0;if(this.blackoutTimes){for(let t=0;t<60;t++)if(!this.blackoutTimes({hour:e,minute:t}))return!1;return!0}return!1}isMinuteDisabled(e,t){return!(!this.minTime||!(e<this.minTime.hour||e===this.minTime.hour&&t<this.minTime.minute))||(!(!this.maxTime||!(e>this.maxTime.hour||e===this.maxTime.hour&&t>this.maxTime.minute))||!!this.blackoutTimes?.({hour:e,minute:t}))}}R=new WeakMap,Z=new WeakMap,O=new WeakMap,e([E({type:Number})],re.prototype,"hour",null),e([E({type:Number})],re.prototype,"minute",null),e([E()],re.prototype,"format",void 0),e([E()],re.prototype,"view",void 0),e([E()],re.prototype,"period",void 0),e([E({attribute:"min-time",converter:_})],re.prototype,"minTime",void 0),e([E({attribute:"max-time",converter:_})],re.prototype,"maxTime",void 0),e([E()],re.prototype,"blackoutTimes",void 0);let ae=class extends(h(d(m(re,"none")))){constructor(){super(...arguments),F.add(this),A.set(this,void 0)}connectedCallback(){this.ariaHidden="true",super.connectedCallback()}updated(e){super.updated(e),(e.has("hour")||e.has("minute")||e.has("view")||e.has("period")||e.has("minTime")||e.has("maxTime")||e.has("blackoutTimes"))&&t(this,F,"m",Y).call(this)}render(){return a`<div class="base" @pointerdown="${t(this,F,"m",B)}" @pointermove="${t(this,F,"m",K)}" @pointerup="${t(this,F,"m",N)}">${t(this,F,"m",I).call(this)} ${t(this,F,"m",U).call(this)} ${t(this,F,"m",V).call(this)}<div class="center"></div></div>`}};var oe,ne,se;A=new WeakMap,F=new WeakSet,I=function(){return"hour"===this.view&&null!==this.hour||"minute"===this.view&&null!==this.minute?a`<div class="handle"></div>`:o},U=function(){const e="24"===this.currentFormat,i=Array.from({length:12},(i,r)=>{const a=0===r?12:r,o=30*r,n=null!==this.hour&&(e?this.hour<13&&this.hour>0&&this.hour%12===r:this.hour%12===r),s=this.isHourDisabled(e?a:"pm"===this.period?a%12+12:a%12);return t(this,F,"m",j).call(this,`${a}`,o,n,s)}),r=e?Array.from({length:12},(e,i)=>{const r=i+13,a=30*(i+1),o=0===this.hour&&24===r||this.hour===r,n=this.isHourDisabled(24===r?0:r);return t(this,F,"m",j).call(this,24==r?"00":`${r}`,a,o,n,!0)}):o;return a`<div class="${c({dial:!0,hour:!0,hidden:"hour"!==this.view})}">${i}${r}</div>`},V=function(){return a`<div class="${c({dial:!0,minute:!0,hidden:"minute"!==this.view})}">${Array.from({length:60},(e,i)=>{if(i%5!=0)return;const r=6*i,a=i%5==0?i.toString().padStart(2,"0"):"",o=i===this.minute,n=null!==this.hour&&this.isMinuteDisabled(this.hour,i);return t(this,F,"m",j).call(this,a,r,o,n)})}</div>`},j=function(e,t,i,r,o=!1){return a`<div class="${c({numeral:!0,inner:o,active:i,disabled:r})}" style="${u({"--_numeral-angle":`${t}deg`})}">${e}</div>`},Y=function(){const e=this.shadowRoot?.querySelector(".handle"),t=this.shadowRoot?.querySelector(".center");if(!e||!t)return;let i=!1,r=!1,a=null,o=!1;switch(this.view){case"hour":null!==this.hour&&(i=!0,a=this.hour%12*30,r="24"===this.currentFormat&&(this.hour<1||this.hour>12),o=this.isHourDisabled(this.hour));break;case"minute":null!==this.minute&&(a=6*this.minute,i=this.minute%5==0,o=null!==this.hour&&this.isMinuteDisabled(this.hour,this.minute))}e.classList.toggle("active",i),e.classList.toggle("inner",r),e.classList.toggle("disabled",o),t.classList.toggle("disabled",o),null!=a?e.style.setProperty("--_hand-angle",`${a}`):e.style.removeProperty("--_hand-angle")},B=function(e){!("mouse"===e.pointerType&&e.button>1)&&e.currentTarget instanceof HTMLElement&&(e.currentTarget.setPointerCapture(e.pointerId),e.currentTarget.classList.add("dragging"),i(this,A,{timeChanged:!1,cachedRect:e.currentTarget.getBoundingClientRect(),cachedInnerInset:"hour"===this.view&&"24"===this.currentFormat?p(e.currentTarget,"calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-inset, 4px))"):0},"f"),t(this,A,"f").timeChanged="hour"===this.view?t(this,F,"m",te).call(this,t(this,F,"m",Q).call(this,t(this,F,"m",X).call(this,e,t(this,A,"f")),t(this,F,"m",J).call(this,e,t(this,A,"f")))):t(this,F,"m",ie).call(this,t(this,F,"m",ee).call(this,t(this,F,"m",X).call(this,e,t(this,A,"f")))))},K=function(e){e.currentTarget instanceof HTMLElement&&e.currentTarget.hasPointerCapture(e.pointerId)&&t(this,A,"f")&&(t(this,A,"f").timeChanged=("hour"===this.view?t(this,F,"m",te).call(this,t(this,F,"m",Q).call(this,t(this,F,"m",X).call(this,e,t(this,A,"f")),t(this,F,"m",J).call(this,e,t(this,A,"f")))):t(this,F,"m",ie).call(this,t(this,F,"m",ee).call(this,t(this,F,"m",X).call(this,e,t(this,A,"f")))))||t(this,A,"f").timeChanged)},N=function(e){e.currentTarget instanceof HTMLElement&&e.currentTarget.hasPointerCapture(e.pointerId)&&t(this,A,"f")&&(e.currentTarget.releasePointerCapture(e.pointerId),e.currentTarget.classList.remove("dragging"),t(this,A,"f").timeChanged&&this.dispatchEvent(new Event("change",{bubbles:!0})),"hour"!==this.view||!t(this,A,"f").timeChanged&&!0===this.isHourDisabled(t(this,F,"m",Q).call(this,t(this,F,"m",X).call(this,e,t(this,A,"f")),t(this,F,"m",J).call(this,e,t(this,A,"f"))))||(this.view="minute",this.dispatchEvent(new CustomEvent("view-change"))),i(this,A,void 0,"f"))},X=function(e,t){const i=t.cachedRect.left+t.cachedRect.width/2,r=t.cachedRect.top+t.cachedRect.height/2;return(180*Math.atan2(e.clientY-r,e.clientX-i)/Math.PI+450)%360},G=function(e,t){const i=t.cachedRect.left+t.cachedRect.width/2,r=t.cachedRect.top+t.cachedRect.height/2,a=e.clientX-i,o=e.clientY-r;return Math.sqrt(a*a+o*o)},J=function(e,i){return!(i.cachedInnerInset<=0)&&t(this,F,"m",G).call(this,e,i)<i.cachedRect.width/2-i.cachedInnerInset},Q=function(e,t){const i=Math.round(e/30)%12,r=t?0===i?0:i+12:0===i?12:i;return"24"===this.currentFormat?r:"pm"===this.period?r%12+12:r%12},ee=function(e){return Math.round(e/6)%60},te=function(e){return this.hour!==e&&!this.isHourDisabled(e)&&(this.hour=e,!0)},ie=function(e){return(null===this.hour||!this.isMinuteDisabled(this.hour,e))&&(this.minute!==e&&(this.minute=e,!0))},ae.styles=s`:host { display: block; width: var(--m3e-timepicker-dial-container-size, 16rem); aspect-ratio: 1 / 1; } .base { contain: layout style paint; position: relative; width: 100%; height: 100%; touch-action: none; border-radius: var(--m3e-timepicker-dial-container-shape, ${v.shape.corner.full}); background-color: var(--m3e-timepicker-dial-container-color, ${v.color.surfaceContainerHighest}); } .base:not(.dragging) { cursor: grab; } .base.dragging { cursor: grabbing; } .dial { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: inherit; pointer-events: none; border-radius: inherit; --_numeral-radius: calc( calc(var(--m3e-timepicker-dial-container-size, 16rem) / 2) - calc( var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2 ) - var(--m3e-timepicker-dial-inset, 4px) ); } :host(:not(:is(:state(--no-animate), :--no-animate))) .dial { transition: ${n(`opacity ${v.motion.duration.medium1} ${v.motion.easing.standard},\n transform ${v.motion.duration.medium1} ${v.motion.easing.standard}`)}; } .dial:not(.hidden) { opacity: 1; transform: scale(1); } .dial.hidden { opacity: 0; } .dial.hour.hidden { transform: scale(1.2); } .dial.minute.hidden { transform: scale(0.8); } .center { position: absolute; box-sizing: border-box; bottom: calc(50% - calc(var(--m3e-timepicker-dial-center-size, 8px) / 2)); left: calc(50% - calc(var(--m3e-timepicker-dial-center-size, 8px) / 2)); width: var(--m3e-timepicker-dial-center-size, 8px); height: var(--m3e-timepicker-dial-center-size, 8px); touch-action: inherit; pointer-events: none; border-radius: 50%; } .center::before, .center::after { content: ""; position: absolute; inset: 0; width: 100%; height: 100%; border-radius: inherit; } .center::before { background-color: var(--m3e-timepicker-dial-container-color, ${v.color.surfaceContainerHighest}); } .center:not(.disabled)::after { background-color: var(--m3e-timepicker-dial-handle-color, ${v.color.primary}); } .center.disabled::after { background-color: color-mix( in srgb, var(--m3e-timepicker-dial-handle-disabled-color, ${v.color.onSurface}) var(--m3e-timepicker-dial-handle-disabled-opacity, 10%), transparent ); } .handle { position: absolute; touch-action: inherit; left: calc(50% - calc(var(--m3e-timepicker-dial-handle-size, 2px) / 2)); width: var(--m3e-timepicker-dial-handle-size, 2px); transform: rotate(calc(var(--_hand-angle, 0) * 1deg)); transform-origin: bottom; } .handle:not(.disabled) { background-color: var(--m3e-timepicker-dial-handle-color, ${v.color.primary}); } .handle.disabled { background-color: color-mix( in srgb, var(--m3e-timepicker-dial-handle-disabled-color, ${v.color.onSurface}) var(--m3e-timepicker-dial-handle-disabled-opacity, 10%), transparent ); } :host(:not(:is(:state(--no-animate), :--no-animate))) .base:not(.dragging) .handle { transition: ${n(`transform ${v.motion.duration.medium1} ${v.motion.easing.standard}`)}; } .handle:not(.inner) { top: calc(var(--m3e-timepicker-dial-dial-inset, 4px) + var(--m3e-timepicker-dial-numeral-size, 2.5rem)); height: calc(50% - var(--m3e-timepicker-dial-dial-inset, 4px) - var(--m3e-timepicker-dial-numeral-size, 2.5rem)); } .handle.inner { top: calc( var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-dial-inset, 4px) + var(--m3e-timepicker-dial-numeral-size, 2.5rem) ); height: calc( 50% - calc( var(--m3e-timepicker-dial-numeral-size, 2.5rem) + var(--m3e-timepicker-dial-dial-inset, 4px) + var(--m3e-timepicker-dial-numeral-size, 2.5rem) ) ); } .handle::before { content: ""; position: absolute; touch-action: inherit; width: var(--m3e-timepicker-dial-numeral-size, 2.5rem); height: var(--m3e-timepicker-dial-numeral-size, 2.5rem); top: calc(0px - var(--m3e-timepicker-dial-numeral-size, 2.5rem)); left: calc( 0px - calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2) + calc(var(--m3e-timepicker-dial-handle-size, 2px) / 2) ); border-radius: 50%; box-sizing: border-box; } .handle:not(.disabled)::before { background-color: var(--m3e-timepicker-dial-handle-color, ${v.color.primary}); } .handle.disabled::before { background-color: color-mix( in srgb, var(--m3e-timepicker-dial-handle-disabled-color, ${v.color.onSurface}) var(--m3e-timepicker-dial-handle-disabled-opacity, 10%), transparent ); } .handle:not(.active)::after { content: ""; position: absolute; touch-action: inherit; width: var(--m3e-timepicker-dial-handle-center-size, 4px); height: var(--m3e-timepicker-dial-handle-center-size, 4px); top: calc( 0px - calc(var(--m3e-timepicker-dial-numeral-size, 2.5rem) / 2) - calc( var(--m3e-timepicker-dial-handle-center-size, 4px) / 2 ) ); left: calc(50% - calc(var(--m3e-timepicker-dial-handle-center-size, 4px) / 2)); border-radius: 50%; box-sizing: border-box; } .handle:not(.active):not(.disabled)::after { background-color: var(--m3e-timepicker-dial-numeral-active-color, ${v.color.onPrimary}); } .handle:not(.active).disabled::after { background-color: color-mix( in srgb, var(--m3e-timepicker-dial-numeral-disabled-color, ${v.color.onSurface}) var(--m3e-timepicker-dial-numeral-disabled-opacity, 38%), transparent ); } .numeral { user-select: none; touch-action: inherit; position: absolute; inset: 50%; translate: -50% -50%; width: var(--m3e-timepicker-dial-numeral-size, 2.5rem); aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; border-radius: var(--m3e-timepicker-dial-numeral-shape, ${v.shape.corner.full}); } :host(:not(:is(:state(--no-animate), :--no-animate))) .numeral.active { transition-delay: ${v.motion.duration.medium1}; transition: ${n(`color ${v.motion.duration.short1} ${v.motion.easing.standard}`)}; } .numeral:not(.active):not(.disabled) { color: var(--m3e-timepicker-dial-numeral-color, ${v.color.onSurface}); } .numeral.active:not(.disabled) { color: var(--m3e-timepicker-dial-numeral-active-color, ${v.color.onPrimary}); } .numeral.disabled { color: color-mix( in srgb, var(--m3e-timepicker-dial-numeral-disabled-color, ${v.color.onSurface}) var(--m3e-timepicker-dial-numeral-disabled-opacity, 38%), transparent ); } .numeral:not(.inner) { transform: rotate(var(--_numeral-angle)) translateY(calc(-1 * var(--_numeral-radius))) rotate(calc(-1 * var(--_numeral-angle))); font-size: var(--m3e-timepicker-dial-numeral-font-size, ${v.typescale.standard.body.large.fontSize}); font-weight: var( --m3e-timepicker-dial-numeral-font-weight, ${v.typescale.standard.body.large.fontWeight} ); line-height: var( --m3e-timepicker-dial-numeral-line-height, ${v.typescale.standard.body.large.lineHeight} ); letter-spacing: var( --m3e-timepicker-dial-numeral-tracking, ${v.typescale.standard.body.large.tracking} ); } .numeral.inner { transform: rotate(var(--_numeral-angle)) translateY(calc(calc(-1 * var(--_numeral-radius)) + var(--m3e-timepicker-dial-numeral-size, 2.5rem))) rotate(calc(-1 * var(--_numeral-angle))); font-size: var( --m3e-timepicker-dial-inner-numeral-font-size, ${v.typescale.standard.body.small.fontSize} ); font-weight: var( --m3e-timepicker-dial-inner-numeral-font-weight, ${v.typescale.standard.body.small.fontWeight} ); line-height: var( --m3e-timepicker-dial-inner-numeral-line-height, ${v.typescale.standard.body.small.lineHeight} ); letter-spacing: var( --m3e-timepicker-dial-inner-numeral-tracking, ${v.typescale.standard.body.small.tracking} ); } @media (forced-colors: active) { .base, .center::before { background-color: Canvas; } .numeral:not(.active):not(.disabled) { color: CanvasText; } .center:not(.disabled)::after, .handle:not(.disabled) { background-color: Highlight; } .handle:not(.disabled)::before { background-color: unset; outline: var(--m3e-timepicker-dial-handle-size, 2px) solid Highlight; } .handle:not(.active):not(.disabled)::after { background-color: Highlight; } .numeral.active:not(.disabled) { color: Highlight; } .center.disabled::after, .handle:not(.active).disabled::after, .handle.disabled { background-color: GrayText; } .handle.disabled::before { background-color: unset; outline: var(--m3e-timepicker-dial-handle-size, 2px) solid GrayText; } .numeral.disabled:not(.active), .numeral.disabled.active { color: GrayText; } .numeral { forced-color-adjust: none; background-color: transparent; } .base { outline: 1px solid CanvasText; } } @media (prefers-reduced-motion) { :host(:not(:is(:state(--no-animate), :--no-animate))) .dial, :host(:not(:is(:state(--no-animate), :--no-animate))) .base:not(.dragging) .handle, :host(:not(:is(:state(--no-animate), :--no-animate))) .numeral.active { transition: none; } }`,ae=e([g("m3e-timepicker-dial")],ae);let le=class extends(m(r,"radiogroup")){constructor(){super(...arguments),oe.add(this),this.period="am",this.orientation="vertical"}render(){const e=new Intl.DateTimeFormat(navigator.language,{hour:"numeric",hour12:!0});return a`<div class="base" tabindex="-1" @keydown="${t(this,oe,"m",ne)}"><div id="am" class="period-button" role="radio" aria-checked="${"am"===this.period?"true":"false"}" tabindex="${"am"===this.period?"0":"-1"}" @click="${t(this,oe,"m",se)}"><m3e-focus-ring class="focus-ring" for="am"></m3e-focus-ring><m3e-state-layer class="state-layer" for="am"></m3e-state-layer><m3e-ripple class="ripple" centered for="am"></m3e-ripple>${e.formatToParts(new Date(2020,0,1,9)).find(e=>"dayPeriod"===e.type)?.value??"AM"}</div><div class="divider" aria-hidden="true"></div><div id="pm" class="period-button" role="radio" aria-checked="${"pm"===this.period?"true":"false"}" tabindex="${"pm"===this.period?"0":"-1"}" @click="${t(this,oe,"m",se)}"><m3e-focus-ring class="focus-ring" for="pm"></m3e-focus-ring><m3e-state-layer class="state-layer" for="pm"></m3e-state-layer><m3e-ripple class="ripple" centered for="pm"></m3e-ripple>${e.formatToParts(new Date(2020,0,1,21)).find(e=>"dayPeriod"===e.type)?.value??"PM"}</div></div>`}};var ce,he,de,me,ue,pe,ve,ge,fe,be,ke,ye,$e;oe=new WeakSet,ne=function(e){if(e.defaultPrevented)return;const t=(e,t)=>{this.period===e&&(this.period=t,this.shadowRoot?.querySelector(`#${this.period}`)?.focus(),this.dispatchEvent(new Event("change",{bubbles:!0})))};switch(e.key){case"Left":case"ArrowLeft":e.preventDefault(),"horizontal"===this.orientation&&("rtl"===P.current?t("am","pm"):t("pm","am"));break;case"Right":case"ArrowRight":e.preventDefault(),"horizontal"===this.orientation&&("rtl"===P.current?t("pm","am"):t("am","pm"));break;case"Up":case"ArrowUp":e.preventDefault(),"vertical"===this.orientation&&t("pm","am");break;case"Down":case"ArrowDown":e.preventDefault(),"vertical"===this.orientation&&t("am","pm")}},se=function(e){const t=e.currentTarget.id;t!==this.period&&(this.period=t,this.dispatchEvent(new Event("change",{bubbles:!0})))},le.styles=s`:host { display: block; } .base { contain: layout style; display: flex; align-items: center; justify-content: center; box-sizing: border-box; width: 100%; height: 100%; border-radius: var(--m3e-timepicker-input-period-toggle-shape, ${v.shape.corner.small}); border: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid var(--m3e-timepicker-input-period-toggle-outline-color, ${v.color.outline}); } :host([orientation="vertical"]) { height: var(--m3e-timepicker-input-period-toggle-vertical-height, 5rem); width: var(--m3e-timepicker-input-period-toggle-vertical-width, 3.25rem); } :host([orientation="vertical"]) .base { flex-direction: column; } :host([orientation="horizontal"]) { height: var(--m3e-timepicker-input-period-toggle-horizontal-height, 2.375rem); width: var(--m3e-timepicker-input-period-toggle-horizontal-width, 13.5rem); } .period-button { display: flex; align-items: center; justify-content: center; outline: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); cursor: pointer; position: relative; transition: ${n(`background-color color ${v.motion.duration.short4} ${v.motion.easing.standard},\n color ${v.motion.duration.short4} ${v.motion.easing.standard}`)}; font-size: var( --m3e-timepicker-input-period-toggle-label-font-size, ${v.typescale.standard.title.medium.fontSize} ); font-weight: var( --m3e-timepicker-input-period-toggle-label-font-weight, ${v.typescale.standard.title.medium.fontWeight} ); line-height: var( --m3e-timepicker-input-period-toggle-label-line-height, ${v.typescale.standard.title.medium.lineHeight} ); letter-spacing: var( --m3e-timepicker-input-period-toggle-label-tracking, ${v.typescale.standard.title.medium.tracking} ); } :host([orientation="vertical"]) .period-button { height: 50%; width: 100%; } :host([orientation="horizontal"]) .period-button { height: 100%; width: 50%; } :host([orientation="vertical"]) .period-button:first-child { border-start-start-radius: inherit; border-start-end-radius: inherit; } :host([orientation="horizontal"]) .period-button:first-child { border-start-start-radius: inherit; border-end-start-radius: inherit; } .divider { flex: none; } :host([orientation="vertical"]) .divider { width: 100%; border-bottom: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid var(--m3e-timepicker-input-period-toggle-outline-color, ${v.color.outline}); } :host([orientation="horizontal"]) .divider { height: 100%; border-inline-end: var(--m3e-timepicker-input-period-toggle-outline-thickness, 1px) solid var(--m3e-timepicker-input-period-toggle-outline-color, ${v.color.outline}); } :host([orientation="vertical"]) .period-button:last-child { border-end-start-radius: inherit; border-end-end-radius: inherit; } :host([orientation="horizontal"]) .period-button:last-child { border-start-end-radius: inherit; border-end-end-radius: inherit; } .period-button[aria-checked="true"] { background-color: var( --m3e-timepicker-input-period-toggle-selected-container-color, ${v.color.tertiaryContainer} ); color: var(--m3e-timepicker-input-period-toggle-selected-label-color, ${v.color.onTertiaryContainer}); --m3e-state-layer-hover-color: var( --m3e-timepicker-input-period-toggle-selected-hover-state-layer-color, ${v.color.onTertiaryContainer} ); --m3e-state-layer-focus-color: var( --m3e-timepicker-input-period-toggle-selected-focus-state-layer-color, ${v.color.onTertiaryContainer} ); --m3e-ripple-color: var( --m3e-timepicker-input-period-toggle-selected-pressed-state-layer-color, ${v.color.onTertiaryContainer} ); } .period-button[aria-checked="false"] { color: var(--m3e-timepicker-input-period-toggle-unselected-label-color, ${v.color.onSurfaceVariant}); --m3e-state-layer-hover-color: var( --m3e-timepicker-input-period-toggle-unselected-hover-state-layer-color, ${v.color.onSurfaceVariant} ); --m3e-state-layer-focus-color: var( --m3e-timepicker-input-period-toggle-unselected-focus-state-layer-color, ${v.color.onSurfaceVariant} ); --m3e-ripple-color: var( --m3e-timepicker-input-period-toggle-unselected-pressed-state-layer-color, ${v.color.onSurfaceVariant} ); }`,e([E()],le.prototype,"period",void 0),e([E({reflect:!0})],le.prototype,"orientation",void 0),le=e([g("m3e-timepicker-input-period-toggle")],le);let we=class extends(f(re)){constructor(){super(...arguments),ce.add(this),he.set(this,()=>t(this,ce,"m",ke).call(this)),de.set(this,()=>t(this,ce,"m",ye).call(this)),this.orientation="horizontal",this.hideLabels=!1,this.hourLabel="Hour",this.minuteLabel="Minute",this.periodToggleLabel="AM or PM"}attach(e){super.attach(e),this.control instanceof ae&&(t(this,ce,"m",me).call(this),this.control.addEventListener("change",t(this,he,"f")),this.control.addEventListener("view-change",t(this,de,"f")))}detach(){this.control instanceof ae&&(this.control.removeEventListener("change",t(this,he,"f")),this.control.removeEventListener("view-change",t(this,de,"f"))),super.detach()}willUpdate(e){super.willUpdate(e),(e.has("hour")||e.has("minute")||e.has("view")||e.has("period")||e.has("format")||e.has("minTime")||e.has("maxTime")||e.has("blackoutTimes"))&&t(this,ce,"m",me).call(this)}render(){return a`<div class="base">${t(this,ce,"m",ue).call(this,"hour")}<div class="field-separator">:</div>${t(this,ce,"m",ue).call(this,"minute")} ${"12"===this.currentFormat&&"horizontal"===this.orientation?a`<m3e-timepicker-input-period-toggle class="period-toggle" period="${this.period}" orientation="vertical" aria-label="${this.periodToggleLabel}" @change="${t(this,ce,"m",be)}"></m3e-timepicker-input-period-toggle>`:o}</div>${"12"===this.currentFormat&&"vertical"===this.orientation?a`<m3e-timepicker-input-period-toggle class="period-toggle" period="${this.period}" orientation="horizontal" @change="${t(this,ce,"m",be)}"></m3e-timepicker-input-period-toggle>`:o}`}};var xe,Te,ze,Me,Le,Ee,Ce,Se,_e,De,He,Pe,We,qe,Re,Ze,Oe,Fe,Ae,Ie,Ue,Ve,je,Ye,Be,Ke,Ne,Xe,Ge,Je,Qe;he=new WeakMap,de=new WeakMap,ce=new WeakSet,me=function(){this.control instanceof ae&&(this.control.view=this.view,this.control.format=this.currentFormat,this.control.hour=this.hour,this.control.minute=this.minute,this.control.minTime=this.minTime,this.control.maxTime=this.maxTime,this.control.blackoutTimes=this.blackoutTimes,this.control.period=this.period)},ue=function(e){const i=e=>null===e?"":e<10?"0"+e:String(e),r="hour"===e?this.hourLabel:this.minuteLabel,o=t(this,ce,"m",$e).call(this,this[e],e);let n;if(null!==this[e]){const t=new Date;t.setHours(this.hour??0,this.minute??0,0,0),n=new Intl.DateTimeFormat(navigator.language,"hour"===e?{hour:"numeric",hour12:"12"===this.currentFormat}:{minute:"2-digit"}).format(t)}return a`<div class="field-wrapper"><input id="${e}" class="${c({field:!0,selected:this.view===e,invalid:o})}" role="spinbutton" placeholder="––" inputmode="numeric" autocomplete="off" aria-label="${r}" aria-valuemin="0" aria-valuemax="${"hour"===e?23:59}" aria-valuenow="${D(n?i(this[e]):void 0)}" aria-valuetext="${D(n)}" @focus="${t(this,ce,"m",pe)}" @keydown="${t(this,ce,"m",ve)}" @input="${t(this,ce,"m",ge)}" .value="${i("hour"===e?"12"===this.currentFormat?this.hourOfPeriod:this.hour:this.minute)}"><m3e-collapsible aria-hidden="true" ?open="${!this.hideLabels}"><span class="label">${r}</span></m3e-collapsible><m3e-focus-ring class="focus-ring" for="${e}"></m3e-focus-ring></div>`},pe=function(e){const t=e.target.id;this.view!==t&&(this.view=t,this.dispatchEvent(new CustomEvent("view-change")))},ve=function(e){const i=e.target,r=i.id;switch(e.key){case"Up":case"ArrowUp":return e.preventDefault(),t(this,ce,"m",fe).call(this,r,1,!0),void this.dispatchEvent(new Event("change",{bubbles:!0}));case"PageUp":return e.preventDefault(),t(this,ce,"m",fe).call(this,r,"hour"===r?1:5),void this.dispatchEvent(new Event("change",{bubbles:!0}));case"Down":case"ArrowDown":return e.preventDefault(),t(this,ce,"m",fe).call(this,r,-1,!0),void this.dispatchEvent(new Event("change",{bubbles:!0}));case"PageDown":return e.preventDefault(),t(this,ce,"m",fe).call(this,r,"hour"===r?-1:-5),void this.dispatchEvent(new Event("change",{bubbles:!0}));case"Backspace":case"Delete":e.preventDefault(),this[r]=null,i.value="",this.dispatchEvent(new Event("change",{bubbles:!0}));break;case"Tab":case"ArrowLeft":case"Left":case"ArrowRight":case"Right":return}e.ctrlKey||e.metaKey||/^\d$/.test(e.key)||e.preventDefault()},ge=function(e){if(e.isComposing)return;const t=e.target,i=t.id,r=t.value.replace(/\D/g,"");if(0===r.length)return this[i]=null,t.value="",this.requestUpdate(),void this.dispatchEvent(new Event("change",{bubbles:!0}));const a=e=>"hour"===i?"12"===this.currentFormat?e>=1&&e<=12:e>=0&&e<=23:e>=0&&e<=59,o=(t.selectionStart??t.value.length)===t.value.length,n="string"==typeof e.data&&/^\d$/.test(e.data)?Number(e.data):null;let s;if(null===n||o)if(r.length>=2&&o&&r.startsWith("0")){const e=parseInt(r.slice(-2));s=a(e)?e:Number(r.slice(-1))}else s=null!==n?n:Number(r.slice(-1));else s=n;"hour"===i&&"12"===this.currentFormat&&0===s&&(s=12),t.value=s<10?`0${s}`:String(s);try{t.setSelectionRange(t.value.length,t.value.length)}catch{}"hour"===i&&"12"===this.currentFormat?this.hourOfPeriod=s:this[i]=s,this.requestUpdate(),this.dispatchEvent(new Event("change",{bubbles:!0}))},fe=function(e,i,r=!1){const a="hour"===e?24:60,o=Math.sign(i);let n=this[e]??0,s=Math.abs(i);for(;s>0;){if(n+=o,!r){if(n<0){n=0;break}if(n>=a){n=a-1;break}}n=(n%a+a)%a,s--}let l=o;if(r||(0===n?l=1:n===a-1&&(l=-1)),t(this,ce,"m",$e).call(this,n,e)){let i=0;for(;t(this,ce,"m",$e).call(this,n,e);){if(n+=l,!r&&(n<0||n>=a))return;if(n=(n%a+a)%a,++i>a)return}}this[e]=n},be=function(e){if(e.stopPropagation(),this.period=e.currentTarget.period,null!==this.hour){const e=this.hour%12||12;this.hour="am"===this.period?12===e?0:e:12===e?12:e+12,this.dispatchEvent(new Event("change",{bubbles:!0}))}},ke=function(){this.control&&(this.hour=this.control.hour,this.minute=this.control.minute,this.dispatchEvent(new Event("change",{bubbles:!0})))},ye=function(){this.control&&(this.view=this.control.view,this.dispatchEvent(new CustomEvent("view-change")))},$e=function(e,t){if(null===e)return!1;switch(t){case"hour":return this.isHourDisabled(e);case"minute":return null!=this.hour&&this.isMinuteDisabled(this.hour,e)}},we.styles=s`:host { display: block; } .base { display: flex; align-items: flex-start; height: 100%; } .field-wrapper { display: flex; flex-direction: column; justify-content: stretch; position: relative; } .field, .focus-ring { width: var(--m3e-timepicker-input-field-container-width, 6rem); height: var(--m3e-timepicker-input-field-height, 5rem); border-radius: var(--m3e-timepicker-input-field-container-shape, ${v.shape.corner.small}); } .field { display: block; text-align: center; cursor: text; outline: none; border: unset; box-shadow: none; padding: unset; font-size: var(--m3e-timepicker-input-field-font-size, ${v.typescale.standard.display.medium.fontSize}); font-weight: var( --m3e-timepicker-input-field-font-weight, ${v.typescale.standard.display.medium.fontWeight} ); line-height: var( --m3e-timepicker-input-field-line-height, ${v.typescale.standard.display.medium.lineHeight} ); letter-spacing: var( --m3e-timepicker-input-field-tracking, ${v.typescale.standard.display.medium.tracking} ); } .field:not(.selected):not(.invalid) { color: var(--m3e-timepicker-input-field-label-unselected-color, ${v.color.onSurface}); background-color: var( --m3e-timepicker-input-field-unselected-container-color, ${v.color.surfaceContainerHighest} ); } .field.selected:not(.invalid) { color: var(--m3e-timepicker-input-field-label-selected-color, ${v.color.onPrimaryContainer}); background-color: var( --m3e-timepicker-input-field-selected-container-color, ${v.color.primaryContainer} ); } .field.invalid { color: var(--m3e-timepicker-input-field-label-invalid-color, ${v.color.onErrorContainer}); background-color: var(--m3e-timepicker-input-field-invalid-container-color, ${v.color.errorContainer}); } .field::placeholder { user-select: none; color: currentColor; transition: opacity ${v.motion.duration.short4}; } .field:focus::placeholder { opacity: 0; } .label { user-select: none; margin-top: 0.25rem; color: var(--m3e-timepicker-input-field-supporting-text-color, ${v.color.onSurfaceVariant}); font-size: var( --m3e-timepicker-input-field-supporting-text-font-size, ${v.typescale.standard.body.small.fontSize} ); font-weight: var( --m3e-timepicker-input-field-supporting-text-font-weight, ${v.typescale.standard.body.small.fontWeight} ); line-height: var( --m3e-timepicker-input-field-supporting-text-line-height, ${v.typescale.standard.body.small.lineHeight} ); letter-spacing: var( --m3e-timepicker-input-field-supporting-text-tracking, ${v.typescale.standard.body.small.tracking} ); } .field-separator { user-select: none; display: flex; align-items: center; justify-content: center; width: var(--m3e-timepicker-input-field-separator-width, 1.5rem); height: var(--m3e-timepicker-input-field-height, 5rem); color: var(--m3e-timepicker-input-field-separator-color, ${v.color.onSurface}); font-size: var( --m3e-timepicker-input-field-separator-font-size, ${v.typescale.standard.display.large.fontSize} ); font-weight: var( --m3e-timepicker-input-field-separator-font-weight, ${v.typescale.standard.display.large.fontWeight} ); letter-spacing: var( --m3e-timepicker-input-field-separator-tracking, ${v.typescale.standard.display.large.tracking} ); } :host([orientation="horizontal"]) .period-toggle { margin-inline-start: var(--m3e-timepicker-input-horizontal-period-toggle-space, 0.75rem); } :host([orientation="vertical"]) .period-toggle { margin-block-start: var(--m3e-timepicker-input-vertical-period-toggle-space, 1rem); }`,e([E({reflect:!0})],we.prototype,"orientation",void 0),e([E({attribute:"hide-labels",type:Boolean})],we.prototype,"hideLabels",void 0),e([E({attribute:"hour-label"})],we.prototype,"hourLabel",void 0),e([E({attribute:"minute-label"})],we.prototype,"minuteLabel",void 0),e([E({attribute:"period-toggle-label"})],we.prototype,"periodToggleLabel",void 0),we=e([g("m3e-timepicker-input")],we);let et=class extends(h(b(d(m(r,"dialog"))))){constructor(){super(...arguments),xe.add(this),Te.set(this,-1),ze.set(this,void 0),this._open=!1,this._invalid=!1,Me.set(this,void 0),Le.set(this,void 0),Ee.set(this,void 0),Ce.set(this,void 0),Se.set(this,void 0),_e.set(this,new k(this)),De.set(this,new y(this)),He.set(this,e=>t(this,xe,"m",Ae).call(this,e)),Pe.set(this,e=>t(this,xe,"m",je).call(this,e)),We.set(this,e=>t(this,xe,"m",Ye).call(this,e)),this.variant="docked",this.mode="dial",this.orientation="vertical",this.date=null,this.format="12",this.minTime=null,this.maxTime=null,this.hideModeToggle=!1,this.confirmLabel="OK",this.dismissLabel="Cancel",this.dialLabel="Select time",this.inputLabel="Edit time",this.hourLabel="Hour",this.minuteLabel="Minute",this.modeToggleLabel="Toggle input picker",this.periodToggleLabel="AM or PM"}get isOpen(){return void 0!==t(this,Le,"f")}get currentVariant(){return this._variant??("modal"!==this.variant?"docked":"modal")}get currentOrientation(){return this._orientation??("horizontal"!==this.orientation?"vertical":"horizontal")}get currentMode(){return this._mode??this.mode}connectedCallback(){super.connectedCallback(),this.setAttribute("popover","manual"),this.addEventListener("toggle",t(this,We,"f"))}disconnectedCallback(){super.disconnectedCallback(),this._variant=void 0,t(this,Me,"f")?.call(this),t(this,xe,"m",Ge).call(this),$(this,"--docked"),$(this,"--modal"),this.removeEventListener("toggle",t(this,We,"f")),document.removeEventListener("click",t(this,He,"f")),document.removeEventListener("keydown",t(this,Pe,"f"))}reconnectedCallback(){super.reconnectedCallback(),"auto"!==this.variant&&"auto"!==this.orientation||t(this,xe,"m",Be).call(this)}async show(e,r){t(this,Le,"f")&&t(this,Le,"f")!==e&&this.hide(),clearTimeout(t(this,Te,"f")),"modal"===this.currentVariant&&(t(this,_e,"f").lock(),t(this,De,"f").lock()),t(this,xe,"m",Qe).call(this),this._open=!0,this.isUpdatePending&&await this.updateComplete;const a=this._input;a.hour=this.date?.getHours()??null,a.minute=this.date?.getMinutes()??null,a.minTime=this.minTime,a.maxTime=this.maxTime,a.blackoutTimes=this.blackoutTimes,a.isUpdatePending&&await a.updateComplete,i(this,ze,void 0,"f"),i(this,Le,e,"f"),t(this,Le,"f").ariaExpanded="true",i(this,Ee,r,"f"),await t(this,xe,"m",Xe).call(this),this.showPopover(),document.addEventListener("click",t(this,He,"f")),document.addEventListener("keydown",t(this,Pe,"f"))}hide(e=!1){this.isOpen&&(document.removeEventListener("click",t(this,He,"f")),document.removeEventListener("keydown",t(this,Pe,"f")),"modal"===this.currentVariant&&(t(this,_e,"f").unlock(),t(this,De,"f").unlock()),this.hidePopover(),t(this,Le,"f")&&(t(this,Le,"f").ariaExpanded="false",e&&t(this,Le,"f").focus(),i(this,Le,void 0,"f")))}async toggle(e,i){t(this,Le,"f")?this.hide():await this.show(e,i)}render(){return a`<m3e-focus-trap ?disabled="${!this._open}">${t(this,xe,"m",qe).call(this)}${t(this,xe,"m",Re).call(this)}${t(this,xe,"m",Ze).call(this)}</m3e-focus-trap>`}willUpdate(e){super.willUpdate(e),e.has("date")&&t(this,xe,"m",Je).call(this),(e.has("variant")||e.has("orientation"))&&(t(this,Me,"f")?.call(this),"auto"!==this.variant&&(this._variant=void 0,t(this,xe,"m",Ke).call(this)),"auto"!==this.orientation&&(this._orientation=void 0,t(this,xe,"m",Ne).call(this)),"auto"!==this.variant&&"auto"!==this.orientation||t(this,xe,"m",Be).call(this))}};Te=new WeakMap,ze=new WeakMap,Me=new WeakMap,Le=new WeakMap,Ee=new WeakMap,Ce=new WeakMap,Se=new WeakMap,_e=new WeakMap,De=new WeakMap,He=new WeakMap,Pe=new WeakMap,We=new WeakMap,xe=new WeakSet,qe=function(){return a`<div class="headline">${"dial"===this.currentMode?this.dialLabel:this.inputLabel}</div>`},Re=function(){return this._open?a`<div class="base"><m3e-timepicker-input class="input" for="${D("input"===this.currentMode?void 0:"dial")}" ?hide-labels="${"dial"===this.currentMode}" period-toggle-label="${this.periodToggleLabel}" hour-label="${this.hourLabel}" minute-label="${this.minuteLabel}" orientation="${"vertical"===this.currentOrientation?"horizontal":"vertical"}" format="${this.format}" @change="${t(this,xe,"m",Ie)}"></m3e-timepicker-input><m3e-collapsible orientation="${"horizontal"===this.currentOrientation?"both":"vertical"}" ?open="${"dial"===this.currentMode}"><div class="dial-wrapper"><div class="dial-spacer"></div><m3e-timepicker-dial id="dial" class="dial"></m3e-timepicker-dial></div></m3e-collapsible></div>`:o},Ze=function(){return a`<div class="actions">${t(this,xe,"m",Oe).call(this)}<div class="spacer" aria-hidden="true"></div><m3e-button @click="${t(this,xe,"m",Ue)}">${this.dismissLabel}</m3e-button><m3e-button ?disabled="${this._invalid}" @click="${t(this,xe,"m",Ve)}">${this.confirmLabel}</m3e-button></div>`},Oe=function(){return this.hideModeToggle?o:a`<m3e-icon-button aria-label="${this.modeToggleLabel}" aria-expanded="${"dial"===this.currentMode}" aria-controls="dial" @click="${t(this,xe,"m",Fe)}">${"dial"===this.currentMode?l`<svg viewBox="0 -960 960 960" fill="currentColor">
|
|
7
|
+
<path
|
|
8
|
+
d="M160-200q-33 0-56.5-23.5T80-280v-400q0-33 23.5-56.5T160-760h640q33 0 56.5 23.5T880-680v400q0 33-23.5 56.5T800-200H160Zm0-80h640v-400H160v400Zm160-40h320v-80H320v80ZM200-440h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM200-560h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM160-280v-400 400Z"
|
|
9
|
+
/>
|
|
10
|
+
</svg>`:l`<svg viewBox="0 -960 960 960" fill="currentColor">
|
|
11
|
+
<path
|
|
12
|
+
d="m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z"
|
|
13
|
+
/>
|
|
14
|
+
</svg>`}</m3e-icon-button>`},Fe=function(){this._mode="dial"===this.currentMode?"input":"dial"},Ae=function(e){this.isOpen&&!e.composedPath().some(e=>e===this||e===t(this,Le,"f"))&&this.hide()},Ie=function(e){const r=e.target;null===r.hour||null===r.minute?i(this,ze,null,"f"):(i(this,ze,new Date(this.date??Date.now()),"f"),t(this,ze,"f").setHours(r.hour),t(this,ze,"f").setMinutes(r.minute)),t(this,xe,"m",Qe).call(this)},Ue=function(){this.hide(!0)},Ve=function(){void 0!==t(this,ze,"f")&&(this.date=t(this,ze,"f")),this.hide(!0),this.dispatchEvent(new Event("change",{bubbles:!0}))},je=function(e){!this.isOpen||"modal"!==this.currentVariant||"Escape"!==e.key||e.shiftKey||e.ctrlKey||(e.preventDefault(),this.hide(!0))},Ye=function(e){"closed"===e.newState&&(t(this,xe,"m",Je).call(this),t(this,Ce,"f")?.call(this),i(this,Ce,void 0,"f"),i(this,Se,void 0,"f"),clearTimeout(t(this,Te,"f")),w()?this._open=!1:i(this,Te,setTimeout(()=>this._open=!1,100),"f"))},Be=function(){i(this,Me,W.observe([q.XSmall,q.Small],e=>{"auto"===this.variant&&(this._variant=e.get(q.XSmall)||e.get(q.Small)?"modal":"docked",t(this,xe,"m",Ke).call(this)),"auto"===this.orientation&&(this._orientation=e.get(q.Small)?"horizontal":"vertical",t(this,xe,"m",Ne).call(this))}),"f")},Ke=function(){switch(this.currentVariant){case"docked":this.ariaModal=null,$(this,"--modal"),x(this,"--docked"),t(this,_e,"f").unlock(),t(this,De,"f").unlock();break;case"modal":this.ariaModal="true",$(this,"--docked"),x(this,"--modal"),this.isOpen&&(t(this,_e,"f").lock(),t(this,De,"f").lock())}this.isOpen&&t(this,xe,"m",Xe).call(this)},Ne=function(){switch(this.currentOrientation){case"horizontal":x(this,"--horizontal");break;case"vertical":$(this,"--horizontal")}},Xe=async function(){"docked"===this.currentVariant&&t(this,Le,"f")?(t(this,Ce,"f")?.call(this),i(this,Se,void 0,"f"),i(this,Ce,await H(this,t(this,Ee,"f")??t(this,Le,"f"),{position:"bottom-start",inline:!0,flip:!0,shift:"both"},(e,r,a)=>{T(this,"--top",a.includes("top")),T(this,"--bottom",a.includes("bottom")),t(this,Se,"f")?.dir===P.current&&t(this,Se,"f")?.x===e||("rtl"===P.current?(this.style.right=window.innerWidth-e-this.clientWidth+"px",this.style.left=""):(this.style.left=`${e}px`,this.style.right="")),t(this,Se,"f")?.y!==r&&(this.style.top=`${r}px`),i(this,Se,{x:e,y:r,dir:P.current},"f")}),"f")):t(this,xe,"m",Ge).call(this)},Ge=function(){t(this,Ce,"f")?.call(this),i(this,Ce,void 0,"f"),i(this,Se,void 0,"f"),this.style.left="",this.style.right="",this.style.top=""},Je=function(){i(this,ze,void 0,"f")},Qe=function(){if(void 0===t(this,ze,"f")&&this.date)return void(this._invalid=!1);if(null===t(this,ze,"f")||void 0===t(this,ze,"f"))return void(this._invalid=!0);const e=t(this,ze,"f").getHours(),i=t(this,ze,"f").getMinutes();this.minTime&&(e<this.minTime.hour||e===this.minTime.hour&&i<this.minTime.minute)||this.maxTime&&(e>this.maxTime.hour||e===this.maxTime.hour&&i>this.maxTime.minute)||this.blackoutTimes?.({hour:e,minute:i})?this._invalid=!0:this._invalid=!1},et.styles=s`:host { flex-direction: column; margin: unset; border: unset; padding-block: var(--m3e-timepicker-container-padding-block, 0.75rem); padding-inline: var(--m3e-timepicker-container-padding-inline, 1.75rem); background-color: var(--m3e-timepicker-container-color, ${v.color.surfaceContainer}); box-shadow: var(--m3e-timepicker-container-elevation, ${v.elevation.level3}); opacity: 0; display: none; } .headline { color: var(--m3e-timepicker-headline-color, ${v.color.onSurfaceVariant}); font-size: var(--m3e-timepicker-headline-font-size, ${v.typescale.standard.label.large.fontSize}); font-weight: var(--m3e-timepicker-headline-font-weight, ${v.typescale.standard.label.large.fontWeight}); line-height: var(--m3e-timepicker-headline-line-height, ${v.typescale.standard.label.large.lineHeight}); letter-spacing: var(--m3e-timepicker-headline-tracking, ${v.typescale.standard.label.large.tracking}); margin-block-start: var(--m3e-timepicker-headline-top-space, 1rem); } .actions { margin-block-start: var(--m3e-timepicker-actions-space, 1.5rem); display: flex; align-items: center; column-gap: 0.5rem; } .spacer { flex: 1 1 auto; } :host(:is(:state(--docked), :--docked)) { position: absolute; background-color: var(--m3e-timepicker-docked-container-color, ${v.color.surfaceContainer}); border-radius: var(--m3e-timepicker-docked-container-shape, ${v.shape.corner.large}); } :host(:is(:state(--modal), :--modal)) { position: fixed; inset: 0; margin: auto; transform-origin: top; background-color: var(--m3e-timepicker-modal-container-color, ${v.color.surfaceContainerHigh}); border-radius: var(--m3e-timepicker-modal-container-shape, ${v.shape.corner.extraLarge}); } :host(:not(:is(:state(--no-animate), :--no-animate))) { transition: ${n(`opacity ${v.motion.duration.short2} ${v.motion.easing.standard}, \n transform ${v.motion.duration.short2} ${v.motion.easing.standard},\n overlay ${v.motion.duration.short2} ${v.motion.easing.standard} allow-discrete,\n display ${v.motion.duration.short2} ${v.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, ${v.color.scrim}) 0%, transparent); margin-inline-end: -20px; } :host(:is(:state(--modal), :--modal):not(:popover-open))::backdrop { transition: ${n(`background-color ${v.motion.duration.short3} ${v.motion.easing.standard}, \n overlay ${v.motion.duration.short3} ${v.motion.easing.standard} allow-discrete,\n visibility ${v.motion.duration.short3} ${v.motion.easing.standard} allow-discrete`)}; } :host(:is(:state(--modal), :--modal):popover-open)::backdrop { background-color: color-mix( in srgb, var(--m3e-dialog-scrim-color, ${v.color.scrim}) var(--m3e-dialog-scrim-opacity, 32%), transparent ); transition: ${n(`background-color ${v.motion.duration.long2} ${v.motion.easing.standard}, \n overlay ${v.motion.duration.long2} ${v.motion.easing.standard} allow-discrete,\n visibility ${v.motion.duration.long2} ${v.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, ${v.color.scrim}) 0%, transparent); } } .base { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } :host(:not(:is(:state(--horizontal), :--horizontal))) .base { flex-direction: column; } .input { margin-top: var(--m3e-timepicker-label-input-space, 1.25rem); } .dial-wrapper { display: flex; transition: ${n(`opacity var(--m3e-collapsible-animation-duration, ${v.motion.duration.medium1}) ${v.motion.easing.standard}`)}; } .dial-spacer, .dial { flex: none; } :host(:not([mode="dial"])) .dial-wrapper { opacity: 0; } :host([mode="dial"]) .dial-wrapper { opacity: 1; } :host(:not(:is(:state(--horizontal), :--horizontal))) .dial-wrapper { flex-direction: column; } :host(:not(:is(:state(--horizontal), :--horizontal))) .dial-spacer { height: var(--m3e-timepicker-vertical-input-dial-space, 2.25rem); } :host(:is(:state(--horizontal), :--horizontal)) .dial-spacer { width: var(--m3e-timepicker-horizontal-input-dial-space, 3.25rem); } @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; } }`,e([C()],et.prototype,"_open",void 0),e([S("m3e-timepicker-input")],et.prototype,"_input",void 0),e([C()],et.prototype,"_invalid",void 0),e([C()],et.prototype,"_variant",void 0),e([C()],et.prototype,"_orientation",void 0),e([C()],et.prototype,"_mode",void 0),e([E()],et.prototype,"variant",void 0),e([E({reflect:!0})],et.prototype,"mode",void 0),e([E({reflect:!0})],et.prototype,"orientation",void 0),e([E({converter:z})],et.prototype,"date",void 0),e([E()],et.prototype,"format",void 0),e([E({attribute:"min-time",converter:M})],et.prototype,"minTime",void 0),e([E({attribute:"max-time",converter:M})],et.prototype,"maxTime",void 0),e([E()],et.prototype,"blackoutTimes",void 0),e([E({attribute:"hide-mode-toggle",type:Boolean})],et.prototype,"hideModeToggle",void 0),e([E({attribute:"confirm-label"})],et.prototype,"confirmLabel",void 0),e([E({attribute:"dismiss-label"})],et.prototype,"dismissLabel",void 0),e([E({attribute:"dial-label"})],et.prototype,"dialLabel",void 0),e([E({attribute:"input-label"})],et.prototype,"inputLabel",void 0),e([E({attribute:"hour-label"})],et.prototype,"hourLabel",void 0),e([E({attribute:"minute-label"})],et.prototype,"minuteLabel",void 0),e([E({attribute:"mode-toggle-label"})],et.prototype,"modeToggleLabel",void 0),e([E({attribute:"period-toggle-label"})],et.prototype,"periodToggleLabel",void 0),et=e([g("m3e-timepicker")],et);let tt=class extends(f(L)){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)}};tt=e([g("m3e-timepicker-toggle")],tt);export{ae as M3eTimepickerDialElement,et as M3eTimepickerElement,we as M3eTimepickerInputElement,tt as M3eTimepickerToggleElement};
|
|
15
|
+
//# sourceMappingURL=timepicker.min.js.map
|