best-react-datepicker 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-A3NQUSC5.cjs +1155 -0
- package/dist/chunk-A3NQUSC5.cjs.map +1 -0
- package/dist/chunk-FBN3SFQJ.js +1140 -0
- package/dist/chunk-FBN3SFQJ.js.map +1 -0
- package/dist/chunk-HI4J64KK.cjs +592 -0
- package/dist/chunk-HI4J64KK.cjs.map +1 -0
- package/dist/chunk-NF5M43IO.js +49 -0
- package/dist/chunk-NF5M43IO.js.map +1 -0
- package/dist/chunk-QW2CUEX4.js +117 -0
- package/dist/chunk-QW2CUEX4.js.map +1 -0
- package/dist/chunk-R7HLYS5V.cjs +120 -0
- package/dist/chunk-R7HLYS5V.cjs.map +1 -0
- package/dist/chunk-W6KEY2SO.js +526 -0
- package/dist/chunk-W6KEY2SO.js.map +1 -0
- package/dist/chunk-WBWQ5RKN.cjs +51 -0
- package/dist/chunk-WBWQ5RKN.cjs.map +1 -0
- package/dist/hooks.cjs +66 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +555 -0
- package/dist/hooks.d.ts +555 -0
- package/dist/hooks.js +5 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +1502 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +239 -0
- package/dist/index.d.ts +239 -0
- package/dist/index.js +1303 -0
- package/dist/index.js.map +1 -0
- package/dist/locales.cjs +16 -0
- package/dist/locales.cjs.map +1 -0
- package/dist/locales.d.cts +6 -0
- package/dist/locales.d.ts +6 -0
- package/dist/locales.js +3 -0
- package/dist/locales.js.map +1 -0
- package/dist/presets-B8wfaoTj.d.cts +54 -0
- package/dist/presets-CB5Rt4Li.d.ts +54 -0
- package/dist/styles.css +751 -0
- package/dist/types-DA2PcEiy.d.cts +104 -0
- package/dist/types-DA2PcEiy.d.ts +104 -0
- package/dist/utils.cjs +282 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +57 -0
- package/dist/utils.d.ts +57 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useControllable.ts","../src/hooks/useCalendar.ts","../src/hooks/useKeyboardNav.ts","../src/hooks/useDatePicker.ts","../src/hooks/useRangePicker.ts","../src/hooks/useMultiPicker.ts","../src/hooks/useTimePicker.ts","../src/hooks/useMonthPicker.ts","../src/hooks/useYearPicker.ts","../src/hooks/useWeekPicker.ts","../src/hooks/useDateTimePicker.ts","../src/hooks/useClickOutside.ts","../src/hooks/usePortal.ts","../src/hooks/useFocusTrap.ts"],"names":["useState","useCallback","useMemo","useRef","useEffect"],"mappings":"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","file":"chunk-FBN3SFQJ.js","sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\nexport function useControllable<T>(options: {\n value?: T;\n defaultValue: T;\n onChange?: (value: T) => void;\n}): [T, (value: T) => void] {\n const { value: controlledValue, defaultValue, onChange } = options;\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (newValue: T) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChangeRef.current?.(newValue);\n },\n [isControlled]\n );\n\n return [value, setValue];\n}\n","import { useState, useMemo, useCallback, useRef } from 'react';\nimport type { WeekDay, DateMatcher, CalendarMonth, DatePickerLocale } from '../core/types';\nimport { generateCalendarMonths } from '../core/calendar-utils';\nimport { isDateDisabled, isDateHighlighted, isDateInRange } from '../core/constraint-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useControllable } from './useControllable';\n\nexport interface UseCalendarOptions {\n defaultMonth?: Date;\n month?: Date;\n onMonthChange?: (month: Date) => void;\n numberOfMonths?: number;\n weekStartsOn?: WeekDay;\n fixedWeeks?: boolean;\n minDate?: Date;\n maxDate?: Date;\n disabled?: DateMatcher | DateMatcher[];\n highlighted?: DateMatcher | DateMatcher[];\n showWeekNumbers?: boolean;\n showOutsideDays?: boolean;\n locale?: DatePickerLocale;\n}\n\nexport interface UseCalendarReturn {\n months: CalendarMonth[];\n focusedDate: Date | null;\n viewingYear: number;\n viewingMonth: number;\n goToNextMonth: () => void;\n goToPrevMonth: () => void;\n goToNextYear: () => void;\n goToPrevYear: () => void;\n goToMonth: (month: number) => void;\n goToYear: (year: number) => void;\n goToDate: (date: Date) => void;\n goToToday: () => void;\n setFocusedDate: (date: Date | null) => void;\n isDateDisabled: (date: Date) => boolean;\n isDateHighlighted: (date: Date) => boolean;\n isOutsideRange: (date: Date) => boolean;\n locale: DatePickerLocale;\n}\n\nexport function useCalendar(options: UseCalendarOptions = {}): UseCalendarReturn {\n const {\n numberOfMonths = 1,\n weekStartsOn: weekStartsOnProp,\n fixedWeeks = false,\n minDate,\n maxDate,\n disabled,\n highlighted,\n locale = defaultLocale,\n } = options;\n\n const weekStartsOn = weekStartsOnProp ?? locale.weekStartsOn;\n const now = new Date();\n\n const [viewingDate, setViewingDate] = useControllable<Date>({\n value: options.month,\n defaultValue: options.defaultMonth ?? new Date(now.getFullYear(), now.getMonth(), 1),\n onChange: (date) => options.onMonthChange?.(date),\n });\n\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n\n const viewingYear = viewingDate.getFullYear();\n const viewingMonth = viewingDate.getMonth();\n\n const months = useMemo(\n () =>\n generateCalendarMonths(viewingYear, viewingMonth, numberOfMonths, {\n weekStartsOn,\n fixedWeeks,\n }),\n [viewingYear, viewingMonth, numberOfMonths, weekStartsOn, fixedWeeks]\n );\n\n const navigate = useCallback(\n (year: number, month: number) => {\n const adjusted = new Date(year, month, 1);\n setViewingDate(adjusted);\n },\n [setViewingDate]\n );\n\n const goToNextMonth = useCallback(() => {\n navigate(viewingYear, viewingMonth + 1);\n }, [navigate, viewingYear, viewingMonth]);\n\n const goToPrevMonth = useCallback(() => {\n navigate(viewingYear, viewingMonth - 1);\n }, [navigate, viewingYear, viewingMonth]);\n\n const goToNextYear = useCallback(() => {\n navigate(viewingYear + 1, viewingMonth);\n }, [navigate, viewingYear, viewingMonth]);\n\n const goToPrevYear = useCallback(() => {\n navigate(viewingYear - 1, viewingMonth);\n }, [navigate, viewingYear, viewingMonth]);\n\n const goToMonth = useCallback(\n (month: number) => {\n navigate(viewingYear, month);\n },\n [navigate, viewingYear]\n );\n\n const goToYear = useCallback(\n (year: number) => {\n navigate(year, viewingMonth);\n },\n [navigate, viewingMonth]\n );\n\n const goToDate = useCallback(\n (date: Date) => {\n navigate(date.getFullYear(), date.getMonth());\n },\n [navigate]\n );\n\n const goToToday = useCallback(() => {\n const t = new Date();\n navigate(t.getFullYear(), t.getMonth());\n }, [navigate]);\n\n const checkDisabled = useCallback(\n (date: Date) => {\n if (!isDateInRange(date, minDate, maxDate)) return true;\n return isDateDisabled(date, disabled);\n },\n [minDate, maxDate, disabled]\n );\n\n const checkHighlighted = useCallback(\n (date: Date) => isDateHighlighted(date, highlighted),\n [highlighted]\n );\n\n const checkOutsideRange = useCallback(\n (date: Date) => !isDateInRange(date, minDate, maxDate),\n [minDate, maxDate]\n );\n\n return {\n months,\n focusedDate,\n viewingYear,\n viewingMonth,\n goToNextMonth,\n goToPrevMonth,\n goToNextYear,\n goToPrevYear,\n goToMonth,\n goToYear,\n goToDate,\n goToToday,\n setFocusedDate,\n isDateDisabled: checkDisabled,\n isDateHighlighted: checkHighlighted,\n isOutsideRange: checkOutsideRange,\n locale,\n };\n}\n","import { useCallback } from 'react';\nimport type { WeekDay, DateMatcher } from '../core/types';\nimport { addDays, subDays, addMonths, subMonths, addYears, subYears, startOfWeek, endOfWeek } from '../core/date-utils';\nimport { isDateDisabled, isDateInRange } from '../core/constraint-utils';\n\nexport interface UseKeyboardNavOptions {\n focusedDate: Date;\n onFocusChange: (date: Date) => void;\n onSelect: (date: Date) => void;\n onClose?: () => void;\n weekStartsOn?: WeekDay;\n minDate?: Date;\n maxDate?: Date;\n disabled?: DateMatcher | DateMatcher[];\n}\n\nexport function useKeyboardNav(options: UseKeyboardNavOptions) {\n const {\n focusedDate,\n onFocusChange,\n onSelect,\n onClose,\n weekStartsOn = 0,\n minDate,\n maxDate,\n disabled,\n } = options;\n\n const isValid = (date: Date): boolean => {\n return isDateInRange(date, minDate, maxDate) && !isDateDisabled(date, disabled);\n };\n\n const moveFocus = (newDate: Date) => {\n if (isDateInRange(newDate, minDate, maxDate)) {\n onFocusChange(newDate);\n }\n };\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n let handled = true;\n\n switch (event.key) {\n case 'ArrowRight':\n moveFocus(addDays(focusedDate, 1));\n break;\n case 'ArrowLeft':\n moveFocus(subDays(focusedDate, 1));\n break;\n case 'ArrowDown':\n moveFocus(addDays(focusedDate, 7));\n break;\n case 'ArrowUp':\n moveFocus(subDays(focusedDate, 7));\n break;\n case 'Home':\n moveFocus(startOfWeek(focusedDate, weekStartsOn));\n break;\n case 'End':\n moveFocus(endOfWeek(focusedDate, weekStartsOn));\n break;\n case 'PageDown':\n if (event.shiftKey) {\n moveFocus(addYears(focusedDate, 1));\n } else {\n moveFocus(addMonths(focusedDate, 1));\n }\n break;\n case 'PageUp':\n if (event.shiftKey) {\n moveFocus(subYears(focusedDate, 1));\n } else {\n moveFocus(subMonths(focusedDate, 1));\n }\n break;\n case 'Enter':\n case ' ':\n if (isValid(focusedDate)) {\n onSelect(focusedDate);\n }\n break;\n case 'Escape':\n onClose?.();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [focusedDate, onFocusChange, onSelect, onClose, weekStartsOn, minDate, maxDate, disabled]\n );\n\n return { handleKeyDown };\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { DatePickerLocale } from '../core/types';\nimport { isSameDay, today as getToday } from '../core/date-utils';\nimport { formatDate, parseDate } from '../core/format-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useCalendar, type UseCalendarOptions } from './useCalendar';\nimport { useControllable } from './useControllable';\n\nexport interface UseDatePickerOptions extends UseCalendarOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n closeOnSelect?: boolean;\n format?: string;\n clearable?: boolean;\n required?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n name?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useDatePicker(options: UseDatePickerOptions = {}) {\n const {\n closeOnSelect = true,\n clearable = false,\n required = false,\n readOnly = false,\n placeholder,\n name,\n locale = defaultLocale,\n ...calendarOptions\n } = options;\n\n const format = options.format ?? locale.dateFormat;\n const calendar = useCalendar({ ...calendarOptions, locale });\n\n const [selectedDate, setSelectedDate] = useControllable<Date | null>({\n value: options.value,\n defaultValue: options.defaultValue ?? null,\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const [inputValue, setInputValue] = useState('');\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const formattedValue = useMemo(\n () => (selectedDate ? formatDate(selectedDate, format, locale.code) : ''),\n [selectedDate, format, locale.code]\n );\n\n const open = useCallback(() => {\n if (!readOnly) setIsOpen(true);\n }, [readOnly, setIsOpen]);\n\n const close = useCallback(() => {\n setIsOpen(false);\n setInputValue('');\n }, [setIsOpen]);\n\n const toggle = useCallback(() => {\n if (isOpen) close();\n else open();\n }, [isOpen, open, close]);\n\n const selectDate = useCallback(\n (date: Date) => {\n if (calendar.isDateDisabled(date)) return;\n setSelectedDate(date);\n if (closeOnSelect) close();\n },\n [calendar.isDateDisabled, setSelectedDate, closeOnSelect, close]\n );\n\n const clearDate = useCallback(() => {\n setSelectedDate(null);\n setInputValue('');\n }, [setSelectedDate]);\n\n const isSelected = useCallback(\n (date: Date) => (selectedDate ? isSameDay(date, selectedDate) : false),\n [selectedDate]\n );\n\n const handleInputChange = useCallback(\n (value: string) => {\n setInputValue(value);\n const parsed = parseDate(value, format, locale.code);\n if (parsed && !calendar.isDateDisabled(parsed)) {\n setSelectedDate(parsed);\n calendar.goToDate(parsed);\n }\n },\n [format, locale.code, calendar, setSelectedDate]\n );\n\n const handleInputBlur = useCallback(() => {\n setIsInputFocused(false);\n setInputValue('');\n }, []);\n\n const handleInputFocus = useCallback(() => {\n setIsInputFocused(true);\n }, []);\n\n const getInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: isInputFocused && inputValue ? inputValue : formattedValue,\n placeholder: placeholder ?? format,\n readOnly,\n 'aria-label': placeholder ?? 'Select date',\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': isOpen,\n autoComplete: 'off' as const,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => handleInputChange(e.target.value),\n onFocus: () => {\n handleInputFocus();\n open();\n },\n onBlur: handleInputBlur,\n onClick: () => open(),\n }),\n [formattedValue, inputValue, isInputFocused, placeholder, format, readOnly, isOpen, handleInputChange, handleInputFocus, handleInputBlur, open]\n );\n\n const getPopoverProps = useCallback(\n () => ({\n role: 'dialog' as const,\n 'aria-modal': true as const,\n 'aria-label': 'Choose date',\n }),\n []\n );\n\n const getHiddenInputProps = useCallback(\n () => ({\n type: 'hidden' as const,\n name,\n value: selectedDate ? selectedDate.toISOString() : '',\n }),\n [name, selectedDate]\n );\n\n return {\n ...calendar,\n selectedDate,\n selectDate,\n clearDate,\n formattedValue,\n isOpen,\n open,\n close,\n toggle,\n isSelected,\n getInputProps,\n getPopoverProps,\n getHiddenInputProps,\n clearable,\n required,\n };\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>;\n","import { useState, useCallback, useMemo } from 'react';\nimport type { DateRange, RangePreset } from '../core/types';\nimport { isSameDay, isBefore, isAfter, isBetween, differenceInDays } from '../core/date-utils';\nimport { formatDate } from '../core/format-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useCalendar, type UseCalendarOptions } from './useCalendar';\nimport { useControllable } from './useControllable';\n\nexport interface UseRangePickerOptions extends UseCalendarOptions {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n minDays?: number;\n maxDays?: number;\n presets?: RangePreset[];\n allowSameDay?: boolean;\n format?: string;\n separator?: string;\n startName?: string;\n endName?: string;\n startPlaceholder?: string;\n endPlaceholder?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n closeOnSelect?: boolean;\n}\n\nexport function useRangePicker(options: UseRangePickerOptions = {}) {\n const {\n minDays,\n maxDays,\n presets = [],\n allowSameDay = true,\n separator = ' – ',\n startName,\n endName,\n startPlaceholder,\n endPlaceholder,\n closeOnSelect = false,\n locale = defaultLocale,\n ...calendarOptions\n } = options;\n\n const format = options.format ?? locale.dateFormat;\n const calendar = useCalendar({\n ...calendarOptions,\n numberOfMonths: calendarOptions.numberOfMonths ?? 2,\n locale,\n });\n\n const emptyRange: DateRange = { from: null, to: null };\n\n const [range, setRange] = useControllable<DateRange>({\n value: options.value,\n defaultValue: options.defaultValue ?? emptyRange,\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [activeInput, setActiveInput] = useState<'start' | 'end'>('start');\n\n const isValidRange = useCallback(\n (from: Date, to: Date): boolean => {\n const days = Math.abs(differenceInDays(to, from)) + 1;\n if (!allowSameDay && days === 1) return false;\n if (minDays && days < minDays) return false;\n if (maxDays && days > maxDays) return false;\n return true;\n },\n [allowSameDay, minDays, maxDays]\n );\n\n const handleDayClick = useCallback(\n (date: Date) => {\n if (calendar.isDateDisabled(date)) return;\n\n if (!range.from || (range.from && range.to)) {\n // Start new selection\n setRange({ from: date, to: null });\n setActiveInput('end');\n } else {\n // Complete the range\n let from = range.from;\n let to = date;\n\n // Swap if needed\n if (isBefore(to, from)) {\n [from, to] = [to, from];\n }\n\n if (isValidRange(from, to)) {\n setRange({ from, to });\n setActiveInput('start');\n if (closeOnSelect) {\n setIsOpen(false);\n }\n } else {\n // Invalid range — start over\n setRange({ from: date, to: null });\n setActiveInput('end');\n }\n }\n },\n [range, calendar.isDateDisabled, isValidRange, setRange, closeOnSelect, setIsOpen]\n );\n\n const applyPreset = useCallback(\n (preset: RangePreset) => {\n const value = typeof preset.value === 'function' ? preset.value() : preset.value;\n setRange(value);\n if (closeOnSelect) {\n setIsOpen(false);\n }\n },\n [setRange, closeOnSelect, setIsOpen]\n );\n\n const activePresetIndex = useMemo(() => {\n if (!range.from || !range.to) return -1;\n return presets.findIndex((preset) => {\n const resolved = typeof preset.value === 'function' ? preset.value() : preset.value;\n if (!resolved.from || !resolved.to) return false;\n return isSameDay(range.from!, resolved.from) && isSameDay(range.to!, resolved.to);\n });\n }, [range.from, range.to, presets]);\n\n const clearRange = useCallback(() => {\n setRange(emptyRange);\n setActiveInput('start');\n }, [setRange]);\n\n const isRangeStart = useCallback(\n (date: Date) => (range.from ? isSameDay(date, range.from) : false),\n [range.from]\n );\n\n const isRangeEnd = useCallback(\n (date: Date) => (range.to ? isSameDay(date, range.to) : false),\n [range.to]\n );\n\n const isInRange = useCallback(\n (date: Date) => {\n if (!range.from || !range.to) return false;\n return isBetween(date, range.from, range.to, false) && !isSameDay(date, range.from) && !isSameDay(date, range.to);\n },\n [range.from, range.to]\n );\n\n const isInPreviewRange = useCallback(\n (date: Date) => {\n if (!range.from || range.to || !hoveredDate) return false;\n const start = isBefore(hoveredDate, range.from) ? hoveredDate : range.from;\n const end = isAfter(hoveredDate, range.from) ? hoveredDate : range.from;\n return isBetween(date, start, end);\n },\n [range.from, range.to, hoveredDate]\n );\n\n const isSelected = useCallback(\n (date: Date) => isRangeStart(date) || isRangeEnd(date),\n [isRangeStart, isRangeEnd]\n );\n\n const formattedStart = useMemo(\n () => (range.from ? formatDate(range.from, format, locale.code) : ''),\n [range.from, format, locale.code]\n );\n\n const formattedEnd = useMemo(\n () => (range.to ? formatDate(range.to, format, locale.code) : ''),\n [range.to, format, locale.code]\n );\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n const getStartInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: formattedStart,\n placeholder: startPlaceholder ?? locale.labels.startDate,\n readOnly: true as const,\n 'aria-label': locale.labels.startDate,\n onClick: () => {\n setActiveInput('start');\n open();\n },\n }),\n [formattedStart, startPlaceholder, locale.labels.startDate, open]\n );\n\n const getEndInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: formattedEnd,\n placeholder: endPlaceholder ?? locale.labels.endDate,\n readOnly: true as const,\n 'aria-label': locale.labels.endDate,\n onClick: () => {\n setActiveInput('end');\n open();\n },\n }),\n [formattedEnd, endPlaceholder, locale.labels.endDate, open]\n );\n\n const getPopoverProps = useCallback(\n () => ({\n role: 'dialog' as const,\n 'aria-modal': true as const,\n 'aria-label': 'Choose date range',\n }),\n []\n );\n\n const getPresetButtonProps = useCallback(\n (preset: RangePreset) => ({\n type: 'button' as const,\n onClick: () => applyPreset(preset),\n 'aria-label': preset.label,\n }),\n [applyPreset]\n );\n\n return {\n ...calendar,\n range,\n hoveredDate,\n activeInput,\n handleDayClick,\n applyPreset,\n clearRange,\n setHoveredDate,\n isRangeStart,\n isRangeEnd,\n isInRange,\n isInPreviewRange,\n isSelected,\n formattedStart,\n formattedEnd,\n isOpen,\n open,\n close,\n toggle,\n presets,\n separator,\n activePresetIndex,\n getStartInputProps,\n getEndInputProps,\n getPopoverProps,\n getPresetButtonProps,\n };\n}\n\nexport type UseRangePickerReturn = ReturnType<typeof useRangePicker>;\n","import { useCallback, useMemo } from 'react';\nimport { isSameDay } from '../core/date-utils';\nimport { formatDate } from '../core/format-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useCalendar, type UseCalendarOptions } from './useCalendar';\nimport { useControllable } from './useControllable';\n\nexport interface UseMultiPickerOptions extends UseCalendarOptions {\n value?: Date[];\n defaultValue?: Date[];\n onChange?: (dates: Date[]) => void;\n maxSelections?: number;\n format?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useMultiPicker(options: UseMultiPickerOptions = {}) {\n const {\n maxSelections,\n locale = defaultLocale,\n ...calendarOptions\n } = options;\n\n const format = options.format ?? locale.dateFormat;\n const calendar = useCalendar({ ...calendarOptions, locale });\n\n const [selectedDates, setSelectedDates] = useControllable<Date[]>({\n value: options.value,\n defaultValue: options.defaultValue ?? [],\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const toggleDate = useCallback(\n (date: Date) => {\n if (calendar.isDateDisabled(date)) return;\n\n const index = selectedDates.findIndex((d) => isSameDay(d, date));\n if (index >= 0) {\n setSelectedDates(selectedDates.filter((_, i) => i !== index));\n } else {\n if (maxSelections && selectedDates.length >= maxSelections) return;\n setSelectedDates([...selectedDates, date]);\n }\n },\n [selectedDates, maxSelections, calendar.isDateDisabled, setSelectedDates]\n );\n\n const removeDate = useCallback(\n (date: Date) => {\n setSelectedDates(selectedDates.filter((d) => !isSameDay(d, date)));\n },\n [selectedDates, setSelectedDates]\n );\n\n const clearAll = useCallback(() => {\n setSelectedDates([]);\n }, [setSelectedDates]);\n\n const isSelected = useCallback(\n (date: Date) => selectedDates.some((d) => isSameDay(d, date)),\n [selectedDates]\n );\n\n const formattedValues = useMemo(\n () => selectedDates.map((d) => formatDate(d, format, locale.code)),\n [selectedDates, format, locale.code]\n );\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n return {\n ...calendar,\n selectedDates,\n toggleDate,\n removeDate,\n clearAll,\n isSelected,\n formattedValues,\n isOpen,\n open,\n close,\n toggle,\n };\n}\n\nexport type UseMultiPickerReturn = ReturnType<typeof useMultiPicker>;\n","import { useCallback, useMemo } from 'react';\nimport { clone } from '../core/date-utils';\nimport { generateHours, generateMinutes, generateSeconds, to12Hour, to24Hour, formatMeridiem } from '../core/time-utils';\nimport { formatTime } from '../core/format-utils';\nimport { useControllable } from './useControllable';\n\nexport interface UseTimePickerOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n format?: '12h' | '24h';\n minuteStep?: number;\n secondStep?: number;\n showSeconds?: boolean;\n minTime?: { hours: number; minutes: number };\n maxTime?: { hours: number; minutes: number };\n name?: string;\n placeholder?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useTimePicker(options: UseTimePickerOptions = {}) {\n const {\n format = '12h',\n minuteStep = 1,\n secondStep = 1,\n showSeconds = false,\n minTime,\n maxTime,\n name,\n placeholder,\n } = options;\n\n const [selectedTime, setSelectedTime] = useControllable<Date | null>({\n value: options.value,\n defaultValue: options.defaultValue ?? null,\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const hours24 = selectedTime?.getHours() ?? 0;\n const minutes = selectedTime?.getMinutes() ?? 0;\n const seconds = selectedTime?.getSeconds() ?? 0;\n\n const { hours: display12h, meridiem } = to12Hour(hours24);\n const displayHours = format === '12h' ? display12h : hours24;\n\n const updateTime = useCallback(\n (h: number, m: number, s: number) => {\n const base = selectedTime ? clone(selectedTime) : new Date();\n base.setHours(h, m, s, 0);\n setSelectedTime(base);\n },\n [selectedTime, setSelectedTime]\n );\n\n const setHours = useCallback(\n (h: number) => {\n const h24 = format === '12h' ? to24Hour(h, meridiem) : h;\n updateTime(h24, minutes, seconds);\n },\n [format, meridiem, minutes, seconds, updateTime]\n );\n\n const setMinutes = useCallback(\n (m: number) => updateTime(hours24, m, seconds),\n [hours24, seconds, updateTime]\n );\n\n const setSeconds = useCallback(\n (s: number) => updateTime(hours24, minutes, s),\n [hours24, minutes, updateTime]\n );\n\n const setMeridiem = useCallback(\n (m: 'AM' | 'PM') => {\n const h = to24Hour(display12h, m);\n updateTime(h, minutes, seconds);\n },\n [display12h, minutes, seconds, updateTime]\n );\n\n const availableHours = useMemo(() => generateHours(format), [format]);\n const availableMinutes = useMemo(() => generateMinutes(minuteStep), [minuteStep]);\n const availableSeconds = useMemo(() => generateSeconds(secondStep), [secondStep]);\n\n const formattedValue = useMemo(\n () => (selectedTime ? formatTime(selectedTime, format) : ''),\n [selectedTime, format]\n );\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n const getInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: formattedValue,\n placeholder: placeholder ?? (format === '12h' ? 'hh:mm AM' : 'HH:mm'),\n readOnly: true as const,\n 'aria-label': placeholder ?? 'Select time',\n 'aria-haspopup': 'listbox' as const,\n 'aria-expanded': isOpen,\n onClick: () => open(),\n }),\n [formattedValue, placeholder, format, isOpen, open]\n );\n\n const getTimeOptionProps = useCallback(\n (type: 'hours' | 'minutes' | 'seconds' | 'meridiem', value: number | string) => {\n const isActive =\n type === 'hours'\n ? displayHours === value\n : type === 'minutes'\n ? minutes === value\n : type === 'seconds'\n ? seconds === value\n : meridiem === value;\n\n return {\n type: 'button' as const,\n role: 'option' as const,\n 'aria-selected': isActive,\n 'data-active': isActive || undefined,\n onClick: () => {\n switch (type) {\n case 'hours': setHours(value as number); break;\n case 'minutes': setMinutes(value as number); break;\n case 'seconds': setSeconds(value as number); break;\n case 'meridiem': setMeridiem(value as 'AM' | 'PM'); break;\n }\n },\n };\n },\n [displayHours, minutes, seconds, meridiem, setHours, setMinutes, setSeconds, setMeridiem]\n );\n\n return {\n hours: displayHours,\n minutes,\n seconds,\n meridiem,\n setHours,\n setMinutes,\n setSeconds,\n setMeridiem,\n formattedValue,\n availableHours,\n availableMinutes,\n availableSeconds,\n showSeconds,\n format,\n isOpen,\n open,\n close,\n toggle,\n getInputProps,\n getTimeOptionProps,\n selectedTime,\n };\n}\n\nexport type UseTimePickerReturn = ReturnType<typeof useTimePicker>;\n","import { useCallback, useMemo, useState } from 'react';\nimport { createDate, isSameMonth, isBefore, isAfter, startOfMonth } from '../core/date-utils';\nimport { generateMonthGrid } from '../core/calendar-utils';\nimport { formatDate } from '../core/format-utils';\nimport { defaultLocale } from '../core/locale';\nimport type { DatePickerLocale } from '../core/types';\nimport { useControllable } from './useControllable';\n\nexport interface UseMonthPickerOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n format?: string;\n locale?: DatePickerLocale;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useMonthPicker(options: UseMonthPickerOptions = {}) {\n const { minDate, maxDate, locale = defaultLocale } = options;\n const format = options.format ?? 'MMM YYYY';\n\n const [selectedDate, setSelectedDate] = useControllable<Date | null>({\n value: options.value,\n defaultValue: options.defaultValue ?? null,\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const [viewingYear, setViewingYear] = useState(\n () => selectedDate?.getFullYear() ?? new Date().getFullYear()\n );\n\n const monthGrid = useMemo(() => {\n const grid = generateMonthGrid(viewingYear);\n return grid.map((item) => {\n const date = createDate(viewingYear, item.month, 1);\n const isDisabled =\n (minDate ? isBefore(date, startOfMonth(minDate)) : false) ||\n (maxDate ? isAfter(date, maxDate) : false);\n const isSelected = selectedDate ? isSameMonth(date, selectedDate) : false;\n return { ...item, isDisabled, isSelected, date };\n });\n }, [viewingYear, minDate, maxDate, selectedDate]);\n\n const goToNextYear = useCallback(() => setViewingYear((y) => y + 1), []);\n const goToPrevYear = useCallback(() => setViewingYear((y) => y - 1), []);\n\n const selectMonth = useCallback(\n (month: number) => {\n const date = createDate(viewingYear, month, 1);\n setSelectedDate(date);\n },\n [viewingYear, setSelectedDate]\n );\n\n const formattedValue = useMemo(\n () => (selectedDate ? formatDate(selectedDate, format, locale.code) : ''),\n [selectedDate, format, locale.code]\n );\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n const getInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: formattedValue,\n readOnly: true as const,\n 'aria-label': locale.labels.selectMonth,\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': isOpen,\n onClick: () => open(),\n }),\n [formattedValue, locale.labels.selectMonth, isOpen, open]\n );\n\n const getMonthButtonProps = useCallback(\n (month: number) => {\n const item = monthGrid.find((m) => m.month === month);\n return {\n type: 'button' as const,\n 'aria-selected': item?.isSelected ?? false,\n 'aria-disabled': item?.isDisabled ?? false,\n disabled: item?.isDisabled ?? false,\n onClick: () => {\n if (!item?.isDisabled) {\n selectMonth(month);\n close();\n }\n },\n };\n },\n [monthGrid, selectMonth, close]\n );\n\n return {\n viewingYear,\n selectedDate,\n monthGrid,\n goToNextYear,\n goToPrevYear,\n selectMonth,\n formattedValue,\n isOpen,\n open,\n close,\n toggle,\n getInputProps,\n getMonthButtonProps,\n locale,\n };\n}\n\nexport type UseMonthPickerReturn = ReturnType<typeof useMonthPicker>;\n","import { useCallback, useMemo, useState } from 'react';\nimport { generateYearGrid } from '../core/calendar-utils';\nimport { useControllable } from './useControllable';\n\nexport interface UseYearPickerOptions {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (year: number | null) => void;\n minYear?: number;\n maxYear?: number;\n yearsPerPage?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useYearPicker(options: UseYearPickerOptions = {}) {\n const { minYear, maxYear, yearsPerPage = 12 } = options;\n\n const [selectedYear, setSelectedYear] = useControllable<number | null>({\n value: options.value,\n defaultValue: options.defaultValue ?? null,\n onChange: options.onChange,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const currentYear = new Date().getFullYear();\n const [centerYear, setCenterYear] = useState(selectedYear ?? currentYear);\n\n const years = useMemo(() => {\n const grid = generateYearGrid(centerYear, yearsPerPage);\n return grid.map((item) => ({\n ...item,\n isDisabled: (minYear != null && item.year < minYear) || (maxYear != null && item.year > maxYear),\n isSelected: selectedYear === item.year,\n isCurrentYear: item.year === currentYear,\n }));\n }, [centerYear, yearsPerPage, minYear, maxYear, selectedYear, currentYear]);\n\n const decadeStart = years[0]?.year ?? centerYear;\n\n const goToNextDecade = useCallback(\n () => setCenterYear((y) => y + yearsPerPage),\n [yearsPerPage]\n );\n\n const goToPrevDecade = useCallback(\n () => setCenterYear((y) => y - yearsPerPage),\n [yearsPerPage]\n );\n\n const selectYear = useCallback(\n (year: number) => setSelectedYear(year),\n [setSelectedYear]\n );\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n const getInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: selectedYear != null ? String(selectedYear) : '',\n readOnly: true as const,\n 'aria-label': 'Select year',\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': isOpen,\n onClick: () => open(),\n }),\n [selectedYear, isOpen, open]\n );\n\n const getYearButtonProps = useCallback(\n (year: number) => {\n const item = years.find((y) => y.year === year);\n return {\n type: 'button' as const,\n 'aria-selected': item?.isSelected ?? false,\n 'aria-disabled': item?.isDisabled ?? false,\n disabled: item?.isDisabled ?? false,\n onClick: () => {\n if (!item?.isDisabled) {\n selectYear(year);\n close();\n }\n },\n };\n },\n [years, selectYear, close]\n );\n\n return {\n decadeStart,\n selectedYear,\n years,\n goToNextDecade,\n goToPrevDecade,\n selectYear,\n isOpen,\n open,\n close,\n toggle,\n getInputProps,\n getYearButtonProps,\n };\n}\n\nexport type UseYearPickerReturn = ReturnType<typeof useYearPicker>;\n","import { useCallback, useMemo } from 'react';\nimport { isSameDay, startOfWeek, endOfWeek } from '../core/date-utils';\nimport { getWeekNumber, getWeekDates } from '../core/week-utils';\nimport { formatDate } from '../core/format-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useCalendar, type UseCalendarOptions } from './useCalendar';\nimport { useControllable } from './useControllable';\n\nexport interface UseWeekPickerOptions extends UseCalendarOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (weekStart: Date, weekEnd: Date, weekNumber: number) => void;\n format?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function useWeekPicker(options: UseWeekPickerOptions = {}) {\n const { locale = defaultLocale, ...calendarOptions } = options;\n const format = options.format ?? locale.dateFormat;\n const weekStartsOn = options.weekStartsOn ?? locale.weekStartsOn;\n\n const calendar = useCalendar({\n ...calendarOptions,\n locale,\n showWeekNumbers: true,\n weekStartsOn,\n });\n\n const [selectedWeekDate, setSelectedWeekDate] = useControllable<Date | null>({\n value: options.value,\n defaultValue: options.defaultValue ?? null,\n onChange: undefined,\n });\n\n const [isOpen, setIsOpen] = useControllable<boolean>({\n value: options.open,\n defaultValue: options.defaultOpen ?? false,\n onChange: options.onOpenChange,\n });\n\n const selectedWeek = useMemo(() => {\n if (!selectedWeekDate) return null;\n const start = startOfWeek(selectedWeekDate, weekStartsOn);\n const end = endOfWeek(selectedWeekDate, weekStartsOn);\n const weekNumber = getWeekNumber(selectedWeekDate, weekStartsOn);\n return { start, end, weekNumber };\n }, [selectedWeekDate, weekStartsOn]);\n\n const selectWeek = useCallback(\n (date: Date) => {\n if (calendar.isDateDisabled(date)) return;\n setSelectedWeekDate(date);\n const start = startOfWeek(date, weekStartsOn);\n const end = endOfWeek(date, weekStartsOn);\n const weekNumber = getWeekNumber(date, weekStartsOn);\n options.onChange?.(start, end, weekNumber);\n },\n [calendar.isDateDisabled, weekStartsOn, options.onChange, setSelectedWeekDate]\n );\n\n const isInSelectedWeek = useCallback(\n (date: Date) => {\n if (!selectedWeek) return false;\n const weekDates = getWeekDates(selectedWeek.start, weekStartsOn);\n return weekDates.some((d) => isSameDay(d, date));\n },\n [selectedWeek, weekStartsOn]\n );\n\n const formattedValue = useMemo(() => {\n if (!selectedWeek) return '';\n return `${formatDate(selectedWeek.start, format, locale.code)} – ${formatDate(selectedWeek.end, format, locale.code)}`;\n }, [selectedWeek, format, locale.code]);\n\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\n const getInputProps = useCallback(\n () => ({\n type: 'text' as const,\n value: formattedValue,\n readOnly: true as const,\n 'aria-label': 'Select week',\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': isOpen,\n onClick: () => open(),\n }),\n [formattedValue, isOpen, open]\n );\n\n return {\n ...calendar,\n selectedWeek,\n selectWeek,\n isInSelectedWeek,\n formattedValue,\n isOpen,\n open,\n close,\n toggle,\n getInputProps,\n };\n}\n\nexport type UseWeekPickerReturn = ReturnType<typeof useWeekPicker>;\n","import { useCallback, useMemo, useState } from 'react';\nimport { clone } from '../core/date-utils';\nimport { formatDate } from '../core/format-utils';\nimport { formatTime } from '../core/format-utils';\nimport { to12Hour, to24Hour } from '../core/time-utils';\nimport { defaultLocale } from '../core/locale';\nimport { useDatePicker, type UseDatePickerOptions } from './useDatePicker';\nimport { useControllable } from './useControllable';\n\nexport interface UseDateTimePickerOptions extends Omit<UseDatePickerOptions, 'format'> {\n dateFormat?: string;\n timeFormat?: '12h' | '24h';\n minuteStep?: number;\n showSeconds?: boolean;\n}\n\nexport function useDateTimePicker(options: UseDateTimePickerOptions = {}) {\n const {\n timeFormat = '12h',\n minuteStep = 1,\n showSeconds = false,\n locale = defaultLocale,\n ...dateOptions\n } = options;\n\n const dateFormat = options.dateFormat ?? locale.dateFormat;\n\n const datePicker = useDatePicker({\n ...dateOptions,\n format: dateFormat,\n closeOnSelect: false,\n locale,\n });\n\n const [activeTab, setActiveTab] = useState<'date' | 'time'>('date');\n\n const selectedDate = datePicker.selectedDate;\n const hours24 = selectedDate?.getHours() ?? 0;\n const minutes = selectedDate?.getMinutes() ?? 0;\n const seconds = selectedDate?.getSeconds() ?? 0;\n const { hours: display12h, meridiem } = to12Hour(hours24);\n const displayHours = timeFormat === '12h' ? display12h : hours24;\n\n const updateTime = useCallback(\n (h: number, m: number, s: number) => {\n const base = selectedDate ? clone(selectedDate) : new Date();\n base.setHours(h, m, s, 0);\n datePicker.selectDate(base);\n },\n [selectedDate, datePicker.selectDate]\n );\n\n const setHours = useCallback(\n (h: number) => {\n const h24 = timeFormat === '12h' ? to24Hour(h, meridiem) : h;\n updateTime(h24, minutes, seconds);\n },\n [timeFormat, meridiem, minutes, seconds, updateTime]\n );\n\n const setMinutes = useCallback(\n (m: number) => updateTime(hours24, m, seconds),\n [hours24, seconds, updateTime]\n );\n\n const setSeconds = useCallback(\n (s: number) => updateTime(hours24, minutes, s),\n [hours24, minutes, updateTime]\n );\n\n const setMeridiem = useCallback(\n (m: 'AM' | 'PM') => {\n const h = to24Hour(display12h, m);\n updateTime(h, minutes, seconds);\n },\n [display12h, minutes, seconds, updateTime]\n );\n\n const formattedValue = useMemo(() => {\n if (!selectedDate) return '';\n const datePart = formatDate(selectedDate, dateFormat, locale.code);\n const timePart = formatTime(selectedDate, timeFormat);\n return `${datePart} ${timePart}`;\n }, [selectedDate, dateFormat, timeFormat, locale.code]);\n\n return {\n ...datePicker,\n formattedValue,\n hours: displayHours,\n minutes,\n seconds,\n meridiem,\n setHours,\n setMinutes,\n setSeconds,\n setMeridiem,\n activeTab,\n setActiveTab,\n timeFormat,\n minuteStep,\n showSeconds,\n };\n}\n\nexport type UseDateTimePickerReturn = ReturnType<typeof useDateTimePicker>;\n","import { useEffect, useRef } from 'react';\n\nexport function useClickOutside(\n refs: React.RefObject<HTMLElement | null>[],\n handler: (event: MouseEvent | TouchEvent) => void,\n enabled = true\n): void {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n if (!enabled) return;\n\n const listener = (event: MouseEvent | TouchEvent) => {\n const target = event.target as Node;\n const isOutside = refs.every((ref) => {\n return !ref.current || !ref.current.contains(target);\n });\n if (isOutside) {\n handlerRef.current(event);\n }\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, enabled]);\n}\n","import { useState, useEffect } from 'react';\n\nexport function usePortal(options?: {\n containerId?: string;\n enabled?: boolean;\n}): {\n portalTarget: HTMLElement | null;\n isPortalReady: boolean;\n} {\n const { containerId = 'brdp-portal', enabled = true } = options ?? {};\n const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) {\n setPortalTarget(null);\n return;\n }\n\n let container = document.getElementById(containerId);\n if (!container) {\n container = document.createElement('div');\n container.id = containerId;\n document.body.appendChild(container);\n }\n setPortalTarget(container);\n }, [containerId, enabled]);\n\n return {\n portalTarget,\n isPortalReady: !!portalTarget,\n };\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useFocusTrap(\n containerRef: React.RefObject<HTMLElement | null>,\n enabled = true\n): void {\n const previousFocusRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled || !containerRef.current) return;\n\n previousFocusRef.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n const focusableSelector =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n const focusFirst = () => {\n const firstFocusable = container.querySelector<HTMLElement>(focusableSelector);\n firstFocusable?.focus();\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Tab') return;\n\n const focusableElements = container.querySelectorAll<HTMLElement>(focusableSelector);\n if (focusableElements.length === 0) return;\n\n const firstFocusable = focusableElements[0];\n const lastFocusable = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n };\n\n focusFirst();\n container.addEventListener('keydown', handleKeyDown);\n\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n previousFocusRef.current?.focus();\n };\n }, [containerRef, enabled]);\n}\n"]}
|