@yamada-ui/react 2.2.11-dev-20261013044619 → 2.2.11-dev-20261013064254

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.
@@ -1 +1 @@
1
- {"version":3,"file":"use-calendar.js","names":["isArray","isNumber","isObject","isDate","createContext","contains","dataAttr","handlerAll","ariaAttr"],"sources":["../../../../src/components/calendar/use-calendar.ts"],"sourcesContent":["\"use client\"\n\nimport type { FocusEvent, KeyboardEvent } from \"react\"\nimport type { HTMLProps, PropGetter, RequiredPropGetter } from \"../../core\"\nimport type { Descendant } from \"../../hooks/use-descendants\"\nimport type { Locale } from \"../../providers/i18n-provider\"\nimport type { AnyString, Dict } from \"../../utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useMemo, useRef } from \"react\"\nimport { mergeProps, useSplitProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport const DEFAULT_HOLIDAYS: Date[] = []\nexport const DEFAULT_WEEKEND_DAYS: number[] = [0, 6]\nexport const DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek = \"sunday\"\nexport const DEFAULT_MAX_DATE: Date = new Date(\"2099-12-31\")\nexport const DEFAULT_MIN_DATE: Date = new Date(\"1900-01-01\")\n\nexport type MaybeDate = Date | Date[] | undefined | { end?: Date; start?: Date }\nexport type MaybeDateValue<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> = Range extends true\n ? { end?: Date; start?: Date }\n : Multiple extends true\n ? Date[]\n : Date | undefined\nexport type StartDayOfWeek = \"monday\" | \"sunday\"\nexport interface CalendarFormat {\n day?: Intl.DateTimeFormatOptions[\"day\"] | null\n month?: Intl.DateTimeFormatOptions[\"month\"] | null\n weekday?: Intl.DateTimeFormatOptions[\"weekday\"] | null\n year?: Intl.DateTimeFormatOptions[\"year\"] | null\n}\n\nexport const getStartOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .startOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getEndOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .endOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getWeekdays = (\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: number }[] => {\n let weekdays: { label: string; value: number }[] = []\n\n const date = getStartOfWeek(new Date(), startDayOfWeek)\n\n for (let i = 0; i < 7; i += 1) {\n const label = format(date)\n const value = date.getDay()\n\n weekdays = [...weekdays, { label, value }]\n\n date.setDate(date.getDate() + 1)\n }\n\n return weekdays\n}\n\nexport const getMonthDays = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: Date }[][] => {\n const currentMonth = date.getMonth()\n const startOfMonth = new Date(date.getFullYear(), currentMonth, 1)\n const endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)\n const startDate = getStartOfWeek(startOfMonth, startDayOfWeek)\n const endDate = getEndOfWeek(endOfMonth, startDayOfWeek)\n\n const weeks: { label: string; value: Date }[][] = []\n\n while (startDate <= endDate) {\n const days: { label: string; value: Date }[] = []\n\n for (let i = 0; i < 7; i += 1) {\n const value = new Date(startDate)\n const label = format(value)\n\n days.push({ label, value })\n\n startDate.setDate(startDate.getDate() + 1)\n }\n\n weeks.push(days)\n }\n\n return weeks\n}\n\nexport const isSameYear = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"year\")\n\nexport const isSameMonth = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"month\")\n\nexport const isSameDate = (\n date: Date | undefined,\n comparison: Date | undefined,\n) =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"date\")\n\nexport const isAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"date\")\n\nexport const isBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"date\")\n\nexport const isSameAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isAfter(date, \"date\"))\n\nexport const isSameBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isBefore(date, \"date\"))\n\nexport const isAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"month\")\n\nexport const isBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"month\")\n\nexport const isSameAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isAfter(date, \"month\"))\n\nexport const isSameBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isBefore(date, \"month\"))\n\nexport const isAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"year\")\n\nexport const isBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"year\")\n\nexport const isSameAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isAfter(date, \"year\"))\n\nexport const isSameBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isBefore(date, \"year\"))\n\nexport const isIncludeDates = (comparison: Date, dates: Date[]) =>\n dates.some((date) => dayjs(date).isSame(comparison, \"date\"))\n\nexport const isInRange = (date: Date, minDate?: Date, maxDate?: Date) => {\n const hasMinDate = minDate instanceof Date\n const hasMaxDate = maxDate instanceof Date\n\n if (!hasMaxDate && !hasMinDate) return false\n\n const minInRange = hasMinDate ? isAfterDate(date, minDate) : false\n const maxInRange = hasMaxDate ? isBeforeDate(date, maxDate) : false\n\n return maxInRange && minInRange\n}\n\nexport const sortDates = (dates: Date[], type: \"asc\" | \"desc\" = \"asc\") => {\n if (type === \"asc\")\n return dates.sort((a, b) => (dayjs(a).isAfter(b, \"date\") ? 1 : -1))\n else return dates.sort((a, b) => (dayjs(a).isBefore(b, \"date\") ? 1 : -1))\n}\n\nexport const updateMaybeDateValue =\n (value: Date, max?: number) =>\n (prev: MaybeDate): MaybeDate => {\n if (isArray(prev)) {\n if (isIncludeDates(value, prev))\n return prev.filter((prevValue) => !isSameDate(prevValue, value))\n else if (!isNumber(max) || prev.length < max) return [...prev, value]\n else return prev\n } else if (isObject(prev) && !isDate(prev)) {\n const { end, start } = prev\n\n if ((start && end) || !start) return { end: undefined, start: value }\n else if (isSameDate(start, value))\n return { end: undefined, start: undefined }\n else if (isBeforeDate(value, start)) return { end: start, start: value }\n else return { end: value, start }\n } else {\n if (isSameDate(prev, value)) return undefined\n else return value\n }\n }\n\nexport const getAdjustedMonth = (value: MaybeDate, month: Date) => {\n if (isDate(value)) {\n if (!isSameMonth(value, month)) month = dayjs(value).set(\"date\", 1).toDate()\n } else if (isArray(value)) {\n const lastValue = value.at(-1)\n\n if (lastValue && !isSameMonth(lastValue, month))\n month = dayjs(lastValue).set(\"date\", 1).toDate()\n } else if (isObject(value)) {\n if (value.end) month = dayjs(value.end).set(\"date\", 1).toDate()\n else if (value.start) month = dayjs(value.start).set(\"date\", 1).toDate()\n }\n\n return month\n}\n\nconst {\n DescendantsContext: CalendarDescendantsContext,\n useDescendant: useCalendarDescendant,\n useDescendants: useCalendarDescendants,\n} = createDescendants<HTMLTableCellElement>()\n\nexport {\n CalendarDescendantsContext,\n useCalendarDescendant,\n useCalendarDescendants,\n}\n\ninterface CalendarContext extends Omit<\n UseCalendarReturn,\n | \"descendants\"\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getRootProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n> {}\n\nconst [CalendarContext, useCalendarContext] = createContext<CalendarContext>({\n name: \"CalendarContext\",\n})\n\nexport { CalendarContext, useCalendarContext }\n\nexport interface UseCalendarProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> extends Omit<HTMLProps, \"defaultValue\" | \"onChange\"> {\n /**\n * The initial month of the calendar.\n *\n * @default new Date()\n */\n defaultMonth?: Date\n /**\n * The initial value of the calendar.\n */\n defaultValue?: MaybeDateValue<Multiple, Range>\n /**\n * If `true`, disables the calendar.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: CalendarFormat\n /**\n * Define holidays.\n */\n holidays?: Date[]\n /**\n * The locale of the calendar.\n *\n * @default 'en-US'\n */\n locale?: AnyString | Locale\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * The maximum possible date.\n *\n * @default new Date(2099, 11, 31)\n */\n maxDate?: Date\n /**\n * The minimum possible date.\n *\n * @default new Date(1900, 0, 1)\n */\n minDate?: Date\n /**\n * The month of the calendar.\n */\n month?: Date\n /**\n * If `true`, the calendar will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * If `true`, enables date range selection.\n *\n * @default false\n */\n range?: Range\n /**\n * Define the start day of the week.\n *\n * @default 'monday'\n */\n startDayOfWeek?: StartDayOfWeek\n /**\n * If `true`, highlight today.\n *\n * @default true\n */\n today?: boolean\n /**\n * The value of the calendar.\n */\n value?: MaybeDateValue<Multiple, Range>\n /**\n * Define weekend days.\n *\n * @default [0, 6]\n */\n weekendDays?: number[]\n /**\n * Callback function to determine whether the day should be disabled.\n */\n excludeDate?: (date: Date) => boolean\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: MaybeDateValue<Multiple, Range>) => void\n /**\n * The callback invoked when month state changes.\n */\n onChangeMonth?: (value: Date) => void\n}\n\nexport const useCalendar = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n defaultMonth = new Date(),\n multiple = false as Multiple,\n range = false as Range,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled = false,\n excludeDate,\n format = {},\n holidays = DEFAULT_HOLIDAYS,\n locale: localeProp,\n max,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n month: monthProp,\n startDayOfWeek = DEFAULT_FIRST_DAY_OF_WEEK,\n today = true,\n value: valueProp,\n weekendDays = DEFAULT_WEEKEND_DAYS,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n ...rest\n}: UseCalendarProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"calendar\")\n const locale = localeProp ?? defaultLocale\n const dateTimeFormat = useDateTimeFormat({ locale })\n const yearFormat = useCallback(\n (value: Date) => {\n if (format.year === null) {\n return value.getFullYear().toString()\n } else {\n const year = format.year ?? \"numeric\"\n\n return dateTimeFormat(value, { year })\n }\n },\n [dateTimeFormat, format.year],\n )\n const monthFormat = useCallback(\n (value: Date) => {\n if (format.month === null) {\n return (value.getMonth() + 1).toString()\n } else {\n const month = format.month ?? \"short\"\n\n return dateTimeFormat(value, { month })\n }\n },\n [dateTimeFormat, format.month],\n )\n const weekdayFormat = useCallback(\n (value: Date) => {\n return dateTimeFormat(value, {\n weekday: format.weekday ?? \"short\",\n })\n },\n [dateTimeFormat, format.weekday],\n )\n const dayFormat = useCallback(\n (value: Date) => {\n if (format.day)\n return dateTimeFormat(value, {\n day: format.day,\n })\n else return value.getDate().toString()\n },\n [dateTimeFormat, format.day],\n )\n const descendants = useCalendarDescendants()\n const monthRef = useRef<HTMLTableElement>(null)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n defaultMonth = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) defaultMonth = getAdjustedMonth(valueProp, defaultMonth)\n else if (defaultValue)\n defaultMonth = getAdjustedMonth(defaultValue, defaultMonth)\n\n return defaultMonth\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const { endOfMonth, startOfMonth } = useMemo(() => {\n const startOfMonth = dayjs(month).startOf(\"month\").toDate()\n const endOfMonth = dayjs(month).endOf(\"month\").toDate()\n\n return { endOfMonth, startOfMonth }\n }, [month])\n const weekdays = useMemo(\n () => getWeekdays(startDayOfWeek, weekdayFormat),\n [startDayOfWeek, weekdayFormat],\n )\n const monthDays = useMemo(\n () => getMonthDays(month, startDayOfWeek, dayFormat),\n [month, startDayOfWeek, dayFormat],\n )\n const yearItems = useMemo(() => {\n const minYear = dayjs(minDate).year()\n const maxYear = dayjs(maxDate).year()\n const yearItems: { label: string; value: string }[] = []\n\n for (let year = minYear; year <= maxYear; year++) {\n const label = yearFormat(dayjs().set(\"year\", year).toDate())\n const value = year.toString()\n\n yearItems.push({ label, value })\n }\n\n return yearItems\n }, [maxDate, minDate, yearFormat])\n const monthItems = useMemo(() => {\n const monthItems: { label: string; value: string }[] = []\n const date = dayjs(month).toDate()\n\n for (let month = 0; month < 12; month++) {\n date.setMonth(month)\n\n if (isAfterMonth(date, maxDate)) continue\n if (isBeforeMonth(date, minDate)) continue\n\n const label = monthFormat(dayjs().set(\"month\", month).toDate())\n const value = month.toString()\n\n monthItems.push({ label, value })\n }\n\n return monthItems\n }, [month, maxDate, minDate, monthFormat])\n\n const onChange = useCallback(\n (value: Date) => {\n if (isBeforeDate(value, minDate)) return\n if (isAfterDate(value, maxDate)) return\n\n setValue(\n (prev) =>\n updateMaybeDateValue(value, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n },\n [max, maxDate, minDate, setValue],\n )\n\n const onMonthChange = useCallback(\n (month: Date) => {\n if (isAfterMonth(month, maxDate))\n setMonth(dayjs(maxDate).set(\"date\", 1).toDate())\n else if (isBeforeMonth(month, minDate))\n setMonth(dayjs(minDate).set(\"date\", 1).toDate())\n else\n setMonth((prev) => {\n if (isSameMonth(prev, month)) return prev\n\n return month\n })\n },\n [maxDate, minDate, setMonth],\n )\n\n const onPrevMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, minDate)) return prev\n\n return dayjs(prev).subtract(1, \"month\").toDate()\n })\n }, [minDate, setMonth])\n\n const onNextMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, maxDate)) return prev\n\n return dayjs(prev).add(1, \"month\").toDate()\n })\n }, [maxDate, setMonth])\n\n const onFocus = useCallback(() => {\n let index: null | number = null\n let descendant: Descendant<HTMLTableCellElement> | undefined\n\n if (value) {\n if (isDate(value)) {\n if (isSameMonth(month, new Date())) index = new Date().getDate() - 1\n } else if (isArray(value)) {\n const firstValue = value[0]\n\n if (firstValue && isSameMonth(month, firstValue))\n index = firstValue.getDate() - 1\n } else if (isObject(value)) {\n if (value.start && isSameMonth(month, value.start))\n index = value.start.getDate() - 1\n else if (value.end && isSameMonth(month, value.end))\n index = value.end.getDate() - 1\n }\n } else if (isSameMonth(month, new Date())) {\n index = new Date().getDate() - 1\n }\n\n descendant = descendants.value(index)\n\n if (!descendant) descendant = descendants.enabledFirstValue()\n\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n\n if (monthRef.current) monthRef.current.tabIndex = -1\n }, [descendants, month, value])\n\n const onBlur = useCallback((ev: FocusEvent<HTMLTableElement>) => {\n if (contains(monthRef.current, ev.relatedTarget)) return\n\n if (monthRef.current) monthRef.current.tabIndex = 0\n }, [])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value])\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) =>\n mergeProps({ \"data-disabled\": dataAttr(disabled) }, rest, props)(),\n [disabled, rest],\n )\n\n const getNavigationProps: PropGetter<\"nav\"> = useCallback(\n (props = {}) => ({ \"data-disabled\": dataAttr(disabled), ...props }),\n [disabled],\n )\n\n const getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the year\"),\n disabled,\n value: dayjs(month).get(\"year\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"year\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the month\"),\n disabled,\n value: dayjs(month).get(\"month\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"month\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getStatusProps: PropGetter = useCallback(\n (props = {}) => ({\n style: visuallyHiddenAttributes.style,\n \"aria-live\": \"polite\",\n children: dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n role: \"status\",\n ...props,\n }),\n [dateTimeFormat, month],\n )\n\n const getMonthProps: PropGetter<\"table\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n ref: mergeRefs(ref, monthRef),\n \"aria-label\": dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n \"aria-multiselectable\": ariaAttr(multiple || range),\n \"data-disabled\": dataAttr(disabled),\n role: \"grid\",\n tabIndex: disabled ? -1 : 0,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onFocus: handlerAll(props.onFocus, onFocus),\n }),\n [dateTimeFormat, disabled, month, multiple, onBlur, onFocus, range],\n )\n\n const getWeekdayProps: RequiredPropGetter<\"th\", { value: number }> =\n useCallback(\n ({ value, ...props }) => ({\n \"data-disabled\": dataAttr(disabled),\n \"data-value\": value.toString(),\n abbr: dateTimeFormat(dayjs().set(\"day\", value).toDate(), {\n weekday: \"long\",\n }),\n ...props,\n }),\n [dateTimeFormat, disabled],\n )\n\n const getButtonProps: PropGetter<\"button\"> = useCallback(\n (props) => ({\n type: \"button\",\n \"data-disabled\": dataAttr(disabled),\n ...props,\n }),\n [disabled],\n )\n\n const getPrevButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the previous month\"),\n disabled: isSameBeforeMonth(month, minDate),\n ...props,\n onClick: handlerAll(props.onClick, onPrevMonth),\n }),\n [getButtonProps, minDate, month, onPrevMonth, t],\n )\n\n const getNextButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the next month\"),\n disabled: isSameAfterMonth(month, maxDate),\n ...props,\n onClick: handlerAll(props.onClick, onNextMonth),\n }),\n [getButtonProps, maxDate, month, onNextMonth, t],\n )\n\n return {\n descendants,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n monthDays,\n monthItems,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekdays,\n weekendDays,\n yearItems,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getRootProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }\n}\n\nexport type UseCalendarReturn = ReturnType<typeof useCalendar>\n\nexport interface UseCalendarDayProps extends Omit<HTMLProps<\"td\">, \"value\"> {\n value: Date\n}\n\nexport const useCalendarDay = ({ value, ...rest }: UseCalendarDayProps) => {\n const { t } = useI18n(\"calendar\")\n const {\n disabled: rootDisabled,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n startDayOfWeek,\n today: highlightToday,\n value: selectedValue,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n } = useCalendarContext()\n const dateTimeFormat = useDateTimeFormat({ locale })\n const cellRef = useRef<HTMLTableCellElement>(null)\n const outside = useMemo(() => !isSameMonth(month, value), [month, value])\n const holiday = useMemo(\n () => holidays.some((holiday) => isSameDate(holiday, value)),\n [holidays, value],\n )\n const weekend = useMemo(\n () => weekendDays.includes(value.getDay()),\n [weekendDays, value],\n )\n const today = useMemo(\n () => highlightToday && isSameDate(value, new Date()),\n [highlightToday, value],\n )\n const selected = useMemo(() => {\n if (isDate(selectedValue)) return isSameDate(selectedValue, value)\n else if (isArray(selectedValue))\n return selectedValue.some((selectedValue) =>\n isSameDate(selectedValue, value),\n )\n else if (isObject(selectedValue))\n return (\n isSameDate(selectedValue.start, value) ||\n isSameDate(selectedValue.end, value)\n )\n }, [selectedValue, value])\n const disabled = useMemo(() => {\n if (rootDisabled) return true\n if (isAfterDate(value, maxDate)) return true\n if (isBeforeDate(value, minDate)) return true\n if (excludeDate?.(value)) return true\n if (\n isArray(selectedValue) &&\n isNumber(max) &&\n selectedValue.length >= max &&\n !isIncludeDates(value, selectedValue)\n )\n return true\n\n return false\n }, [excludeDate, max, maxDate, minDate, rootDisabled, selectedValue, value])\n const between = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n return isInRange(value, selectedValue?.start, selectedValue?.end)\n }, [selectedValue, value])\n const startValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, start)\n }, [selectedValue, value])\n const endValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, end)\n }, [selectedValue, value])\n const { descendants, register } = useCalendarDescendant({\n disabled: disabled,\n })\n\n const onFocusDescendant = useCallback(\n (descendant?: Descendant<HTMLTableCellElement>) => {\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n },\n [],\n )\n\n const onBlur = useCallback(() => {\n if (cellRef.current) cellRef.current.tabIndex = -1\n }, [])\n\n const onClick = useCallback(() => {\n if (disabled) return\n\n onChange(value)\n }, [disabled, onChange, value])\n\n const onPrevDate = useCallback(() => {\n const descendant = descendants.enabledPrevValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameBeforeDate(value, minDate)) {\n onPrevMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledLastValue()))\n }\n }, [descendants, minDate, onFocusDescendant, onPrevMonth, value])\n\n const onNextDate = useCallback(() => {\n const descendant = descendants.enabledNextValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameAfterDate(value, maxDate)) {\n onNextMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledFirstValue()))\n }\n }, [descendants, maxDate, onFocusDescendant, onNextMonth, value])\n\n const onPrevTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isBeforeDate(date, minDate)\n ? descendants.enabledFirstValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled)\n onFocusDescendant(descendants.enabledNextValue(descendant, false))\n else onFocusDescendant(descendant)\n })\n },\n [descendants, minDate, onFocusDescendant, onMonthChange],\n )\n\n const onNextTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isAfterDate(date, maxDate)\n ? descendants.enabledLastValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled)\n onFocusDescendant(descendants.enabledPrevValue(descendant, false))\n else onFocusDescendant(descendant)\n })\n },\n [descendants, maxDate, onFocusDescendant, onMonthChange],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLTableCellElement>) => {\n runKeyAction(ev, {\n ArrowDown: () =>\n onNextTraverseDate(dayjs(value).add(1, \"week\").toDate()),\n ArrowLeft: onPrevDate,\n ArrowRight: onNextDate,\n ArrowUp: () =>\n onPrevTraverseDate(dayjs(value).subtract(1, \"week\").toDate()),\n End: () => onNextTraverseDate(getEndOfWeek(value, startDayOfWeek)),\n Enter: onClick,\n Home: () => onPrevTraverseDate(getStartOfWeek(value, startDayOfWeek)),\n PageDown: (ev) => {\n if (ev.shiftKey)\n onNextTraverseDate(dayjs(value).add(1, \"year\").toDate())\n else onNextTraverseDate(dayjs(value).add(1, \"month\").toDate())\n },\n PageUp: (ev) => {\n if (ev.shiftKey)\n onPrevTraverseDate(dayjs(value).subtract(1, \"year\").toDate())\n else onPrevTraverseDate(dayjs(value).subtract(1, \"month\").toDate())\n },\n Space: onClick,\n })\n },\n [\n onClick,\n onNextDate,\n onNextTraverseDate,\n onPrevDate,\n onPrevTraverseDate,\n startDayOfWeek,\n value,\n ],\n )\n\n const getDayProps: PropGetter<\"td\"> = useCallback(\n ({ \"aria-label\": ariaLabel, ...props } = {}) => {\n let resolvedAriaLabel = ariaLabel\n if (!resolvedAriaLabel) {\n resolvedAriaLabel = dateTimeFormat(dayjs(value).toDate(), {\n day: \"numeric\",\n month: \"long\",\n weekday: \"long\",\n year: \"numeric\",\n })\n\n if (today) resolvedAriaLabel = `${t(\"Today\")}, ${resolvedAriaLabel}`\n }\n\n return mergeProps(\n {\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": resolvedAriaLabel,\n \"aria-selected\": ariaAttr(selected),\n \"data-between\": dataAttr(between),\n \"data-disabled\": dataAttr(disabled),\n \"data-end\": dataAttr(endValue),\n \"data-holiday\": dataAttr(holiday),\n \"data-outside\": dataAttr(outside),\n \"data-selected\": dataAttr(selected),\n \"data-start\": dataAttr(startValue),\n \"data-today\": dataAttr(today),\n \"data-value\": dayjs(value).format(\"YYYY-MM-DD\"),\n \"data-weekend\": dataAttr(weekend),\n tabIndex: -1,\n },\n rest,\n props,\n {\n ref: mergeRefs(cellRef, outside ? null : register),\n onBlur,\n onClick,\n onFocus: (ev) => ev.preventDefault(),\n onKeyDown,\n },\n )()\n },\n [\n between,\n dateTimeFormat,\n disabled,\n endValue,\n holiday,\n onBlur,\n onClick,\n onKeyDown,\n outside,\n register,\n rest,\n selected,\n startValue,\n t,\n today,\n value,\n weekend,\n ],\n )\n\n return { outside, getDayProps }\n}\n\nexport type UseCalendarDayReturn = ReturnType<typeof useCalendarDay>\n\nconst calendarProps: (keyof UseCalendarProps)[] = [\n \"defaultMonth\",\n \"defaultValue\",\n \"disabled\",\n \"excludeDate\",\n \"format\",\n \"holidays\",\n \"locale\",\n \"max\",\n \"maxDate\",\n \"minDate\",\n \"month\",\n \"range\",\n \"startDayOfWeek\",\n \"today\",\n \"value\",\n \"weekendDays\",\n \"onChange\",\n \"onChangeMonth\",\n]\n\nexport const useCalendarProps = <\n Y extends boolean = false,\n M extends boolean = false,\n D extends Dict = Dict,\n H extends keyof UseCalendarProps<Y, M> = keyof UseCalendarProps<Y, M>,\n>(\n props: D,\n omitKeys?: H[],\n) => {\n return useSplitProps(\n props,\n calendarProps.filter((key) => !omitKeys?.includes(key as H)),\n ) as unknown as [\n keyof UseCalendarProps<Y, M> extends H\n ? UseCalendarProps<Y, M>\n : Omit<UseCalendarProps<Y, M>, H>,\n Omit<\n M,\n keyof UseCalendarProps<Y, M> extends H\n ? keyof UseCalendarProps<Y, M>\n : Exclude<keyof UseCalendarProps<Y, M>, H>\n >,\n ]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-calendar.js","names":["isArray","isNumber","isObject","isDate","createContext","runIfFn","contains","dataAttr","handlerAll","ariaAttr"],"sources":["../../../../src/components/calendar/use-calendar.ts"],"sourcesContent":["\"use client\"\n\nimport type { FocusEvent, KeyboardEvent } from \"react\"\nimport type { HTMLProps, PropGetter, RequiredPropGetter } from \"../../core\"\nimport type { Descendant } from \"../../hooks/use-descendants\"\nimport type { Locale } from \"../../providers/i18n-provider\"\nimport type { AnyString, Dict, ToFunction } from \"../../utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useMemo, useRef, useState } from \"react\"\nimport { mergeProps, useSplitProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport const DEFAULT_HOLIDAYS: Date[] = []\nexport const DEFAULT_WEEKEND_DAYS: number[] = [0, 6]\nexport const DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek = \"sunday\"\nexport const DEFAULT_MAX_DATE: Date = new Date(\"2099-12-31\")\nexport const DEFAULT_MIN_DATE: Date = new Date(\"1900-01-01\")\n\nexport type MaybeDate = Date | Date[] | undefined | { end?: Date; start?: Date }\nexport type MaybeDateValue<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> = Range extends true\n ? { end?: Date; start?: Date }\n : Multiple extends true\n ? Date[]\n : Date | undefined\nexport type StartDayOfWeek = \"monday\" | \"sunday\"\nexport interface CalendarFormat {\n day?: Intl.DateTimeFormatOptions[\"day\"] | null\n month?: Intl.DateTimeFormatOptions[\"month\"] | null\n weekday?: Intl.DateTimeFormatOptions[\"weekday\"] | null\n year?: Intl.DateTimeFormatOptions[\"year\"] | null\n}\n\nexport const getStartOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .startOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getEndOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .endOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getWeekdays = (\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: number }[] => {\n let weekdays: { label: string; value: number }[] = []\n\n const date = getStartOfWeek(new Date(), startDayOfWeek)\n\n for (let i = 0; i < 7; i += 1) {\n const label = format(date)\n const value = date.getDay()\n\n weekdays = [...weekdays, { label, value }]\n\n date.setDate(date.getDate() + 1)\n }\n\n return weekdays\n}\n\nexport const getMonthDays = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: Date }[][] => {\n const currentMonth = date.getMonth()\n const startOfMonth = new Date(date.getFullYear(), currentMonth, 1)\n const endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)\n const startDate = getStartOfWeek(startOfMonth, startDayOfWeek)\n const endDate = getEndOfWeek(endOfMonth, startDayOfWeek)\n\n const weeks: { label: string; value: Date }[][] = []\n\n while (startDate <= endDate) {\n const days: { label: string; value: Date }[] = []\n\n for (let i = 0; i < 7; i += 1) {\n const value = new Date(startDate)\n const label = format(value)\n\n days.push({ label, value })\n\n startDate.setDate(startDate.getDate() + 1)\n }\n\n weeks.push(days)\n }\n\n return weeks\n}\n\nexport const isSameYear = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"year\")\n\nexport const isSameMonth = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"month\")\n\nexport const isSameDate = (\n date: Date | undefined,\n comparison: Date | undefined,\n) =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"date\")\n\nexport const isAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"date\")\n\nexport const isBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"date\")\n\nexport const isSameAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isAfter(date, \"date\"))\n\nexport const isSameBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isBefore(date, \"date\"))\n\nexport const isAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"month\")\n\nexport const isBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"month\")\n\nexport const isSameAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isAfter(date, \"month\"))\n\nexport const isSameBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isBefore(date, \"month\"))\n\nexport const isAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"year\")\n\nexport const isBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"year\")\n\nexport const isSameAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isAfter(date, \"year\"))\n\nexport const isSameBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isBefore(date, \"year\"))\n\nexport const isIncludeDates = (comparison: Date, dates: Date[]) =>\n dates.some((date) => dayjs(date).isSame(comparison, \"date\"))\n\nexport const isInRange = (date: Date, minDate?: Date, maxDate?: Date) => {\n const hasMinDate = minDate instanceof Date\n const hasMaxDate = maxDate instanceof Date\n\n if (!hasMaxDate && !hasMinDate) return false\n\n const minInRange = hasMinDate ? isAfterDate(date, minDate) : false\n const maxInRange = hasMaxDate ? isBeforeDate(date, maxDate) : false\n\n return maxInRange && minInRange\n}\n\nexport const sortDates = (dates: Date[], type: \"asc\" | \"desc\" = \"asc\") => {\n if (type === \"asc\")\n return dates.sort((a, b) => (dayjs(a).isAfter(b, \"date\") ? 1 : -1))\n else return dates.sort((a, b) => (dayjs(a).isBefore(b, \"date\") ? 1 : -1))\n}\n\nexport const updateMaybeDateValue =\n (value: Date, max?: number) =>\n (prev: MaybeDate): MaybeDate => {\n if (isArray(prev)) {\n if (isIncludeDates(value, prev))\n return prev.filter((prevValue) => !isSameDate(prevValue, value))\n else if (!isNumber(max) || prev.length < max) return [...prev, value]\n else return prev\n } else if (isObject(prev) && !isDate(prev)) {\n const { end, start } = prev\n\n if ((start && end) || !start) return { end: undefined, start: value }\n else if (isSameDate(start, value))\n return { end: undefined, start: undefined }\n else if (isBeforeDate(value, start)) return { end: start, start: value }\n else return { end: value, start }\n } else {\n if (isSameDate(prev, value)) return undefined\n else return value\n }\n }\n\nexport const getAdjustedMonth = (value: MaybeDate, month: Date) => {\n if (isDate(value)) {\n if (!isSameMonth(value, month)) month = dayjs(value).set(\"date\", 1).toDate()\n } else if (isArray(value)) {\n const lastValue = value.at(-1)\n\n if (lastValue && !isSameMonth(lastValue, month))\n month = dayjs(lastValue).set(\"date\", 1).toDate()\n } else if (isObject(value)) {\n if (value.end) month = dayjs(value.end).set(\"date\", 1).toDate()\n else if (value.start) month = dayjs(value.start).set(\"date\", 1).toDate()\n }\n\n return month\n}\n\nconst {\n DescendantsContext: CalendarDescendantsContext,\n useDescendant: useCalendarDescendant,\n useDescendants: useCalendarDescendants,\n} = createDescendants<HTMLTableCellElement>()\n\nexport {\n CalendarDescendantsContext,\n useCalendarDescendant,\n useCalendarDescendants,\n}\n\ninterface CalendarContext extends Omit<\n UseCalendarReturn,\n | \"descendants\"\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getRootProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n> {}\n\nconst [CalendarContext, useCalendarContext] = createContext<CalendarContext>({\n name: \"CalendarContext\",\n})\n\nexport { CalendarContext, useCalendarContext }\n\nexport interface UseCalendarProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> extends Omit<HTMLProps, \"defaultValue\" | \"onChange\"> {\n /**\n * The initial month of the calendar.\n *\n * @default new Date()\n */\n defaultMonth?: (() => Date) | Date\n /**\n * The initial value of the calendar.\n */\n defaultValue?:\n | MaybeDateValue<Multiple, Range>\n | ToFunction<Exclude<MaybeDateValue<Multiple, Range>, undefined>>\n /**\n * If `true`, disables the calendar.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: CalendarFormat\n /**\n * Define holidays.\n */\n holidays?: Date[]\n /**\n * The locale of the calendar.\n *\n * @default 'en-US'\n */\n locale?: AnyString | Locale\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * The maximum possible date.\n *\n * @default new Date(2099, 11, 31)\n */\n maxDate?: Date\n /**\n * The minimum possible date.\n *\n * @default new Date(1900, 0, 1)\n */\n minDate?: Date\n /**\n * The month of the calendar.\n */\n month?: Date\n /**\n * If `true`, the calendar will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * If `true`, enables date range selection.\n *\n * @default false\n */\n range?: Range\n /**\n * Define the start day of the week.\n *\n * @default 'monday'\n */\n startDayOfWeek?: StartDayOfWeek\n /**\n * If `true`, highlight today.\n *\n * @default true\n */\n today?: boolean\n /**\n * The value of the calendar.\n */\n value?: MaybeDateValue<Multiple, Range>\n /**\n * Define weekend days.\n *\n * @default [0, 6]\n */\n weekendDays?: number[]\n /**\n * Callback function to determine whether the day should be disabled.\n */\n excludeDate?: (date: Date) => boolean\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: MaybeDateValue<Multiple, Range>) => void\n /**\n * The callback invoked when month state changes.\n */\n onChangeMonth?: (value: Date) => void\n}\n\nexport const useCalendar = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n defaultMonth = () => new Date(),\n multiple = false as Multiple,\n range = false as Range,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled = false,\n excludeDate,\n format = {},\n holidays = DEFAULT_HOLIDAYS,\n locale: localeProp,\n max,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n month: monthProp,\n startDayOfWeek = DEFAULT_FIRST_DAY_OF_WEEK,\n today = true,\n value: valueProp,\n weekendDays = DEFAULT_WEEKEND_DAYS,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n ...rest\n}: UseCalendarProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"calendar\")\n const locale = localeProp ?? defaultLocale\n const dateTimeFormat = useDateTimeFormat({ locale })\n const yearFormat = useCallback(\n (value: Date) => {\n if (format.year === null) {\n return value.getFullYear().toString()\n } else {\n const year = format.year ?? \"numeric\"\n\n return dateTimeFormat(value, { year })\n }\n },\n [dateTimeFormat, format.year],\n )\n const monthFormat = useCallback(\n (value: Date) => {\n if (format.month === null) {\n return (value.getMonth() + 1).toString()\n } else {\n const month = format.month ?? \"short\"\n\n return dateTimeFormat(value, { month })\n }\n },\n [dateTimeFormat, format.month],\n )\n const weekdayFormat = useCallback(\n (value: Date) => {\n return dateTimeFormat(value, {\n weekday: format.weekday ?? \"short\",\n })\n },\n [dateTimeFormat, format.weekday],\n )\n const dayFormat = useCallback(\n (value: Date) => {\n if (format.day)\n return dateTimeFormat(value, {\n day: format.day,\n })\n else return value.getDate().toString()\n },\n [dateTimeFormat, format.day],\n )\n const descendants = useCalendarDescendants()\n const monthRef = useRef<HTMLTableElement>(null)\n const [currentDate] = useState<Date>(() => new Date())\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n defaultMonth = runIfFn(defaultMonth)\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n defaultMonth = dayjs(minDate).set(\"date\", 1).toDate()\n\n return getAdjustedMonth(value, defaultMonth)\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const { endOfMonth, startOfMonth } = useMemo(() => {\n const startOfMonth = dayjs(month).startOf(\"month\").toDate()\n const endOfMonth = dayjs(month).endOf(\"month\").toDate()\n\n return { endOfMonth, startOfMonth }\n }, [month])\n const weekdays = useMemo(\n () => getWeekdays(startDayOfWeek, weekdayFormat),\n [startDayOfWeek, weekdayFormat],\n )\n const monthDays = useMemo(\n () => getMonthDays(month, startDayOfWeek, dayFormat),\n [month, startDayOfWeek, dayFormat],\n )\n const yearItems = useMemo(() => {\n const minYear = dayjs(minDate).year()\n const maxYear = dayjs(maxDate).year()\n const yearItems: { label: string; value: string }[] = []\n\n for (let year = minYear; year <= maxYear; year++) {\n const label = yearFormat(dayjs().set(\"year\", year).toDate())\n const value = year.toString()\n\n yearItems.push({ label, value })\n }\n\n return yearItems\n }, [maxDate, minDate, yearFormat])\n const monthItems = useMemo(() => {\n const monthItems: { label: string; value: string }[] = []\n const date = dayjs(month).toDate()\n\n for (let month = 0; month < 12; month++) {\n date.setMonth(month)\n\n if (isAfterMonth(date, maxDate)) continue\n if (isBeforeMonth(date, minDate)) continue\n\n const label = monthFormat(dayjs().set(\"month\", month).toDate())\n const value = month.toString()\n\n monthItems.push({ label, value })\n }\n\n return monthItems\n }, [month, maxDate, minDate, monthFormat])\n\n const onChange = useCallback(\n (value: Date) => {\n if (isBeforeDate(value, minDate)) return\n if (isAfterDate(value, maxDate)) return\n\n setValue(\n (prev) =>\n updateMaybeDateValue(value, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n },\n [max, maxDate, minDate, setValue],\n )\n\n const onMonthChange = useCallback(\n (month: Date) => {\n if (isAfterMonth(month, maxDate))\n setMonth(dayjs(maxDate).set(\"date\", 1).toDate())\n else if (isBeforeMonth(month, minDate))\n setMonth(dayjs(minDate).set(\"date\", 1).toDate())\n else\n setMonth((prev) => {\n if (isSameMonth(prev, month)) return prev\n\n return month\n })\n },\n [maxDate, minDate, setMonth],\n )\n\n const onPrevMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, minDate)) return prev\n\n return dayjs(prev).subtract(1, \"month\").toDate()\n })\n }, [minDate, setMonth])\n\n const onNextMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, maxDate)) return prev\n\n return dayjs(prev).add(1, \"month\").toDate()\n })\n }, [maxDate, setMonth])\n\n const onFocus = useCallback(() => {\n let index: null | number = null\n let descendant: Descendant<HTMLTableCellElement> | undefined\n\n if (value) {\n if (isDate(value)) {\n if (isSameMonth(month, new Date())) index = new Date().getDate() - 1\n } else if (isArray(value)) {\n const firstValue = value[0]\n\n if (firstValue && isSameMonth(month, firstValue))\n index = firstValue.getDate() - 1\n } else if (isObject(value)) {\n if (value.start && isSameMonth(month, value.start))\n index = value.start.getDate() - 1\n else if (value.end && isSameMonth(month, value.end))\n index = value.end.getDate() - 1\n }\n } else if (isSameMonth(month, new Date())) {\n index = new Date().getDate() - 1\n }\n\n descendant = descendants.value(index)\n\n if (!descendant) descendant = descendants.enabledFirstValue()\n\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n\n if (monthRef.current) monthRef.current.tabIndex = -1\n }, [descendants, month, value])\n\n const onBlur = useCallback((ev: FocusEvent<HTMLTableElement>) => {\n if (contains(monthRef.current, ev.relatedTarget)) return\n\n if (monthRef.current) monthRef.current.tabIndex = 0\n }, [])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value])\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) =>\n mergeProps({ \"data-disabled\": dataAttr(disabled) }, rest, props)(),\n [disabled, rest],\n )\n\n const getNavigationProps: PropGetter<\"nav\"> = useCallback(\n (props = {}) => ({ \"data-disabled\": dataAttr(disabled), ...props }),\n [disabled],\n )\n\n const getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the year\"),\n disabled,\n value: dayjs(month).get(\"year\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"year\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the month\"),\n disabled,\n value: dayjs(month).get(\"month\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"month\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getStatusProps: PropGetter = useCallback(\n (props = {}) => ({\n style: visuallyHiddenAttributes.style,\n \"aria-live\": \"polite\",\n children: dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n role: \"status\",\n ...props,\n }),\n [dateTimeFormat, month],\n )\n\n const getMonthProps: PropGetter<\"table\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n ref: mergeRefs(ref, monthRef),\n \"aria-label\": dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n \"aria-multiselectable\": ariaAttr(multiple || range),\n \"data-disabled\": dataAttr(disabled),\n role: \"grid\",\n tabIndex: disabled ? -1 : 0,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onFocus: handlerAll(props.onFocus, onFocus),\n }),\n [dateTimeFormat, disabled, month, multiple, onBlur, onFocus, range],\n )\n\n const getWeekdayProps: RequiredPropGetter<\"th\", { value: number }> =\n useCallback(\n ({ value, ...props }) => ({\n \"data-disabled\": dataAttr(disabled),\n \"data-value\": value.toString(),\n abbr: dateTimeFormat(dayjs().set(\"day\", value).toDate(), {\n weekday: \"long\",\n }),\n ...props,\n }),\n [dateTimeFormat, disabled],\n )\n\n const getButtonProps: PropGetter<\"button\"> = useCallback(\n (props) => ({\n type: \"button\",\n \"data-disabled\": dataAttr(disabled),\n ...props,\n }),\n [disabled],\n )\n\n const getPrevButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the previous month\"),\n disabled: isSameBeforeMonth(month, minDate),\n ...props,\n onClick: handlerAll(props.onClick, onPrevMonth),\n }),\n [getButtonProps, minDate, month, onPrevMonth, t],\n )\n\n const getNextButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the next month\"),\n disabled: isSameAfterMonth(month, maxDate),\n ...props,\n onClick: handlerAll(props.onClick, onNextMonth),\n }),\n [getButtonProps, maxDate, month, onNextMonth, t],\n )\n\n return {\n currentDate,\n descendants,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n monthDays,\n monthItems,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekdays,\n weekendDays,\n yearItems,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getRootProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }\n}\n\nexport type UseCalendarReturn = ReturnType<typeof useCalendar>\n\nexport interface UseCalendarDayProps extends Omit<HTMLProps<\"td\">, \"value\"> {\n value: Date\n}\n\nexport const useCalendarDay = ({ value, ...rest }: UseCalendarDayProps) => {\n const { t } = useI18n(\"calendar\")\n const {\n currentDate,\n disabled: rootDisabled,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n startDayOfWeek,\n today: highlightToday,\n value: selectedValue,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n } = useCalendarContext()\n const dateTimeFormat = useDateTimeFormat({ locale })\n const cellRef = useRef<HTMLTableCellElement>(null)\n const outside = useMemo(() => !isSameMonth(month, value), [month, value])\n const holiday = useMemo(\n () => holidays.some((holiday) => isSameDate(holiday, value)),\n [holidays, value],\n )\n const weekend = useMemo(\n () => weekendDays.includes(value.getDay()),\n [weekendDays, value],\n )\n const today = useMemo(\n () => highlightToday && isSameDate(value, currentDate),\n [highlightToday, value, currentDate],\n )\n const selected = useMemo(() => {\n if (isDate(selectedValue)) return isSameDate(selectedValue, value)\n else if (isArray(selectedValue))\n return selectedValue.some((selectedValue) =>\n isSameDate(selectedValue, value),\n )\n else if (isObject(selectedValue))\n return (\n isSameDate(selectedValue.start, value) ||\n isSameDate(selectedValue.end, value)\n )\n }, [selectedValue, value])\n const disabled = useMemo(() => {\n if (rootDisabled) return true\n if (isAfterDate(value, maxDate)) return true\n if (isBeforeDate(value, minDate)) return true\n if (excludeDate?.(value)) return true\n if (\n isArray(selectedValue) &&\n isNumber(max) &&\n selectedValue.length >= max &&\n !isIncludeDates(value, selectedValue)\n )\n return true\n\n return false\n }, [excludeDate, max, maxDate, minDate, rootDisabled, selectedValue, value])\n const between = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n return isInRange(value, selectedValue?.start, selectedValue?.end)\n }, [selectedValue, value])\n const startValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, start)\n }, [selectedValue, value])\n const endValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, end)\n }, [selectedValue, value])\n const { descendants, register } = useCalendarDescendant({\n disabled: disabled,\n })\n\n const onFocusDescendant = useCallback(\n (descendant?: Descendant<HTMLTableCellElement>) => {\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n },\n [],\n )\n\n const onBlur = useCallback(() => {\n if (cellRef.current) cellRef.current.tabIndex = -1\n }, [])\n\n const onClick = useCallback(() => {\n if (disabled) return\n\n onChange(value)\n }, [disabled, onChange, value])\n\n const onPrevDate = useCallback(() => {\n const descendant = descendants.enabledPrevValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameBeforeDate(value, minDate)) {\n onPrevMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledLastValue()))\n }\n }, [descendants, minDate, onFocusDescendant, onPrevMonth, value])\n\n const onNextDate = useCallback(() => {\n const descendant = descendants.enabledNextValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameAfterDate(value, maxDate)) {\n onNextMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledFirstValue()))\n }\n }, [descendants, maxDate, onFocusDescendant, onNextMonth, value])\n\n const onPrevTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isBeforeDate(date, minDate)\n ? descendants.enabledFirstValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled)\n onFocusDescendant(descendants.enabledNextValue(descendant, false))\n else onFocusDescendant(descendant)\n })\n },\n [descendants, minDate, onFocusDescendant, onMonthChange],\n )\n\n const onNextTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isAfterDate(date, maxDate)\n ? descendants.enabledLastValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled)\n onFocusDescendant(descendants.enabledPrevValue(descendant, false))\n else onFocusDescendant(descendant)\n })\n },\n [descendants, maxDate, onFocusDescendant, onMonthChange],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLTableCellElement>) => {\n runKeyAction(ev, {\n ArrowDown: () =>\n onNextTraverseDate(dayjs(value).add(1, \"week\").toDate()),\n ArrowLeft: onPrevDate,\n ArrowRight: onNextDate,\n ArrowUp: () =>\n onPrevTraverseDate(dayjs(value).subtract(1, \"week\").toDate()),\n End: () => onNextTraverseDate(getEndOfWeek(value, startDayOfWeek)),\n Enter: onClick,\n Home: () => onPrevTraverseDate(getStartOfWeek(value, startDayOfWeek)),\n PageDown: (ev) => {\n if (ev.shiftKey)\n onNextTraverseDate(dayjs(value).add(1, \"year\").toDate())\n else onNextTraverseDate(dayjs(value).add(1, \"month\").toDate())\n },\n PageUp: (ev) => {\n if (ev.shiftKey)\n onPrevTraverseDate(dayjs(value).subtract(1, \"year\").toDate())\n else onPrevTraverseDate(dayjs(value).subtract(1, \"month\").toDate())\n },\n Space: onClick,\n })\n },\n [\n onClick,\n onNextDate,\n onNextTraverseDate,\n onPrevDate,\n onPrevTraverseDate,\n startDayOfWeek,\n value,\n ],\n )\n\n const getDayProps: PropGetter<\"td\"> = useCallback(\n ({ \"aria-label\": ariaLabel, ...props } = {}) => {\n let resolvedAriaLabel = ariaLabel\n if (!resolvedAriaLabel) {\n resolvedAriaLabel = dateTimeFormat(dayjs(value).toDate(), {\n day: \"numeric\",\n month: \"long\",\n weekday: \"long\",\n year: \"numeric\",\n })\n\n if (today) resolvedAriaLabel = `${t(\"Today\")}, ${resolvedAriaLabel}`\n }\n\n return mergeProps(\n {\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": resolvedAriaLabel,\n \"aria-selected\": ariaAttr(selected),\n \"data-between\": dataAttr(between),\n \"data-disabled\": dataAttr(disabled),\n \"data-end\": dataAttr(endValue),\n \"data-holiday\": dataAttr(holiday),\n \"data-outside\": dataAttr(outside),\n \"data-selected\": dataAttr(selected),\n \"data-start\": dataAttr(startValue),\n \"data-today\": dataAttr(today),\n \"data-value\": dayjs(value).format(\"YYYY-MM-DD\"),\n \"data-weekend\": dataAttr(weekend),\n tabIndex: -1,\n },\n rest,\n props,\n {\n ref: mergeRefs(cellRef, outside ? null : register),\n onBlur,\n onClick,\n onFocus: (ev) => ev.preventDefault(),\n onKeyDown,\n },\n )()\n },\n [\n between,\n dateTimeFormat,\n disabled,\n endValue,\n holiday,\n onBlur,\n onClick,\n onKeyDown,\n outside,\n register,\n rest,\n selected,\n startValue,\n t,\n today,\n value,\n weekend,\n ],\n )\n\n return { outside, getDayProps }\n}\n\nexport type UseCalendarDayReturn = ReturnType<typeof useCalendarDay>\n\nconst calendarProps: (keyof UseCalendarProps)[] = [\n \"defaultMonth\",\n \"defaultValue\",\n \"disabled\",\n \"excludeDate\",\n \"format\",\n \"holidays\",\n \"locale\",\n \"max\",\n \"maxDate\",\n \"minDate\",\n \"month\",\n \"range\",\n \"startDayOfWeek\",\n \"today\",\n \"value\",\n \"weekendDays\",\n \"onChange\",\n \"onChangeMonth\",\n]\n\nexport const useCalendarProps = <\n Y extends boolean = false,\n M extends boolean = false,\n D extends Dict = Dict,\n H extends keyof UseCalendarProps<Y, M> = keyof UseCalendarProps<Y, M>,\n>(\n props: D,\n omitKeys?: H[],\n) => {\n return useSplitProps(\n props,\n calendarProps.filter((key) => !omitKeys?.includes(key as H)),\n ) as unknown as [\n keyof UseCalendarProps<Y, M> extends H\n ? UseCalendarProps<Y, M>\n : Omit<UseCalendarProps<Y, M>, H>,\n Omit<\n M,\n keyof UseCalendarProps<Y, M> extends H\n ? keyof UseCalendarProps<Y, M>\n : Exclude<keyof UseCalendarProps<Y, M>, H>\n >,\n ]\n}\n"],"mappings":"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"}
@@ -25,7 +25,7 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
25
25
  if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate;
26
26
  const { getDocument } = useEnvironment();
27
27
  const { locale: defaultLocale, t } = useI18n("datePicker");
28
- const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
28
+ const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = () => /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
29
29
  end: void 0,
30
30
  start: void 0
31
31
  } : multiple ? [] : void 0, disabled, focusOnClear = true, format, inputValue: inputValueProp, locale = defaultLocale, max, month: monthProp, openOnChange = true, openOnClick = true, openOnFocus = true, parseDate, pattern, placeholder: placeholderProp, placement = "end-start", readOnly, render = defaultRender, required, separator = range ? "-" : ",", value: valueProp, onChange: onChangeProp, onChangeMonth: onChangeMonthProp, onInputChange: onInputChangeProp, ...computedProps }, ariaProps, dataProps, eventProps } = useFieldProps(props);
@@ -48,6 +48,7 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
48
48
  const startInputRef = useRef(null);
49
49
  const endInputRef = useRef(null);
50
50
  const focusByClickRef = useRef(false);
51
+ const [currentDate] = useState(() => /* @__PURE__ */ new Date());
51
52
  const [focused, setFocused] = useState(false);
52
53
  const [value, setValue] = useControllableState({
53
54
  defaultValue,
@@ -56,11 +57,9 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
56
57
  });
57
58
  const [month, setMonth] = useControllableState({
58
59
  defaultValue: () => {
59
- let value = defaultMonth;
60
- if (dayjs(minDate).isAfter(dayjs(defaultMonth))) value = dayjs(minDate).set("date", 1).toDate();
61
- if (valueProp) value = getAdjustedMonth(valueProp, value);
62
- else if (defaultValue) value = getAdjustedMonth(defaultValue, value);
63
- return value;
60
+ let defaultValue = (0, utils_exports.runIfFn)(defaultMonth);
61
+ if (dayjs(minDate).isAfter(dayjs(defaultValue))) defaultValue = dayjs(minDate).set("date", 1).toDate();
62
+ return getAdjustedMonth(value, defaultValue);
64
63
  },
65
64
  value: monthProp,
66
65
  onChange: onChangeMonthProp
@@ -156,13 +155,13 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
156
155
  ]);
157
156
  const { endPlaceholder, startPlaceholder } = useMemo(() => {
158
157
  if (range) {
159
- const startPlaceholder = placeholderProp ?? dateTimeFormat(/* @__PURE__ */ new Date(), inputFormat);
158
+ const startPlaceholder = placeholderProp ?? dateTimeFormat(currentDate, inputFormat);
160
159
  return {
161
- endPlaceholder: placeholderProp ?? dateTimeFormat(dayjs().add(1, "day").toDate(), inputFormat),
160
+ endPlaceholder: placeholderProp ?? dateTimeFormat(dayjs(currentDate).add(1, "day").toDate(), inputFormat),
162
161
  startPlaceholder
163
162
  };
164
163
  } else {
165
- const placeholder = placeholderProp ?? dateTimeFormat(/* @__PURE__ */ new Date(), inputFormat);
164
+ const placeholder = placeholderProp ?? dateTimeFormat(currentDate, inputFormat);
166
165
  return {
167
166
  endPlaceholder: placeholder,
168
167
  startPlaceholder: placeholder
@@ -172,7 +171,8 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
172
171
  dateTimeFormat,
173
172
  inputFormat,
174
173
  placeholderProp,
175
- range
174
+ range,
175
+ currentDate
176
176
  ]);
177
177
  const onChange = useCallback((value) => {
178
178
  setValue(value);
@@ -1 +1 @@
1
- {"version":3,"file":"use-date-picker.js","names":["isNumber","isObject","isDate","isArray","runIfFn","contains","cast","isActiveElement","focusTransfer","dataAttr","handlerAll","ariaAttr"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isActiveElement,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n isIncludeDates,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { getDocument } = useEnvironment()\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let value = defaultMonth\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n value = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) value = getAdjustedMonth(valueProp, value)\n else if (defaultValue) value = getAdjustedMonth(defaultValue, value)\n\n return value\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue)\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid())\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n else return defaultInputValue\n }\n else if (isDate(value))\n return dateToString(value) as MaybeInputValue<Range>\n else if (isObject(value) && !isArray(value))\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n else return \"\" as MaybeInputValue<Range>\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component))\n return cloneElement(component, { ...component.props, key: index })\n else return component\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs().add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) setInputValue(\"\" as MaybeInputValue<Range>)\n else if (isObject(value) && !isDate(value))\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n else setInputValue(dateToString(value) as MaybeInputValue<Range>)\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) onClose()\n else if (runIfFn(openOnChange, ev)) onOpen()\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue((prev) =>\n isArray(prev) &&\n !isIncludeDates(date, prev) &&\n (!isNumber(max) || prev.length < max)\n ? ([...prev, date] as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput)\n if (isObject(value) && !isArray(value) && !isDate(value))\n if (\n startInputRef.current &&\n contains(startInputRef.current, ev.target)\n ) {\n if (!isActiveElement(startInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n startInputRef.current.focus()\n } else if (\n endInputRef.current &&\n contains(endInputRef.current, ev.target)\n ) {\n if (!isActiveElement(endInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n endInputRef.current.focus()\n } else {\n startInputRef.current?.focus()\n }\n else startInputRef.current?.focus()\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value, getDocument],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n )\n ev.preventDefault()\n else if (isArray(value)) setInputValue(\"\" as MaybeInputValue<Range>)\n else if (isObject(value) && !isDate(value))\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n else setInputValue(dateToString(value) as MaybeInputValue<Range>)\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) return undefined as MaybeDateValue<Multiple, Range>\n else if (isArray(prev))\n return [] as unknown as MaybeDateValue<Multiple, Range>\n else if (isObject(prev))\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n else return prev\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear)\n if (allowInput) startInputRef.current?.focus()\n else fieldRef.current?.focus()\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp))\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n else setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-date-picker.js","names":["isNumber","runIfFn","isObject","isDate","isArray","contains","cast","isActiveElement","focusTransfer","dataAttr","handlerAll","ariaAttr"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isActiveElement,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n isIncludeDates,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { getDocument } = useEnvironment()\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = () => new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [currentDate] = useState<Date>(() => new Date())\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let defaultValue = runIfFn(defaultMonth)\n\n if (dayjs(minDate).isAfter(dayjs(defaultValue)))\n defaultValue = dayjs(minDate).set(\"date\", 1).toDate()\n\n return getAdjustedMonth(value, defaultValue)\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue)\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid())\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n else return defaultInputValue\n }\n else if (isDate(value))\n return dateToString(value) as MaybeInputValue<Range>\n else if (isObject(value) && !isArray(value))\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n else return \"\" as MaybeInputValue<Range>\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component))\n return cloneElement(component, { ...component.props, key: index })\n else return component\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(currentDate, inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs(currentDate).add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(currentDate, inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range, currentDate])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) setInputValue(\"\" as MaybeInputValue<Range>)\n else if (isObject(value) && !isDate(value))\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n else setInputValue(dateToString(value) as MaybeInputValue<Range>)\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) onClose()\n else if (runIfFn(openOnChange, ev)) onOpen()\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue((prev) =>\n isArray(prev) &&\n !isIncludeDates(date, prev) &&\n (!isNumber(max) || prev.length < max)\n ? ([...prev, date] as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput)\n if (isObject(value) && !isArray(value) && !isDate(value))\n if (\n startInputRef.current &&\n contains(startInputRef.current, ev.target)\n ) {\n if (!isActiveElement(startInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n startInputRef.current.focus()\n } else if (\n endInputRef.current &&\n contains(endInputRef.current, ev.target)\n ) {\n if (!isActiveElement(endInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n endInputRef.current.focus()\n } else {\n startInputRef.current?.focus()\n }\n else startInputRef.current?.focus()\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value, getDocument],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n )\n ev.preventDefault()\n else if (isArray(value)) setInputValue(\"\" as MaybeInputValue<Range>)\n else if (isObject(value) && !isDate(value))\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n else setInputValue(dateToString(value) as MaybeInputValue<Range>)\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) return undefined as MaybeDateValue<Multiple, Range>\n else if (isArray(prev))\n return [] as unknown as MaybeDateValue<Multiple, Range>\n else if (isObject(prev))\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n else return prev\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear)\n if (allowInput) startInputRef.current?.focus()\n else fieldRef.current?.focus()\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp))\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n else setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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;EACX,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,GAAG;EACH,GAAG;CACL,IACF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEF,MAAM,eAA2B,aAC9B,WAAW;EAAE,GAAG;EAAW,GAAG;CAAM,IACrC,CAAC,SAAS,CACZ;CAkBA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBA/BoC,aACnC,QAAQ,CAAC,MACR,aAAa;GACX,kBAAA,GAAiBW,cAAAA,SAAAA,CAAS,CAAC,WAAW;GACtC,cAAc,EAAE,aAAa;GAC7B,MAAM;GACN,UAAU,cAAc,IAAI;GAC5B,GAAG;GACH,UAAA,GAASD,cAAAA,WAAAA,CAAW,MAAM,SAAS,OAAO;GAC1C,YAAA,GAAWA,cAAAA,WAAAA,CAAW,MAAM,YAAY,OACtC,aAAa,IAAI;IAAE,OAAO;IAAS,OAAO;GAAQ,CAAC,CACrD;EACF,CAAC,GACH;GAAC;GAAc;GAAa;GAAS;EAAC,CAkBtB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,4 +1,4 @@
1
- import { AnyString, Dict } from "../../utils/index.js";
1
+ import { AnyString, Dict, index_d_exports } from "../../utils/index.js";
2
2
  import { HTMLProps, PropGetter, RequiredPropGetter } from "../../core/components/index.type.js";
3
3
  import "../../core/index.js";
4
4
  import { Descendant } from "../../hooks/use-descendants/index.js";
@@ -138,11 +138,11 @@ export interface UseCalendarProps<Multiple extends boolean = false, Range extend
138
138
  *
139
139
  * @default new Date()
140
140
  */
141
- defaultMonth?: Date;
141
+ defaultMonth?: (() => Date) | Date;
142
142
  /**
143
143
  * The initial value of the calendar.
144
144
  */
145
- defaultValue?: MaybeDateValue<Multiple, Range>;
145
+ defaultValue?: MaybeDateValue<Multiple, Range> | index_d_exports.ToFunction<Exclude<MaybeDateValue<Multiple, Range>, undefined>>;
146
146
  /**
147
147
  * If `true`, disables the calendar.
148
148
  *
@@ -234,6 +234,7 @@ export interface UseCalendarProps<Multiple extends boolean = false, Range extend
234
234
  onChangeMonth?: (value: Date) => void;
235
235
  }
236
236
  export declare const useCalendar: <Multiple extends boolean = false, Range extends boolean = false>({ defaultMonth, multiple, range, defaultValue, disabled, excludeDate, format, holidays, locale: localeProp, max, maxDate, minDate, month: monthProp, startDayOfWeek, today, value: valueProp, weekendDays, onChange: onChangeProp, onChangeMonth: onChangeMonthProp, ...rest }?: UseCalendarProps<Multiple, Range>) => {
237
+ currentDate: Date;
237
238
  descendants: {
238
239
  active: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined, options?: FocusOptions) => void;
239
240
  count: (props?: Partial<{}> | undefined) => number;
@@ -2,7 +2,7 @@ import { ComponentSlotStyle } from "../../core/system/index.type.js";
2
2
  import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/index.type.js";
3
3
  import "../../index.js";
4
4
  //#region src/components/chart/cartesian-chart.style.d.ts
5
- export declare const cartesianChartStyle: ComponentSlotStyle<"area" | "line" | "grid" | "bar" | "dot" | "root" | "labelList" | "activeDot" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine", CSSPropObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "labelList" | "activeDot" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>, CSSModifierObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "labelList" | "activeDot" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>, CSSModifierObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "labelList" | "activeDot" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>>;
5
+ export declare const cartesianChartStyle: ComponentSlotStyle<"area" | "line" | "grid" | "bar" | "dot" | "root" | "activeDot" | "labelList" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine", CSSPropObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "activeDot" | "labelList" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>, CSSModifierObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "activeDot" | "labelList" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>, CSSModifierObject<CSSSlotObject<"area" | "line" | "grid" | "bar" | "dot" | "root" | "activeDot" | "labelList" | "referenceLine" | "referenceLineLabel" | "xAxis" | "xAxisLabel" | "xAxisTick" | "xAxisTickLine" | "yAxis" | "yAxisLabel" | "yAxisTick" | "yAxisTickLine">>>;
6
6
  export type CartesianChartStyle = typeof cartesianChartStyle;
7
7
  //#endregion
8
8
  //# sourceMappingURL=cartesian-chart.style.d.ts.map
@@ -2,7 +2,7 @@ import { ComponentSlotStyle } from "../../core/system/index.type.js";
2
2
  import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/index.type.js";
3
3
  import "../../index.js";
4
4
  //#region src/components/chart/polar-chart.style.d.ts
5
- export declare const polarChartStyle: ComponentSlotStyle<"label" | "grid" | "dot" | "root" | "labelList" | "activeDot" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "labelLine" | "pie" | "radar" | "radial" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector", CSSPropObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "labelList" | "activeDot" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "labelLine" | "pie" | "radar" | "radial" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>, CSSModifierObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "labelList" | "activeDot" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "labelLine" | "pie" | "radar" | "radial" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>, CSSModifierObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "labelList" | "activeDot" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "labelLine" | "pie" | "radar" | "radial" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>>;
5
+ export declare const polarChartStyle: ComponentSlotStyle<"label" | "grid" | "dot" | "root" | "radial" | "labelLine" | "activeDot" | "labelList" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "pie" | "radar" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector", CSSPropObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "radial" | "labelLine" | "activeDot" | "labelList" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "pie" | "radar" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>, CSSModifierObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "radial" | "labelLine" | "activeDot" | "labelList" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "pie" | "radar" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>, CSSModifierObject<CSSSlotObject<"label" | "grid" | "dot" | "root" | "radial" | "labelLine" | "activeDot" | "labelList" | "angleAxis" | "angleAxisLabel" | "angleAxisLine" | "angleAxisTick" | "angleAxisTickLine" | "pie" | "radar" | "radialBackground" | "radiusAxis" | "radiusAxisLabel" | "radiusAxisLine" | "radiusAxisTick" | "radiusAxisTickLine" | "sector">>>;
6
6
  export type PolarChartStyle = typeof polarChartStyle;
7
7
  //#endregion
8
8
  //# sourceMappingURL=polar-chart.style.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yamada-ui/react",
3
3
  "type": "module",
4
- "version": "2.2.11-dev-20261013044619",
4
+ "version": "2.2.11-dev-20261013064254",
5
5
  "description": "React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion",
6
6
  "keywords": [
7
7
  "yamada",
@@ -147,7 +147,7 @@
147
147
  "scroll-into-view-if-needed": "^3.1.0",
148
148
  "sonner": "^2.0.8",
149
149
  "uqr": "^0.1.3",
150
- "@yamada-ui/utils": "2.1.7"
150
+ "@yamada-ui/utils": "2.1.8-dev-20261013064254"
151
151
  },
152
152
  "devDependencies": {
153
153
  "@babel/parser": "^7.29.9",