@tailng-ui/primitives 0.54.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/package.json +2 -2
  2. package/src/lib/form/date-range-picker/__tests__/tng-date-range-picker.test-helpers.d.ts +25 -0
  3. package/src/lib/form/date-range-picker/__tests__/tng-date-range-picker.test-helpers.d.ts.map +1 -0
  4. package/src/lib/form/date-range-picker/__tests__/tng-date-range-picker.test-helpers.js +109 -0
  5. package/src/lib/form/date-range-picker/__tests__/tng-date-range-picker.test-helpers.js.map +1 -0
  6. package/src/lib/form/date-range-picker/date-range-picker.adapters.d.ts +5 -0
  7. package/src/lib/form/date-range-picker/date-range-picker.adapters.d.ts.map +1 -0
  8. package/src/lib/form/date-range-picker/date-range-picker.adapters.js +9 -0
  9. package/src/lib/form/date-range-picker/date-range-picker.adapters.js.map +1 -0
  10. package/src/lib/form/date-range-picker/date-range-picker.state.d.ts +10 -0
  11. package/src/lib/form/date-range-picker/date-range-picker.state.d.ts.map +1 -0
  12. package/src/lib/form/date-range-picker/date-range-picker.state.js +35 -0
  13. package/src/lib/form/date-range-picker/date-range-picker.state.js.map +1 -0
  14. package/src/lib/form/date-range-picker/date-range-picker.types.d.ts +280 -0
  15. package/src/lib/form/date-range-picker/date-range-picker.types.d.ts.map +1 -0
  16. package/src/lib/form/date-range-picker/date-range-picker.types.js +1 -0
  17. package/src/lib/form/date-range-picker/date-range-picker.types.js.map +1 -0
  18. package/src/lib/form/date-range-picker/date-range-picker.utils.d.ts +54 -0
  19. package/src/lib/form/date-range-picker/date-range-picker.utils.d.ts.map +1 -0
  20. package/src/lib/form/date-range-picker/date-range-picker.utils.js +37 -0
  21. package/src/lib/form/date-range-picker/date-range-picker.utils.js.map +1 -0
  22. package/src/lib/form/date-range-picker/index.d.ts +7 -0
  23. package/src/lib/form/date-range-picker/index.d.ts.map +1 -0
  24. package/src/lib/form/date-range-picker/index.js +7 -0
  25. package/src/lib/form/date-range-picker/index.js.map +1 -0
  26. package/src/lib/form/date-range-picker/tng-date-range-picker.d.ts +5 -0
  27. package/src/lib/form/date-range-picker/tng-date-range-picker.d.ts.map +1 -0
  28. package/src/lib/form/date-range-picker/tng-date-range-picker.js +1970 -0
  29. package/src/lib/form/date-range-picker/tng-date-range-picker.js.map +1 -0
  30. package/src/lib/form/date-range-picker/tng-date-range-picker.overlay.d.ts +87 -0
  31. package/src/lib/form/date-range-picker/tng-date-range-picker.overlay.d.ts.map +1 -0
  32. package/src/lib/form/date-range-picker/tng-date-range-picker.overlay.js +447 -0
  33. package/src/lib/form/date-range-picker/tng-date-range-picker.overlay.js.map +1 -0
  34. package/src/lib/form/date-range-picker/tng-date-range-picker.parts.d.ts +3155 -0
  35. package/src/lib/form/date-range-picker/tng-date-range-picker.parts.d.ts.map +1 -0
  36. package/src/lib/form/date-range-picker/tng-date-range-picker.parts.js +940 -0
  37. package/src/lib/form/date-range-picker/tng-date-range-picker.parts.js.map +1 -0
  38. package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -1
  39. package/src/lib/form/datepicker/datepicker.adapters.js +4 -189
  40. package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -1
  41. package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -1
  42. package/src/lib/form/datepicker/datepicker.state.js +7 -86
  43. package/src/lib/form/datepicker/datepicker.state.js.map +1 -1
  44. package/src/lib/form/datepicker/datepicker.utils.d.ts +6 -28
  45. package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -1
  46. package/src/lib/form/datepicker/datepicker.utils.js +14 -228
  47. package/src/lib/form/datepicker/datepicker.utils.js.map +1 -1
  48. package/src/lib/form/index.d.ts +2 -0
  49. package/src/lib/form/index.d.ts.map +1 -1
  50. package/src/lib/form/index.js +2 -0
  51. package/src/lib/form/index.js.map +1 -1
  52. package/src/lib/form/number-range/index.d.ts +3 -0
  53. package/src/lib/form/number-range/index.d.ts.map +1 -0
  54. package/src/lib/form/number-range/index.js +3 -0
  55. package/src/lib/form/number-range/index.js.map +1 -0
  56. package/src/lib/form/number-range/tng-number-range.d.ts +26 -0
  57. package/src/lib/form/number-range/tng-number-range.d.ts.map +1 -0
  58. package/src/lib/form/number-range/tng-number-range.js +49 -0
  59. package/src/lib/form/number-range/tng-number-range.js.map +1 -0
  60. package/src/lib/form/number-range/tng-number-range.types.d.ts +12 -0
  61. package/src/lib/form/number-range/tng-number-range.types.d.ts.map +1 -0
  62. package/src/lib/form/number-range/tng-number-range.types.js +1 -0
  63. package/src/lib/form/number-range/tng-number-range.types.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-date-range-picker.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/date-range-picker/tng-date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createActiveDescendantController,\n createOverlayFocusHandoffController,\n createOverlayRuntime,\n createRovingFocusController,\n createTngIdFactory,\n createTypeaheadController,\n resolveFocusableElements,\n resolveGridNavigationKeyAction,\n resolveNavigableGridCell,\n type TngActiveDescendantController,\n type TngGridNavigationActionType,\n type TngOverlayDismissReason,\n type TngRovingFocusController,\n type TngOverlayRuntime,\n} from '@tailng-ui/cdk';\nimport type { TngOverlayInteractionDomDocument } from '@tailng-ui/cdk/overlay';\nimport {\n coerceWeekStartsOn,\n defaultDateRangePickerDateAdapter,\n normalizeDateInput,\n} from './date-range-picker.adapters';\nimport {\n buildMonthGrid,\n buildMonthOptions,\n buildYearOptions,\n clampDateToMonth,\n compareMonthIdentity,\n datesEqual,\n findFirstEnabledDateInMonth,\n hasSelectableDateInMonth,\n hasSelectableDateInYear,\n isDateValueInMonth,\n moveDateSkippingDisabled,\n normalizeRangeOrder,\n resolveInitialFocusedSection,\n resolveLocaleWeekStartsOn,\n resolveViewForEscape,\n resolveWeekBoundaryDate,\n toDateKey,\n} from './date-range-picker.utils';\nimport {\n clearSelectionForMode,\n normalizeSelectionInput,\n rangeIncludesDate,\n selectionValuesEqual,\n valueIncludesDate,\n} from './date-range-picker.state';\nimport type {\n TngCalendarView,\n TngDateAdapter,\n TngDateCell,\n TngDateFormatToken,\n TngDateInputValue,\n TngDateRange,\n TngDateRangeValue,\n TngDateSelectionInput,\n TngDateValue,\n TngDateRangePickerAttributeMap,\n TngDateRangePickerCloseReason,\n TngDateRangePickerConfig,\n TngDateRangePickerController,\n TngDateRangePickerDirection,\n TngDateRangePickerEvent,\n TngDateRangePickerFocusedSection,\n TngDateRangePickerFocusStrategy,\n TngDateRangePickerLayout,\n TngDateRangePickerListener,\n TngDateRangePickerOutputs,\n TngDateRangePickerOverlayMode,\n TngDateRangePickerPosition,\n TngDateRangePickerSelectionMode,\n TngDateRangePickerState,\n TngDateRangePickerStatePatch,\n TngDateRangePickerTrigger,\n TngMonthOption,\n TngWeekdayIndex,\n TngYearOption,\n} from './date-range-picker.types';\n\ntype TngResolvedConfig<TDate> = Readonly<{\n adapter: Readonly<TngDateAdapter<TDate>>;\n allowManualInput: boolean;\n ariaDescribedBy: string | null;\n ariaLabel: string | null;\n ariaLabelledBy: string | null;\n autoCommitView: boolean;\n closeOnEscape: boolean;\n closeOnOutsideClick: boolean;\n closeOnSelect: boolean;\n closeOthersOnOpen: boolean;\n direction: TngDateRangePickerDirection;\n disableDate: ((date: TDate) => boolean) | null;\n disabled: boolean;\n enableRangeSelection: boolean;\n enableTypeahead: boolean;\n fixedWeeks: boolean;\n focusStrategy: TngDateRangePickerFocusStrategy;\n id: string;\n initialView: TngCalendarView;\n locale: string;\n max: TDate | null;\n min: TDate | null;\n onPartialInputCommit: boolean;\n overlayMode: TngDateRangePickerOverlayMode;\n overlayRuntime: TngOverlayRuntime | null;\n overlaySize: number;\n ownerDocument: Document | null;\n position: TngDateRangePickerPosition;\n preserveViewOnOpenClose: boolean;\n restoreFocus: boolean;\n selectionMode: TngDateRangePickerSelectionMode;\n showOutsideDays: boolean;\n skipDisabled: boolean;\n today: TDate;\n trapFocus: boolean;\n value: TngDateValue<TDate>;\n weekStartsOn: TngWeekdayIndex;\n yearPageSize: number;\n}>;\n\ntype TngMutableState<TDate> = {\n activeDate: TDate;\n disabled: boolean;\n focusedSection: TngDateRangePickerFocusedSection;\n inputText: string;\n lastCloseReason: TngDateRangePickerCloseReason | null;\n open: boolean;\n validationError: string | null;\n value: TngDateValue<TDate>;\n view: TngCalendarView;\n visibleMonth: TDate;\n};\n\ntype TngKeyboardEventLike = Readonly<\n Pick<KeyboardEvent, 'altKey' | 'ctrlKey' | 'key' | 'metaKey' | 'preventDefault' | 'shiftKey'>\n>;\n\nconst createDateRangePickerId = createTngIdFactory('tng-date-range-picker');\nconst createDateRangePickerFocusableId = createTngIdFactory('tng-date-range-picker-focusable');\nconst dateRangePickerRegistry = new Set<DateRangePickerController<unknown>>();\nconst dateRangePickerFocusHandoff = createOverlayFocusHandoffController();\nconst emptyWeekdayLabels = Object.freeze([]) as readonly string[];\nconst emptyCells = Object.freeze([]) as readonly TngDateCell<unknown>[];\nconst emptyMonths = Object.freeze([]) as readonly TngMonthOption<unknown>[];\nconst emptyYears = Object.freeze([]) as readonly TngYearOption<unknown>[];\n\nfunction freezeAttributes(\n attributes: Readonly<Record<string, string | null | undefined>>,\n): TngDateRangePickerAttributeMap {\n const normalized: Record<string, string> = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined || value === '') {\n continue;\n }\n normalized[key] = value;\n }\n return Object.freeze(normalized);\n}\n\nfunction mapOverlayDismissReason(reason: TngOverlayDismissReason): TngDateRangePickerCloseReason {\n if (reason === 'escape-key') {\n return 'escape';\n }\n\n if (reason === 'outside-pointer' || reason === 'focus-outside') {\n return 'outside';\n }\n\n return 'programmatic';\n}\n\nfunction hasDisallowedModifiers(\n event: Readonly<Pick<KeyboardEvent, 'altKey' | 'ctrlKey' | 'metaKey'>>,\n): boolean {\n return event.altKey === true || event.ctrlKey === true || event.metaKey === true;\n}\n\nfunction normalizeView(value: string | undefined): TngCalendarView {\n return value === 'month' || value === 'year' ? value : 'day';\n}\n\nfunction normalizePosition(value: string | undefined): TngDateRangePickerPosition {\n return value === 'center' || value === 'end' ? value : 'start';\n}\n\nfunction normalizeOverlayMode(value: string | undefined): TngDateRangePickerOverlayMode {\n return value === 'push' || value === 'side' ? value : 'overlay';\n}\n\nfunction normalizeDirection(value: string | undefined): TngDateRangePickerDirection {\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n\nfunction resolveDefaultLocale(ownerDocument: Document | null | undefined): string {\n const documentLocale = ownerDocument?.documentElement?.lang?.trim();\n if (documentLocale !== undefined && documentLocale !== '') {\n return documentLocale;\n }\n\n const navigatorLocale =\n ownerDocument?.defaultView?.navigator.languages[0] ??\n ownerDocument?.defaultView?.navigator.language;\n if (typeof navigatorLocale === 'string' && navigatorLocale.trim() !== '') {\n return navigatorLocale;\n }\n\n const intlLocale = Intl.DateTimeFormat().resolvedOptions().locale;\n if (intlLocale.trim() !== '') {\n return intlLocale;\n }\n\n return 'en-US';\n}\n\nfunction ensureYearPageSize(value: number | undefined): number {\n if (!Number.isFinite(value) || value === undefined) {\n return 24;\n }\n\n return Math.max(12, Math.trunc(value));\n}\n\nfunction isRangeSelectionValue<TDate>(value: TngDateValue<TDate>): value is TngDateRange<TDate> {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.hasOwnProperty.call(value, 'start') &&\n Object.prototype.hasOwnProperty.call(value, 'end')\n );\n}\n\nfunction getRangeStartDate<TDate>(value: TngDateValue<TDate>): TDate | null {\n return isRangeSelectionValue(value) ? value.start : null;\n}\n\nfunction getRangeEndDate<TDate>(value: TngDateValue<TDate>): TDate | null {\n return isRangeSelectionValue(value) ? value.end : null;\n}\n\nfunction hasCompleteRange<TDate>(value: TngDateValue<TDate>): boolean {\n return getRangeStartDate(value) !== null && getRangeEndDate(value) !== null;\n}\n\nfunction hasPartialRange<TDate>(value: TngDateValue<TDate>): boolean {\n return getRangeStartDate(value) !== null && getRangeEndDate(value) === null;\n}\n\nfunction readDocument(input: Document | null | undefined): TngOverlayInteractionDomDocument | null {\n return input as TngOverlayInteractionDomDocument | null;\n}\n\nclass DateRangePickerController<TDate> implements TngDateRangePickerController<TDate> {\n private readonly instanceId: string;\n private readonly gridId: string;\n private readonly overlayId: string;\n private readonly monthLabelId: string;\n private readonly listenerSet = new Set<TngDateRangePickerListener<TDate>>();\n private readonly typeahead = createTypeaheadController({\n items: [],\n matchStrategy: 'start',\n });\n private readonly dayRovingFocus: TngRovingFocusController;\n private readonly monthRovingFocus: TngRovingFocusController;\n private readonly yearRovingFocus: TngRovingFocusController;\n private readonly dayActiveDescendant: TngActiveDescendantController;\n\n private config: TngResolvedConfig<TDate>;\n private state: TngMutableState<TDate>;\n private destroyed = false;\n private version = 0;\n private rangeAnchorDate: TDate | null = null;\n private focusVisibleDate: TDate | null = null;\n private hoverDate: TDate | null = null;\n private yearPageStart = 0;\n private cachedOutputsVersion = -1;\n private cachedOutputs: TngDateRangePickerOutputs<TDate> | null = null;\n private cachedWeekdayLabels: readonly string[] = emptyWeekdayLabels;\n private cachedCells: readonly TngDateCell<TDate>[] = emptyCells as readonly TngDateCell<TDate>[];\n private cachedMonthOptions: readonly TngMonthOption<TDate>[] =\n emptyMonths as readonly TngMonthOption<TDate>[];\n private cachedYearOptions: readonly TngYearOption<TDate>[] =\n emptyYears as readonly TngYearOption<TDate>[];\n private cachedGridVersion = -1;\n private cachedMonthVersion = -1;\n private cachedYearVersion = -1;\n private triggerElement: HTMLElement | null = null;\n private overlayElement: HTMLElement | null = null;\n private restoreFocusTargetId: string | null = null;\n private focusLayerRegistered = false;\n private overlayLayerRegistered = false;\n\n public constructor(config: Readonly<TngDateRangePickerConfig<TDate>>) {\n this.instanceId = config.id?.trim() || createDateRangePickerId();\n this.gridId = `${this.instanceId}-grid`;\n this.overlayId = `${this.instanceId}-overlay`;\n this.monthLabelId = `${this.instanceId}-month-label`;\n this.dayRovingFocus = createRovingFocusController({ itemIds: [], loop: false });\n this.monthRovingFocus = createRovingFocusController({ itemIds: [], loop: false });\n this.yearRovingFocus = createRovingFocusController({ itemIds: [], loop: false });\n this.dayActiveDescendant = createActiveDescendantController({\n hostId: this.gridId,\n itemIds: [],\n loop: false,\n });\n this.config = this.resolveConfig(config, null);\n const initialActiveDate = this.resolveInitialActiveDate(this.config.value, this.config.today);\n const visibleMonth = this.config.adapter.startOfMonth(initialActiveDate);\n this.state = {\n activeDate: initialActiveDate,\n disabled: this.config.disabled,\n focusedSection: resolveInitialFocusedSection(this.config.initialView),\n inputText: this.formatValueForInput(this.config.value),\n lastCloseReason: null,\n open: config.defaultOpen ?? false,\n validationError: null,\n value: this.config.value,\n view: this.config.initialView,\n visibleMonth,\n };\n this.focusVisibleDate = initialActiveDate;\n this.yearPageStart = this.resolveCenteredYearPageStart(\n this.config.adapter.getYear(initialActiveDate),\n );\n this.rangeAnchorDate = this.extractSelectionAnchor(this.state.value);\n\n if (this.state.open) {\n const activeElement = this.resolveActiveElement();\n this.restoreFocusTargetId =\n activeElement === null ? null : this.ensureElementId(activeElement);\n this.registerOverlayLayer();\n this.activateFocusLayer();\n }\n\n dateRangePickerRegistry.add(this as unknown as DateRangePickerController<unknown>);\n }\n\n public clear(): void {\n if (this.destroyed) {\n return;\n }\n\n const previousValue = this.state.value;\n const nextValue = clearSelectionForMode<TDate>(this.config.selectionMode);\n if (\n selectionValuesEqual(this.config.adapter, this.config.selectionMode, previousValue, nextValue)\n ) {\n return;\n }\n\n this.state.value = nextValue;\n this.rangeAnchorDate = null;\n this.hoverDate = null;\n this.state.validationError = null;\n this.state.inputText = this.formatValueForInput(nextValue);\n const nextActive = this.resolveInitialActiveDate(nextValue, this.config.today);\n this.applyActiveDate(nextActive, 'programmatic', true);\n this.bumpVersion();\n this.emit({\n previousValue,\n trigger: 'programmatic',\n type: 'valueChange',\n value: nextValue,\n });\n }\n\n public close(reason: TngDateRangePickerCloseReason = 'programmatic'): void {\n if (this.destroyed || !this.state.open) {\n return;\n }\n\n this.emit({ reason, type: 'closeStart' });\n this.state.open = false;\n this.state.lastCloseReason = reason;\n this.hoverDate = null;\n this.unregisterOverlayLayer();\n this.deactivateFocusLayer();\n this.bumpVersion();\n this.emit({ reason, type: 'closed' });\n }\n\n public commitInputText(): boolean {\n if (this.destroyed || !this.config.allowManualInput) {\n return false;\n }\n\n const inputText = this.state.inputText.trim();\n const parsed = this.parseInputText(inputText);\n if (parsed === null || !this.isStrictInputCommitValue(inputText, parsed)) {\n this.state.validationError = 'invalid-input';\n this.bumpVersion();\n return false;\n }\n\n if (this.isDateDisabled(parsed)) {\n this.state.validationError = 'out-of-range';\n this.bumpVersion();\n return false;\n }\n\n this.state.validationError = null;\n this.selectDate(parsed, { trigger: 'text-input' });\n return true;\n }\n\n public destroy(): void {\n if (this.destroyed) {\n return;\n }\n\n this.destroyed = true;\n this.unregisterOverlayLayer();\n this.unregisterFocusLayer();\n this.listenerSet.clear();\n dateRangePickerRegistry.delete(this as unknown as DateRangePickerController<unknown>);\n }\n\n public formatDate(date: TDate, format: TngDateFormatToken | string = 'label'): string {\n return this.config.adapter.format(date, format, this.config.locale);\n }\n\n public getOutputs(): TngDateRangePickerOutputs<TDate> {\n if (this.cachedOutputs !== null && this.cachedOutputsVersion === this.version) {\n return this.cachedOutputs;\n }\n\n const outputs: TngDateRangePickerOutputs<TDate> = Object.freeze({\n activeDate: this.state.activeDate,\n cells: this.getCells(),\n endDate: getRangeEndDate(this.state.value),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n getCellAttributes: (cellOrDate) => this.resolveCellAttributes(cellOrDate),\n getGridAttributes: () => this.resolveGridAttributes(),\n getHostAttributes: () => this.resolveHostAttributes(),\n getMonthAttributes: (monthOrOption) => this.resolveMonthAttributes(monthOrOption),\n getOverlayAttributes: () => this.resolveOverlayAttributes(),\n getTriggerAttributes: () => this.resolveTriggerAttributes(),\n getYearAttributes: (yearOrOption) => this.resolveYearAttributes(yearOrOption),\n inputText: this.state.inputText,\n labelMonthYear: this.config.adapter.format(\n this.state.visibleMonth,\n 'month-year',\n this.config.locale,\n ),\n layout: this.resolveLayout(),\n monthOptions: this.getMonthOptions(),\n open: this.state.open,\n previewEndDate: this.hoverDate,\n startDate: getRangeStartDate(this.state.value),\n validationError: this.state.validationError,\n value: this.state.value,\n view: this.state.view,\n visibleMonth: this.state.visibleMonth,\n weekdayLabels: this.getWeekdayLabels(),\n yearOptions: this.getYearOptions(),\n });\n\n this.cachedOutputsVersion = this.version;\n this.cachedOutputs = outputs;\n return outputs;\n }\n\n public getState(): TngDateRangePickerState<TDate> {\n return Object.freeze({\n activeDate: this.state.activeDate,\n disabled: this.state.disabled,\n endDate: getRangeEndDate(this.state.value),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n inputText: this.state.inputText,\n lastCloseReason: this.state.lastCloseReason,\n open: this.state.open,\n previewEndDate: this.hoverDate,\n startDate: getRangeStartDate(this.state.value),\n validationError: this.state.validationError,\n value: this.state.value,\n view: this.state.view,\n visibleMonth: this.state.visibleMonth,\n });\n }\n\n public goToNextMonth(): void {\n this.nextMonth();\n }\n\n public goToPrevMonth(): void {\n this.prevMonth();\n }\n\n public handleCellClick(\n date: TngDateInputValue<TDate>,\n options: Readonly<{ shiftKey?: boolean }> = {},\n ): void {\n this.selectDate(date, {\n shiftKey: options.shiftKey,\n trigger: 'pointer',\n });\n }\n\n public handleCellPointerEnter(date: TngDateInputValue<TDate>): void {\n if (this.destroyed || this.rangeAnchorDate === null || hasCompleteRange(this.state.value)) {\n return;\n }\n\n const normalized = normalizeDateInput(this.config.adapter, date, this.config.locale);\n if (normalized === null || this.isDateDisabled(normalized)) {\n return;\n }\n\n const previousPreviewEndDate = this.hoverDate;\n if (\n previousPreviewEndDate !== null &&\n datesEqual(this.config.adapter, previousPreviewEndDate, normalized)\n ) {\n return;\n }\n\n this.hoverDate = normalized;\n this.bumpVersion();\n this.emit({\n previewEndDate: normalized,\n previousPreviewEndDate,\n trigger: 'pointer',\n type: 'previewChange',\n });\n }\n\n public handleGridKeyDown(event: Readonly<TngKeyboardEventLike>): void {\n if (this.destroyed || this.state.disabled) {\n return;\n }\n\n if (event.key === 'Escape') {\n if (this.state.open) {\n event.preventDefault();\n this.close('escape');\n }\n return;\n }\n\n if (this.handlePageNavigation(event)) {\n return;\n }\n\n const action = resolveGridNavigationKeyAction(event, {\n direction: this.config.direction,\n });\n if (action === null) {\n if (this.config.enableTypeahead) {\n this.handleTypeahead(event.key);\n }\n return;\n }\n\n if (action.preventDefault) {\n event.preventDefault();\n }\n\n if (action.type === 'exit') {\n return;\n }\n\n if (action.type === 'activate') {\n this.selectDate(this.state.activeDate, {\n shiftKey: event.shiftKey === true,\n trigger: 'keyboard',\n });\n return;\n }\n\n this.handleResolvedDayGridAction(action.type, event.shiftKey === true);\n }\n\n public handleMonthGridKeyDown(event: Readonly<TngKeyboardEventLike>): void {\n this.handlePickerGridKeyDown(event, 'month');\n }\n\n public handleOverlayKeyDown(event: Readonly<TngKeyboardEventLike>): void {\n if (this.destroyed || !this.config.trapFocus || event.key !== 'Tab') {\n return;\n }\n\n const overlay = this.overlayElement;\n if (overlay === null || !dateRangePickerFocusHandoff.isTrapActive(this.instanceId)) {\n return;\n }\n\n const focusableMemberIds = this.resolveTabbableOverlayMemberIds(overlay);\n const firstMemberId = focusableMemberIds[0];\n if (firstMemberId === undefined) {\n return;\n }\n\n const lastMemberId = focusableMemberIds[focusableMemberIds.length - 1] ?? firstMemberId;\n const activeElement = this.resolveActiveElement();\n const activeElementId =\n activeElement !== null && overlay.contains(activeElement)\n ? this.ensureElementId(activeElement)\n : null;\n\n let candidateId: string | null = null;\n if (activeElementId === null) {\n candidateId = event.shiftKey ? lastMemberId : firstMemberId;\n } else if (activeElementId === firstMemberId && event.shiftKey) {\n candidateId = lastMemberId;\n } else if (activeElementId === lastMemberId && !event.shiftKey) {\n candidateId = firstMemberId;\n } else {\n dateRangePickerFocusHandoff.recordFocus(this.instanceId, activeElementId);\n return;\n }\n\n const resolvedId = dateRangePickerFocusHandoff.resolveFocusCandidate(\n this.instanceId,\n candidateId,\n );\n if (resolvedId === null) {\n return;\n }\n\n const nextFocusTarget = this.resolveElementById(resolvedId);\n if (nextFocusTarget === null) {\n return;\n }\n\n event.preventDefault();\n nextFocusTarget.focus();\n dateRangePickerFocusHandoff.recordFocus(this.instanceId, resolvedId);\n }\n\n public handleTriggerKeyDown(\n event: Readonly<Pick<KeyboardEvent, 'key' | 'preventDefault'>>,\n ): void {\n if (this.destroyed || this.state.disabled) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.open();\n }\n }\n\n public handleYearGridKeyDown(event: Readonly<TngKeyboardEventLike>): void {\n this.handlePickerGridKeyDown(event, 'year');\n }\n\n public nextMonth(): void {\n this.shiftVisibleMonth(1);\n }\n\n public nextYear(): void {\n this.shiftVisibleYear(1);\n }\n\n public open(): void {\n if (this.destroyed || this.state.disabled || this.state.open) {\n return;\n }\n\n if (this.config.closeOthersOnOpen) {\n for (const controller of dateRangePickerRegistry) {\n if (controller === (this as unknown as DateRangePickerController<unknown>)) {\n continue;\n }\n controller.close('programmatic');\n }\n }\n\n this.emit({ previous: false, type: 'openStart' });\n this.state.open = true;\n const activeElement = this.resolveActiveElement();\n if (activeElement !== null) {\n this.restoreFocusTargetId = this.ensureElementId(activeElement);\n } else if (this.triggerElement !== null) {\n this.restoreFocusTargetId = this.ensureElementId(this.triggerElement);\n } else {\n this.restoreFocusTargetId = null;\n }\n this.state.lastCloseReason = null;\n if (!this.config.preserveViewOnOpenClose) {\n this.state.view = this.config.initialView;\n this.state.focusedSection = resolveInitialFocusedSection(this.state.view);\n }\n this.applyActiveDate(\n this.resolveInitialActiveDate(this.state.value, this.config.today),\n 'programmatic',\n true,\n );\n this.registerOverlayLayer();\n this.activateFocusLayer();\n this.focusCurrentOverlayTarget();\n this.bumpVersion();\n this.emit({ next: true, previous: false, type: 'opened' });\n }\n\n public parseInputText(text: string): TDate | null {\n return this.config.adapter.parse(text, this.config.locale);\n }\n\n public prevMonth(): void {\n this.shiftVisibleMonth(-1);\n }\n\n public prevYear(): void {\n this.shiftVisibleYear(-1);\n }\n\n public registerOverlay(element: HTMLElement | null): void {\n this.overlayElement = element;\n if (this.state.open) {\n this.registerOverlayLayer();\n this.registerFocusLayer();\n this.activateFocusLayer();\n this.focusCurrentOverlayTarget();\n this.bumpVersion();\n } else if (element === null) {\n this.unregisterFocusLayer();\n }\n }\n\n public registerTrigger(element: HTMLElement | null): void {\n this.triggerElement = element;\n }\n\n public selectDate(\n date: TngDateInputValue<TDate>,\n options: Readonly<{ shiftKey?: boolean; trigger?: TngDateRangePickerTrigger }> = {},\n ): void {\n if (this.destroyed || this.state.disabled) {\n return;\n }\n\n const normalized = normalizeDateInput(this.config.adapter, date, this.config.locale);\n if (normalized === null) {\n this.state.validationError = 'invalid-value';\n this.bumpVersion();\n return;\n }\n\n if (this.isDateDisabled(normalized)) {\n return;\n }\n\n const trigger = options.trigger ?? 'programmatic';\n const previousValue = this.state.value;\n this.state.validationError = null;\n const nextValue = this.resolveNextSelection(normalized, options.shiftKey === true);\n if (\n selectionValuesEqual(this.config.adapter, this.config.selectionMode, previousValue, nextValue)\n ) {\n if (this.state.validationError !== null) {\n this.bumpVersion();\n }\n return;\n }\n\n this.state.value = nextValue;\n this.state.inputText = this.formatValueForInput(nextValue);\n this.rangeAnchorDate = this.extractSelectionAnchor(nextValue) ?? normalized;\n this.applyActiveDate(normalized, trigger, true);\n this.hoverDate = null;\n this.bumpVersion();\n this.emit({\n previousValue,\n trigger,\n type: 'valueChange',\n value: nextValue,\n });\n\n if (this.config.closeOnSelect && this.state.open && hasCompleteRange(nextValue)) {\n this.close('select');\n }\n }\n\n public selectMonth(monthIndex: number): void {\n if (this.destroyed) {\n return;\n }\n\n const normalizedMonth = Math.max(0, Math.min(11, Math.trunc(monthIndex)));\n const nextMonth = this.config.adapter.createDate(\n this.config.adapter.getYear(this.state.visibleMonth),\n normalizedMonth,\n 1,\n );\n if (\n !hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))\n ) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n this.state.visibleMonth = nextMonth;\n const nextActive = clampDateToMonth(this.config.adapter, this.state.activeDate, nextMonth);\n this.applyActiveDate(nextActive, 'programmatic', true);\n this.bumpVersion();\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: nextMonth,\n });\n\n if (this.config.autoCommitView) {\n this.setView('day');\n }\n }\n\n public selectYear(year: number): void {\n if (this.destroyed) {\n return;\n }\n\n const normalizedYear = Math.trunc(year);\n if (\n !hasSelectableDateInYear(\n this.config.adapter,\n normalizedYear,\n this.state.visibleMonth,\n (date) => this.isDateDisabled(date),\n )\n ) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n const nextMonth = this.config.adapter.createDate(\n normalizedYear,\n this.config.adapter.getMonth(previousMonth),\n 1,\n );\n this.state.visibleMonth = nextMonth;\n this.yearPageStart = this.resolveCenteredYearPageStart(normalizedYear);\n const nextActive = clampDateToMonth(this.config.adapter, this.state.activeDate, nextMonth);\n this.applyActiveDate(nextActive, 'programmatic', true);\n this.bumpVersion();\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: nextMonth,\n });\n this.emit({\n previousYear,\n type: 'yearChange',\n year: normalizedYear,\n });\n\n if (this.config.autoCommitView) {\n this.setView('day');\n }\n }\n\n public setActiveDate(\n date: TngDateInputValue<TDate>,\n trigger: TngDateRangePickerTrigger = 'programmatic',\n ): void {\n if (this.destroyed) {\n return;\n }\n\n const normalized = normalizeDateInput(this.config.adapter, date, this.config.locale);\n if (normalized === null) {\n return;\n }\n\n this.applyActiveDate(normalized, trigger, true);\n this.bumpVersion();\n }\n\n public setConfig(config: Partial<TngDateRangePickerConfig<TDate>>): void {\n if (this.destroyed) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n const previousTrapFocus = this.config.trapFocus;\n this.config = this.resolveConfig(config, this.config);\n this.state.disabled = this.config.disabled;\n this.state.value = this.coerceSelectionWithinConstraints(this.state.value);\n if (\n !hasPartialRange(this.state.value) ||\n (this.hoverDate !== null && this.isDateDisabled(this.hoverDate))\n ) {\n this.hoverDate = null;\n }\n this.state.activeDate = this.resolveValidDate(this.state.activeDate, this.state.visibleMonth);\n if (!isDateValueInMonth(this.config.adapter, this.state.activeDate, this.state.visibleMonth)) {\n this.state.visibleMonth = this.config.adapter.startOfMonth(this.state.activeDate);\n }\n this.yearPageStart = this.resolveCenteredYearPageStart(\n this.config.adapter.getYear(this.state.activeDate),\n );\n this.state.inputText = this.formatValueForInput(this.state.value);\n\n if (this.focusLayerRegistered && previousTrapFocus !== this.config.trapFocus) {\n this.unregisterFocusLayer();\n this.registerFocusLayer();\n if (this.state.open) {\n this.activateFocusLayer();\n }\n }\n\n this.bumpVersion();\n\n if (compareMonthIdentity(this.config.adapter, previousMonth, this.state.visibleMonth) !== 0) {\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n }\n\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n public setDisabled(disabled: boolean): void {\n if (this.destroyed || this.state.disabled === disabled) {\n return;\n }\n\n this.state.disabled = disabled;\n this.bumpVersion();\n }\n\n public setFocusedSection(section: TngDateRangePickerFocusedSection): void {\n if (this.destroyed || this.state.focusedSection === section) {\n return;\n }\n\n this.state.focusedSection = section;\n this.bumpVersion();\n }\n\n public setInputText(text: string): void {\n if (this.destroyed || !this.config.allowManualInput) {\n return;\n }\n\n this.state.inputText = text;\n this.state.validationError = null;\n if (this.config.onPartialInputCommit) {\n this.commitInputText();\n return;\n }\n this.bumpVersion();\n }\n\n public setOpen(open: boolean): void {\n if (open) {\n this.open();\n return;\n }\n\n this.close('programmatic');\n }\n\n public setState(patch: Readonly<TngDateRangePickerStatePatch<TDate>>): void {\n if (this.destroyed) {\n return;\n }\n\n const previousView = this.state.view;\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n const previousActive = this.state.activeDate;\n const previousValue = this.state.value;\n\n if (patch.view !== undefined) {\n this.state.view = normalizeView(patch.view);\n this.state.focusedSection = resolveInitialFocusedSection(this.state.view);\n }\n\n if (patch.disabled !== undefined) {\n this.state.disabled = patch.disabled;\n }\n\n if (patch.visibleMonth !== undefined) {\n const normalized = normalizeDateInput(\n this.config.adapter,\n patch.visibleMonth,\n this.config.locale,\n );\n if (normalized !== null) {\n this.state.visibleMonth = this.config.adapter.startOfMonth(normalized);\n }\n }\n\n if (patch.activeDate !== undefined) {\n const normalized = normalizeDateInput(\n this.config.adapter,\n patch.activeDate,\n this.config.locale,\n );\n if (normalized !== null) {\n this.state.activeDate = this.resolveValidDate(normalized, this.state.visibleMonth);\n }\n }\n\n if (patch.value !== undefined) {\n const normalized = normalizeSelectionInput(\n this.config.adapter,\n this.config.selectionMode,\n patch.value,\n this.config.locale,\n );\n this.state.value = this.coerceSelectionWithinConstraints(normalized.value);\n this.rangeAnchorDate = this.extractSelectionAnchor(this.state.value);\n this.hoverDate = null;\n }\n\n if (patch.inputText !== undefined) {\n this.state.inputText = patch.inputText;\n } else {\n this.state.inputText = this.formatValueForInput(this.state.value);\n }\n\n this.bumpVersion();\n\n if (previousView !== this.state.view) {\n this.emit({\n previousView,\n type: 'viewChange',\n view: this.state.view,\n });\n }\n\n if (compareMonthIdentity(this.config.adapter, previousMonth, this.state.visibleMonth) !== 0) {\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n }\n\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n\n if (!datesEqual(this.config.adapter, previousActive, this.state.activeDate)) {\n this.emit({\n activeDate: this.state.activeDate,\n previousActiveDate: previousActive,\n trigger: 'programmatic',\n type: 'activeChange',\n });\n }\n\n if (\n !selectionValuesEqual(\n this.config.adapter,\n this.config.selectionMode,\n previousValue,\n this.state.value,\n )\n ) {\n this.emit({\n previousValue,\n trigger: 'programmatic',\n type: 'valueChange',\n value: this.state.value,\n });\n }\n }\n\n public setValue(value: TngDateSelectionInput<TDate>): void {\n if (this.destroyed) {\n return;\n }\n\n const normalized = normalizeSelectionInput(\n this.config.adapter,\n this.config.selectionMode,\n value,\n this.config.locale,\n );\n const previousValidationError = this.state.validationError;\n if (normalized.validationError !== null) {\n this.state.validationError = normalized.validationError;\n }\n\n const coerced = this.coerceSelectionWithinConstraints(normalized.value);\n if (\n selectionValuesEqual(\n this.config.adapter,\n this.config.selectionMode,\n this.state.value,\n coerced,\n )\n ) {\n if (previousValidationError !== this.state.validationError) {\n this.bumpVersion();\n }\n return;\n }\n\n const previousValue = this.state.value;\n this.state.value = coerced;\n this.state.validationError = normalized.validationError;\n this.state.inputText = this.formatValueForInput(coerced);\n this.hoverDate = null;\n const anchor = this.extractSelectionAnchor(coerced);\n this.rangeAnchorDate = anchor;\n if (anchor !== null) {\n this.applyActiveDate(anchor, 'programmatic', true);\n }\n this.bumpVersion();\n this.emit({\n previousValue,\n trigger: 'programmatic',\n type: 'valueChange',\n value: coerced,\n });\n }\n\n public setView(view: TngCalendarView): void {\n if (this.destroyed) {\n return;\n }\n\n const normalizedView = normalizeView(view);\n if (this.state.view === normalizedView) {\n return;\n }\n\n const previousView = this.state.view;\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n this.state.view = normalizedView;\n this.state.focusedSection = resolveInitialFocusedSection(normalizedView);\n if (normalizedView === 'year') {\n this.yearPageStart = this.resolveCenteredYearPageStart(\n this.config.adapter.getYear(this.state.activeDate),\n );\n }\n if (\n normalizedView === 'day' &&\n !isDateValueInMonth(this.config.adapter, this.state.activeDate, this.state.visibleMonth)\n ) {\n this.state.visibleMonth = this.config.adapter.startOfMonth(this.state.activeDate);\n }\n this.bumpVersion();\n this.emit({\n previousView,\n type: 'viewChange',\n view: normalizedView,\n });\n if (compareMonthIdentity(this.config.adapter, previousMonth, this.state.visibleMonth) !== 0) {\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n }\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n public setVisibleMonth(valueOrYear: TngDateInputValue<TDate> | number, month?: number): void {\n if (this.destroyed) {\n return;\n }\n\n let nextMonth: TDate | null;\n if (typeof valueOrYear === 'number') {\n if (month === undefined) {\n return;\n }\n nextMonth = this.config.adapter.createDate(Math.trunc(valueOrYear), Math.trunc(month), 1);\n } else {\n const normalized = normalizeDateInput(this.config.adapter, valueOrYear, this.config.locale);\n nextMonth = normalized === null ? null : this.config.adapter.startOfMonth(normalized);\n }\n\n if (nextMonth === null) {\n return;\n }\n\n if (\n !hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))\n ) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n this.state.visibleMonth = this.config.adapter.startOfMonth(nextMonth);\n this.yearPageStart = this.resolveCenteredYearPageStart(\n this.config.adapter.getYear(this.state.visibleMonth),\n );\n this.state.activeDate = this.resolveValidDate(this.state.activeDate, this.state.visibleMonth);\n this.bumpVersion();\n if (compareMonthIdentity(this.config.adapter, previousMonth, this.state.visibleMonth) !== 0) {\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n }\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n public setVisibleYear(year: number): void {\n this.selectYear(year);\n }\n\n public showDaysPanel(): void {\n this.setView('day');\n }\n\n public showMonthsPanel(): void {\n this.setView('month');\n }\n\n public showYearsPanel(): void {\n this.setView('year');\n }\n\n public subscribe(listener: TngDateRangePickerListener<TDate>): () => void {\n this.listenerSet.add(listener);\n return () => {\n this.listenerSet.delete(listener);\n };\n }\n\n public toggleOpen(): void {\n if (this.state.open) {\n this.close('programmatic');\n return;\n }\n\n this.open();\n }\n\n private applyActiveDate(\n nextDate: TDate,\n trigger: TngDateRangePickerTrigger,\n focusVisible: boolean,\n ): void {\n const resolved = this.resolveValidDate(nextDate, this.state.visibleMonth);\n if (datesEqual(this.config.adapter, resolved, this.state.activeDate)) {\n this.focusVisibleDate = focusVisible ? resolved : null;\n this.syncPreviewDateForFocus(resolved, trigger);\n this.bumpVersion();\n return;\n }\n\n const previousActiveDate = this.state.activeDate;\n this.state.activeDate = resolved;\n this.focusVisibleDate = focusVisible ? resolved : null;\n this.syncPreviewDateForFocus(resolved, trigger);\n if (!isDateValueInMonth(this.config.adapter, resolved, this.state.visibleMonth)) {\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n this.state.visibleMonth = this.config.adapter.startOfMonth(resolved);\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n this.emit({\n activeDate: resolved,\n previousActiveDate,\n trigger,\n type: 'activeChange',\n });\n this.bumpVersion();\n }\n\n private applyPickerActiveDate(\n nextDate: TDate,\n trigger: TngDateRangePickerTrigger,\n focusVisible: boolean,\n ): void {\n const resolved = this.resolveValidDate(nextDate, this.config.adapter.startOfMonth(nextDate));\n if (datesEqual(this.config.adapter, resolved, this.state.activeDate)) {\n this.focusVisibleDate = focusVisible ? resolved : null;\n this.bumpVersion();\n return;\n }\n\n const previousActiveDate = this.state.activeDate;\n this.state.activeDate = resolved;\n this.focusVisibleDate = focusVisible ? resolved : null;\n this.emit({\n activeDate: resolved,\n previousActiveDate,\n trigger,\n type: 'activeChange',\n });\n this.bumpVersion();\n }\n\n private bumpVersion(): void {\n this.version += 1;\n }\n\n private syncPreviewDateForFocus(date: TDate, trigger: TngDateRangePickerTrigger): void {\n if (trigger !== 'keyboard') {\n return;\n }\n\n if (\n getRangeStartDate(this.state.value) === null ||\n getRangeEndDate(this.state.value) !== null\n ) {\n this.hoverDate = null;\n return;\n }\n\n if (!this.isDateDisabled(date)) {\n this.hoverDate = date;\n }\n }\n\n private coerceSelectionWithinConstraints(value: TngDateValue<TDate>): TngDateValue<TDate> {\n if (value === null) {\n return clearSelectionForMode(this.config.selectionMode);\n }\n\n const range = normalizeRangeOrder(this.config.adapter, value as TngDateRange<TDate>);\n if (range.start === null) {\n return Object.freeze({ end: null, start: null });\n }\n if (this.isDateDisabled(range.start, { includeComponentDisabled: false })) {\n this.state.validationError = 'out-of-range';\n return Object.freeze({ end: null, start: null });\n }\n if (range.end === null) {\n return range;\n }\n if (this.isDateDisabled(range.end, { includeComponentDisabled: false })) {\n this.state.validationError = 'range-disabled';\n return Object.freeze({ end: null, start: range.start });\n }\n return range;\n }\n\n private emit(event: TngDateRangePickerEvent<TDate>): void {\n for (const listener of this.listenerSet) {\n listener(event);\n }\n }\n\n private extractSelectionAnchor(value: TngDateValue<TDate>): TDate | null {\n if (value === null) {\n return null;\n }\n if (isRangeSelectionValue(value)) {\n return value.end ?? value.start;\n }\n return null;\n }\n\n private formatValueForInput(value: TngDateValue<TDate>): string {\n if (value === null) {\n return '';\n }\n\n const range = value as TngDateRange<TDate>;\n if (range.start === null) {\n return '';\n }\n if (range.end === null) {\n return this.config.adapter.format(range.start, 'input', this.config.locale);\n }\n return `${this.config.adapter.format(range.start, 'input', this.config.locale)} – ${this.config.adapter.format(\n range.end,\n 'input',\n this.config.locale,\n )}`;\n }\n\n private isStrictInputCommitValue(inputText: string, parsed: TDate): boolean {\n const canonicalInputText = this.config.adapter\n .format(parsed, 'input', this.config.locale)\n .trim();\n return inputText === canonicalInputText;\n }\n\n private getCells(): readonly TngDateCell<TDate>[] {\n if (this.cachedGridVersion === this.version) {\n return this.cachedCells;\n }\n\n const cells = buildMonthGrid({\n activeDate: this.state.activeDate,\n adapter: this.config.adapter,\n createCellId: (date) => `${this.instanceId}-cell-${toDateKey(this.config.adapter, date)}`,\n fixedWeeks: this.config.fixedWeeks,\n focusStrategy: this.config.focusStrategy,\n focusedDate: this.focusVisibleDate,\n inRange: (date) => rangeIncludesDate(this.config.adapter, this.state.value, date),\n isDisabled: (date) => this.isDateDisabled(date),\n isPreviewRange: (date) => this.isInPreviewRange(date),\n isRangeEnd: (date) => {\n const range = this.state.value;\n return (\n isRangeSelectionValue(range) &&\n range.end !== null &&\n datesEqual(this.config.adapter, range.end, date)\n );\n },\n isRangeStart: (date) => {\n const range = this.state.value;\n return (\n isRangeSelectionValue(range) &&\n range.start !== null &&\n datesEqual(this.config.adapter, range.start, date)\n );\n },\n isSelected: (date) =>\n valueIncludesDate(this.config.adapter, this.config.selectionMode, this.state.value, date),\n locale: this.config.locale,\n showOutsideDays: this.config.showOutsideDays,\n today: this.config.today,\n visibleMonth: this.state.visibleMonth,\n weekStartsOn: this.config.weekStartsOn,\n });\n\n this.syncDayFocusControllers(cells);\n\n if (this.config.enableTypeahead) {\n this.typeahead.setItems(\n cells\n .filter((cell) => !cell.disabled && !cell.hidden)\n .map((cell) => ({ disabled: false, id: cell.id, text: cell.label })),\n );\n }\n\n this.cachedCells = cells;\n this.cachedGridVersion = this.version;\n return cells;\n }\n\n private getMonthOptions(): readonly TngMonthOption<TDate>[] {\n if (this.cachedMonthVersion === this.version) {\n return this.cachedMonthOptions;\n }\n\n const options = buildMonthOptions({\n activeDate: this.state.activeDate,\n adapter: this.config.adapter,\n createId: (month) => `${this.instanceId}-month-${month}`,\n disabledMonth: (month) =>\n !hasSelectableDateInMonth(\n this.config.adapter,\n this.config.adapter.createDate(\n this.config.adapter.getYear(this.state.visibleMonth),\n month,\n 1,\n ),\n (date) => this.isDateDisabled(date),\n ),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n locale: this.config.locale,\n selectedMonth: (month) => {\n const anchor = this.extractSelectionAnchor(this.state.value);\n return anchor !== null && this.config.adapter.getMonth(anchor) === month;\n },\n visibleMonth: this.state.visibleMonth,\n });\n\n this.syncMonthFocusController(options);\n\n this.cachedMonthOptions = options;\n this.cachedMonthVersion = this.version;\n return options;\n }\n\n private getWeekdayLabels(): readonly string[] {\n if (this.cachedWeekdayLabels.length > 0 && this.cachedGridVersion === this.version) {\n return this.cachedWeekdayLabels;\n }\n\n const start = this.config.adapter.startOfWeek(this.config.today, this.config.weekStartsOn);\n const labels = Array.from({ length: 7 }, (_, index) =>\n this.config.adapter.format(\n this.config.adapter.addDays(start, index),\n 'weekday-short',\n this.config.locale,\n ),\n );\n this.cachedWeekdayLabels = Object.freeze(labels);\n return this.cachedWeekdayLabels;\n }\n\n private getYearOptions(): readonly TngYearOption<TDate>[] {\n if (this.cachedYearVersion === this.version) {\n return this.cachedYearOptions;\n }\n\n const totalYears = this.config.yearPageSize;\n const options = buildYearOptions({\n activeDate: this.state.activeDate,\n adapter: this.config.adapter,\n createId: (year) => `${this.instanceId}-year-${year}`,\n disabledYear: (year) =>\n !hasSelectableDateInYear(this.config.adapter, year, this.state.visibleMonth, (date) =>\n this.isDateDisabled(date),\n ),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n locale: this.config.locale,\n selectedYear: (year) => {\n const anchor = this.extractSelectionAnchor(this.state.value);\n return anchor !== null && this.config.adapter.getYear(anchor) === year;\n },\n startYear: this.yearPageStart,\n totalYears,\n visibleMonth: this.state.visibleMonth,\n });\n\n this.syncYearFocusController(options);\n\n this.cachedYearOptions = options;\n this.cachedYearVersion = this.version;\n return options;\n }\n\n private handlePageNavigation(event: Readonly<TngKeyboardEventLike>): boolean {\n if (event.key === 'PageUp' || event.key === 'PageDown') {\n event.preventDefault();\n const direction = event.key === 'PageDown' ? 1 : -1;\n const useYear = event.ctrlKey === true || event.metaKey === true || event.shiftKey === true;\n const nextActive = useYear\n ? this.config.adapter.addYears(this.state.activeDate, direction)\n : this.config.adapter.addMonths(this.state.activeDate, direction);\n this.applyActiveDate(nextActive, 'keyboard', true);\n return true;\n }\n\n return false;\n }\n\n private handlePickerGridKeyDown(\n event: Readonly<TngKeyboardEventLike>,\n view: 'month' | 'year',\n ): void {\n if (this.destroyed || this.state.disabled) {\n return;\n }\n\n const options = view === 'month' ? this.getMonthOptions() : this.getYearOptions();\n const activeIndex = options.findIndex((option) => option.active);\n\n if (event.key === 'Escape') {\n const nextView = resolveViewForEscape(this.state.view);\n if (nextView === null) {\n this.close('escape');\n } else {\n this.setView(nextView);\n }\n event.preventDefault();\n return;\n }\n\n const action = resolveGridNavigationKeyAction(event, {\n direction: this.config.direction,\n });\n if (action === null) {\n return;\n }\n\n if (action.preventDefault) {\n event.preventDefault();\n }\n\n if (action.type === 'exit') {\n return;\n }\n\n if (action.type === 'activate') {\n const activeOption = options[Math.max(0, activeIndex)];\n if (activeOption === undefined || activeOption.disabled) {\n return;\n }\n if (view === 'month') {\n this.selectMonth((activeOption as TngMonthOption<TDate>).index);\n } else {\n this.selectYear((activeOption as TngYearOption<TDate>).year);\n }\n return;\n }\n\n const currentOption = options[Math.max(0, activeIndex)];\n if (currentOption === undefined) {\n return;\n }\n const currentPosition = this.optionIndexToGridPosition(activeIndex, 4);\n\n const nextPosition = resolveNavigableGridCell(currentPosition, action.type, {\n bounds: {\n colCount: 4,\n rowCount: Math.ceil(options.length / 4),\n },\n cells: options.map((option, index) => ({\n col: index % 4,\n disabled: option.disabled,\n row: Math.floor(index / 4),\n })),\n });\n const yearDelta = view === 'year' ? this.resolveYearBoundaryDelta(action.type) : null;\n const monthDelta = view === 'month' ? this.resolveMonthBoundaryDelta(action.type) : null;\n const isBoundaryClamp =\n ((view === 'year' && yearDelta !== null) || (view === 'month' && monthDelta !== null)) &&\n nextPosition !== null &&\n nextPosition.row === currentPosition.row &&\n nextPosition.col === currentPosition.col;\n\n if (nextPosition === null || isBoundaryClamp) {\n if (view === 'year' && yearDelta !== null) {\n this.state.focusedSection = 'year';\n const fallbackYearOption =\n action.type === 'move-up' || action.type === 'move-down'\n ? this.findYearOptionInVerticalDirection(\n options as readonly TngYearOption<TDate>[],\n activeIndex,\n action.type,\n )\n : null;\n if (fallbackYearOption !== null) {\n this.applyPickerActiveDate(fallbackYearOption.date, 'keyboard', true);\n return;\n }\n const targetYear = (currentOption as TngYearOption<TDate>).year + yearDelta;\n if (\n !hasSelectableDateInYear(\n this.config.adapter,\n targetYear,\n this.state.visibleMonth,\n (date) => this.isDateDisabled(date),\n )\n ) {\n return;\n }\n this.shiftYearPageToInclude(targetYear);\n this.applyPickerActiveDate(\n this.config.adapter.createDate(\n targetYear,\n this.config.adapter.getMonth(this.state.visibleMonth),\n 1,\n ),\n 'keyboard',\n true,\n );\n return;\n }\n\n if (view === 'month' && monthDelta !== null) {\n this.state.focusedSection = 'month';\n const targetMonth = this.config.adapter.addMonths(\n (currentOption as TngMonthOption<TDate>).date,\n monthDelta,\n );\n if (\n !hasSelectableDateInMonth(this.config.adapter, targetMonth, (date) =>\n this.isDateDisabled(date),\n )\n ) {\n return;\n }\n this.shiftMonthGridToTarget(targetMonth);\n this.applyPickerActiveDate(targetMonth, 'keyboard', true);\n }\n return;\n }\n\n const nextIndex = nextPosition.row * 4 + nextPosition.col;\n const nextOption = options[nextIndex];\n if (nextOption === undefined || nextOption.disabled) {\n return;\n }\n\n if (view === 'month') {\n this.state.focusedSection = 'month';\n } else {\n this.state.focusedSection = 'year';\n }\n\n this.applyPickerActiveDate(nextOption.date, 'keyboard', true);\n }\n\n private findYearOptionInVerticalDirection(\n options: readonly TngYearOption<TDate>[],\n activeIndex: number,\n actionType: 'move-down' | 'move-up',\n ): TngYearOption<TDate> | null {\n if (actionType === 'move-up') {\n for (let index = activeIndex - 1; index >= 0; index -= 1) {\n const option = options[index];\n if (option !== undefined && !option.disabled) {\n return option;\n }\n }\n return null;\n }\n\n for (let index = activeIndex + 1; index < options.length; index += 1) {\n const option = options[index];\n if (option !== undefined && !option.disabled) {\n return option;\n }\n }\n\n return null;\n }\n\n private handleResolvedDayGridAction(\n actionType: Exclude<TngGridNavigationActionType, 'activate' | 'exit'>,\n shiftKey: boolean,\n ): void {\n const cells = this.getCells();\n const activeCell = cells.find((cell) => cell.active) ?? null;\n if (activeCell === null) {\n return;\n }\n\n if (\n actionType === 'move-left' ||\n actionType === 'move-right' ||\n actionType === 'move-up' ||\n actionType === 'move-down'\n ) {\n const delta =\n actionType === 'move-left'\n ? -1\n : actionType === 'move-right'\n ? 1\n : actionType === 'move-up'\n ? -7\n : 7;\n const nextDate = this.resolveDirectionalTarget(activeCell.date, delta);\n this.applyActiveDate(nextDate, 'keyboard', true);\n if (shiftKey && this.config.enableRangeSelection) {\n this.commitRangeFromAnchor(nextDate);\n }\n return;\n }\n\n const nextPosition = resolveNavigableGridCell(\n {\n col: activeCell.colIndex,\n row: activeCell.rowIndex,\n },\n actionType,\n {\n bounds: {\n colCount: 7,\n rowCount: Math.ceil(cells.length / 7),\n },\n cells: cells.map((cell) => ({\n col: cell.colIndex,\n disabled: cell.disabled,\n row: cell.rowIndex,\n })),\n },\n );\n if (nextPosition === null) {\n return;\n }\n\n const nextCell = cells.find(\n (cell) => cell.colIndex === nextPosition.col && cell.rowIndex === nextPosition.row,\n );\n if (nextCell === undefined || nextCell.disabled) {\n return;\n }\n\n this.applyActiveDate(nextCell.date, 'keyboard', true);\n }\n\n private handleTypeahead(key: string): void {\n if (!/^\\d$/.test(key)) {\n return;\n }\n\n const result = this.typeahead.handleKey(key);\n if (result.activeId === null) {\n return;\n }\n\n const cell = this.getCells().find((item) => item.id === result.activeId);\n if (cell === undefined) {\n return;\n }\n\n this.applyActiveDate(cell.date, 'keyboard', true);\n }\n\n private isDateDisabled(\n date: TDate,\n options: Readonly<{ includeComponentDisabled?: boolean }> = {},\n ): boolean {\n if (options.includeComponentDisabled !== false && this.state?.disabled === true) {\n return true;\n }\n\n if (this.config.min !== null && this.config.adapter.compare(date, this.config.min) < 0) {\n return true;\n }\n\n if (this.config.max !== null && this.config.adapter.compare(date, this.config.max) > 0) {\n return true;\n }\n\n return this.config.disableDate?.(date) ?? false;\n }\n\n private isInPreviewRange(date: TDate): boolean {\n const start = getRangeStartDate(this.state.value);\n const previewEnd = this.hoverDate;\n if (start === null || previewEnd === null || getRangeEndDate(this.state.value) !== null) {\n return false;\n }\n\n const range = normalizeRangeOrder(this.config.adapter, {\n end: previewEnd,\n start,\n });\n if (range.start === null || range.end === null) {\n return false;\n }\n\n return (\n this.config.adapter.compare(range.start, date) <= 0 &&\n this.config.adapter.compare(range.end, date) >= 0\n );\n }\n\n private isPreviewEndDate(date: TDate): boolean {\n const start = getRangeStartDate(this.state.value);\n const previewEnd = this.hoverDate;\n return (\n start !== null &&\n previewEnd !== null &&\n getRangeEndDate(this.state.value) === null &&\n datesEqual(this.config.adapter, previewEnd, date)\n );\n }\n\n private registerOverlayLayer(): void {\n if (this.overlayLayerRegistered || this.config.overlayRuntime === null) {\n return;\n }\n\n this.config.overlayRuntime.registerLayer({\n containsTarget: (target) =>\n (target instanceof Node && this.overlayElement?.contains(target) === true) ||\n (target instanceof Node && this.triggerElement?.contains(target) === true),\n dismissOnEscape: this.config.closeOnEscape,\n dismissOnOutsidePointer: this.config.closeOnOutsideClick,\n id: `${this.instanceId}-layer`,\n modal: false,\n onDismiss: (reason) => this.close(mapOverlayDismissReason(reason)),\n });\n this.overlayLayerRegistered = true;\n }\n\n private activateFocusLayer(): void {\n this.registerFocusLayer();\n if (!this.focusLayerRegistered) {\n return;\n }\n\n dateRangePickerFocusHandoff.activateLayer(this.instanceId, this.restoreFocusTargetId);\n }\n\n private deactivateFocusLayer(): void {\n if (!this.focusLayerRegistered) {\n return;\n }\n\n const restoreFocusTargetId = dateRangePickerFocusHandoff.deactivateLayer(this.instanceId);\n if (!this.config.restoreFocus || restoreFocusTargetId === null) {\n return;\n }\n\n const restoreFocusTarget = this.resolveElementById(restoreFocusTargetId) ?? this.triggerElement;\n restoreFocusTarget?.focus();\n }\n\n private focusCurrentOverlayTarget(): void {\n if (!this.state.open || this.overlayElement === null) {\n return;\n }\n\n const targetId = this.resolveCurrentOverlayTargetId();\n if (targetId === null) {\n return;\n }\n\n const resolvedTargetId = dateRangePickerFocusHandoff.resolveFocusCandidate(\n this.instanceId,\n targetId,\n );\n if (resolvedTargetId === null) {\n return;\n }\n\n const target = this.resolveElementById(resolvedTargetId);\n if (target === null) {\n return;\n }\n\n target.focus();\n dateRangePickerFocusHandoff.recordFocus(this.instanceId, resolvedTargetId);\n }\n\n private resolveActiveElement(): HTMLElement | null {\n const activeElement = this.config.ownerDocument?.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n private resolveElementById(id: string | null): HTMLElement | null {\n if (id === null) {\n return null;\n }\n\n const element = this.config.ownerDocument?.getElementById(id);\n return element instanceof HTMLElement ? element : null;\n }\n\n private resolveCellAttributes(\n cellOrDate: Readonly<TngDateCell<TDate>> | TDate,\n ): TngDateRangePickerAttributeMap {\n const cell =\n 'id' in (cellOrDate as TngDateCell<TDate>)\n ? (cellOrDate as TngDateCell<TDate>)\n : this.getCells().find((candidate) =>\n datesEqual(this.config.adapter, candidate.date, cellOrDate as TDate),\n );\n if (cell === undefined) {\n return freezeAttributes({});\n }\n\n return freezeAttributes({\n 'aria-current': cell.today ? 'date' : null,\n 'aria-disabled': cell.disabled ? 'true' : null,\n 'aria-label': this.resolveCellAriaLabel(cell),\n 'aria-selected': cell.selected ? 'true' : 'false',\n 'data-active': cell.active ? 'true' : null,\n 'data-disabled': cell.disabled ? 'true' : null,\n 'data-focused': cell.focusVisible ? 'true' : null,\n 'data-focus-visible': cell.focusVisible ? 'true' : null,\n 'data-hidden': cell.hidden ? 'true' : null,\n 'data-in-month': cell.inMonth ? 'true' : null,\n 'data-in-range': cell.inRange ? 'true' : null,\n 'data-outside-month': cell.inMonth ? null : 'true',\n 'data-preview-end': this.isPreviewEndDate(cell.date) ? 'true' : null,\n 'data-preview-range': cell.previewRange ? 'true' : null,\n 'data-range-end': cell.rangeEnd ? 'true' : null,\n 'data-range-start': cell.rangeStart ? 'true' : null,\n 'data-selected': cell.selected ? 'true' : null,\n 'data-slot': 'date-range-picker-cell',\n 'data-today': cell.today ? 'true' : null,\n id: cell.id,\n role: 'gridcell',\n tabindex:\n this.config.focusStrategy === 'roving'\n ? `${this.dayRovingFocus.getActiveId() === cell.id ? 0 : -1}`\n : '-1',\n });\n }\n\n private resolveCellAriaLabel(cell: Readonly<TngDateCell<TDate>>): string {\n const descriptors: string[] = [cell.label];\n if (cell.rangeStart) {\n descriptors.push('selected start date');\n }\n if (cell.rangeEnd) {\n descriptors.push('selected end date');\n }\n if (cell.inRange) {\n descriptors.push('in selected range');\n }\n if (cell.previewRange) {\n descriptors.push('in preview range');\n }\n if (this.isPreviewEndDate(cell.date)) {\n descriptors.push('preview end date');\n }\n if (cell.disabled) {\n descriptors.push('unavailable');\n }\n\n return descriptors.join(', ');\n }\n\n private resolveDirectionalTarget(currentDate: TDate, delta: number): TDate {\n if (!this.config.skipDisabled) {\n return this.config.adapter.addDays(currentDate, delta);\n }\n\n return moveDateSkippingDisabled({\n adapter: this.config.adapter,\n delta,\n isDisabled: (date) => this.isDateDisabled(date),\n start: currentDate,\n });\n }\n\n private resolveCurrentOverlayTargetId(): string | null {\n if (this.state.view === 'day') {\n if (this.config.focusStrategy === 'active-descendant') {\n return this.gridId;\n }\n\n return this.dayRovingFocus.getActiveId();\n }\n\n if (this.state.view === 'month') {\n return this.monthRovingFocus.getActiveId();\n }\n\n if (this.state.view === 'year') {\n return this.yearRovingFocus.getActiveId();\n }\n\n return null;\n }\n\n private resolveGridAttributes(): TngDateRangePickerAttributeMap {\n const activeDescendantAttributes =\n this.config.focusStrategy === 'active-descendant'\n ? this.dayActiveDescendant.getHostAttributes()\n : null;\n\n return freezeAttributes({\n 'aria-activedescendant': activeDescendantAttributes?.['aria-activedescendant'] ?? null,\n 'aria-labelledby': this.monthLabelId,\n 'data-slot': 'date-range-picker-grid',\n id: this.gridId,\n role: 'grid',\n });\n }\n\n private resolveHostAttributes(): TngDateRangePickerAttributeMap {\n return freezeAttributes({\n 'aria-describedby': this.config.ariaDescribedBy,\n 'aria-label': this.config.ariaLabel,\n 'aria-labelledby': this.config.ariaLabelledBy,\n 'data-disabled': this.state.disabled ? 'true' : null,\n 'data-open': this.state.open ? 'true' : 'false',\n 'data-slot': 'date-range-picker',\n 'data-view': this.state.view,\n dir: this.config.direction,\n role: 'group',\n });\n }\n\n private resolveInitialActiveDate(value: TngDateValue<TDate>, fallback: TDate): TDate {\n const anchor = this.extractSelectionAnchor(value);\n if (anchor !== null && !this.isDateDisabled(anchor)) {\n return anchor;\n }\n\n if (!this.isDateDisabled(fallback)) {\n return fallback;\n }\n\n const firstEnabled = findFirstEnabledDateInMonth(\n this.config.adapter,\n this.config.adapter.startOfMonth(fallback),\n (date) => this.isDateDisabled(date),\n );\n if (firstEnabled !== null) {\n return firstEnabled;\n }\n\n if (this.config.min !== null && !this.isDateDisabled(this.config.min)) {\n return this.config.min;\n }\n\n if (this.config.max !== null && !this.isDateDisabled(this.config.max)) {\n return this.config.max;\n }\n\n return fallback;\n }\n\n private resolveLayout(): TngDateRangePickerLayout {\n if (!this.state.open || this.config.overlayMode === 'overlay') {\n return Object.freeze({\n mode: this.config.overlayMode,\n offsetX: 0,\n width: 0,\n });\n }\n\n const width = this.config.overlaySize;\n if (this.config.position === 'center') {\n return Object.freeze({ mode: this.config.overlayMode, offsetX: 0, width });\n }\n\n const startOffset = this.config.direction === 'rtl' ? -width : width;\n const endOffset = this.config.direction === 'rtl' ? width : -width;\n return Object.freeze({\n mode: this.config.overlayMode,\n offsetX: this.config.position === 'start' ? startOffset : endOffset,\n width,\n });\n }\n\n private resolveMonthAttributes(\n monthOrOption: number | Readonly<TngMonthOption<TDate>>,\n ): TngDateRangePickerAttributeMap {\n const option =\n typeof monthOrOption === 'number'\n ? this.getMonthOptions().find((item) => item.index === monthOrOption)\n : monthOrOption;\n if (option === undefined) {\n return freezeAttributes({});\n }\n\n return freezeAttributes({\n 'aria-disabled': option.disabled ? 'true' : null,\n 'aria-selected': option.selected ? 'true' : 'false',\n 'data-active': option.active ? 'true' : null,\n 'data-disabled': option.disabled ? 'true' : null,\n 'data-focus-visible': option.focusVisible ? 'true' : null,\n 'data-selected': option.selected ? 'true' : null,\n 'data-slot': 'date-range-picker-month',\n id: option.id,\n role: 'gridcell',\n tabindex: `${this.monthRovingFocus.getActiveId() === option.id ? 0 : -1}`,\n });\n }\n\n private resolveNextSelection(nextDate: TDate, shiftKey: boolean): TngDateValue<TDate> {\n const currentRange = isRangeSelectionValue(this.state.value)\n ? (this.state.value as TngDateRange<TDate>)\n : Object.freeze({ end: null, start: null });\n\n if (shiftKey && this.config.enableRangeSelection && this.rangeAnchorDate !== null) {\n const shiftedRange = normalizeRangeOrder(this.config.adapter, {\n end: nextDate,\n start: this.rangeAnchorDate,\n });\n if (shiftedRange.start !== null && shiftedRange.end !== null) {\n return shiftedRange;\n }\n }\n\n if (currentRange.start === null || currentRange.end !== null) {\n return Object.freeze({ end: null, start: nextDate });\n }\n\n const normalizedRange = normalizeRangeOrder(\n this.config.adapter,\n Object.freeze({ end: nextDate, start: currentRange.start }),\n );\n return normalizedRange;\n }\n\n private resolveOverlayAttributes(): TngDateRangePickerAttributeMap {\n return freezeAttributes({\n 'aria-describedby': this.config.ariaDescribedBy,\n 'aria-label': this.config.ariaLabel,\n 'aria-labelledby': this.config.ariaLabelledBy ?? this.monthLabelId,\n 'aria-modal': this.config.trapFocus ? 'true' : null,\n 'data-open': this.state.open ? 'true' : 'false',\n 'data-position': this.config.position,\n 'data-slot': 'date-range-picker-overlay',\n id: this.overlayId,\n role: 'dialog',\n });\n }\n\n private resolveTriggerAttributes(): TngDateRangePickerAttributeMap {\n return freezeAttributes({\n 'aria-controls': this.overlayId,\n 'aria-disabled': this.state.disabled ? 'true' : null,\n 'aria-expanded': this.state.open ? 'true' : 'false',\n 'aria-haspopup': 'dialog',\n 'data-disabled': this.state.disabled ? 'true' : null,\n 'data-open': this.state.open ? 'true' : 'false',\n 'data-slot': 'date-range-picker-trigger',\n disabled: this.state.disabled ? 'true' : null,\n });\n }\n\n private resolveValidDate(date: TDate, monthContext: TDate): TDate {\n const targetMonth = isDateValueInMonth(this.config.adapter, date, monthContext)\n ? monthContext\n : this.config.adapter.startOfMonth(date);\n let nextDate = date;\n if (!isDateValueInMonth(this.config.adapter, nextDate, targetMonth)) {\n nextDate = clampDateToMonth(this.config.adapter, nextDate, targetMonth);\n }\n\n if (!this.isDateDisabled(nextDate)) {\n return nextDate;\n }\n\n const fallback = findFirstEnabledDateInMonth(this.config.adapter, targetMonth, (candidate) =>\n this.isDateDisabled(candidate),\n );\n return fallback ?? nextDate;\n }\n\n private resolveYearAttributes(\n yearOrOption: number | Readonly<TngYearOption<TDate>>,\n ): TngDateRangePickerAttributeMap {\n const option =\n typeof yearOrOption === 'number'\n ? this.getYearOptions().find((item) => item.year === yearOrOption)\n : yearOrOption;\n if (option === undefined) {\n return freezeAttributes({});\n }\n\n return freezeAttributes({\n 'aria-disabled': option.disabled ? 'true' : null,\n 'aria-selected': option.selected ? 'true' : 'false',\n 'data-active': option.active ? 'true' : null,\n 'data-disabled': option.disabled ? 'true' : null,\n 'data-focus-visible': option.focusVisible ? 'true' : null,\n 'data-selected': option.selected ? 'true' : null,\n 'data-slot': 'date-range-picker-year',\n id: option.id,\n role: 'gridcell',\n tabindex: `${this.yearRovingFocus.getActiveId() === option.id ? 0 : -1}`,\n });\n }\n\n private resolveConfig(\n nextConfig: Partial<TngDateRangePickerConfig<TDate>>,\n previous: TngResolvedConfig<TDate> | null,\n ): TngResolvedConfig<TDate> {\n const adapter =\n nextConfig.adapter ??\n previous?.adapter ??\n (defaultDateRangePickerDateAdapter as unknown as TngDateAdapter<TDate>);\n const ownerDocument =\n nextConfig.ownerDocument ??\n previous?.ownerDocument ??\n (typeof document === 'undefined' ? null : document);\n const locale = nextConfig.locale ?? previous?.locale ?? resolveDefaultLocale(ownerDocument);\n const today =\n normalizeDateInput(adapter, nextConfig.today ?? previous?.today ?? null, locale) ??\n previous?.today ??\n adapter.today();\n const normalizedValue =\n nextConfig.value !== undefined || previous === null\n ? normalizeSelectionInput(adapter, 'range', nextConfig.value ?? null, locale).value\n : previous.value;\n\n return Object.freeze({\n adapter,\n allowManualInput: nextConfig.allowManualInput ?? previous?.allowManualInput ?? true,\n ariaDescribedBy: nextConfig.ariaDescribedBy ?? previous?.ariaDescribedBy ?? null,\n ariaLabel: nextConfig.ariaLabel ?? previous?.ariaLabel ?? null,\n ariaLabelledBy: nextConfig.ariaLabelledBy ?? previous?.ariaLabelledBy ?? null,\n autoCommitView: nextConfig.autoCommitView ?? previous?.autoCommitView ?? true,\n closeOnEscape: nextConfig.closeOnEscape ?? previous?.closeOnEscape ?? true,\n closeOnOutsideClick: nextConfig.closeOnOutsideClick ?? previous?.closeOnOutsideClick ?? true,\n closeOnSelect: nextConfig.closeOnSelect ?? previous?.closeOnSelect ?? false,\n closeOthersOnOpen: nextConfig.closeOthersOnOpen ?? previous?.closeOthersOnOpen ?? false,\n direction: normalizeDirection(nextConfig.direction ?? previous?.direction),\n disableDate: nextConfig.disableDate ?? previous?.disableDate ?? null,\n disabled: nextConfig.disabled ?? previous?.disabled ?? false,\n enableRangeSelection:\n nextConfig.enableRangeSelection ?? previous?.enableRangeSelection ?? true,\n enableTypeahead: nextConfig.enableTypeahead ?? previous?.enableTypeahead ?? true,\n fixedWeeks: nextConfig.fixedWeeks ?? previous?.fixedWeeks ?? true,\n focusStrategy: nextConfig.focusStrategy ?? previous?.focusStrategy ?? 'roving',\n id: nextConfig.id?.trim() || previous?.id || this.instanceId,\n initialView: normalizeView(nextConfig.initialView ?? previous?.initialView),\n locale,\n max: normalizeDateInput(\n adapter,\n nextConfig.maxDate ?? nextConfig.max ?? previous?.max ?? null,\n locale,\n ),\n min: normalizeDateInput(\n adapter,\n nextConfig.minDate ?? nextConfig.min ?? previous?.min ?? null,\n locale,\n ),\n onPartialInputCommit:\n nextConfig.onPartialInputCommit ?? previous?.onPartialInputCommit ?? false,\n overlayMode: normalizeOverlayMode(nextConfig.overlayMode ?? previous?.overlayMode),\n overlayRuntime:\n nextConfig.overlayRuntime ??\n previous?.overlayRuntime ??\n (ownerDocument !== null\n ? createOverlayRuntime({ documentRef: readDocument(ownerDocument) })\n : null),\n overlaySize: nextConfig.overlaySize ?? previous?.overlaySize ?? 320,\n ownerDocument,\n position: normalizePosition(nextConfig.position ?? previous?.position),\n preserveViewOnOpenClose:\n nextConfig.preserveViewOnOpenClose ?? previous?.preserveViewOnOpenClose ?? true,\n restoreFocus: nextConfig.restoreFocus ?? previous?.restoreFocus ?? true,\n selectionMode: 'range',\n showOutsideDays: nextConfig.showOutsideDays ?? previous?.showOutsideDays ?? true,\n skipDisabled: nextConfig.skipDisabled ?? previous?.skipDisabled ?? true,\n today,\n trapFocus: nextConfig.trapFocus ?? previous?.trapFocus ?? false,\n value: normalizedValue,\n weekStartsOn: coerceWeekStartsOn(\n nextConfig.weekStartsOn ?? previous?.weekStartsOn ?? resolveLocaleWeekStartsOn(locale),\n ),\n yearPageSize: ensureYearPageSize(nextConfig.yearPageSize ?? previous?.yearPageSize),\n });\n }\n\n private registerFocusLayer(): void {\n if (this.focusLayerRegistered || this.overlayElement === null) {\n return;\n }\n\n dateRangePickerFocusHandoff.registerLayer({\n layerId: this.instanceId,\n members: (): readonly string[] => {\n const overlay = this.overlayElement;\n if (overlay === null) {\n return [];\n }\n\n return this.resolveFocusableMemberIds(overlay);\n },\n restoreFocus: this.config.restoreFocus,\n trapFocus: this.config.trapFocus,\n });\n this.focusLayerRegistered = true;\n }\n\n private unregisterFocusLayer(): void {\n if (!this.focusLayerRegistered) {\n return;\n }\n\n dateRangePickerFocusHandoff.unregisterLayer(this.instanceId);\n this.focusLayerRegistered = false;\n }\n\n private resolveFocusableMemberIds(container: HTMLElement): readonly string[] {\n const focusableElements = resolveFocusableElements(container);\n const memberIds: string[] = [];\n const seenIds = new Set<string>();\n\n const registerMember = (element: HTMLElement): void => {\n const id = this.ensureElementId(element);\n if (seenIds.has(id)) {\n return;\n }\n\n seenIds.add(id);\n memberIds.push(id);\n };\n\n registerMember(container);\n for (const element of focusableElements) {\n registerMember(element);\n }\n\n return memberIds;\n }\n\n private resolveTabbableOverlayMemberIds(container: HTMLElement): readonly string[] {\n const focusableElements = resolveFocusableElements(container);\n const memberIds: string[] = [];\n const seenIds = new Set<string>();\n\n for (const element of focusableElements) {\n if (element.tabIndex < 0) {\n continue;\n }\n\n const id = this.ensureElementId(element);\n if (seenIds.has(id)) {\n continue;\n }\n\n seenIds.add(id);\n memberIds.push(id);\n }\n\n return memberIds;\n }\n\n private ensureElementId(element: HTMLElement): string {\n const existingId = element.id.trim();\n if (existingId.length > 0) {\n return existingId;\n }\n\n const generatedId = createDateRangePickerFocusableId();\n element.id = generatedId;\n return generatedId;\n }\n\n private optionIndexToGridPosition(\n index: number,\n columnCount: number,\n ): Readonly<{ col: number; row: number }> {\n return Object.freeze({\n col: Math.max(0, index) % columnCount,\n row: Math.floor(Math.max(0, index) / columnCount),\n });\n }\n\n private resolveCenteredYearPageStart(year: number): number {\n return year - Math.floor(this.config.yearPageSize / 2);\n }\n\n private resolveYearBoundaryDelta(\n actionType: Exclude<TngGridNavigationActionType, 'activate' | 'exit'>,\n ): number | null {\n if (actionType === 'move-left') {\n return -1;\n }\n\n if (actionType === 'move-right') {\n return 1;\n }\n\n if (actionType === 'move-up') {\n return -4;\n }\n\n if (actionType === 'move-down') {\n return 4;\n }\n\n return null;\n }\n\n private resolveMonthBoundaryDelta(\n actionType: Exclude<TngGridNavigationActionType, 'activate' | 'exit'>,\n ): number | null {\n if (actionType === 'move-left') {\n return -1;\n }\n\n if (actionType === 'move-right') {\n return 1;\n }\n\n if (actionType === 'move-up') {\n return -4;\n }\n\n if (actionType === 'move-down') {\n return 4;\n }\n\n return null;\n }\n\n private shiftYearPageToInclude(targetYear: number): void {\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n let nextStart = this.yearPageStart;\n const pageSize = this.config.yearPageSize;\n\n while (targetYear < nextStart) {\n nextStart -= pageSize;\n }\n\n while (targetYear > nextStart + pageSize - 1) {\n nextStart += pageSize;\n }\n\n if (nextStart === this.yearPageStart) {\n return;\n }\n\n this.yearPageStart = nextStart;\n this.state.visibleMonth = this.config.adapter.createDate(\n targetYear,\n this.config.adapter.getMonth(this.state.visibleMonth),\n 1,\n );\n\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n private shiftMonthGridToTarget(targetMonth: TDate): void {\n const normalizedTargetMonth = this.config.adapter.startOfMonth(targetMonth);\n if (\n !hasSelectableDateInMonth(this.config.adapter, normalizedTargetMonth, (date) =>\n this.isDateDisabled(date),\n )\n ) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n this.state.visibleMonth = normalizedTargetMonth;\n\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n private syncDayFocusControllers(cells: readonly TngDateCell<TDate>[]): void {\n const itemIds = cells.map((cell) => cell.id);\n const disabledIds = cells.filter((cell) => cell.disabled).map((cell) => cell.id);\n const activeCellId = cells.find((cell) => cell.active)?.id ?? null;\n\n this.dayRovingFocus.setItemIds(itemIds);\n this.dayRovingFocus.setDisabledIds(disabledIds);\n this.dayRovingFocus.setActiveId(activeCellId);\n this.dayActiveDescendant.setItemIds(itemIds);\n this.dayActiveDescendant.setDisabledIds(disabledIds);\n this.dayActiveDescendant.setActiveId(activeCellId);\n }\n\n private syncMonthFocusController(options: readonly TngMonthOption<TDate>[]): void {\n const itemIds = options.map((option) => option.id);\n const disabledIds = options.filter((option) => option.disabled).map((option) => option.id);\n const activeId = options.find((option) => option.active)?.id ?? null;\n\n this.monthRovingFocus.setItemIds(itemIds);\n this.monthRovingFocus.setDisabledIds(disabledIds);\n this.monthRovingFocus.setActiveId(activeId);\n }\n\n private syncYearFocusController(options: readonly TngYearOption<TDate>[]): void {\n const itemIds = options.map((option) => option.id);\n const disabledIds = options.filter((option) => option.disabled).map((option) => option.id);\n const activeId = options.find((option) => option.active)?.id ?? null;\n\n this.yearRovingFocus.setItemIds(itemIds);\n this.yearRovingFocus.setDisabledIds(disabledIds);\n this.yearRovingFocus.setActiveId(activeId);\n }\n\n private shiftVisibleMonth(direction: 1 | -1): void {\n const nextMonth = this.config.adapter.addMonths(this.state.visibleMonth, direction);\n if (\n !hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))\n ) {\n return;\n }\n\n const previousMonth = this.state.visibleMonth;\n const previousYear = this.config.adapter.getYear(previousMonth);\n this.state.visibleMonth = this.config.adapter.startOfMonth(nextMonth);\n const nextActive = clampDateToMonth(\n this.config.adapter,\n this.state.activeDate,\n this.state.visibleMonth,\n );\n this.applyActiveDate(nextActive, 'keyboard', true);\n this.bumpVersion();\n this.emit({\n previousMonth,\n type: 'monthChange',\n visibleMonth: this.state.visibleMonth,\n });\n\n const currentYear = this.config.adapter.getYear(this.state.visibleMonth);\n if (previousYear !== currentYear) {\n this.emit({\n previousYear,\n type: 'yearChange',\n year: currentYear,\n });\n }\n }\n\n private shiftVisibleYear(direction: 1 | -1): void {\n const nextYear = this.config.adapter.getYear(this.state.visibleMonth) + direction;\n this.selectYear(nextYear);\n }\n\n private commitRangeFromAnchor(endDate: TDate): void {\n if (this.rangeAnchorDate === null) {\n return;\n }\n\n const previousValue = this.state.value;\n const nextValue = normalizeRangeOrder(this.config.adapter, {\n end: endDate,\n start: this.rangeAnchorDate,\n });\n if (nextValue.start === null || nextValue.end === null) {\n return;\n }\n this.state.value = nextValue;\n this.state.inputText = this.formatValueForInput(nextValue);\n this.bumpVersion();\n this.emit({\n previousValue,\n trigger: 'keyboard',\n type: 'valueChange',\n value: nextValue,\n });\n }\n\n private unregisterOverlayLayer(): void {\n if (!this.overlayLayerRegistered || this.config.overlayRuntime === null) {\n return;\n }\n\n this.config.overlayRuntime.unregisterLayer(`${this.instanceId}-layer`);\n this.overlayLayerRegistered = false;\n }\n}\n\nexport function createDateRangePickerController<TDate = Date>(\n config: Readonly<TngDateRangePickerConfig<TDate>> = {},\n): TngDateRangePickerController<TDate> {\n return new DateRangePickerController(config);\n}\n\nexport type {\n TngDateRangeValue,\n TngDateRangePickerAttributeMap,\n TngDateRangePickerCloseReason,\n TngDateRangePickerConfig,\n TngDateRangePickerController,\n TngDateRangePickerDirection,\n TngDateRangePickerEvent,\n TngDateRangePickerFocusedSection,\n TngDateRangePickerFocusStrategy,\n TngDateRangePickerLayout,\n TngDateRangePickerListener,\n TngDateRangePickerOutputs,\n TngDateRangePickerPosition,\n TngDateRangePickerState,\n TngDateRangePickerStatePatch,\n} from './date-range-picker.types';\n\nexport { defaultDateRangePickerDateAdapter } from './date-range-picker.adapters';\n"]}
@@ -0,0 +1,87 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import type { TngDateRangePickerAttributeMap } from './date-range-picker.types';
3
+ import * as i0 from "@angular/core";
4
+ type OverlayAnchorInput = ElementRef<HTMLElement> | HTMLElement | null | undefined;
5
+ export declare class TngDateRangePickerOverlay {
6
+ private readonly elRef;
7
+ private readonly destroyRef;
8
+ private readonly ownerDocument;
9
+ private readonly ownerWindow;
10
+ private readonly renderVersion;
11
+ private readonly resolvedPlacement;
12
+ private readonly instanceId;
13
+ private readonly scrollLock;
14
+ private overlayPlaceholder;
15
+ private overlayOriginalParent;
16
+ private overlayLayoutFrame;
17
+ private removeResizeListener;
18
+ private resizeObserver;
19
+ readonly controller: import("@angular/core").InputSignal<Readonly<{
20
+ handleOverlayKeyDown: (event: KeyboardEvent) => void;
21
+ getOutputs: () => Readonly<{
22
+ getHostAttributes: () => TngDateRangePickerAttributeMap;
23
+ getOverlayAttributes: () => TngDateRangePickerAttributeMap;
24
+ open: boolean;
25
+ }>;
26
+ registerOverlay: (element: HTMLElement | null) => void;
27
+ subscribe: (listener: (event: unknown) => void) => () => void;
28
+ }>>;
29
+ readonly anchor: import("@angular/core").InputSignal<OverlayAnchorInput>;
30
+ readonly placement: import("@angular/core").InputSignal<Readonly<{
31
+ align?: import("@tailng-ui/cdk").TngOverlayAlign;
32
+ side?: import("@tailng-ui/cdk").TngOverlaySide;
33
+ }> | undefined>;
34
+ readonly offset: import("@angular/core").InputSignal<Readonly<{
35
+ align?: number;
36
+ side?: number;
37
+ }> | undefined>;
38
+ readonly collision: import("@angular/core").InputSignal<Readonly<{
39
+ flip?: boolean;
40
+ padding?: number;
41
+ shift?: boolean;
42
+ }> | undefined>;
43
+ readonly themeSource: import("@angular/core").InputSignal<OverlayAnchorInput>;
44
+ protected get hidden(): '' | null;
45
+ protected get display(): string | null;
46
+ protected get dataPlacement(): 'bottom' | 'top';
47
+ protected get ariaDescribedby(): string | null;
48
+ protected get ariaLabel(): string | null;
49
+ protected get ariaLabelledby(): string | null;
50
+ protected get ariaModal(): string | null;
51
+ protected get dataOpen(): string | null;
52
+ protected get dataPosition(): string | null;
53
+ protected get dataSlot(): string | null;
54
+ protected get id(): string | null;
55
+ protected get role(): string | null;
56
+ protected onKeydown(event: KeyboardEvent): void;
57
+ constructor();
58
+ private initializeOverlayPortal;
59
+ /**
60
+ * Resolve the explicit/date-range-picker-owned anchor (input-shell or trigger).
61
+ * This is the element used to read date-range-picker-scoped CSS custom properties
62
+ * (e.g. `--tng-date-range-picker-overlay-gap`) and to align the overlay vertically.
63
+ */
64
+ private findDateRangePickerAnchorEl;
65
+ /**
66
+ * Anchor for overlay positioning, width, and dismiss boundary. Prefer the
67
+ * enclosing form-field (so the overlay spans the visible frame) and fall
68
+ * back to the date-range-picker-owned anchor otherwise.
69
+ */
70
+ private findAnchorEl;
71
+ private scheduleReposition;
72
+ private positionOverlay;
73
+ private setupRepositionListeners;
74
+ private teardownRepositionListeners;
75
+ private syncPortalledThemeVars;
76
+ private clearPortalledThemeVars;
77
+ private mountToBodyAndPosition;
78
+ private restoreToPlaceholder;
79
+ private resolvePlacement;
80
+ private resolveOffset;
81
+ private resolveCollision;
82
+ private resolveDirection;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngDateRangePickerOverlay, never>;
84
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngDateRangePickerOverlay, "[tngDateRangePickerOverlay]", ["tngDateRangePickerOverlay"], { "controller": { "alias": "tngDateRangePickerOverlay"; "required": true; "isSignal": true; }; "anchor": { "alias": "tngDateRangePickerOverlayAnchor"; "required": false; "isSignal": true; }; "placement": { "alias": "tngDateRangePickerOverlayPlacement"; "required": false; "isSignal": true; }; "offset": { "alias": "tngDateRangePickerOverlayOffset"; "required": false; "isSignal": true; }; "collision": { "alias": "tngDateRangePickerOverlayCollision"; "required": false; "isSignal": true; }; "themeSource": { "alias": "tngDateRangePickerOverlayThemeSource"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=tng-date-range-picker.overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-date-range-picker.overlay.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/date-range-picker/tng-date-range-picker.overlay.ts"],"names":[],"mappings":"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"}