@slotted/angular 0.1.0-beta.4 → 0.1.0-beta.5
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/docs/AGENTS.snippet.md +2 -0
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +4 -4
- package/docs/app-shell.md +2 -2
- package/docs/guidelines/README.md +2 -2
- package/docs/guidelines/index.md +1 -1
- package/docs/guidelines/own-elements.md +1 -1
- package/docs/page-header.json +1 -0
- package/docs/page-header.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +6 -6
- package/docs/skills/compose-screen/SKILL.md +6 -6
- package/docs/skills/review-screen/SKILL.md +6 -6
- package/docs/skills/theme-app/SKILL.md +1 -1
- package/docs/skills/waiting-states/SKILL.md +2 -2
- package/docs/tabs.json +13 -3
- package/docs/tabs.md +3 -2
- package/fesm2022/slotted-angular-app-shell.mjs +15 -9
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +7 -1
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +13 -3
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +4 -6
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +4 -6
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +7 -1
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +2 -2
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +7 -1
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +6 -2
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +49 -17
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +2 -2
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +11 -4
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +13 -6
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +4 -6
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +7 -1
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-app-shell.d.ts +5 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +1 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +0 -1
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +1 -0
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-datetime-range-picker.mjs","sources":["../../datetime-range-picker/src/datetime-range-picker-defaults.ts","../../datetime-range-picker/src/datetime-range-picker-parts.ts","../../datetime-range-picker/src/datetime-range-picker.ts","../../datetime-range-picker/src/slotted-angular-datetime-range-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { durationLabel } from '@slotted/core/date';\nimport type { DateTimeRangeValue, PlainTime, TimeGranularity } from '@slotted/core/date';\n\n/** A run of datetimes, either end of which may be open. */\nexport type DateTimeRange = DateTimeRangeValue;\n\n/** Where the surface opens, before the positioner has read the room. */\nexport type DateTimeRangePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * Whether choosing closes the surface. `auto` closes when the work becomes\n * whole — by a press in a list, by `now` or by a preset — and stays open\n * while an end is still missing, because the next press has to reach the\n * same surface.\n */\nexport type DateTimeRangePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** What a time a bound or the predicate refuses looks like in a list. */\nexport type DateTimeRangePickerUnavailableOptions = 'disable' | 'hide';\n\nexport type DateTimeRangePickerSize = 'sm' | 'md' | 'lg';\nexport type DateTimeRangePickerVariant = 'outline' | 'subtle' | 'plain';\nexport type DateTimeRangePickerHourCycle = 12 | 24;\nexport type DateTimeRangePickerCalendar = 'gregory';\n\n/** The end being edited: the field and the panel carrying `data-current`. */\nexport type DateTimeRangePickerPosition = 'start' | 'end';\n\n/** The highlighted option of each list. */\nexport interface DateTimeRangePickerHighlight {\n readonly start: PlainTime | null;\n readonly end: PlainTime | null;\n}\n\n/** A quarter of an hour, the step every surveyed panel defaults to within a factor of two. */\nexport const DATETIME_RANGE_PICKER_STEP = 900;\n/** A whole day at a one-minute step: the finest whole-day list any surveyed implementation offers. */\nexport const DATETIME_RANGE_PICKER_MAX_OPTIONS = 1440;\n/** One month: two lists stand beside the grid, and two months beside two lists do not fit in 720 pixels. */\nexport const DATETIME_RANGE_PICKER_MONTHS = 1;\n\n/** \"3 days 21 hr\": the duration the band and the rows say, in the family's locale. */\nexport function dateTimeRangePickerLengthLabel(seconds: number, locale?: string): string {\n return durationLabel(seconds, locale);\n}\n\nexport interface DateTimeRangePickerDefaults {\n calendar: DateTimeRangePickerCalendar;\n closeOnSelect: DateTimeRangePickerCloseOnSelect;\n firstDayOfWeek: number | undefined;\n granularity: TimeGranularity;\n hourCycle: DateTimeRangePickerHourCycle | undefined;\n /** \"2 hr 30 min\", in the product's own words; seconds in, and the family's locale. */\n lengthLabel: (seconds: number, locale: string | undefined) => string;\n maxOptions: number;\n months: number;\n placement: DateTimeRangePickerPlacement;\n size: DateTimeRangePickerSize;\n step: number;\n timeZone: string | undefined;\n unavailableOptions: DateTimeRangePickerUnavailableOptions;\n variant: DateTimeRangePickerVariant;\n}\n\nconst FALLBACK: DateTimeRangePickerDefaults = {\n calendar: 'gregory',\n closeOnSelect: 'auto',\n firstDayOfWeek: undefined,\n granularity: 'minute',\n hourCycle: undefined,\n lengthLabel: dateTimeRangePickerLengthLabel,\n maxOptions: DATETIME_RANGE_PICKER_MAX_OPTIONS,\n months: DATETIME_RANGE_PICKER_MONTHS,\n placement: 'bottom-start',\n size: 'md',\n step: DATETIME_RANGE_PICKER_STEP,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const DATETIME_RANGE_PICKER_DEFAULTS = new InjectionToken<DateTimeRangePickerDefaults>(\n 'slotted datetime range picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, what step its lists\n * offer and how a duration is written — rather than repeating the same inputs\n * on every picker in a form. The locale and the words come from the language\n * in force (`provideSlotted`).\n */\nexport function provideDateTimeRangePickerDefaults(defaults: Partial<DateTimeRangePickerDefaults>) {\n return {\n provide: DATETIME_RANGE_PICKER_DEFAULTS,\n useFactory: (): DateTimeRangePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime range picker renders as here, before it states anything of its own. */\nexport function injectDateTimeRangePickerDefaults(): DateTimeRangePickerDefaults {\n return inject(DATETIME_RANGE_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The consumer's own shortcuts, beside the grid and the two lists where there is room\n * and above them where there is not. Each one is a `slDateTimeRangePickerPreset` button.\n */\n@Directive({\n selector: '[slDateTimeRangePickerPresets]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerPresets',\n host: { 'data-part': 'presets' },\n})\nexport class SlDateTimeRangePickerPresets {}\n\n/** The consumer's own actions, under the grid and the two lists. */\n@Directive({\n selector: '[slDateTimeRangePickerFooter]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlDateTimeRangePickerFooter {}\n\n/**\n * What one row of a list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option. The\n * context carries the time as `$implicit`, plus `position`, `date`, `label`,\n * `duration`, `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slDateTimeRangePickerOption]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerOption',\n})\nexport class SlDateTimeRangePickerOption {}\n","import {\n blockedAround,\n compareDateTime,\n createDateTimeFormat,\n createTimeFormat,\n dateTimeRangeProblems,\n dateTimeRangeSeconds,\n dayWindow,\n firstUnavailableIndex,\n hourJump,\n isDateRefusedInRun,\n isSameDate,\n isSameTime,\n isTruncated,\n nearestIndex,\n openingIndex as openingIndexOf,\n nowDateTimeIn,\n orderedRun,\n runRefusal,\n timeList,\n toISODateTime,\n} from '@slotted/core/date';\nimport type { PlainDate, PlainDateTime, PlainTime, TimeOption } from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport {\n datetimeRangePickerMessages,\n type DatetimeRangePickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlCalendar } from '@slotted/angular/calendar';\nimport type { CalendarValue, CalendarView } from '@slotted/angular/calendar';\nimport { SlDateTimeField } from '@slotted/angular/datetime-field';\nimport type { DateTimeFieldChangeRequest } from '@slotted/angular/datetime-field';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimeRangePickerDefaults } from './datetime-range-picker-defaults';\nimport type {\n DateTimeRange,\n DateTimeRangePickerCalendar,\n DateTimeRangePickerCloseOnSelect,\n DateTimeRangePickerDefaults,\n DateTimeRangePickerHighlight,\n DateTimeRangePickerHourCycle,\n DateTimeRangePickerPlacement,\n DateTimeRangePickerPosition,\n DateTimeRangePickerSize,\n DateTimeRangePickerUnavailableOptions,\n DateTimeRangePickerVariant,\n} from './datetime-range-picker-defaults';\nimport { SlDateTimeRangePickerOption } from './datetime-range-picker-parts';\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * The query is here as well as in the stylesheet because the DOM has to say\n * which presentation it is in, and a media query cannot write an attribute.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\n/** One end of the work: its two halves, each of which may still be missing. */\ninterface Half {\n readonly date: PlainDate | null;\n readonly time: PlainTime | null;\n}\ninterface Work {\n readonly start: Half;\n readonly end: Half;\n}\n\nconst NO_HALF: Half = { date: null, time: null };\nconst EMPTY: Work = { start: NO_HALF, end: NO_HALF };\nconst MIDNIGHT: PlainTime = { hour: 0, minute: 0, second: 0 };\n/** How far `contiguous` looks for an unavailable day when no `maxLength` bounds it. */\nconst CONTIGUOUS_SEARCH = 366;\nconst NO_HIGHLIGHT: DateTimeRangePickerHighlight = { start: null, end: null };\n\n/** The one word for nothing: a value whose both ends are `null` is `null`. */\nfunction normalize(range: DateTimeRange | null | undefined): DateTimeRange | null {\n return range === null || range === undefined || (range.start === null && range.end === null)\n ? null\n : range;\n}\n\nfunction isSameDateTime(a: PlainDateTime | null, b: PlainDateTime | null): boolean {\n if (a === null || b === null) return a === b;\n return compareDateTime(a, b) === 0;\n}\n\nexport function isSameDateTimeRange(a: DateTimeRange | null, b: DateTimeRange | null): boolean {\n if (a === null || b === null) return a === b;\n return isSameDateTime(a.start, b.start) && isSameDateTime(a.end, b.end);\n}\n\n/**\n * Scrolls the list alone. `scrollIntoView` would scroll every ancestor too,\n * and a page with an open surface must not jump when a list opens on its\n * highlight. Centred when the list opens, and by the least that lands the row\n * whole when a key moves the highlight. jsdom measures nothing, so it is a\n * no-op there rather than a throw.\n */\nfunction revealRow(list: HTMLElement, row: HTMLElement, centre: boolean) {\n const box = list.getBoundingClientRect();\n const cell = row.getBoundingClientRect();\n if (box.height === 0 || cell.height === 0) return;\n const above = cell.top - box.top;\n if (centre) list.scrollTop += above - (box.height - cell.height) / 2;\n else if (above < 0) list.scrollTop += above;\n else if (cell.bottom > box.bottom) list.scrollTop += cell.bottom - box.bottom;\n}\n\nfunction other(position: DateTimeRangePickerPosition): DateTimeRangePickerPosition {\n return position === 'start' ? 'end' : 'start';\n}\n\nfunction halfOf(value: PlainDateTime | null): Half {\n return value === null ? NO_HALF : { date: value.date, time: value.time };\n}\n\nfunction wholeOf(half: Half): PlainDateTime | null {\n return half.date === null || half.time === null ? null : { date: half.date, time: half.time };\n}\n\nfunction workOf(range: DateTimeRange | null): Work {\n return range === null ? EMPTY : { start: halfOf(range.start), end: halfOf(range.end) };\n}\n\nfunction rangeOf(work: Work): DateTimeRange | null {\n return normalize({ start: wholeOf(work.start), end: wholeOf(work.end) });\n}\n\n/**\n * A one-line frame — the value in words, a clear and the trigger — and behind\n * it one end at a time: two tabs, the field of the current end, a hint, the\n * range calendar and the list of that end.\n *\n * **The frame is one line at any width**, for the reason `time-range-picker`\n * records. The field lives in the panel's band, where the reader types.\n *\n * **One calendar for the two dates, and the list of the current end.** The\n * grid draws the run and its pending band the way `date-range-picker` does;\n * the list runs on the day of the current end — or on the grid's focused day\n * while the end has none — and says the duration beside each row while the\n * two ends are on the same day.\n *\n * **The press that leaves the work incomplete carries focus to the half that\n * is missing; the press that completes it closes the panel.** The rule\n * `datetime-picker` wrote, once per end.\n */\n@Component({\n selector: '[slDateTimeRangePicker]',\n standalone: true,\n exportAs: 'slDateTimeRangePicker',\n imports: [NgTemplateOutlet, SlCalendar, SlDateTimeField, SlGlyph, SlIcon],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlDateTimeRangePicker),\n multi: true,\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimeRangePicker), multi: true },\n ],\n template: `<div data-part=\"control\" (focusout)=\"onControlFocusOut($event)\">\n <button\n #trigger\n data-part=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span data-part=\"summary\" [attr.data-placeholder]=\"summary() === null ? '' : null\">{{\n summary() ?? t('choose')\n }}</span>\n <span slIcon><svg slGlyph name=\"calendar\"></svg></span>\n </button>\n @if (clearable() && held() !== null) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n [disabled]=\"!editable()\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <input\n data-part=\"hidden-input\"\n type=\"hidden\"\n [attr.name]=\"startName()\"\n [value]=\"startIso()\"\n />\n <input data-part=\"hidden-input\" type=\"hidden\" [attr.name]=\"endName()\" [value]=\"endIso()\" />\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"datetime-range-picker\"\n data-part=\"positioner\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n [attr.data-positioned]=\"positioned() ? '' : null\"\n >\n <div\n data-part=\"content\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n >\n <div data-part=\"head\">\n <div data-part=\"tabs\" role=\"tablist\">\n @for (position of positions; track position) {\n <button\n data-part=\"tab\"\n role=\"tab\"\n type=\"button\"\n [attr.id]=\"contentId + '-tab-' + position\"\n [attr.data-position]=\"position\"\n [attr.aria-selected]=\"currentPosition() === position\"\n [attr.aria-controls]=\"contentId + '-panel'\"\n [attr.data-current]=\"currentPosition() === position ? '' : null\"\n [attr.data-placeholder]=\"isEmptyHalf(position) ? '' : null\"\n [tabindex]=\"currentPosition() === position ? 0 : -1\"\n [disabled]=\"!editable()\"\n (click)=\"selectTab(position, $event)\"\n (keydown)=\"onTabKeyDown($event)\"\n >\n <span data-part=\"tab-label\">{{ labelFor(position) }}</span>\n <span data-part=\"tab-value\">{{ tabValue(position) }}</span>\n </button>\n }\n </div>\n <div #fieldBox data-part=\"field\" [attr.data-position]=\"currentPosition()\">\n <div\n slDateTimeField\n #field=\"slDateTimeField\"\n variant=\"plain\"\n size=\"sm\"\n [label]=\"labelFor(currentPosition())\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [calendar]=\"resolvedCalendar()\"\n [firstDayOfWeek]=\"resolvedFirstDayOfWeek()\"\n [yearPivot]=\"yearPivot()\"\n [referenceDateTime]=\"referenceDateTime()\"\n [relative]=\"relative()\"\n [min]=\"currentPosition() === 'end' ? endMin() : min()\"\n [max]=\"currentPosition() === 'start' ? startMax() : max()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [invalid]=\"currentPosition() === 'end' && workReversed() ? true : undefined\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired()\"\n [value]=\"currentPosition() === 'start' ? workStart() : workEnd()\"\n (valueChange)=\"onFieldValue($event)\"\n ></div>\n </div>\n <button\n data-part=\"now\"\n type=\"button\"\n [disabled]=\"!editable()\"\n (click)=\"chooseNow($event)\"\n >\n {{ t('now') }}\n </button>\n <span\n data-part=\"hint\"\n [attr.id]=\"contentId + '-hint'\"\n [attr.data-invalid]=\"hintProblem() === undefined ? null : ''\"\n >{{ hint() }}</span\n >\n <span\n data-part=\"length\"\n aria-live=\"polite\"\n [attr.data-pending]=\"pending() === null ? null : ''\"\n >{{ spokenLength() }}</span\n >\n @if (limitText() !== null) {\n <span data-part=\"limit\">{{ limitText() }}</span>\n }\n </div>\n <ng-content select=\"[slDateTimeRangePickerPresets]\" />\n @if (currentPosition(); as position) {\n <div data-part=\"panel\" [attr.id]=\"contentId + '-panel'\" [attr.data-position]=\"position\">\n <div data-part=\"date-panel\">\n <div\n slCalendar\n #calendar=\"slCalendar\"\n selectionMode=\"range\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [firstDayOfWeek]=\"resolvedFirstDayOfWeek()\"\n [min]=\"min()?.date\"\n [max]=\"max()?.date\"\n [isDateUnavailable]=\"gridUnavailable()\"\n [months]=\"resolvedMonths()\"\n [weekNumbers]=\"weekNumbers()\"\n [fixedWeeks]=\"fixedWeeks()\"\n [readOnly]=\"resolvedReadOnly()\"\n [focusedDate]=\"focusedDate()\"\n [value]=\"calendarValue()\"\n [view]=\"view()\"\n (viewChange)=\"view.set($event)\"\n (focusedDateChange)=\"focusedDate.set($event.value)\"\n (previewChange)=\"preview.set($event)\"\n (valueChange)=\"onCalendarValue($event)\"\n ></div>\n </div>\n @if (lists()[position].length === 0) {\n <div data-part=\"empty\">{{ t('empty') }}</div>\n } @else {\n <div\n data-part=\"list\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"contentId + '-tab-' + position\"\n [attr.aria-describedby]=\"hint() === '' ? null : contentId + '-hint'\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown(position, $event)\"\n (focusin)=\"listFocused.set(true)\"\n (focusout)=\"onListFocusOut($event)\"\n (pointerleave)=\"hovered.set(null)\"\n >\n @for (option of lists()[position]; track $index) {\n <div\n data-part=\"option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(position, option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(position, option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex(position) ? '' : null\"\n [tabindex]=\"$index === highlightIndex(position) ? 0 : -1\"\n (click)=\"select(position, option, $event)\"\n (pointerenter)=\"hover(position, option)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(position, option, $index)\"\n />\n } @else {\n {{ labels()[position][$index] }}\n @if (durationOf(position, option); as duration) {\n <span data-part=\"option-duration\">{{ duration }}</span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <div data-part=\"footer\">\n <ng-content select=\"[slDateTimeRangePickerFooter]\" />\n <button data-part=\"done\" type=\"button\" (click)=\"done($event)\">\n {{ t('done') }}\n </button>\n </div>\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/datetime-range-picker/datetime-range-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'datetime-range-picker',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlDateTimeRangePicker implements ControlValueAccessor, Validator, OnInit {\n readonly value = input<DateTimeRange | null | undefined>(undefined);\n readonly defaultValue = input<DateTimeRange | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Present means the consumer owns which end is being edited. */\n readonly position = input<DateTimeRangePickerPosition | undefined>(undefined);\n readonly defaultPosition = input<DateTimeRangePickerPosition>('start');\n /** Where the reader is in each list. Present means the consumer owns it. */\n readonly highlighted = input<DateTimeRangePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<DateTimeRangePickerHighlight | undefined>(undefined);\n\n /** The whole-value bounds: where the range starts and ends. */\n readonly min = input<PlainDateTime | undefined>(undefined);\n readonly max = input<PlainDateTime | undefined>(undefined);\n /** The bounds of every day inside the range, applied together with the two above. */\n readonly minTime = input<PlainTime | undefined>(undefined);\n readonly maxTime = input<PlainTime | undefined>(undefined);\n /** Answers a whole day and feeds the grid. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n /** Answers one time on one day and feeds the lists. */\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n /**\n * Whether a run may cross an unavailable day. On, and with a start chosen,\n * the days beyond the first unavailable one are refused in the grid, and on\n * the same day the times beyond the first unavailable one in the end list.\n */\n readonly contiguous = input(true, { transform: booleanAttribute });\n /** The shortest and longest run allowed, in seconds. */\n readonly minLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly maxLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly lengthLabel = input<DateTimeRangePickerDefaults['lengthLabel'] | undefined>(undefined);\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** The times to offer, stated rather than stepped; the same list for both ends. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<DateTimeRangePickerUnavailableOptions | undefined>(undefined);\n\n readonly months = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly weekNumbers = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Six rows whatever the month needs, so a press of \"next\" moves no target. */\n readonly fixedWeeks = input(true, { transform: booleanAttribute });\n\n /** BCP 47. Unset, the language in force (`provideSlotted`) decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimeRangePickerHourCycle | undefined>(undefined);\n readonly granularity = input<DateTimeRangePickerDefaults['granularity'] | undefined>(undefined);\n readonly calendar = input<DateTimeRangePickerCalendar | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly yearPivot = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** What \"now\" is, for a story or a test; the clock otherwise. */\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimeRangePickerSize | undefined>(undefined);\n readonly variant = input<DateTimeRangePickerVariant | undefined>(undefined);\n readonly placement = input<DateTimeRangePickerPlacement | undefined>(undefined);\n readonly closeOnSelect = input<DateTimeRangePickerCloseOnSelect | undefined>(undefined);\n\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws one clear on the frame, which empties both ends. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether the two fields in the band take the relative expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's names, the two ends, the hint, the limit, and what a panel says\n * when it is empty or cut short.\n */\n readonly messages = input<PartialMessages<DatetimeRangePickerMessages> | undefined>(undefined);\n /** The names of the two hidden inputs a plain form post reads. */\n readonly startName = input<string | undefined>(undefined);\n readonly endName = input<string | undefined>(undefined);\n\n readonly valueChange = output<ChangeRequest<DateTimeRange | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly positionChange = output<ChangeRequest<DateTimeRangePickerPosition>>();\n readonly highlightedChange = output<ChangeRequest<DateTimeRangePickerHighlight>>();\n\n /** What one row draws; a template, because it is re-rendered once per option. */\n @ContentChild(SlDateTimeRangePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n /** Whether the lists were scrolled to their highlight since the surface opened. */\n private revealed = false;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('field') protected field?: SlDateTimeField;\n @ViewChild('fieldBox') protected fieldBox?: ElementRef<HTMLElement>;\n @ViewChild('calendar') protected calendarRef?: SlCalendar;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly defaults = injectDateTimeRangePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(datetimeRangePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-datetime-range-picker-${String((sequence += 1))}`;\n protected readonly positions: readonly DateTimeRangePickerPosition[] = ['start', 'end'];\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<DateTimeRange | null>(null);\n private readonly ownPosition = signal<DateTimeRangePickerPosition>('start');\n private readonly ownHighlight = signal<DateTimeRangePickerHighlight>(NO_HIGHLIGHT);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2026, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly view = signal<CalendarView>('day');\n /** The pending end the calendar reports, or `null` while no run is open. */\n protected readonly preview = signal<PlainDate | null>(null);\n /**\n * The day the grid has focused. The family holds it — rather than the\n * calendar alone — because a list of an end with no date runs on it.\n */\n protected readonly focusedDate = signal<PlainDate>({ year: 2026, month: 1, day: 1 });\n protected readonly positioned = signal(false);\n protected readonly sheet = signal(false);\n /**\n * The work: the two ends as the reader left them while the panel is open. A\n * press in a list writes it; the value is asked for when it is whole. Closed\n * by anything, it is rebuilt from the value on the next open.\n */\n protected readonly work = signal<Work>(EMPTY);\n protected readonly workStart = computed(() => wholeOf(this.work().start));\n protected readonly workEnd = computed(() => wholeOf(this.work().end));\n /** The option under the pointer, which enters the duration and nothing else. */\n protected readonly hovered = signal<{\n position: DateTimeRangePickerPosition;\n time: PlainTime;\n } | null>(null);\n /** Which list holds focus, so its highlight is the pending end. */\n protected readonly listFocused = signal(false);\n /** A pointer press before focus names the reason a field became current. */\n /** Where focus lands once the surface is drawn. */\n private focusOnOpen: 'field' | 'grid' | null = null;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private readonly typeaheads: Record<DateTimeRangePickerPosition, TypeaheadHandle | null> = {\n start: null,\n end: null,\n };\n\n private onChangeFn: (value: DateTimeRange | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => {\n const value = this.value();\n return value === undefined ? this.ownValue() : normalize(value);\n });\n /** The range the picker holds. Public, so a preset can compare itself to it. */\n readonly selection = computed(() => this.held());\n protected readonly currentPosition = computed(() => this.position() ?? this.ownPosition());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n protected readonly start = computed(() => this.held()?.start ?? null);\n protected readonly end = computed(() => this.held()?.end ?? null);\n protected readonly startIso = computed(() => {\n const start = this.start();\n return start === null ? '' : toISODateTime(start);\n });\n protected readonly endIso = computed(() => {\n const end = this.end();\n return end === null ? '' : toISODateTime(end);\n });\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n protected readonly resolvedFirstDayOfWeek = computed(\n () => this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek,\n );\n protected readonly resolvedMonths = computed(() => this.months() ?? this.defaults.months);\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() =>\n createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n ...(this.resolvedFirstDayOfWeek() === undefined\n ? {}\n : { firstDayOfWeek: this.resolvedFirstDayOfWeek() }),\n ...(this.yearPivot() === undefined ? {} : { yearPivot: this.yearPivot() }),\n }),\n );\n /* A time alone in a tab — the reader chose an hour before a day. */\n private readonly timeFormat = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n }),\n );\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n private readonly bounds = computed(() => ({\n max: this.max(),\n maxTime: this.maxTime(),\n min: this.min(),\n minTime: this.minTime(),\n }));\n private readonly lengthOf = computed(() => {\n const label = this.lengthLabel() ?? this.defaults.lengthLabel;\n const locale = this.resolvedLocale();\n return (seconds: number) => label(seconds, locale);\n });\n\n /**\n * Validity the family owns, beside the validity the consumer states: the\n * bounds, the predicate, the order of the two ends and the duration.\n */\n private readonly problems = computed(() =>\n dateTimeRangeProblems(this.held(), {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n }),\n );\n protected readonly reversed = computed(() => this.problems().includes('order'));\n protected readonly resolvedInvalid = computed(() => {\n if (this.invalid() !== undefined) return this.invalid();\n if (this.problems().length > 0) return true;\n return this.enclosing?.invalid();\n });\n\n /* Crossed bounds, while the order holds. Reversed, each field keeps the\n outer bounds and the end field alone says the order is wrong. */\n private readonly workOrdered = computed(() => {\n const start = this.workStart();\n const end = this.workEnd();\n return start !== null && end !== null && compareDateTime(start, end) <= 0;\n });\n protected readonly startMax = computed(() => {\n const end = this.workEnd();\n const max = this.max();\n if (!this.workOrdered() || end === null) return max;\n return max === undefined || compareDateTime(end, max) < 0 ? end : max;\n });\n protected readonly endMin = computed(() => {\n const start = this.workStart();\n const min = this.min();\n if (!this.workOrdered() || start === null) return min;\n return min === undefined || compareDateTime(start, min) > 0 ? start : min;\n });\n\n /* ── The grid ──────────────────────────────────────────────────────── */\n\n /**\n * What the calendar is shown: the two dates of the work, with the end\n * withheld while the end is the current position so the next press writes\n * it instead of restarting the run — `date-range-picker`'s rule.\n */\n protected readonly calendarValue = computed<CalendarValue>(() => {\n const { start, end } = this.work();\n if (start.date === null) return null;\n if (this.currentPosition() === 'end' && end.date !== null) {\n return { start: start.date, end: null };\n }\n return { start: start.date, end: end.date };\n });\n private readonly openStart = computed(() => {\n const value = this.calendarValue();\n if (value === null || Array.isArray(value) || !('start' in value)) return null;\n return value.end === null ? value.start : null;\n });\n private readonly blocked = computed(() => {\n const openStart = this.openStart();\n if (openStart === null || !this.contiguous()) return { before: null, after: null };\n const maxLength = this.maxLength();\n return blockedAround(\n openStart,\n this.isDateUnavailable() ?? (() => false),\n maxLength === undefined ? CONTIGUOUS_SEARCH : Math.ceil(maxLength / 86_400) + 1,\n );\n });\n protected readonly gridUnavailable = computed(() => {\n const bounds = this.bounds();\n const openStart = this.openStart();\n const unavailable = this.isDateUnavailable();\n const rules = { contiguous: this.contiguous(), count: 'days' as const, unavailable };\n const blocked = this.blocked();\n return (date: PlainDate) => {\n if (dayWindow(date, bounds) === null) return true;\n if (openStart === null) return unavailable?.(date) === true;\n return isDateRefusedInRun(openStart, date, rules, blocked);\n };\n });\n\n /** The day each list serves: the date of its end, or the grid's focused day. */\n protected dayFor(position: DateTimeRangePickerPosition): PlainDate {\n return this.work()[position].date ?? this.focusedDate();\n }\n\n protected isEmptyHalf(position: DateTimeRangePickerPosition): boolean {\n const half = this.work()[position];\n return half.date === null && half.time === null;\n }\n\n /** The end written short in the tab — a whole, a day alone, a time alone — or a dash. */\n protected tabValue(position: DateTimeRangePickerPosition): string {\n const half = this.work()[position];\n const whole = wholeOf(half);\n if (whole !== null) return this.writeShort(whole);\n if (half.date !== null) return this.format().describeDate(half.date, 'short');\n if (half.time !== null) return this.timeFormat().format(half.time);\n return '—';\n }\n\n /** The problems of the work as it stands, once it is whole. */\n private readonly workProblems = computed(() => {\n const whole = rangeOf(this.work());\n if (whole?.start == null || whole.end === null) return [];\n return dateTimeRangeProblems(whole, {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n });\n });\n protected readonly workReversed = computed(() => this.workProblems().includes('order'));\n protected readonly hintProblem = computed(() => this.workProblems()[0]);\n\n /**\n * What the next press should be, or what is wrong: the difference between a\n * panel that refuses and a panel that explains. Empty while the work is\n * whole and valid, when the length says the duration.\n */\n protected readonly hint = computed(() => {\n const position = this.currentPosition();\n const half = this.work()[position];\n if (half.date === null) return this.t('chooseDay', { end: this.labelFor(position) });\n if (half.time === null) {\n return this.t('chooseTime', {\n end: this.labelFor(position),\n day: this.format().describeDate(half.date, 'short'),\n });\n }\n const problem = this.hintProblem();\n if (problem === undefined) return '';\n return this.t(problem === 'min' || problem === 'max' ? 'bounds' : problem);\n });\n\n /* ── The two lists ─────────────────────────────────────────────────── */\n\n protected readonly truncated = computed(() =>\n isTruncated({\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n }),\n );\n\n /**\n * The list of one end: the day's window from both pairs of bounds, the\n * predicate on that day, and — on the same day as the other end — what the\n * other end of the work refuses. The duration limits apply across days.\n */\n protected readonly lists = computed<Record<DateTimeRangePickerPosition, TimeOption[]>>(() => ({\n start: this.listFor('start'),\n end: this.listFor('end'),\n }));\n protected readonly labels = computed<Record<DateTimeRangePickerPosition, string[]>>(() => {\n const format = this.format().time;\n const lists = this.lists();\n return {\n start: lists.start.map((option) => format.format(option.time)),\n end: lists.end.map((option) => format.format(option.time)),\n };\n });\n\n private listFor(position: DateTimeRangePickerPosition): TimeOption[] {\n const day = this.dayFor(position);\n const window = dayWindow(day, this.bounds());\n if (window === null || this.isDateUnavailable()?.(day) === true) return [];\n const isTimeUnavailable = this.isTimeUnavailable();\n const base = timeList({\n isTimeUnavailable:\n isTimeUnavailable === undefined ? undefined : (time) => isTimeUnavailable(time, day),\n max: window.latest,\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: window.earliest,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n });\n const otherEnd = wholeOf(this.work()[other(position)]);\n let refused: (option: TimeOption, index: number) => boolean = () => false;\n if (otherEnd !== null) {\n const direction: 1 | -1 = position === 'end' ? 1 : -1;\n const sameDay = isSameDate(day, otherEnd.date);\n const wall =\n sameDay && this.contiguous()\n ? firstUnavailableIndex(base, nearestIndex(base, otherEnd.time), direction)\n : -1;\n const rules = { maxLength: this.maxLength(), minLength: this.minLength() };\n refused = (option, index) => {\n const candidate = { date: day, time: option.time };\n const seconds =\n position === 'end'\n ? dateTimeRangeSeconds(otherEnd, candidate)\n : dateTimeRangeSeconds(candidate, otherEnd);\n if (runRefusal(0, seconds, 1, rules)) return true;\n return sameDay && wall >= 0 && (direction === 1 ? index >= wall : index <= wall);\n };\n }\n const marked = base.map((option, index) =>\n option.unavailable || !refused(option, index) ? option : { ...option, unavailable: true },\n );\n const hide = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hide ? marked.filter((option) => !option.unavailable) : marked;\n }\n\n protected highlightIndex(position: DateTimeRangePickerPosition): number {\n const time = this.highlight()[position];\n if (time === null) return -1;\n return this.lists()[position].findIndex((option) => isSameTime(option.time, time));\n }\n\n protected isSelected(position: DateTimeRangePickerPosition, option: TimeOption): boolean {\n return isSameTime(option.time, this.work()[position].time);\n }\n\n /** The name of one end: the field's, its tab's and the hint's `{end}`. */\n protected labelFor(position: DateTimeRangePickerPosition): string {\n return this.t(position);\n }\n\n /** The duration a row would make with the other end, on the same day only. */\n protected durationOf(position: DateTimeRangePickerPosition, option: TimeOption): string | null {\n const otherEnd = wholeOf(this.work()[other(position)]);\n const day = this.dayFor(position);\n if (otherEnd === null || option.unavailable || !isSameDate(day, otherEnd.date)) return null;\n const candidate = { date: day, time: option.time };\n const seconds =\n position === 'end'\n ? dateTimeRangeSeconds(otherEnd, candidate)\n : dateTimeRangeSeconds(candidate, otherEnd);\n return this.lengthOf()(seconds);\n }\n\n protected contextFor(position: DateTimeRangePickerPosition, option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(position),\n date: this.dayFor(position),\n duration: this.durationOf(position, option),\n label: this.labels()[position][index] ?? '',\n position,\n selected: this.isSelected(position, option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── What is said ──────────────────────────────────────────────────── */\n\n /**\n * The pending end: the option under the pointer, or the highlighted option\n * of the list that has focus.\n */\n private readonly pendingTime = computed(() => {\n const hovered = this.hovered();\n if (hovered !== null) return hovered;\n if (!this.listFocused()) return null;\n const position = this.currentPosition();\n const time = this.highlight()[position];\n return time === null ? null : { position, time };\n });\n /** The pending run: a time under the pointer or highlighted, or the grid's pending day. */\n protected readonly pending = computed<Work | null>(() => {\n const time = this.pendingTime();\n const work = this.work();\n if (time !== null) {\n return { ...work, [time.position]: { date: this.dayFor(time.position), time: time.time } };\n }\n const openStart = this.openStart();\n const preview = this.preview();\n if (openStart === null || preview === null) return null;\n /* A pending day enters with the time that end already holds, or midnight. */\n const run = orderedRun(openStart, preview);\n return {\n start: { date: run.start, time: work.start.time ?? MIDNIGHT },\n end: { date: run.end, time: work.end.time ?? MIDNIGHT },\n };\n });\n protected readonly spokenLength = computed(() => {\n const run = this.pending() ?? this.work();\n const start = wholeOf(run.start);\n const end = wholeOf(run.end);\n if (start === null || end === null || compareDateTime(start, end) > 0) return '';\n return this.lengthOf()(dateTimeRangeSeconds(start, end));\n });\n protected readonly limitText = computed(() => {\n const min = this.minLength();\n const max = this.maxLength();\n const length = this.lengthOf();\n if (min !== undefined && max !== undefined) {\n return this.t('limit.between', { min: length(min), max: length(max) });\n }\n if (min !== undefined) return this.t('limit.atLeast', { min: length(min) });\n if (max !== undefined) return this.t('limit.atMost', { max: length(max) });\n return null;\n });\n\n /** The trigger's accessible name: focus returns here when the surface closes. */\n protected readonly triggerLabel = computed(() => {\n const start = this.start();\n const end = this.end();\n if (start === null || end === null) return this.t('choose');\n const format = this.format();\n const ends = { start: format.describe(start), end: format.describe(end) };\n return compareDateTime(start, end) <= 0\n ? this.t('change', { ...ends, length: this.lengthOf()(dateTimeRangeSeconds(start, end)) })\n : this.t('changeReversed', ends);\n });\n /* The frame writes each end short — \"12 Sep, 14:00\" — because the whole\n value in words is the trigger's. */\n private readonly short = computed(\n () =>\n new Intl.DateTimeFormat(this.resolvedLocale(), {\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n month: 'short',\n timeZone: 'UTC',\n ...(this.resolvedHourCycle() === undefined\n ? {}\n : { hour12: this.resolvedHourCycle() === 12 }),\n }),\n );\n private writeShort(item: PlainDateTime): string {\n return this.short().format(\n Date.UTC(\n item.date.year,\n item.date.month - 1,\n item.date.day,\n item.time.hour,\n item.time.minute,\n ),\n );\n }\n /** The value in words, one line; `null` while nothing is chosen. */\n protected readonly summary = computed(() => {\n if (this.held() === null) return null;\n const start = this.start();\n const end = this.end();\n return `${start === null ? '' : this.writeShort(start)} – ${end === null ? '' : this.writeShort(end)}`.trim();\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. The work starts from the value\n every time the panel opens. */\n effect(() => {\n const open = this.isOpen();\n if (!open) {\n this.release();\n return;\n }\n /* Read untracked: the work is rebuilt when the panel opens, and not\n again when the value or the position moves while it is open. */\n untracked(() => {\n const held = this.held();\n this.work.set(workOf(held));\n this.hovered.set(null);\n this.preview.set(null);\n const missing: DateTimeRangePickerPosition | null =\n held?.start == null ? 'start' : held.end === null ? 'end' : null;\n if (missing !== null && missing !== this.currentPosition()) {\n this.setPosition(missing, 'programmatic', undefined);\n }\n const position = this.currentPosition();\n this.focusedDate.set(\n (position === 'end' ? held?.end?.date : held?.start?.date) ?? this.anchor().date,\n );\n });\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The highlight of each list lands where the list opens, and follows the\n lists under it. */\n effect(() => {\n if (!this.isOpen()) return;\n const lists = this.lists();\n const current = this.highlight();\n const next = { ...current };\n for (const position of this.positions) {\n const index = this.openingIndex(position);\n next[position] = index < 0 ? null : (lists[position][index]?.time ?? null);\n }\n if (!isSameTime(next.start, current.start) || !isSameTime(next.end, current.end)) {\n this.setHighlight(next, 'programmatic', undefined);\n }\n });\n\n /* The lists open on their highlight once the layer is rendered, and follow\n it while the lists under it change. */\n effect(() => {\n if (!this.isOpen()) {\n this.revealed = false;\n return;\n }\n this.highlight();\n this.lists();\n this.currentPosition();\n afterNextRender(\n () => {\n this.revealHighlights(!this.revealed);\n this.revealed = true;\n },\n { injector: this.injector },\n );\n });\n\n /* A rule that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.problems();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(normalize(this.defaultValue()));\n this.ownPosition.set(this.defaultPosition());\n this.ownHighlight.set(this.defaultHighlighted() ?? NO_HIGHLIGHT);\n this.clock.set(nowDateTimeIn(this.resolvedTimeZone()));\n this.focusedDate.set(this.clock().date);\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /* ── Forms ─────────────────────────────────────────────────────────── */\n\n writeValue(value: DateTimeRange | null | undefined) {\n this.ownValue.set(normalize(value));\n }\n\n registerOnChange(fn: (value: DateTimeRange | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see: the bounds, the predicate, the\n * order of the two ends and the duration. `required` is left to Angular's\n * own, because a form already has a word for it.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = normalize(control.value as DateTimeRange | null | undefined);\n if (value === null) return null;\n const problems = dateTimeRangeProblems(value, {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n });\n if (problems.length === 0) return null;\n const errors: ValidationErrors = {};\n if (problems.includes('order')) errors['slottedDateTimeRangeOrder'] = { actual: value };\n if (problems.includes('min'))\n errors['slottedDateTimeRangeMin'] = { min: this.min(), actual: value };\n if (problems.includes('max'))\n errors['slottedDateTimeRangeMax'] = { max: this.max(), actual: value };\n if (problems.includes('unavailable'))\n errors['slottedDateTimeRangeUnavailable'] = { actual: value };\n if (problems.includes('length')) {\n errors['slottedDateTimeRangeLength'] = {\n minLength: this.minLength(),\n maxLength: this.maxLength(),\n actual: value,\n };\n }\n return errors;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus on the trigger, which is the frame. */\n focus() {\n this.triggerRef?.nativeElement.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'programmatic', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'programmatic', source);\n }\n\n /** A preset writes its range through here, with the `select` reason. */\n choose(range: DateTimeRange, source?: Event) {\n this.work.set(workOf(range));\n this.commit(range, 'select', source);\n this.setPosition('start', 'select', source);\n this.closeAfter(true, source);\n }\n\n /* ── Handlers ──────────────────────────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n protected clear(source: Event) {\n this.work.set(EMPTY);\n this.commit(null, 'clear', source);\n this.setPosition('start', 'clear', source);\n this.focus();\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into PageDown before the browser sees it, which\n is why the trigger is the guaranteed way in and the chord a shortcut. */\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusOnOpen = 'grid';\n if (!this.isOpen()) this.setOpen(true, 'keyboard', event);\n else this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'keyboard', event);\n }\n }\n\n protected selectTab(position: DateTimeRangePickerPosition, source: Event) {\n if (position !== this.currentPosition()) this.setPosition(position, 'pointer', source);\n }\n\n /** Automatic activation: the arrow moves the position with it. */\n protected onTabKeyDown(event: KeyboardEvent) {\n const next: DateTimeRangePickerPosition | null =\n event.key === 'ArrowRight' || event.key === 'End'\n ? 'end'\n : event.key === 'ArrowLeft' || event.key === 'Home'\n ? 'start'\n : null;\n if (next === null) return;\n event.preventDefault();\n if (next !== this.currentPosition()) this.setPosition(next, 'keyboard', event);\n this.layer?.nativeElement\n .querySelector<HTMLElement>(`[data-part=\"tab\"][data-position=\"${next}\"]`)\n ?.focus({ preventScroll: true });\n }\n\n /**\n * The way out of a sheet that fills the screen, and of an edit left half\n * way: a whole work is the value; a half alone stays as it is.\n */\n protected done(source: Event) {\n const whole = rangeOf(this.work());\n if (whole?.start != null && whole.end !== null && !isSameDateTimeRange(whole, this.held())) {\n this.commit(whole, 'select', source);\n }\n this.setOpen(false, 'pointer', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected onListFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && (event.currentTarget as HTMLElement).contains(next)) return;\n this.listFocused.set(false);\n }\n\n protected hover(position: DateTimeRangePickerPosition, option: TimeOption) {\n this.hovered.set(option.unavailable ? null : { position, time: option.time });\n }\n\n /**\n * A field in the band writes its end to the work at every request it emits,\n * with the field's own reason, and an open end is a value on its own.\n */\n protected onFieldValue(request: DateTimeFieldChangeRequest) {\n const next: Work = { ...this.work(), [this.currentPosition()]: halfOf(request.value) };\n this.work.set(next);\n this.commit(\n { start: wholeOf(next.start), end: wholeOf(next.end) },\n request.reason,\n request.source,\n );\n }\n\n protected chooseNow(source: Event) {\n if (!this.editable()) return;\n const before = this.work();\n const position = this.currentPosition();\n this.settle({ ...before, [position]: halfOf(this.anchor()) }, before, position, source);\n }\n\n protected select(position: DateTimeRangePickerPosition, option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n const before = this.work();\n const half: Half = { date: before[position].date ?? this.dayFor(position), time: option.time };\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'pointer', source);\n this.settle({ ...before, [position]: half }, before, position, source);\n }\n\n protected onCalendarValue(request: ChangeRequest<CalendarValue>) {\n const next = request.value;\n if (next === null || Array.isArray(next) || !('start' in next)) return;\n const before = this.work();\n if (next.end === null) {\n /* The first press: the run restarts on this start; the end's date is\n withheld and its time kept. */\n this.settle(\n { start: { ...before.start, date: next.start }, end: { ...before.end, date: null } },\n before,\n 'start',\n request.source,\n );\n return;\n }\n /* The second press: the grid ordered the two dates; the times stay with\n the end they were on. */\n this.settle(\n { start: { ...before.start, date: next.start }, end: { ...before.end, date: next.end } },\n before,\n 'end',\n request.source,\n );\n }\n\n /**\n * After a press wrote a half: whole, the work is the value and the panel\n * closes when the press completed it; incomplete, focus carries to the half\n * that is missing — this end's first, then the other end's.\n */\n private settle(next: Work, before: Work, pressed: DateTimeRangePickerPosition, source: unknown) {\n const wasWhole = wholeOf(before.start) !== null && wholeOf(before.end) !== null;\n this.work.set(next);\n if (wholeOf(next.start) !== null && wholeOf(next.end) !== null) {\n this.commit(rangeOf(next), 'select', source);\n this.setPosition(pressed, 'select', source);\n this.closeAfter(!wasWhole, source);\n return;\n }\n for (const position of [pressed, other(pressed)]) {\n const half = next[position];\n if (half.date !== null && half.time !== null) continue;\n if (half.date === null) {\n this.setPosition(position, 'select', source);\n this.enterGrid(next[other(position)].date);\n } else {\n this.enterList(position, source);\n }\n return;\n }\n }\n\n private enterGrid(date: PlainDate | null) {\n afterNextRender(\n () => {\n if (date !== null) this.calendarRef?.focusDate(date);\n this.calendarRef?.focus();\n },\n { injector: this.injector },\n );\n }\n\n private closeAfter(completed: boolean, source: unknown) {\n const axis = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n if (!(axis === 'always' || (axis === 'auto' && completed))) return;\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n /** Where a list opens: on its end, on the nearest step to now, or on the first available option. */\n private openingIndex(position: DateTimeRangePickerPosition): number {\n const work = this.work();\n const across = work[other(position)];\n const otherEnd =\n across.date !== null && across.time !== null && isSameDate(across.date, this.dayFor(position))\n ? across.time\n : null;\n return openingIndexOf(\n this.lists()[position],\n work[position].time ?? otherEnd ?? this.anchor().time,\n otherEnd,\n position,\n );\n }\n\n /**\n * Into the list of one end: the tab moves there when it is not the current\n * one, and focus lands on its highlight after the render that drew it.\n */\n private enterList(position: DateTimeRangePickerPosition, source?: unknown) {\n if (position !== this.currentPosition()) this.setPosition(position, 'select', source);\n afterNextRender(\n () => {\n const at = this.highlightIndex(position);\n const index = at >= 0 ? at : this.openingIndex(position);\n if (index < 0) {\n this.field?.focus();\n return;\n }\n const option = this.lists()[position][index];\n if (option !== undefined) {\n this.setHighlight(\n { ...this.highlight(), [position]: option.time },\n 'keyboard',\n undefined,\n );\n }\n this.focusOption(position, index);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(position: DateTimeRangePickerPosition, index: number) {\n const rows = this.layer?.nativeElement.querySelectorAll<HTMLElement>(\n `[data-part=\"panel\"][data-position=\"${position}\"] [data-part=\"option\"]`,\n );\n const row = rows?.[index];\n row?.focus();\n const list = row?.closest<HTMLElement>('[data-part=\"list\"]');\n if (row !== undefined && list) revealRow(list, row, false);\n }\n\n /** The list scrolled to its highlight: centred as the surface opens, by the least after. */\n private revealHighlights(centre: boolean) {\n const index = this.highlightIndex(this.currentPosition());\n if (index < 0) return;\n const list = this.layer?.nativeElement.querySelector<HTMLElement>('[data-part=\"list\"]');\n const row = list?.querySelectorAll<HTMLElement>('[data-part=\"option\"]')[index];\n if (list && row !== undefined) revealRow(list, row, centre);\n }\n\n /** The field, or the grid where the field is not drawn (a coarse pointer). */\n private focusField() {\n const box = this.fieldBox?.nativeElement;\n if (box !== undefined && getComputedStyle(box).display === 'none') {\n this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n return;\n }\n this.field?.focus();\n }\n\n /* ── The keyboard ──────────────────────────────────────────────────── */\n\n protected onListKeyDown(position: DateTimeRangePickerPosition, event: KeyboardEvent) {\n const list = this.lists()[position];\n const found = this.highlightIndex(position);\n const at = found >= 0 ? found : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'keyboard', event);\n this.focusOption(position, clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.select(position, option, event);\n return;\n }\n default:\n break;\n }\n\n const typeahead = this.typeaheads[position];\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found2 = typeahead.match(event.key, this.labels()[position], at);\n if (found2 < 0) return;\n move(found2);\n }\n\n /* ── The machinery ─────────────────────────────────────────────────── */\n\n private commit(next: DateTimeRange | null, reason: ChangeReason, source: unknown) {\n const normalized = normalize(next);\n let cancelled = false;\n const state = createControllable<DateTimeRange | null>({\n controlled: this.value() === undefined ? undefined : this.held(),\n initial: this.held(),\n equals: isSameDateTimeRange,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(normalized, reason, source) || cancelled) return;\n if (this.value() === undefined) this.ownValue.set(normalized);\n this.onChangeFn(normalized);\n }\n\n private setPosition(next: DateTimeRangePickerPosition, reason: ChangeReason, source: unknown) {\n const state = createControllable<DateTimeRangePickerPosition>({\n controlled: this.position(),\n initial: this.currentPosition(),\n onRequest: (request) => this.positionChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownPosition.set(next);\n }\n\n private setHighlight(next: DateTimeRangePickerHighlight, reason: ChangeReason, source: unknown) {\n const state = createControllable<DateTimeRangePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameTime(a.start, b.start) && isSameTime(a.end, b.end),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: ChangeReason, source: unknown) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => this.openChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n void this.positioner.update().then(() => this.positioned.set(true));\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n /* A field with an expression open takes Escape first: the layer asks\n in the capture phase, so the field's own attribute is what says so. */\n if (request.reason === 'escape') {\n if (layer.querySelector('[data-ui=\"datetime-field\"][data-relative]') !== null) return;\n if (this.view() !== 'day') {\n this.view.set(this.view() === 'year' ? 'month' : 'day');\n return;\n }\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n\n for (const position of this.positions) {\n this.typeaheads[position] = createTypeahead({ locale: () => this.resolvedLocale() });\n }\n\n /* Opened by Enter, Space or a press, focus lands on the first segment of\n the current end's field; by an arrow, in that end's list. */\n const where = this.focusOnOpen;\n this.focusOnOpen = null;\n if (where === 'grid') {\n this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n } else if (where === 'field') {\n this.focusField();\n }\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n for (const position of this.positions) {\n this.typeaheads[position]?.destroy();\n this.typeaheads[position] = null;\n }\n this.positioned.set(false);\n }\n}\n\n/**\n * One shortcut. It writes its range with the `select` reason and carries\n * `data-selected` while the value equals it. The list is the product's — \"the\n * morning shift\" is a business clock — and the family ships the button, not\n * the list.\n */\n@Directive({\n selector: 'button[slDateTimeRangePickerPreset]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerPreset',\n host: {\n 'data-part': 'preset',\n type: 'button',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '(click)': 'choose($event)',\n },\n})\nexport class SlDateTimeRangePickerPreset {\n /** The range the press writes, or a function resolving it at the press. */\n readonly range = input.required<DateTimeRange | (() => DateTimeRange)>({\n alias: 'slDateTimeRangePickerPreset',\n });\n\n private readonly picker = inject(SlDateTimeRangePicker);\n\n protected readonly selected = computed(() => {\n const range = this.range();\n return isSameDateTimeRange(\n this.picker.selection(),\n typeof range === 'function' ? range() : range,\n );\n });\n\n protected choose(event: Event) {\n if (event.defaultPrevented) return;\n const range = this.range();\n this.picker.choose(typeof range === 'function' ? range() : range, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["openingIndexOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-datetime-range-picker.mjs","sources":["../../datetime-range-picker/src/datetime-range-picker-defaults.ts","../../datetime-range-picker/src/datetime-range-picker-parts.ts","../../datetime-range-picker/src/datetime-range-picker.ts","../../datetime-range-picker/src/slotted-angular-datetime-range-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { durationLabel } from '@slotted/core/date';\nimport type { DateTimeRangeValue, PlainTime, TimeGranularity } from '@slotted/core/date';\n\n/** A run of datetimes, either end of which may be open. */\nexport type DateTimeRange = DateTimeRangeValue;\n\n/** Where the surface opens, before the positioner has read the room. */\nexport type DateTimeRangePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * Whether choosing closes the surface. `auto` closes when the work becomes\n * whole — by a press in a list, by `now` or by a preset — and stays open\n * while an end is still missing, because the next press has to reach the\n * same surface.\n */\nexport type DateTimeRangePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** What a time a bound or the predicate refuses looks like in a list. */\nexport type DateTimeRangePickerUnavailableOptions = 'disable' | 'hide';\n\nexport type DateTimeRangePickerSize = 'sm' | 'md' | 'lg';\nexport type DateTimeRangePickerVariant = 'outline' | 'subtle' | 'plain';\nexport type DateTimeRangePickerHourCycle = 12 | 24;\nexport type DateTimeRangePickerCalendar = 'gregory';\n\n/** The end being edited: the field and the panel carrying `data-current`. */\nexport type DateTimeRangePickerPosition = 'start' | 'end';\n\n/** The highlighted option of each list. */\nexport interface DateTimeRangePickerHighlight {\n readonly start: PlainTime | null;\n readonly end: PlainTime | null;\n}\n\n/** A quarter of an hour, the step every surveyed panel defaults to within a factor of two. */\nexport const DATETIME_RANGE_PICKER_STEP = 900;\n/** A whole day at a one-minute step: the finest whole-day list any surveyed implementation offers. */\nexport const DATETIME_RANGE_PICKER_MAX_OPTIONS = 1440;\n/** One month: two lists stand beside the grid, and two months beside two lists do not fit in 720 pixels. */\nexport const DATETIME_RANGE_PICKER_MONTHS = 1;\n\n/** \"3 days 21 hr\": the duration the band and the rows say, in the family's locale. */\nexport function dateTimeRangePickerLengthLabel(seconds: number, locale?: string): string {\n return durationLabel(seconds, locale);\n}\n\nexport interface DateTimeRangePickerDefaults {\n calendar: DateTimeRangePickerCalendar;\n closeOnSelect: DateTimeRangePickerCloseOnSelect;\n firstDayOfWeek: number | undefined;\n granularity: TimeGranularity;\n hourCycle: DateTimeRangePickerHourCycle | undefined;\n /** \"2 hr 30 min\", in the product's own words; seconds in, and the family's locale. */\n lengthLabel: (seconds: number, locale: string | undefined) => string;\n maxOptions: number;\n months: number;\n placement: DateTimeRangePickerPlacement;\n size: DateTimeRangePickerSize;\n step: number;\n timeZone: string | undefined;\n unavailableOptions: DateTimeRangePickerUnavailableOptions;\n variant: DateTimeRangePickerVariant;\n}\n\nconst FALLBACK: DateTimeRangePickerDefaults = {\n calendar: 'gregory',\n closeOnSelect: 'auto',\n firstDayOfWeek: undefined,\n granularity: 'minute',\n hourCycle: undefined,\n lengthLabel: dateTimeRangePickerLengthLabel,\n maxOptions: DATETIME_RANGE_PICKER_MAX_OPTIONS,\n months: DATETIME_RANGE_PICKER_MONTHS,\n placement: 'bottom-start',\n size: 'md',\n step: DATETIME_RANGE_PICKER_STEP,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const DATETIME_RANGE_PICKER_DEFAULTS = new InjectionToken<DateTimeRangePickerDefaults>(\n 'slotted datetime range picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, what step its lists\n * offer and how a duration is written — rather than repeating the same inputs\n * on every picker in a form. The locale and the words come from the language\n * in force (`provideSlotted`).\n */\nexport function provideDateTimeRangePickerDefaults(defaults: Partial<DateTimeRangePickerDefaults>) {\n return {\n provide: DATETIME_RANGE_PICKER_DEFAULTS,\n useFactory: (): DateTimeRangePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime range picker renders as here, before it states anything of its own. */\nexport function injectDateTimeRangePickerDefaults(): DateTimeRangePickerDefaults {\n return inject(DATETIME_RANGE_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The consumer's own shortcuts, beside the grid and the two lists where there is room\n * and above them where there is not. Each one is a `slDateTimeRangePickerPreset` button.\n */\n@Directive({\n selector: '[slDateTimeRangePickerPresets]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerPresets',\n host: { 'data-part': 'presets' },\n})\nexport class SlDateTimeRangePickerPresets {}\n\n/** The consumer's own actions, under the grid and the two lists. */\n@Directive({\n selector: '[slDateTimeRangePickerFooter]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlDateTimeRangePickerFooter {}\n\n/**\n * What one row of a list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option. The\n * context carries the time as `$implicit`, plus `position`, `date`, `label`,\n * `duration`, `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slDateTimeRangePickerOption]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerOption',\n})\nexport class SlDateTimeRangePickerOption {}\n","import {\n blockedAround,\n compareDateTime,\n createDateTimeFormat,\n createTimeFormat,\n dateTimeRangeProblems,\n dateTimeRangeSeconds,\n dayWindow,\n firstUnavailableIndex,\n hourJump,\n isDateRefusedInRun,\n isSameDate,\n isSameTime,\n isTruncated,\n nearestIndex,\n openingIndex as openingIndexOf,\n nowDateTimeIn,\n orderedRun,\n runRefusal,\n timeList,\n toISODateTime,\n} from '@slotted/core/date';\nimport type { PlainDate, PlainDateTime, PlainTime, TimeOption } from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport {\n datetimeRangePickerMessages,\n type DatetimeRangePickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlCalendar } from '@slotted/angular/calendar';\nimport type { CalendarValue, CalendarView } from '@slotted/angular/calendar';\nimport { SlDateTimeField } from '@slotted/angular/datetime-field';\nimport type { DateTimeFieldChangeRequest } from '@slotted/angular/datetime-field';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimeRangePickerDefaults } from './datetime-range-picker-defaults';\nimport type {\n DateTimeRange,\n DateTimeRangePickerCalendar,\n DateTimeRangePickerCloseOnSelect,\n DateTimeRangePickerDefaults,\n DateTimeRangePickerHighlight,\n DateTimeRangePickerHourCycle,\n DateTimeRangePickerPlacement,\n DateTimeRangePickerPosition,\n DateTimeRangePickerSize,\n DateTimeRangePickerUnavailableOptions,\n DateTimeRangePickerVariant,\n} from './datetime-range-picker-defaults';\nimport { SlDateTimeRangePickerOption } from './datetime-range-picker-parts';\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * The query is here as well as in the stylesheet because the DOM has to say\n * which presentation it is in, and a media query cannot write an attribute.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\n/** One end of the work: its two halves, each of which may still be missing. */\ninterface Half {\n readonly date: PlainDate | null;\n readonly time: PlainTime | null;\n}\ninterface Work {\n readonly start: Half;\n readonly end: Half;\n}\n\nconst NO_HALF: Half = { date: null, time: null };\nconst EMPTY: Work = { start: NO_HALF, end: NO_HALF };\nconst MIDNIGHT: PlainTime = { hour: 0, minute: 0, second: 0 };\n/** How far `contiguous` looks for an unavailable day when no `maxLength` bounds it. */\nconst CONTIGUOUS_SEARCH = 366;\nconst NO_HIGHLIGHT: DateTimeRangePickerHighlight = { start: null, end: null };\n\n/** The one word for nothing: a value whose both ends are `null` is `null`. */\nfunction normalize(range: DateTimeRange | null | undefined): DateTimeRange | null {\n return range === null || range === undefined || (range.start === null && range.end === null)\n ? null\n : range;\n}\n\nfunction isSameDateTime(a: PlainDateTime | null, b: PlainDateTime | null): boolean {\n if (a === null || b === null) return a === b;\n return compareDateTime(a, b) === 0;\n}\n\nexport function isSameDateTimeRange(a: DateTimeRange | null, b: DateTimeRange | null): boolean {\n if (a === null || b === null) return a === b;\n return isSameDateTime(a.start, b.start) && isSameDateTime(a.end, b.end);\n}\n\n/**\n * Scrolls the list alone. `scrollIntoView` would scroll every ancestor too,\n * and a page with an open surface must not jump when a list opens on its\n * highlight. Centred when the list opens, and by the least that lands the row\n * whole when a key moves the highlight. jsdom measures nothing, so it is a\n * no-op there rather than a throw.\n */\nfunction revealRow(list: HTMLElement, row: HTMLElement, centre: boolean) {\n const box = list.getBoundingClientRect();\n const cell = row.getBoundingClientRect();\n if (box.height === 0 || cell.height === 0) return;\n const above = cell.top - box.top;\n if (centre) list.scrollTop += above - (box.height - cell.height) / 2;\n else if (above < 0) list.scrollTop += above;\n else if (cell.bottom > box.bottom) list.scrollTop += cell.bottom - box.bottom;\n}\n\nfunction other(position: DateTimeRangePickerPosition): DateTimeRangePickerPosition {\n return position === 'start' ? 'end' : 'start';\n}\n\nfunction halfOf(value: PlainDateTime | null): Half {\n return value === null ? NO_HALF : { date: value.date, time: value.time };\n}\n\nfunction wholeOf(half: Half): PlainDateTime | null {\n return half.date === null || half.time === null ? null : { date: half.date, time: half.time };\n}\n\nfunction workOf(range: DateTimeRange | null): Work {\n return range === null ? EMPTY : { start: halfOf(range.start), end: halfOf(range.end) };\n}\n\nfunction rangeOf(work: Work): DateTimeRange | null {\n return normalize({ start: wholeOf(work.start), end: wholeOf(work.end) });\n}\n\n/**\n * A one-line frame — the value in words, a clear and the trigger — and behind\n * it one end at a time: two tabs, the field of the current end, a hint, the\n * range calendar and the list of that end.\n *\n * **The frame is one line at any width**, for the reason `time-range-picker`\n * records. The field lives in the panel's band, where the reader types.\n *\n * **One calendar for the two dates, and the list of the current end.** The\n * grid draws the run and its pending band the way `date-range-picker` does;\n * the list runs on the day of the current end — or on the grid's focused day\n * while the end has none — and says the duration beside each row while the\n * two ends are on the same day.\n *\n * **The press that leaves the work incomplete carries focus to the half that\n * is missing; the press that completes it closes the panel.** The rule\n * `datetime-picker` wrote, once per end.\n */\n@Component({\n selector: '[slDateTimeRangePicker]',\n standalone: true,\n exportAs: 'slDateTimeRangePicker',\n imports: [NgTemplateOutlet, SlCalendar, SlDateTimeField, SlGlyph, SlIcon],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlDateTimeRangePicker),\n multi: true,\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimeRangePicker), multi: true },\n ],\n template: `<div data-part=\"control\" (focusout)=\"onControlFocusOut($event)\">\n <button\n #trigger\n data-part=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span data-part=\"summary\" [attr.data-placeholder]=\"summary() === null ? '' : null\">{{\n summary() ?? t('choose')\n }}</span>\n <span slIcon><svg slGlyph name=\"calendar\"></svg></span>\n </button>\n @if (clearable() && held() !== null) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n [disabled]=\"!editable()\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <input\n data-part=\"hidden-input\"\n type=\"hidden\"\n [attr.name]=\"startName()\"\n [value]=\"startIso()\"\n />\n <input data-part=\"hidden-input\" type=\"hidden\" [attr.name]=\"endName()\" [value]=\"endIso()\" />\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"datetime-range-picker\"\n data-part=\"positioner\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n >\n <div\n data-part=\"content\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n >\n <div data-part=\"head\">\n <div data-part=\"tabs\" role=\"tablist\">\n @for (position of positions; track position) {\n <button\n data-part=\"tab\"\n role=\"tab\"\n type=\"button\"\n [attr.id]=\"contentId + '-tab-' + position\"\n [attr.data-position]=\"position\"\n [attr.aria-selected]=\"currentPosition() === position\"\n [attr.aria-controls]=\"contentId + '-panel'\"\n [attr.data-current]=\"currentPosition() === position ? '' : null\"\n [attr.data-placeholder]=\"isEmptyHalf(position) ? '' : null\"\n [tabindex]=\"currentPosition() === position ? 0 : -1\"\n [disabled]=\"!editable()\"\n (click)=\"selectTab(position, $event)\"\n (keydown)=\"onTabKeyDown($event)\"\n >\n <span data-part=\"tab-label\">{{ labelFor(position) }}</span>\n <span data-part=\"tab-value\">{{ tabValue(position) }}</span>\n </button>\n }\n </div>\n <div #fieldBox data-part=\"field\" [attr.data-position]=\"currentPosition()\">\n <div\n slDateTimeField\n #field=\"slDateTimeField\"\n variant=\"plain\"\n size=\"sm\"\n [label]=\"labelFor(currentPosition())\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [calendar]=\"resolvedCalendar()\"\n [firstDayOfWeek]=\"resolvedFirstDayOfWeek()\"\n [yearPivot]=\"yearPivot()\"\n [referenceDateTime]=\"referenceDateTime()\"\n [relative]=\"relative()\"\n [min]=\"currentPosition() === 'end' ? endMin() : min()\"\n [max]=\"currentPosition() === 'start' ? startMax() : max()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [invalid]=\"currentPosition() === 'end' && workReversed() ? true : undefined\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired()\"\n [value]=\"currentPosition() === 'start' ? workStart() : workEnd()\"\n (valueChange)=\"onFieldValue($event)\"\n ></div>\n </div>\n <button\n data-part=\"now\"\n type=\"button\"\n [disabled]=\"!editable()\"\n (click)=\"chooseNow($event)\"\n >\n {{ t('now') }}\n </button>\n <span\n data-part=\"hint\"\n [attr.id]=\"contentId + '-hint'\"\n [attr.data-invalid]=\"hintProblem() === undefined ? null : ''\"\n >{{ hint() }}</span\n >\n <span\n data-part=\"length\"\n aria-live=\"polite\"\n [attr.data-pending]=\"pending() === null ? null : ''\"\n >{{ spokenLength() }}</span\n >\n @if (limitText() !== null) {\n <span data-part=\"limit\">{{ limitText() }}</span>\n }\n </div>\n <ng-content select=\"[slDateTimeRangePickerPresets]\" />\n @if (currentPosition(); as position) {\n <div data-part=\"panel\" [attr.id]=\"contentId + '-panel'\" [attr.data-position]=\"position\">\n <div data-part=\"date-panel\">\n <div\n slCalendar\n #calendar=\"slCalendar\"\n selectionMode=\"range\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [firstDayOfWeek]=\"resolvedFirstDayOfWeek()\"\n [min]=\"min()?.date\"\n [max]=\"max()?.date\"\n [isDateUnavailable]=\"gridUnavailable()\"\n [months]=\"resolvedMonths()\"\n [weekNumbers]=\"weekNumbers()\"\n [fixedWeeks]=\"fixedWeeks()\"\n [readOnly]=\"resolvedReadOnly()\"\n [focusedDate]=\"focusedDate()\"\n [value]=\"calendarValue()\"\n [view]=\"view()\"\n (viewChange)=\"view.set($event)\"\n (focusedDateChange)=\"focusedDate.set($event.value)\"\n (previewChange)=\"preview.set($event)\"\n (valueChange)=\"onCalendarValue($event)\"\n ></div>\n </div>\n @if (lists()[position].length === 0) {\n <div data-part=\"empty\">{{ t('empty') }}</div>\n } @else {\n <div\n data-part=\"list\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"contentId + '-tab-' + position\"\n [attr.aria-describedby]=\"hint() === '' ? null : contentId + '-hint'\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown(position, $event)\"\n (focusin)=\"listFocused.set(true)\"\n (focusout)=\"onListFocusOut($event)\"\n (pointerleave)=\"hovered.set(null)\"\n >\n @for (option of lists()[position]; track $index) {\n <div\n data-part=\"option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(position, option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(position, option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex(position) ? '' : null\"\n [tabindex]=\"$index === highlightIndex(position) ? 0 : -1\"\n (click)=\"select(position, option, $event)\"\n (pointerenter)=\"hover(position, option)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(position, option, $index)\"\n />\n } @else {\n {{ labels()[position][$index] }}\n @if (durationOf(position, option); as duration) {\n <span data-part=\"option-duration\">{{ duration }}</span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <div data-part=\"footer\">\n <ng-content select=\"[slDateTimeRangePickerFooter]\" />\n <button data-part=\"done\" type=\"button\" (click)=\"done($event)\">\n {{ t('done') }}\n </button>\n </div>\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/datetime-range-picker/datetime-range-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'datetime-range-picker',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlDateTimeRangePicker implements ControlValueAccessor, Validator, OnInit {\n readonly value = input<DateTimeRange | null | undefined>(undefined);\n readonly defaultValue = input<DateTimeRange | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Present means the consumer owns which end is being edited. */\n readonly position = input<DateTimeRangePickerPosition | undefined>(undefined);\n readonly defaultPosition = input<DateTimeRangePickerPosition>('start');\n /** Where the reader is in each list. Present means the consumer owns it. */\n readonly highlighted = input<DateTimeRangePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<DateTimeRangePickerHighlight | undefined>(undefined);\n\n /** The whole-value bounds: where the range starts and ends. */\n readonly min = input<PlainDateTime | undefined>(undefined);\n readonly max = input<PlainDateTime | undefined>(undefined);\n /** The bounds of every day inside the range, applied together with the two above. */\n readonly minTime = input<PlainTime | undefined>(undefined);\n readonly maxTime = input<PlainTime | undefined>(undefined);\n /** Answers a whole day and feeds the grid. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n /** Answers one time on one day and feeds the lists. */\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n /**\n * Whether a run may cross an unavailable day. On, and with a start chosen,\n * the days beyond the first unavailable one are refused in the grid, and on\n * the same day the times beyond the first unavailable one in the end list.\n */\n readonly contiguous = input(true, { transform: booleanAttribute });\n /** The shortest and longest run allowed, in seconds. */\n readonly minLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly maxLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly lengthLabel = input<DateTimeRangePickerDefaults['lengthLabel'] | undefined>(undefined);\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** The times to offer, stated rather than stepped; the same list for both ends. */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<DateTimeRangePickerUnavailableOptions | undefined>(undefined);\n\n readonly months = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly weekNumbers = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Six rows whatever the month needs, so a press of \"next\" moves no target. */\n readonly fixedWeeks = input(true, { transform: booleanAttribute });\n\n /** BCP 47. Unset, the language in force (`provideSlotted`) decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimeRangePickerHourCycle | undefined>(undefined);\n readonly granularity = input<DateTimeRangePickerDefaults['granularity'] | undefined>(undefined);\n readonly calendar = input<DateTimeRangePickerCalendar | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly yearPivot = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** What \"now\" is, for a story or a test; the clock otherwise. */\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimeRangePickerSize | undefined>(undefined);\n readonly variant = input<DateTimeRangePickerVariant | undefined>(undefined);\n readonly placement = input<DateTimeRangePickerPlacement | undefined>(undefined);\n readonly closeOnSelect = input<DateTimeRangePickerCloseOnSelect | undefined>(undefined);\n\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws one clear on the frame, which empties both ends. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Whether the two fields in the band take the relative expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's names, the two ends, the hint, the limit, and what a panel says\n * when it is empty or cut short.\n */\n readonly messages = input<PartialMessages<DatetimeRangePickerMessages> | undefined>(undefined);\n /** The names of the two hidden inputs a plain form post reads. */\n readonly startName = input<string | undefined>(undefined);\n readonly endName = input<string | undefined>(undefined);\n\n readonly valueChange = output<ChangeRequest<DateTimeRange | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly positionChange = output<ChangeRequest<DateTimeRangePickerPosition>>();\n readonly highlightedChange = output<ChangeRequest<DateTimeRangePickerHighlight>>();\n\n /** What one row draws; a template, because it is re-rendered once per option. */\n @ContentChild(SlDateTimeRangePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n /** Whether the lists were scrolled to their highlight since the surface opened. */\n private revealed = false;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('field') protected field?: SlDateTimeField;\n @ViewChild('fieldBox') protected fieldBox?: ElementRef<HTMLElement>;\n @ViewChild('calendar') protected calendarRef?: SlCalendar;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly defaults = injectDateTimeRangePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(datetimeRangePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-datetime-range-picker-${String((sequence += 1))}`;\n protected readonly positions: readonly DateTimeRangePickerPosition[] = ['start', 'end'];\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<DateTimeRange | null>(null);\n private readonly ownPosition = signal<DateTimeRangePickerPosition>('start');\n private readonly ownHighlight = signal<DateTimeRangePickerHighlight>(NO_HIGHLIGHT);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2026, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly view = signal<CalendarView>('day');\n /** The pending end the calendar reports, or `null` while no run is open. */\n protected readonly preview = signal<PlainDate | null>(null);\n /**\n * The day the grid has focused. The family holds it — rather than the\n * calendar alone — because a list of an end with no date runs on it.\n */\n protected readonly focusedDate = signal<PlainDate>({ year: 2026, month: 1, day: 1 });\n protected readonly sheet = signal(false);\n /**\n * The work: the two ends as the reader left them while the panel is open. A\n * press in a list writes it; the value is asked for when it is whole. Closed\n * by anything, it is rebuilt from the value on the next open.\n */\n protected readonly work = signal<Work>(EMPTY);\n protected readonly workStart = computed(() => wholeOf(this.work().start));\n protected readonly workEnd = computed(() => wholeOf(this.work().end));\n /** The option under the pointer, which enters the duration and nothing else. */\n protected readonly hovered = signal<{\n position: DateTimeRangePickerPosition;\n time: PlainTime;\n } | null>(null);\n /** Which list holds focus, so its highlight is the pending end. */\n protected readonly listFocused = signal(false);\n /** A pointer press before focus names the reason a field became current. */\n /** Where focus lands once the surface is drawn. */\n private focusOnOpen: 'field' | 'grid' | null = null;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private readonly typeaheads: Record<DateTimeRangePickerPosition, TypeaheadHandle | null> = {\n start: null,\n end: null,\n };\n\n private onChangeFn: (value: DateTimeRange | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => {\n const value = this.value();\n return value === undefined ? this.ownValue() : normalize(value);\n });\n /** The range the picker holds. Public, so a preset can compare itself to it. */\n readonly selection = computed(() => this.held());\n protected readonly currentPosition = computed(() => this.position() ?? this.ownPosition());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n protected readonly start = computed(() => this.held()?.start ?? null);\n protected readonly end = computed(() => this.held()?.end ?? null);\n protected readonly startIso = computed(() => {\n const start = this.start();\n return start === null ? '' : toISODateTime(start);\n });\n protected readonly endIso = computed(() => {\n const end = this.end();\n return end === null ? '' : toISODateTime(end);\n });\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n protected readonly resolvedFirstDayOfWeek = computed(\n () => this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek,\n );\n protected readonly resolvedMonths = computed(() => this.months() ?? this.defaults.months);\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() =>\n createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n ...(this.resolvedFirstDayOfWeek() === undefined\n ? {}\n : { firstDayOfWeek: this.resolvedFirstDayOfWeek() }),\n ...(this.yearPivot() === undefined ? {} : { yearPivot: this.yearPivot() }),\n }),\n );\n /* A time alone in a tab — the reader chose an hour before a day. */\n private readonly timeFormat = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n }),\n );\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n private readonly bounds = computed(() => ({\n max: this.max(),\n maxTime: this.maxTime(),\n min: this.min(),\n minTime: this.minTime(),\n }));\n private readonly lengthOf = computed(() => {\n const label = this.lengthLabel() ?? this.defaults.lengthLabel;\n const locale = this.resolvedLocale();\n return (seconds: number) => label(seconds, locale);\n });\n\n /**\n * Validity the family owns, beside the validity the consumer states: the\n * bounds, the predicate, the order of the two ends and the duration.\n */\n private readonly problems = computed(() =>\n dateTimeRangeProblems(this.held(), {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n }),\n );\n protected readonly reversed = computed(() => this.problems().includes('order'));\n protected readonly resolvedInvalid = computed(() => {\n if (this.invalid() !== undefined) return this.invalid();\n if (this.problems().length > 0) return true;\n return this.enclosing?.invalid();\n });\n\n /* Crossed bounds, while the order holds. Reversed, each field keeps the\n outer bounds and the end field alone says the order is wrong. */\n private readonly workOrdered = computed(() => {\n const start = this.workStart();\n const end = this.workEnd();\n return start !== null && end !== null && compareDateTime(start, end) <= 0;\n });\n protected readonly startMax = computed(() => {\n const end = this.workEnd();\n const max = this.max();\n if (!this.workOrdered() || end === null) return max;\n return max === undefined || compareDateTime(end, max) < 0 ? end : max;\n });\n protected readonly endMin = computed(() => {\n const start = this.workStart();\n const min = this.min();\n if (!this.workOrdered() || start === null) return min;\n return min === undefined || compareDateTime(start, min) > 0 ? start : min;\n });\n\n /* ── The grid ──────────────────────────────────────────────────────── */\n\n /**\n * What the calendar is shown: the two dates of the work, with the end\n * withheld while the end is the current position so the next press writes\n * it instead of restarting the run — `date-range-picker`'s rule.\n */\n protected readonly calendarValue = computed<CalendarValue>(() => {\n const { start, end } = this.work();\n if (start.date === null) return null;\n if (this.currentPosition() === 'end' && end.date !== null) {\n return { start: start.date, end: null };\n }\n return { start: start.date, end: end.date };\n });\n private readonly openStart = computed(() => {\n const value = this.calendarValue();\n if (value === null || Array.isArray(value) || !('start' in value)) return null;\n return value.end === null ? value.start : null;\n });\n private readonly blocked = computed(() => {\n const openStart = this.openStart();\n if (openStart === null || !this.contiguous()) return { before: null, after: null };\n const maxLength = this.maxLength();\n return blockedAround(\n openStart,\n this.isDateUnavailable() ?? (() => false),\n maxLength === undefined ? CONTIGUOUS_SEARCH : Math.ceil(maxLength / 86_400) + 1,\n );\n });\n protected readonly gridUnavailable = computed(() => {\n const bounds = this.bounds();\n const openStart = this.openStart();\n const unavailable = this.isDateUnavailable();\n const rules = { contiguous: this.contiguous(), count: 'days' as const, unavailable };\n const blocked = this.blocked();\n return (date: PlainDate) => {\n if (dayWindow(date, bounds) === null) return true;\n if (openStart === null) return unavailable?.(date) === true;\n return isDateRefusedInRun(openStart, date, rules, blocked);\n };\n });\n\n /** The day each list serves: the date of its end, or the grid's focused day. */\n protected dayFor(position: DateTimeRangePickerPosition): PlainDate {\n return this.work()[position].date ?? this.focusedDate();\n }\n\n protected isEmptyHalf(position: DateTimeRangePickerPosition): boolean {\n const half = this.work()[position];\n return half.date === null && half.time === null;\n }\n\n /** The end written short in the tab — a whole, a day alone, a time alone — or a dash. */\n protected tabValue(position: DateTimeRangePickerPosition): string {\n const half = this.work()[position];\n const whole = wholeOf(half);\n if (whole !== null) return this.writeShort(whole);\n if (half.date !== null) return this.format().describeDate(half.date, 'short');\n if (half.time !== null) return this.timeFormat().format(half.time);\n return '—';\n }\n\n /** The problems of the work as it stands, once it is whole. */\n private readonly workProblems = computed(() => {\n const whole = rangeOf(this.work());\n if (whole?.start == null || whole.end === null) return [];\n return dateTimeRangeProblems(whole, {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n });\n });\n protected readonly workReversed = computed(() => this.workProblems().includes('order'));\n protected readonly hintProblem = computed(() => this.workProblems()[0]);\n\n /**\n * What the next press should be, or what is wrong: the difference between a\n * panel that refuses and a panel that explains. Empty while the work is\n * whole and valid, when the length says the duration.\n */\n protected readonly hint = computed(() => {\n const position = this.currentPosition();\n const half = this.work()[position];\n if (half.date === null) return this.t('chooseDay', { end: this.labelFor(position) });\n if (half.time === null) {\n return this.t('chooseTime', {\n end: this.labelFor(position),\n day: this.format().describeDate(half.date, 'short'),\n });\n }\n const problem = this.hintProblem();\n if (problem === undefined) return '';\n return this.t(problem === 'min' || problem === 'max' ? 'bounds' : problem);\n });\n\n /* ── The two lists ─────────────────────────────────────────────────── */\n\n protected readonly truncated = computed(() =>\n isTruncated({\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n }),\n );\n\n /**\n * The list of one end: the day's window from both pairs of bounds, the\n * predicate on that day, and — on the same day as the other end — what the\n * other end of the work refuses. The duration limits apply across days.\n */\n protected readonly lists = computed<Record<DateTimeRangePickerPosition, TimeOption[]>>(() => ({\n start: this.listFor('start'),\n end: this.listFor('end'),\n }));\n protected readonly labels = computed<Record<DateTimeRangePickerPosition, string[]>>(() => {\n const format = this.format().time;\n const lists = this.lists();\n return {\n start: lists.start.map((option) => format.format(option.time)),\n end: lists.end.map((option) => format.format(option.time)),\n };\n });\n\n private listFor(position: DateTimeRangePickerPosition): TimeOption[] {\n const day = this.dayFor(position);\n const window = dayWindow(day, this.bounds());\n if (window === null || this.isDateUnavailable()?.(day) === true) return [];\n const isTimeUnavailable = this.isTimeUnavailable();\n const base = timeList({\n isTimeUnavailable:\n isTimeUnavailable === undefined ? undefined : (time) => isTimeUnavailable(time, day),\n max: window.latest,\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: window.earliest,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n });\n const otherEnd = wholeOf(this.work()[other(position)]);\n let refused: (option: TimeOption, index: number) => boolean = () => false;\n if (otherEnd !== null) {\n const direction: 1 | -1 = position === 'end' ? 1 : -1;\n const sameDay = isSameDate(day, otherEnd.date);\n const wall =\n sameDay && this.contiguous()\n ? firstUnavailableIndex(base, nearestIndex(base, otherEnd.time), direction)\n : -1;\n const rules = { maxLength: this.maxLength(), minLength: this.minLength() };\n refused = (option, index) => {\n const candidate = { date: day, time: option.time };\n const seconds =\n position === 'end'\n ? dateTimeRangeSeconds(otherEnd, candidate)\n : dateTimeRangeSeconds(candidate, otherEnd);\n if (runRefusal(0, seconds, 1, rules)) return true;\n return sameDay && wall >= 0 && (direction === 1 ? index >= wall : index <= wall);\n };\n }\n const marked = base.map((option, index) =>\n option.unavailable || !refused(option, index) ? option : { ...option, unavailable: true },\n );\n const hide = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hide ? marked.filter((option) => !option.unavailable) : marked;\n }\n\n protected highlightIndex(position: DateTimeRangePickerPosition): number {\n const time = this.highlight()[position];\n if (time === null) return -1;\n return this.lists()[position].findIndex((option) => isSameTime(option.time, time));\n }\n\n protected isSelected(position: DateTimeRangePickerPosition, option: TimeOption): boolean {\n return isSameTime(option.time, this.work()[position].time);\n }\n\n /** The name of one end: the field's, its tab's and the hint's `{end}`. */\n protected labelFor(position: DateTimeRangePickerPosition): string {\n return this.t(position);\n }\n\n /** The duration a row would make with the other end, on the same day only. */\n protected durationOf(position: DateTimeRangePickerPosition, option: TimeOption): string | null {\n const otherEnd = wholeOf(this.work()[other(position)]);\n const day = this.dayFor(position);\n if (otherEnd === null || option.unavailable || !isSameDate(day, otherEnd.date)) return null;\n const candidate = { date: day, time: option.time };\n const seconds =\n position === 'end'\n ? dateTimeRangeSeconds(otherEnd, candidate)\n : dateTimeRangeSeconds(candidate, otherEnd);\n return this.lengthOf()(seconds);\n }\n\n protected contextFor(position: DateTimeRangePickerPosition, option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(position),\n date: this.dayFor(position),\n duration: this.durationOf(position, option),\n label: this.labels()[position][index] ?? '',\n position,\n selected: this.isSelected(position, option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── What is said ──────────────────────────────────────────────────── */\n\n /**\n * The pending end: the option under the pointer, or the highlighted option\n * of the list that has focus.\n */\n private readonly pendingTime = computed(() => {\n const hovered = this.hovered();\n if (hovered !== null) return hovered;\n if (!this.listFocused()) return null;\n const position = this.currentPosition();\n const time = this.highlight()[position];\n return time === null ? null : { position, time };\n });\n /** The pending run: a time under the pointer or highlighted, or the grid's pending day. */\n protected readonly pending = computed<Work | null>(() => {\n const time = this.pendingTime();\n const work = this.work();\n if (time !== null) {\n return { ...work, [time.position]: { date: this.dayFor(time.position), time: time.time } };\n }\n const openStart = this.openStart();\n const preview = this.preview();\n if (openStart === null || preview === null) return null;\n /* A pending day enters with the time that end already holds, or midnight. */\n const run = orderedRun(openStart, preview);\n return {\n start: { date: run.start, time: work.start.time ?? MIDNIGHT },\n end: { date: run.end, time: work.end.time ?? MIDNIGHT },\n };\n });\n protected readonly spokenLength = computed(() => {\n const run = this.pending() ?? this.work();\n const start = wholeOf(run.start);\n const end = wholeOf(run.end);\n if (start === null || end === null || compareDateTime(start, end) > 0) return '';\n return this.lengthOf()(dateTimeRangeSeconds(start, end));\n });\n protected readonly limitText = computed(() => {\n const min = this.minLength();\n const max = this.maxLength();\n const length = this.lengthOf();\n if (min !== undefined && max !== undefined) {\n return this.t('limit.between', { min: length(min), max: length(max) });\n }\n if (min !== undefined) return this.t('limit.atLeast', { min: length(min) });\n if (max !== undefined) return this.t('limit.atMost', { max: length(max) });\n return null;\n });\n\n /** The trigger's accessible name: focus returns here when the surface closes. */\n protected readonly triggerLabel = computed(() => {\n const start = this.start();\n const end = this.end();\n if (start === null || end === null) return this.t('choose');\n const format = this.format();\n const ends = { start: format.describe(start), end: format.describe(end) };\n return compareDateTime(start, end) <= 0\n ? this.t('change', { ...ends, length: this.lengthOf()(dateTimeRangeSeconds(start, end)) })\n : this.t('changeReversed', ends);\n });\n /* The frame writes each end short — \"12 Sep, 14:00\" — because the whole\n value in words is the trigger's. */\n private readonly short = computed(\n () =>\n new Intl.DateTimeFormat(this.resolvedLocale(), {\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n month: 'short',\n timeZone: 'UTC',\n ...(this.resolvedHourCycle() === undefined\n ? {}\n : { hour12: this.resolvedHourCycle() === 12 }),\n }),\n );\n private writeShort(item: PlainDateTime): string {\n return this.short().format(\n Date.UTC(\n item.date.year,\n item.date.month - 1,\n item.date.day,\n item.time.hour,\n item.time.minute,\n ),\n );\n }\n /** The value in words, one line; `null` while nothing is chosen. */\n protected readonly summary = computed(() => {\n if (this.held() === null) return null;\n const start = this.start();\n const end = this.end();\n return `${start === null ? '' : this.writeShort(start)} – ${end === null ? '' : this.writeShort(end)}`.trim();\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. The work starts from the value\n every time the panel opens. */\n effect(() => {\n const open = this.isOpen();\n if (!open) {\n this.release();\n return;\n }\n /* Read untracked: the work is rebuilt when the panel opens, and not\n again when the value or the position moves while it is open. */\n untracked(() => {\n const held = this.held();\n this.work.set(workOf(held));\n this.hovered.set(null);\n this.preview.set(null);\n const missing: DateTimeRangePickerPosition | null =\n held?.start == null ? 'start' : held.end === null ? 'end' : null;\n if (missing !== null && missing !== this.currentPosition()) {\n this.setPosition(missing, 'programmatic', undefined);\n }\n const position = this.currentPosition();\n this.focusedDate.set(\n (position === 'end' ? held?.end?.date : held?.start?.date) ?? this.anchor().date,\n );\n });\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The highlight of each list lands where the list opens, and follows the\n lists under it. */\n effect(() => {\n if (!this.isOpen()) return;\n const lists = this.lists();\n const current = this.highlight();\n const next = { ...current };\n for (const position of this.positions) {\n const index = this.openingIndex(position);\n next[position] = index < 0 ? null : (lists[position][index]?.time ?? null);\n }\n if (!isSameTime(next.start, current.start) || !isSameTime(next.end, current.end)) {\n this.setHighlight(next, 'programmatic', undefined);\n }\n });\n\n /* The lists open on their highlight once the layer is rendered, and follow\n it while the lists under it change. */\n effect(() => {\n if (!this.isOpen()) {\n this.revealed = false;\n return;\n }\n this.highlight();\n this.lists();\n this.currentPosition();\n afterNextRender(\n () => {\n this.revealHighlights(!this.revealed);\n this.revealed = true;\n },\n { injector: this.injector },\n );\n });\n\n /* A rule that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.problems();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(normalize(this.defaultValue()));\n this.ownPosition.set(this.defaultPosition());\n this.ownHighlight.set(this.defaultHighlighted() ?? NO_HIGHLIGHT);\n this.clock.set(nowDateTimeIn(this.resolvedTimeZone()));\n this.focusedDate.set(this.clock().date);\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /* ── Forms ─────────────────────────────────────────────────────────── */\n\n writeValue(value: DateTimeRange | null | undefined) {\n this.ownValue.set(normalize(value));\n }\n\n registerOnChange(fn: (value: DateTimeRange | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see: the bounds, the predicate, the\n * order of the two ends and the duration. `required` is left to Angular's\n * own, because a form already has a word for it.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value = normalize(control.value as DateTimeRange | null | undefined);\n if (value === null) return null;\n const problems = dateTimeRangeProblems(value, {\n contiguous: this.contiguous(),\n max: this.max(),\n maxLength: this.maxLength(),\n maxTime: this.maxTime(),\n min: this.min(),\n minLength: this.minLength(),\n minTime: this.minTime(),\n unavailableDay: this.isDateUnavailable(),\n unavailableTime: this.isTimeUnavailable(),\n });\n if (problems.length === 0) return null;\n const errors: ValidationErrors = {};\n if (problems.includes('order')) errors['slottedDateTimeRangeOrder'] = { actual: value };\n if (problems.includes('min'))\n errors['slottedDateTimeRangeMin'] = { min: this.min(), actual: value };\n if (problems.includes('max'))\n errors['slottedDateTimeRangeMax'] = { max: this.max(), actual: value };\n if (problems.includes('unavailable'))\n errors['slottedDateTimeRangeUnavailable'] = { actual: value };\n if (problems.includes('length')) {\n errors['slottedDateTimeRangeLength'] = {\n minLength: this.minLength(),\n maxLength: this.maxLength(),\n actual: value,\n };\n }\n return errors;\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus on the trigger, which is the frame. */\n focus() {\n this.triggerRef?.nativeElement.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'programmatic', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'programmatic', source);\n }\n\n /** A preset writes its range through here, with the `select` reason. */\n choose(range: DateTimeRange, source?: Event) {\n this.work.set(workOf(range));\n this.commit(range, 'select', source);\n this.setPosition('start', 'select', source);\n this.closeAfter(true, source);\n }\n\n /* ── Handlers ──────────────────────────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n protected clear(source: Event) {\n this.work.set(EMPTY);\n this.commit(null, 'clear', source);\n this.setPosition('start', 'clear', source);\n this.focus();\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into PageDown before the browser sees it, which\n is why the trigger is the guaranteed way in and the chord a shortcut. */\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusOnOpen = 'grid';\n if (!this.isOpen()) this.setOpen(true, 'keyboard', event);\n else this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.focusOnOpen = 'field';\n this.setOpen(!this.isOpen(), 'keyboard', event);\n }\n }\n\n protected selectTab(position: DateTimeRangePickerPosition, source: Event) {\n if (position !== this.currentPosition()) this.setPosition(position, 'pointer', source);\n }\n\n /** Automatic activation: the arrow moves the position with it. */\n protected onTabKeyDown(event: KeyboardEvent) {\n const next: DateTimeRangePickerPosition | null =\n event.key === 'ArrowRight' || event.key === 'End'\n ? 'end'\n : event.key === 'ArrowLeft' || event.key === 'Home'\n ? 'start'\n : null;\n if (next === null) return;\n event.preventDefault();\n if (next !== this.currentPosition()) this.setPosition(next, 'keyboard', event);\n this.layer?.nativeElement\n .querySelector<HTMLElement>(`[data-part=\"tab\"][data-position=\"${next}\"]`)\n ?.focus({ preventScroll: true });\n }\n\n /**\n * The way out of a sheet that fills the screen, and of an edit left half\n * way: a whole work is the value; a half alone stays as it is.\n */\n protected done(source: Event) {\n const whole = rangeOf(this.work());\n if (whole?.start != null && whole.end !== null && !isSameDateTimeRange(whole, this.held())) {\n this.commit(whole, 'select', source);\n }\n this.setOpen(false, 'pointer', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected onListFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && (event.currentTarget as HTMLElement).contains(next)) return;\n this.listFocused.set(false);\n }\n\n protected hover(position: DateTimeRangePickerPosition, option: TimeOption) {\n this.hovered.set(option.unavailable ? null : { position, time: option.time });\n }\n\n /**\n * A field in the band writes its end to the work at every request it emits,\n * with the field's own reason, and an open end is a value on its own.\n */\n protected onFieldValue(request: DateTimeFieldChangeRequest) {\n const next: Work = { ...this.work(), [this.currentPosition()]: halfOf(request.value) };\n this.work.set(next);\n this.commit(\n { start: wholeOf(next.start), end: wholeOf(next.end) },\n request.reason,\n request.source,\n );\n }\n\n protected chooseNow(source: Event) {\n if (!this.editable()) return;\n const before = this.work();\n const position = this.currentPosition();\n this.settle({ ...before, [position]: halfOf(this.anchor()) }, before, position, source);\n }\n\n protected select(position: DateTimeRangePickerPosition, option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n const before = this.work();\n const half: Half = { date: before[position].date ?? this.dayFor(position), time: option.time };\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'pointer', source);\n this.settle({ ...before, [position]: half }, before, position, source);\n }\n\n protected onCalendarValue(request: ChangeRequest<CalendarValue>) {\n const next = request.value;\n if (next === null || Array.isArray(next) || !('start' in next)) return;\n const before = this.work();\n if (next.end === null) {\n /* The first press: the run restarts on this start; the end's date is\n withheld and its time kept. */\n this.settle(\n { start: { ...before.start, date: next.start }, end: { ...before.end, date: null } },\n before,\n 'start',\n request.source,\n );\n return;\n }\n /* The second press: the grid ordered the two dates; the times stay with\n the end they were on. */\n this.settle(\n { start: { ...before.start, date: next.start }, end: { ...before.end, date: next.end } },\n before,\n 'end',\n request.source,\n );\n }\n\n /**\n * After a press wrote a half: whole, the work is the value and the panel\n * closes when the press completed it; incomplete, focus carries to the half\n * that is missing — this end's first, then the other end's.\n */\n private settle(next: Work, before: Work, pressed: DateTimeRangePickerPosition, source: unknown) {\n const wasWhole = wholeOf(before.start) !== null && wholeOf(before.end) !== null;\n this.work.set(next);\n if (wholeOf(next.start) !== null && wholeOf(next.end) !== null) {\n this.commit(rangeOf(next), 'select', source);\n this.setPosition(pressed, 'select', source);\n this.closeAfter(!wasWhole, source);\n return;\n }\n for (const position of [pressed, other(pressed)]) {\n const half = next[position];\n if (half.date !== null && half.time !== null) continue;\n if (half.date === null) {\n this.setPosition(position, 'select', source);\n this.enterGrid(next[other(position)].date);\n } else {\n this.enterList(position, source);\n }\n return;\n }\n }\n\n private enterGrid(date: PlainDate | null) {\n afterNextRender(\n () => {\n if (date !== null) this.calendarRef?.focusDate(date);\n this.calendarRef?.focus();\n },\n { injector: this.injector },\n );\n }\n\n private closeAfter(completed: boolean, source: unknown) {\n const axis = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n if (!(axis === 'always' || (axis === 'auto' && completed))) return;\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n /** Where a list opens: on its end, on the nearest step to now, or on the first available option. */\n private openingIndex(position: DateTimeRangePickerPosition): number {\n const work = this.work();\n const across = work[other(position)];\n const otherEnd =\n across.date !== null && across.time !== null && isSameDate(across.date, this.dayFor(position))\n ? across.time\n : null;\n return openingIndexOf(\n this.lists()[position],\n work[position].time ?? otherEnd ?? this.anchor().time,\n otherEnd,\n position,\n );\n }\n\n /**\n * Into the list of one end: the tab moves there when it is not the current\n * one, and focus lands on its highlight after the render that drew it.\n */\n private enterList(position: DateTimeRangePickerPosition, source?: unknown) {\n if (position !== this.currentPosition()) this.setPosition(position, 'select', source);\n afterNextRender(\n () => {\n const at = this.highlightIndex(position);\n const index = at >= 0 ? at : this.openingIndex(position);\n if (index < 0) {\n this.field?.focus();\n return;\n }\n const option = this.lists()[position][index];\n if (option !== undefined) {\n this.setHighlight(\n { ...this.highlight(), [position]: option.time },\n 'keyboard',\n undefined,\n );\n }\n this.focusOption(position, index);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(position: DateTimeRangePickerPosition, index: number) {\n const rows = this.layer?.nativeElement.querySelectorAll<HTMLElement>(\n `[data-part=\"panel\"][data-position=\"${position}\"] [data-part=\"option\"]`,\n );\n const row = rows?.[index];\n row?.focus();\n const list = row?.closest<HTMLElement>('[data-part=\"list\"]');\n if (row !== undefined && list) revealRow(list, row, false);\n }\n\n /** The list scrolled to its highlight: centred as the surface opens, by the least after. */\n private revealHighlights(centre: boolean) {\n const index = this.highlightIndex(this.currentPosition());\n if (index < 0) return;\n const list = this.layer?.nativeElement.querySelector<HTMLElement>('[data-part=\"list\"]');\n const row = list?.querySelectorAll<HTMLElement>('[data-part=\"option\"]')[index];\n if (list && row !== undefined) revealRow(list, row, centre);\n }\n\n /** The field, or the grid where the field is not drawn (a coarse pointer). */\n private focusField() {\n const box = this.fieldBox?.nativeElement;\n if (box !== undefined && getComputedStyle(box).display === 'none') {\n this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n return;\n }\n this.field?.focus();\n }\n\n /* ── The keyboard ──────────────────────────────────────────────────── */\n\n protected onListKeyDown(position: DateTimeRangePickerPosition, event: KeyboardEvent) {\n const list = this.lists()[position];\n const found = this.highlightIndex(position);\n const at = found >= 0 ? found : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ ...this.highlight(), [position]: option.time }, 'keyboard', event);\n this.focusOption(position, clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.select(position, option, event);\n return;\n }\n default:\n break;\n }\n\n const typeahead = this.typeaheads[position];\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found2 = typeahead.match(event.key, this.labels()[position], at);\n if (found2 < 0) return;\n move(found2);\n }\n\n /* ── The machinery ─────────────────────────────────────────────────── */\n\n private commit(next: DateTimeRange | null, reason: ChangeReason, source: unknown) {\n const normalized = normalize(next);\n let cancelled = false;\n const state = createControllable<DateTimeRange | null>({\n controlled: this.value() === undefined ? undefined : this.held(),\n initial: this.held(),\n equals: isSameDateTimeRange,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(normalized, reason, source) || cancelled) return;\n if (this.value() === undefined) this.ownValue.set(normalized);\n this.onChangeFn(normalized);\n }\n\n private setPosition(next: DateTimeRangePickerPosition, reason: ChangeReason, source: unknown) {\n const state = createControllable<DateTimeRangePickerPosition>({\n controlled: this.position(),\n initial: this.currentPosition(),\n onRequest: (request) => this.positionChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownPosition.set(next);\n }\n\n private setHighlight(next: DateTimeRangePickerHighlight, reason: ChangeReason, source: unknown) {\n const state = createControllable<DateTimeRangePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameTime(a.start, b.start) && isSameTime(a.end, b.end),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: ChangeReason, source: unknown) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => this.openChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n /* The positioner writes `data-positioned` with the side, on the element, in\n the task that opened the layer; a binding to say it again was a frame later. */\n void this.positioner.update();\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n /* A field with an expression open takes Escape first: the layer asks\n in the capture phase, so the field's own attribute is what says so. */\n if (request.reason === 'escape') {\n if (layer.querySelector('[data-ui=\"datetime-field\"][data-relative]') !== null) return;\n if (this.view() !== 'day') {\n this.view.set(this.view() === 'year' ? 'month' : 'day');\n return;\n }\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n\n for (const position of this.positions) {\n this.typeaheads[position] = createTypeahead({ locale: () => this.resolvedLocale() });\n }\n\n /* Opened by Enter, Space or a press, focus lands on the first segment of\n the current end's field; by an arrow, in that end's list. */\n const where = this.focusOnOpen;\n this.focusOnOpen = null;\n if (where === 'grid') {\n this.enterGrid(this.work()[this.currentPosition()].date ?? this.anchor().date);\n } else if (where === 'field') {\n this.focusField();\n }\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n for (const position of this.positions) {\n this.typeaheads[position]?.destroy();\n this.typeaheads[position] = null;\n }\n this.layer?.nativeElement.removeAttribute('data-positioned');\n }\n}\n\n/**\n * One shortcut. It writes its range with the `select` reason and carries\n * `data-selected` while the value equals it. The list is the product's — \"the\n * morning shift\" is a business clock — and the family ships the button, not\n * the list.\n */\n@Directive({\n selector: 'button[slDateTimeRangePickerPreset]',\n standalone: true,\n exportAs: 'slDateTimeRangePickerPreset',\n host: {\n 'data-part': 'preset',\n type: 'button',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '(click)': 'choose($event)',\n },\n})\nexport class SlDateTimeRangePickerPreset {\n /** The range the press writes, or a function resolving it at the press. */\n readonly range = input.required<DateTimeRange | (() => DateTimeRange)>({\n alias: 'slDateTimeRangePickerPreset',\n });\n\n private readonly picker = inject(SlDateTimeRangePicker);\n\n protected readonly selected = computed(() => {\n const range = this.range();\n return isSameDateTimeRange(\n this.picker.selection(),\n typeof range === 'function' ? range() : range,\n );\n });\n\n protected choose(event: Event) {\n if (event.defaultPrevented) return;\n const range = this.range();\n this.picker.choose(typeof range === 'function' ? range() : range, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["openingIndexOf"],"mappings":"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"}
|