@tailng-ui/primitives 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +0 -5
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +0 -2
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js +0 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
- package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
- package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +0 -1
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +0 -3
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +0 -1
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts +25 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.d.ts.map +1 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js +105 -0
- package/src/lib/form/datepicker/__tests__/tng-datepicker.test-helpers.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.adapters.d.ts +5 -0
- package/src/lib/form/datepicker/datepicker.adapters.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.adapters.js +194 -0
- package/src/lib/form/datepicker/datepicker.adapters.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.state.d.ts +10 -0
- package/src/lib/form/datepicker/datepicker.state.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.state.js +97 -0
- package/src/lib/form/datepicker/datepicker.state.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.types.d.ts +269 -0
- package/src/lib/form/datepicker/datepicker.types.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.types.js +1 -0
- package/src/lib/form/datepicker/datepicker.types.js.map +1 -0
- package/src/lib/form/datepicker/datepicker.utils.d.ts +75 -0
- package/src/lib/form/datepicker/datepicker.utils.d.ts.map +1 -0
- package/src/lib/form/datepicker/datepicker.utils.js +238 -0
- package/src/lib/form/datepicker/datepicker.utils.js.map +1 -0
- package/src/lib/form/datepicker/index.d.ts +3 -0
- package/src/lib/form/datepicker/index.d.ts.map +1 -0
- package/src/lib/form/datepicker/index.js +3 -0
- package/src/lib/form/datepicker/index.js.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.d.ts +5 -0
- package/src/lib/form/datepicker/tng-datepicker.d.ts.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.js +1948 -0
- package/src/lib/form/datepicker/tng-datepicker.js.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +60 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.js +275 -0
- package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -0
- package/src/lib/form/input/tng-input.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.js +0 -4
- package/src/lib/form/input/tng-input.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +0 -1
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +0 -1
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/listbox.directive.js +0 -1
- package/src/lib/form/listbox/listbox.directive.js.map +1 -1
- package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/option.directive.js +0 -1
- package/src/lib/form/listbox/option.directive.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +0 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.js +0 -1
- package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
- package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +0 -1
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +0 -1
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/select/tng-select.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.js +0 -1
- package/src/lib/form/select/tng-select.js.map +1 -1
- package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.listbox.js +0 -2
- package/src/lib/form/select/tng-select.listbox.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +0 -1
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +0 -1
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +0 -1
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +0 -1
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +0 -4
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +0 -10
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.js +0 -6
- package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts +32 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.d.ts.map +1 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js +312 -0
- package/src/lib/layout/grid/__tests__/tng-grid.test-harness.js.map +1 -0
- package/src/lib/layout/grid/tng-grid.d.ts +144 -2
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +669 -3
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +0 -1
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +0 -1
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +0 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.js +0 -1
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.js +0 -1
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +0 -1
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
- package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.js +0 -6
- package/src/lib/navigation/menu/tng-menu.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.js +0 -2
- package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -6
- package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.js +77 -41
- package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.js +0 -9
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +0 -4
- package/src/lib/overlay/popover/tng-popover.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +0 -3
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +0 -1
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +0 -5
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +0 -1
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +0 -1
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +0 -3
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-datepicker.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/datepicker/tng-datepicker.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 { coerceWeekStartsOn, defaultDatepickerDateAdapter, normalizeDateInput } from './datepicker.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 './datepicker.utils';\nimport {\n clearSelectionForMode,\n normalizeSelectionInput,\n rangeIncludesDate,\n selectionValuesEqual,\n valueIncludesDate,\n} from './datepicker.state';\nimport type {\n TngCalendarView,\n TngDateAdapter,\n TngDateCell,\n TngDateFormatToken,\n TngDateInputValue,\n TngDateRange,\n TngDateSelectionInput,\n TngDateValue,\n TngDatepickerAttributeMap,\n TngDatepickerCloseReason,\n TngDatepickerConfig,\n TngDatepickerController,\n TngDatepickerDirection,\n TngDatepickerEvent,\n TngDatepickerFocusedSection,\n TngDatepickerFocusStrategy,\n TngDatepickerLayout,\n TngDatepickerListener,\n TngDatepickerOutputs,\n TngDatepickerOverlayMode,\n TngDatepickerPosition,\n TngDatepickerSelectionMode,\n TngDatepickerState,\n TngDatepickerStatePatch,\n TngDatepickerTrigger,\n TngMonthOption,\n TngWeekdayIndex,\n TngYearOption,\n} from './datepicker.types';\n\ntype TngResolvedConfig<TDate> = Readonly<{\n adapter: Readonly<TngDateAdapter<TDate>>;\n allowDeselect: boolean;\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: TngDatepickerDirection;\n disableDate: ((date: TDate) => boolean) | null;\n disabled: boolean;\n enableMultipleRangeSelection: boolean;\n enableRangeSelection: boolean;\n enableTypeahead: boolean;\n fixedWeeks: boolean;\n focusStrategy: TngDatepickerFocusStrategy;\n id: string;\n initialView: TngCalendarView;\n locale: string;\n max: TDate | null;\n maxSelections: number | null;\n min: TDate | null;\n onPartialInputCommit: boolean;\n overlayMode: TngDatepickerOverlayMode;\n overlayRuntime: TngOverlayRuntime | null;\n overlaySize: number;\n ownerDocument: Document | null;\n position: TngDatepickerPosition;\n preserveViewOnOpenClose: boolean;\n restoreFocus: boolean;\n selectionMode: TngDatepickerSelectionMode;\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: TngDatepickerFocusedSection;\n inputText: string;\n lastCloseReason: TngDatepickerCloseReason | 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 createDatepickerId = createTngIdFactory('tng-datepicker');\nconst createDatepickerFocusableId = createTngIdFactory('tng-datepicker-focusable');\nconst datepickerRegistry = new Set<DatepickerController<unknown>>();\nconst datepickerFocusHandoff = 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(attributes: Readonly<Record<string, string | null | undefined>>): TngDatepickerAttributeMap {\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): TngDatepickerCloseReason {\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(event: Readonly<Pick<KeyboardEvent, 'altKey' | 'ctrlKey' | 'metaKey'>>): boolean {\n return event.altKey === true || event.ctrlKey === true || event.metaKey === true;\n}\n\nfunction normalizeSelectionMode(value: string | undefined): TngDatepickerSelectionMode {\n return value === 'multiple' || value === 'range' ? value : 'single';\n}\n\nfunction normalizeView(value: string | undefined): TngCalendarView {\n return value === 'month' || value === 'year' ? value : 'day';\n}\n\nfunction normalizePosition(value: string | undefined): TngDatepickerPosition {\n return value === 'center' || value === 'end' ? value : 'start';\n}\n\nfunction normalizeOverlayMode(value: string | undefined): TngDatepickerOverlayMode {\n return value === 'push' || value === 'side' ? value : 'overlay';\n}\n\nfunction normalizeDirection(value: string | undefined): TngDatepickerDirection {\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 readDocument(\n input: Document | null | undefined,\n): TngOverlayInteractionDomDocument | null {\n return input as TngOverlayInteractionDomDocument | null;\n}\n\nclass DatepickerController<TDate> implements TngDatepickerController<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<TngDatepickerListener<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: TngDatepickerOutputs<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<TngDatepickerConfig<TDate>>) {\n this.instanceId = config.id?.trim() || createDatepickerId();\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(this.config.adapter.getYear(initialActiveDate));\n this.rangeAnchorDate = this.extractSelectionAnchor(this.state.value);\n\n if (this.state.open) {\n const activeElement = this.resolveActiveElement();\n this.restoreFocusTargetId = activeElement === null ? null : this.ensureElementId(activeElement);\n this.registerOverlayLayer();\n this.activateFocusLayer();\n }\n\n datepickerRegistry.add(this as unknown as DatepickerController<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 (selectionValuesEqual(this.config.adapter, this.config.selectionMode, previousValue, nextValue)) {\n return;\n }\n\n this.state.value = nextValue;\n this.rangeAnchorDate = 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: TngDatepickerCloseReason = '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.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 datepickerRegistry.delete(this as unknown as DatepickerController<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(): TngDatepickerOutputs<TDate> {\n if (this.cachedOutputs !== null && this.cachedOutputsVersion === this.version) {\n return this.cachedOutputs;\n }\n\n const outputs: TngDatepickerOutputs<TDate> = Object.freeze({\n activeDate: this.state.activeDate,\n cells: this.getCells(),\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(this.state.visibleMonth, 'month-year', this.config.locale),\n layout: this.resolveLayout(),\n monthOptions: this.getMonthOptions(),\n open: this.state.open,\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(): TngDatepickerState<TDate> {\n return Object.freeze({\n activeDate: this.state.activeDate,\n disabled: this.state.disabled,\n focusedSection: this.state.focusedSection,\n inputText: this.state.inputText,\n lastCloseReason: this.state.lastCloseReason,\n open: this.state.open,\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.config.selectionMode !== 'range' || this.rangeAnchorDate === null) {\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.hoverDate = normalized;\n this.bumpVersion();\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 || !datepickerFocusHandoff.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) ? this.ensureElementId(activeElement) : 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 datepickerFocusHandoff.recordFocus(this.instanceId, activeElementId);\n return;\n }\n\n const resolvedId = datepickerFocusHandoff.resolveFocusCandidate(this.instanceId, candidateId);\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 datepickerFocusHandoff.recordFocus(this.instanceId, resolvedId);\n }\n\n public handleTriggerKeyDown(event: Readonly<Pick<KeyboardEvent, 'key' | 'preventDefault'>>): 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 datepickerRegistry) {\n if (controller === (this as unknown as DatepickerController<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(this.resolveInitialActiveDate(this.state.value, this.config.today), 'programmatic', true);\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?: TngDatepickerTrigger }> = {},\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 (selectionValuesEqual(this.config.adapter, this.config.selectionMode, previousValue, nextValue)) {\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.bumpVersion();\n this.emit({\n previousValue,\n trigger,\n type: 'valueChange',\n value: nextValue,\n });\n\n if (this.config.closeOnSelect && this.state.open) {\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 (!hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))) {\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 (!hasSelectableDateInYear(\n this.config.adapter,\n normalizedYear,\n this.state.visibleMonth,\n (date) => this.isDateDisabled(date),\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(date: TngDateInputValue<TDate>, trigger: TngDatepickerTrigger = 'programmatic'): 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<TngDatepickerConfig<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 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(this.config.adapter.getYear(this.state.activeDate));\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: TngDatepickerFocusedSection): 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<TngDatepickerStatePatch<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(this.config.adapter, patch.visibleMonth, this.config.locale);\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(this.config.adapter, patch.activeDate, this.config.locale);\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 }\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 (!selectionValuesEqual(this.config.adapter, this.config.selectionMode, previousValue, this.state.value)) {\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 if (normalized.validationError !== null) {\n this.state.validationError = normalized.validationError;\n }\n\n const coerced = this.coerceSelectionWithinConstraints(normalized.value);\n if (selectionValuesEqual(this.config.adapter, this.config.selectionMode, this.state.value, coerced)) {\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 const anchor = this.extractSelectionAnchor(coerced);\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(this.config.adapter.getYear(this.state.activeDate));\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 (!hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))) {\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(this.config.adapter.getYear(this.state.visibleMonth));\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: TngDatepickerListener<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: TngDatepickerTrigger,\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.bumpVersion();\n return;\n }\n\n const previousActiveDate = this.state.activeDate;\n this.state.activeDate = resolved;\n this.focusVisibleDate = focusVisible ? resolved : null;\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: TngDatepickerTrigger,\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 coerceSelectionWithinConstraints(value: TngDateValue<TDate>): TngDateValue<TDate> {\n if (value === null) {\n return clearSelectionForMode(this.config.selectionMode);\n }\n\n if (this.config.selectionMode === 'single') {\n const date = value as TDate;\n if (this.isDateDisabled(date)) {\n this.state.validationError = 'out-of-range';\n return null;\n }\n return date;\n }\n\n if (this.config.selectionMode === 'multiple') {\n const values = (value as readonly TDate[]).filter((date) => !this.isDateDisabled(date));\n if ((value as readonly TDate[]).length !== values.length) {\n this.state.validationError = 'out-of-range';\n }\n return Object.freeze(values);\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)) {\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) || this.rangeContainsDisabledDate(range.start, range.end)) {\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: TngDatepickerEvent<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 (Array.isArray(value)) {\n return value.length > 0 ? value[value.length - 1] : null;\n }\n if (isRangeSelectionValue(value)) {\n return value.end ?? value.start;\n }\n return value as TDate;\n }\n\n private formatValueForInput(value: TngDateValue<TDate>): string {\n if (value === null) {\n return '';\n }\n\n if (this.config.selectionMode === 'single') {\n return this.config.adapter.format(value as TDate, 'input', this.config.locale);\n }\n\n if (this.config.selectionMode === 'multiple') {\n return (value as readonly TDate[])\n .map((date) => this.config.adapter.format(date, 'input', this.config.locale))\n .join(', ');\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.format(parsed, 'input', this.config.locale).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 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(this.config.adapter.getYear(this.state.visibleMonth), month, 1),\n (date) => this.isDateDisabled(date),\n ),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n locale: this.config.locale,\n selectedMonth: (month) => {\n if (this.config.selectionMode === 'multiple') {\n return false;\n }\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(this.config.adapter.addDays(start, index), 'weekday-short', this.config.locale),\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(\n this.config.adapter,\n year,\n this.state.visibleMonth,\n (date) => this.isDateDisabled(date),\n ),\n focusedDate: this.focusVisibleDate,\n focusedSection: this.state.focusedSection,\n locale: this.config.locale,\n selectedYear: (year) => {\n if (this.config.selectionMode === 'multiple') {\n return false;\n }\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(\n currentPosition,\n action.type,\n {\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 );\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(options as readonly TngYearOption<TDate>[], activeIndex, action.type)\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 (!hasSelectableDateInYear(\n this.config.adapter,\n targetYear,\n this.state.visibleMonth,\n (date) => this.isDateDisabled(date),\n )) {\n return;\n }\n this.shiftYearPageToInclude(targetYear);\n this.applyPickerActiveDate(\n this.config.adapter.createDate(targetYear, this.config.adapter.getMonth(this.state.visibleMonth), 1),\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((currentOption as TngMonthOption<TDate>).date, monthDelta);\n if (!hasSelectableDateInMonth(this.config.adapter, targetMonth, (date) => this.isDateDisabled(date))) {\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 (\n shiftKey &&\n this.config.selectionMode === 'range' &&\n this.config.enableRangeSelection\n ) {\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(date: TDate): boolean {\n if (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 rangeContainsDisabledDate(start: TDate, end: TDate): boolean {\n let current = start;\n while (this.config.adapter.compare(current, end) <= 0) {\n if (this.isDateDisabled(current)) {\n return true;\n }\n current = this.config.adapter.addDays(current, 1);\n }\n return false;\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 datepickerFocusHandoff.activateLayer(this.instanceId, this.restoreFocusTargetId);\n }\n\n private deactivateFocusLayer(): void {\n if (!this.focusLayerRegistered) {\n return;\n }\n\n const restoreFocusTargetId = datepickerFocusHandoff.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 = datepickerFocusHandoff.resolveFocusCandidate(this.instanceId, targetId);\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 datepickerFocusHandoff.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(cellOrDate: Readonly<TngDateCell<TDate>> | TDate): TngDatepickerAttributeMap {\n const cell = 'id' in (cellOrDate as TngDateCell<TDate>)\n ? (cellOrDate as TngDateCell<TDate>)\n : this.getCells().find((candidate) => datesEqual(this.config.adapter, candidate.date, cellOrDate as TDate));\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-selected': cell.selected ? 'true' : 'false',\n 'data-active': cell.active ? 'true' : null,\n 'data-disabled': cell.disabled ? '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-range-end': cell.rangeEnd ? 'true' : null,\n 'data-range-start': cell.rangeStart ? 'true' : null,\n 'data-selected': cell.selected ? 'true' : null,\n 'data-slot': 'datepicker-cell',\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 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(): TngDatepickerAttributeMap {\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': 'datepicker-grid',\n id: this.gridId,\n role: 'grid',\n });\n }\n\n private resolveHostAttributes(): TngDatepickerAttributeMap {\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': 'datepicker',\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(): TngDatepickerLayout {\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 ): TngDatepickerAttributeMap {\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': 'datepicker-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 if (this.config.selectionMode === 'single') {\n if (\n this.config.allowDeselect &&\n this.state.value !== null &&\n !Array.isArray(this.state.value) &&\n datesEqual(this.config.adapter, this.state.value as TDate, nextDate)\n ) {\n return null;\n }\n\n return nextDate;\n }\n\n if (this.config.selectionMode === 'range') {\n const currentRange =\n isRangeSelectionValue(this.state.value)\n ? (this.state.value as TngDateRange<TDate>)\n : Object.freeze({ end: null, start: null });\n\n if (\n shiftKey &&\n this.config.enableRangeSelection &&\n this.rangeAnchorDate !== null &&\n !this.rangeContainsDisabledDate(\n normalizeRangeOrder(this.config.adapter, {\n end: nextDate,\n start: this.rangeAnchorDate,\n }).start as TDate,\n normalizeRangeOrder(this.config.adapter, {\n end: nextDate,\n start: this.rangeAnchorDate,\n }).end as TDate,\n )\n ) {\n return normalizeRangeOrder(this.config.adapter, Object.freeze({ end: nextDate, start: this.rangeAnchorDate }));\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 if (\n normalizedRange.start !== null &&\n normalizedRange.end !== null &&\n this.rangeContainsDisabledDate(normalizedRange.start, normalizedRange.end)\n ) {\n return Object.freeze({ end: null, start: currentRange.start });\n }\n\n return normalizedRange;\n }\n\n const currentValues: TDate[] = Array.isArray(this.state.value)\n ? [...(this.state.value as readonly TDate[])]\n : [];\n const existingIndex = currentValues.findIndex((selected) => datesEqual(this.config.adapter, selected, nextDate));\n if (shiftKey && this.config.enableMultipleRangeSelection && this.rangeAnchorDate !== null) {\n const dates: TDate[] = [];\n const orderedRange = normalizeRangeOrder(this.config.adapter, {\n end: nextDate,\n start: this.rangeAnchorDate,\n });\n if (orderedRange.start !== null && orderedRange.end !== null) {\n let cursor: TDate = orderedRange.start;\n while (this.config.adapter.compare(cursor, orderedRange.end) <= 0) {\n if (!this.isDateDisabled(cursor)) {\n dates.push(cursor);\n }\n cursor = this.config.adapter.addDays(cursor, 1);\n }\n }\n const merged = Array.from(new Map([...currentValues, ...dates].map((date) => [toDateKey(this.config.adapter, date), date])).values());\n const sorted = merged.sort((left, right) => this.config.adapter.compare(left, right));\n if (this.config.maxSelections !== null && sorted.length > this.config.maxSelections) {\n this.state.validationError = 'max-selections';\n }\n return Object.freeze(sorted.slice(0, this.config.maxSelections ?? Number.MAX_SAFE_INTEGER));\n }\n\n if (existingIndex >= 0) {\n currentValues.splice(existingIndex, 1);\n return Object.freeze(currentValues);\n }\n\n if (this.config.maxSelections !== null && currentValues.length >= this.config.maxSelections) {\n this.state.validationError = 'max-selections';\n return Object.freeze(currentValues);\n }\n\n currentValues.push(nextDate);\n currentValues.sort((left, right) => this.config.adapter.compare(left, right));\n return Object.freeze(currentValues);\n }\n\n private resolveOverlayAttributes(): TngDatepickerAttributeMap {\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': 'datepicker-overlay',\n id: this.overlayId,\n role: 'dialog',\n });\n }\n\n private resolveTriggerAttributes(): TngDatepickerAttributeMap {\n return freezeAttributes({\n 'aria-controls': this.overlayId,\n 'aria-expanded': this.state.open ? 'true' : 'false',\n 'aria-haspopup': 'dialog',\n 'data-open': this.state.open ? 'true' : 'false',\n 'data-slot': 'datepicker-trigger',\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 ): TngDatepickerAttributeMap {\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': 'datepicker-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<TngDatepickerConfig<TDate>>,\n previous: TngResolvedConfig<TDate> | null,\n ): TngResolvedConfig<TDate> {\n const adapter = nextConfig.adapter ?? previous?.adapter ?? (defaultDatepickerDateAdapter as unknown as TngDateAdapter<TDate>);\n const ownerDocument = nextConfig.ownerDocument ?? previous?.ownerDocument ?? (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(\n adapter,\n normalizeSelectionMode(nextConfig.selectionMode ?? previous?.selectionMode),\n nextConfig.value ?? null,\n locale,\n ).value\n : previous.value;\n\n return Object.freeze({\n adapter,\n allowDeselect: nextConfig.allowDeselect ?? previous?.allowDeselect ?? false,\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 enableMultipleRangeSelection:\n nextConfig.enableMultipleRangeSelection ?? previous?.enableMultipleRangeSelection ?? true,\n enableRangeSelection: 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 maxSelections: nextConfig.maxSelections ?? previous?.maxSelections ?? null,\n min: normalizeDateInput(\n adapter,\n nextConfig.minDate ?? nextConfig.min ?? previous?.min ?? null,\n locale,\n ),\n onPartialInputCommit: nextConfig.onPartialInputCommit ?? previous?.onPartialInputCommit ?? false,\n overlayMode: normalizeOverlayMode(nextConfig.overlayMode ?? previous?.overlayMode),\n overlayRuntime:\n nextConfig.overlayRuntime ??\n previous?.overlayRuntime ??\n (ownerDocument !== null ? createOverlayRuntime({ documentRef: readDocument(ownerDocument) }) : 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: normalizeSelectionMode(nextConfig.selectionMode ?? previous?.selectionMode),\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 datepickerFocusHandoff.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 datepickerFocusHandoff.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 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 = createDatepickerFocusableId();\n element.id = generatedId;\n return generatedId;\n }\n\n private optionIndexToGridPosition(index: number, columnCount: number): 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 (!hasSelectableDateInMonth(this.config.adapter, normalizedTargetMonth, (date) => this.isDateDisabled(date))) {\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 (!hasSelectableDateInMonth(this.config.adapter, nextMonth, (date) => this.isDateDisabled(date))) {\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(this.config.adapter, this.state.activeDate, this.state.visibleMonth);\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 if (this.rangeContainsDisabledDate(nextValue.start, nextValue.end)) {\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 createDatepickerController<TDate = Date>(\n config: Readonly<TngDatepickerConfig<TDate>> = {},\n): TngDatepickerController<TDate> {\n return new DatepickerController(config);\n}\n\nexport type {\n TngCalendarView,\n TngDateAdapter,\n TngDateCell,\n TngDateFormatToken,\n TngDateInputValue,\n TngDateRange,\n TngDateSelectionInput,\n TngDateValue,\n TngDatepickerAttributeMap,\n TngDatepickerCloseReason,\n TngDatepickerConfig,\n TngDatepickerController,\n TngDatepickerDirection,\n TngDatepickerEvent,\n TngDatepickerFocusedSection,\n TngDatepickerFocusStrategy,\n TngDatepickerLayout,\n TngDatepickerListener,\n TngDatepickerOutputs,\n TngDatepickerPosition,\n TngDatepickerSelectionMode,\n TngDatepickerState,\n TngMonthOption,\n TngWeekdayIndex,\n TngYearOption,\n} from './datepicker.types';\n\nexport { defaultDatepickerDateAdapter, normalizeDateInput } from './datepicker.adapters';\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import type { TngDatepickerAttributeMap } from './datepicker.types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
type OverlayAnchorInput = ElementRef<HTMLElement> | HTMLElement | null | undefined;
|
|
5
|
+
export declare class TngDatepickerOverlay {
|
|
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 overlayPlaceholder;
|
|
13
|
+
private overlayOriginalParent;
|
|
14
|
+
private overlayLayoutFrame;
|
|
15
|
+
private removeResizeListener;
|
|
16
|
+
private removeScrollListener;
|
|
17
|
+
private resizeObserver;
|
|
18
|
+
readonly controller: import("@angular/core").InputSignal<Readonly<{
|
|
19
|
+
getOutputs: () => Readonly<{
|
|
20
|
+
getHostAttributes: () => TngDatepickerAttributeMap;
|
|
21
|
+
open: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
registerOverlay: (element: HTMLElement | null) => void;
|
|
24
|
+
subscribe: (listener: (event: unknown) => void) => () => void;
|
|
25
|
+
}>>;
|
|
26
|
+
readonly anchor: import("@angular/core").InputSignal<OverlayAnchorInput>;
|
|
27
|
+
readonly placement: import("@angular/core").InputSignal<Readonly<{
|
|
28
|
+
align?: import("@tailng-ui/cdk").TngOverlayAlign;
|
|
29
|
+
side?: import("@tailng-ui/cdk").TngOverlaySide;
|
|
30
|
+
}> | undefined>;
|
|
31
|
+
readonly offset: import("@angular/core").InputSignal<Readonly<{
|
|
32
|
+
align?: number;
|
|
33
|
+
side?: number;
|
|
34
|
+
}> | undefined>;
|
|
35
|
+
readonly collision: import("@angular/core").InputSignal<Readonly<{
|
|
36
|
+
flip?: boolean;
|
|
37
|
+
padding?: number;
|
|
38
|
+
shift?: boolean;
|
|
39
|
+
}> | undefined>;
|
|
40
|
+
protected get hidden(): '' | null;
|
|
41
|
+
protected get display(): string | null;
|
|
42
|
+
protected get dataPlacement(): 'bottom' | 'top';
|
|
43
|
+
constructor();
|
|
44
|
+
private initializeOverlayPortal;
|
|
45
|
+
private findAnchorEl;
|
|
46
|
+
private scheduleReposition;
|
|
47
|
+
private positionOverlay;
|
|
48
|
+
private setupRepositionListeners;
|
|
49
|
+
private teardownRepositionListeners;
|
|
50
|
+
private mountToBodyAndPosition;
|
|
51
|
+
private restoreToPlaceholder;
|
|
52
|
+
private resolvePlacement;
|
|
53
|
+
private resolveOffset;
|
|
54
|
+
private resolveCollision;
|
|
55
|
+
private resolveDirection;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngDatepickerOverlay, never>;
|
|
57
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngDatepickerOverlay, "[tngDatepickerOverlay]", ["tngDatepickerOverlay"], { "controller": { "alias": "tngDatepickerOverlay"; "required": true; "isSignal": true; }; "anchor": { "alias": "tngDatepickerOverlayAnchor"; "required": false; "isSignal": true; }; "placement": { "alias": "tngDatepickerOverlayPlacement"; "required": false; "isSignal": true; }; "offset": { "alias": "tngDatepickerOverlayOffset"; "required": false; "isSignal": true; }; "collision": { "alias": "tngDatepickerOverlayCollision"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=tng-datepicker.overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-datepicker.overlay.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/datepicker/tng-datepicker.overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAMX,MAAM,eAAe,CAAC;AAOvB,OAAO,KAAK,EACV,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;;AAkB5B,KAAK,kBAAkB,GACnB,UAAU,CAAC,WAAW,CAAC,GACvB,WAAW,GACX,IAAI,GACJ,SAAS,CAAC;AA+Bd,qBAIa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkD;IAChF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IAExE,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,cAAc,CAA+B;IAErD,SAAgB,UAAU;oBAtEd,MAAM,QAAQ,CAAC;YACzB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;YACnD,IAAI,EAAE,OAAO,CAAC;SACf,CAAC;yBACe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI;mBAC3C,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI;QAmE1D;IACH,SAAgB,MAAM,0DAEnB;IACH,SAAgB,SAAS;;;oBAEtB;IACH,SAAgB,MAAM;;;oBAEnB;IACH,SAAgB,SAAS;;;;oBAEtB;IAGH,SAAS,KAAK,MAAM,IAAI,EAAE,GAAG,IAAI,CAGhC;IAGD,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,IAAI,CAGrC;IAGD,SAAS,KAAK,aAAa,IAAI,QAAQ,GAAG,KAAK,CAG9C;;IA6CD,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;yCAzSb,oBAAoB;2CAApB,oBAAoB;CA4ShC"}
|