@yamada-ui/react 2.2.10 → 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.
- package/dist/cjs/components/calendar/calendar.cjs +3 -1
- package/dist/cjs/components/calendar/calendar.cjs.map +1 -1
- package/dist/cjs/components/calendar/use-calendar.cjs +11 -6
- package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs +10 -10
- package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/armenian-dram-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/armenian-dram-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/bangladeshi-taka-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/bangladeshi-taka-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/door-closed-cog-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/door-closed-cog-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/index.cjs +36 -0
- package/dist/cjs/components/icon/icons/index.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/kazakh-tenge-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/kazakh-tenge-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/layout-grid-circles-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/layout-grid-circles-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/letters-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/letters-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/printer3d-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/printer3d-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/rugby-ball-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/rugby-ball-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/text-align-justify-center-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/text-align-justify-center-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/text-align-justify-end-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/text-align-justify-end-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/text-align-justify-start-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/text-align-justify-start-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/wind-arrow-up-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/wind-arrow-up-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/index.cjs +24 -0
- package/dist/cjs/index.cjs +36 -0
- package/dist/esm/components/calendar/calendar.js +3 -1
- package/dist/esm/components/calendar/calendar.js.map +1 -1
- package/dist/esm/components/calendar/use-calendar.js +12 -7
- package/dist/esm/components/calendar/use-calendar.js.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js +10 -10
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/esm/components/icon/icons/armenian-dram-icon.js +14 -0
- package/dist/esm/components/icon/icons/armenian-dram-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/bangladeshi-taka-icon.js +14 -0
- package/dist/esm/components/icon/icons/bangladeshi-taka-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/door-closed-cog-icon.js +14 -0
- package/dist/esm/components/icon/icons/door-closed-cog-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/index.js +25 -1
- package/dist/esm/components/icon/icons/index.js.map +1 -1
- package/dist/esm/components/icon/icons/kazakh-tenge-icon.js +14 -0
- package/dist/esm/components/icon/icons/kazakh-tenge-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/layout-grid-circles-icon.js +14 -0
- package/dist/esm/components/icon/icons/layout-grid-circles-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/letters-icon.js +14 -0
- package/dist/esm/components/icon/icons/letters-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/printer3d-icon.js +14 -0
- package/dist/esm/components/icon/icons/printer3d-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/rugby-ball-icon.js +14 -0
- package/dist/esm/components/icon/icons/rugby-ball-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/text-align-justify-center-icon.js +14 -0
- package/dist/esm/components/icon/icons/text-align-justify-center-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/text-align-justify-end-icon.js +14 -0
- package/dist/esm/components/icon/icons/text-align-justify-end-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/text-align-justify-start-icon.js +14 -0
- package/dist/esm/components/icon/icons/text-align-justify-start-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/wind-arrow-up-icon.js +14 -0
- package/dist/esm/components/icon/icons/wind-arrow-up-icon.js.map +1 -0
- package/dist/esm/components/icon/index.js +13 -1
- package/dist/esm/index.js +25 -1
- package/dist/types/components/calendar/use-calendar.d.ts +4 -3
- package/dist/types/components/icon/icons/armenian-dram-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/bangladeshi-taka-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/door-closed-cog-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/index.d.ts +14 -2
- package/dist/types/components/icon/icons/index.type.d.ts +1 -1
- package/dist/types/components/icon/icons/kazakh-tenge-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/layout-grid-circles-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/letters-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/printer3d-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/rugby-ball-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/text-align-justify-center-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/text-align-justify-end-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/text-align-justify-start-icon.d.ts +12 -0
- package/dist/types/components/icon/icons/wind-arrow-up-icon.d.ts +12 -0
- package/dist/types/components/icon/index.d.ts +13 -1
- package/dist/types/index.d.ts +14 -2
- package/package.json +5 -5
|
@@ -19,8 +19,9 @@ const { ComponentContext, PropsContext: CalendarPropsContext, useComponentContex
|
|
|
19
19
|
* @see https://yamada-ui.com/docs/components/calendar
|
|
20
20
|
*/
|
|
21
21
|
const CalendarRoot = withProvider(({ children, day, buttonProps, controlProps, dayProps, monthProps, monthSelectProps, navigationProps, nextButtonProps, prevButtonProps, selectProps, weekdayProps, weekdaysProps, weekProps, weeksProps, yearSelectProps, ...props }) => {
|
|
22
|
-
const { descendants, disabled, endOfMonth, excludeDate, holidays, locale, max, maxDate, minDate, month, monthDays, monthItems, multiple, range, startDayOfWeek, startOfMonth, today, value, weekdays, weekendDays, yearItems, getMonthProps, getMonthSelectProps, getNavigationProps, getNextButtonProps, getPrevButtonProps, getRootProps, getStatusProps, getWeekdayProps, getYearSelectProps, onChange, onMonthChange, onNextMonth, onPrevMonth } = require_use_calendar.useCalendar(props);
|
|
22
|
+
const { currentDate, descendants, disabled, endOfMonth, excludeDate, holidays, locale, max, maxDate, minDate, month, monthDays, monthItems, multiple, range, startDayOfWeek, startOfMonth, today, value, weekdays, weekendDays, yearItems, getMonthProps, getMonthSelectProps, getNavigationProps, getNextButtonProps, getPrevButtonProps, getRootProps, getStatusProps, getWeekdayProps, getYearSelectProps, onChange, onMonthChange, onNextMonth, onPrevMonth } = require_use_calendar.useCalendar(props);
|
|
23
23
|
const calendarContext = (0, react.useMemo)(() => ({
|
|
24
|
+
currentDate,
|
|
24
25
|
disabled,
|
|
25
26
|
endOfMonth,
|
|
26
27
|
excludeDate,
|
|
@@ -42,6 +43,7 @@ const CalendarRoot = withProvider(({ children, day, buttonProps, controlProps, d
|
|
|
42
43
|
onNextMonth,
|
|
43
44
|
onPrevMonth
|
|
44
45
|
}), [
|
|
46
|
+
currentDate,
|
|
45
47
|
disabled,
|
|
46
48
|
endOfMonth,
|
|
47
49
|
excludeDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.cjs","names":["createSlotComponent","calendarStyle","useCalendar","useMemo","CalendarDescendantsContext","CalendarContext","styled","mergeProps","useCalendarContext","ChevronLeftIcon","ChevronRightIcon","resetFieldProps","useCalendarDay"],"sources":["../../../../src/components/calendar/calendar.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement } from \"react\"\nimport type { GenericsComponent, HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { ReactNodeOrFunction } from \"../../utils\"\nimport type { CalendarStyle } from \"./calendar.style\"\nimport type {\n UseCalendarDayProps,\n UseCalendarProps,\n UseCalendarReturn,\n} from \"./use-calendar\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport { runIfFn } from \"../../utils\"\nimport { resetFieldProps } from \"../field\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icon\"\nimport { Select } from \"../select\"\nimport { calendarStyle } from \"./calendar.style\"\nimport {\n CalendarContext,\n CalendarDescendantsContext,\n useCalendar,\n useCalendarContext,\n useCalendarDay,\n} from \"./use-calendar\"\n\ninterface ComponentContext\n extends\n Pick<\n UseCalendarReturn,\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n >,\n Pick<\n CalendarRootProps,\n | \"buttonProps\"\n | \"controlProps\"\n | \"day\"\n | \"dayProps\"\n | \"monthProps\"\n | \"monthSelectProps\"\n | \"navigationProps\"\n | \"nextButtonProps\"\n | \"prevButtonProps\"\n | \"selectProps\"\n | \"weekdayProps\"\n | \"weekdaysProps\"\n | \"weekProps\"\n | \"weeksProps\"\n | \"yearSelectProps\"\n > {}\n\nexport interface CalendarRootProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<HTMLStyledProps, \"defaultValue\" | \"onChange\">,\n ThemeProps<CalendarStyle>,\n UseCalendarProps<Multiple, Range>,\n Pick<CalendarMonthProps, \"day\"> {\n /**\n * Props for the button component.\n */\n buttonProps?: HTMLStyledProps<\"button\">\n /**\n * Props for the control component.\n */\n controlProps?: CalendarControlProps\n /**\n * Props for the day component.\n */\n dayProps?: Omit<CalendarDayProps, \"value\">\n /**\n * Props for the month component.\n */\n monthProps?: CalendarMonthProps\n /**\n * Props for the month select component.\n */\n monthSelectProps?: CalendarMonthSelectProps\n /**\n * Props for the navigation component.\n */\n navigationProps?: Omit<CalendarNavigationProps, \"children\">\n /**\n * Props for the next button component.\n */\n nextButtonProps?: CalendarNextButtonProps\n /**\n * Props for the prev button component.\n */\n prevButtonProps?: CalendarPrevButtonProps\n /**\n * Props for the select component.\n */\n selectProps?: Select.RootProps\n /**\n * Props for the weekday component.\n */\n weekdayProps?: HTMLStyledProps<\"th\">\n /**\n * Props for the weekdays component.\n */\n weekdaysProps?: HTMLStyledProps<\"tr\">\n /**\n * Props for the week component.\n */\n weekProps?: HTMLStyledProps<\"tr\">\n /**\n * Props for the weeks component.\n */\n weeksProps?: HTMLStyledProps<\"tbody\">\n /**\n * Props for the year select component.\n */\n yearSelectProps?: CalendarYearSelectProps\n}\n\nconst {\n ComponentContext,\n PropsContext: CalendarPropsContext,\n useComponentContext,\n usePropsContext: useCalendarPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<CalendarRootProps, CalendarStyle, ComponentContext>(\n \"calendar\",\n calendarStyle,\n)\n\nexport { CalendarPropsContext, useCalendarPropsContext }\n\n/**\n * `Calendar` is a component for displaying or selecting dates in a calendar.\n *\n * @see https://yamada-ui.com/docs/components/calendar\n */\nexport const CalendarRoot = withProvider(\n <Multiple extends boolean = false, Range extends boolean = false>({\n children,\n day,\n buttonProps,\n controlProps,\n dayProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n ...props\n }: CalendarRootProps<Multiple, Range>) => {\n const {\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 } = useCalendar(props)\n const calendarContext = useMemo(\n () => ({\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }),\n [\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n ],\n )\n const componentContext = useMemo(\n () => ({\n day,\n monthDays,\n monthItems,\n weekdays,\n yearItems,\n buttonProps,\n controlProps,\n dayProps,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n }),\n [\n day,\n monthDays,\n monthItems,\n weekdays,\n yearItems,\n buttonProps,\n controlProps,\n dayProps,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n ],\n )\n\n return (\n <CalendarDescendantsContext value={descendants}>\n <CalendarContext value={calendarContext}>\n <ComponentContext value={componentContext}>\n <styled.div {...getRootProps()}>\n {children ?? (\n <>\n <CalendarNavigation />\n <CalendarMonth />\n </>\n )}\n </styled.div>\n </ComponentContext>\n </CalendarContext>\n </CalendarDescendantsContext>\n )\n },\n \"root\",\n)() as GenericsComponent<{\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: CalendarRootProps<Multiple, Range>,\n ): ReactElement\n}>\n\nexport interface CalendarNavigationProps extends HTMLStyledProps {}\n\nexport const CalendarNavigation = withContext<\"div\", CalendarNavigationProps>(\n \"div\",\n [\"row\", \"navigation\"],\n)(undefined, ({ children, ...rest }) => {\n const { getNavigationProps, navigationProps } = useComponentContext()\n\n const computedChildren = useMemo(() => {\n if (children) return children\n\n return (\n <>\n <CalendarPrevButton />\n <CalendarControl />\n <CalendarNextButton />\n </>\n )\n }, [children])\n\n return {\n ...getNavigationProps(mergeProps(navigationProps, rest)()),\n children: computedChildren,\n }\n})\n\nexport interface CalendarControlProps extends Omit<\n HTMLStyledProps,\n \"children\"\n> {\n /**\n * The control children to use.\n */\n children?: ReactNodeOrFunction<{ month: Date }>\n}\n\nexport const CalendarControl = withContext<\"div\", CalendarControlProps>(\n \"div\",\n \"control\",\n)(undefined, ({ children, ...rest }) => {\n const { month } = useCalendarContext()\n const { controlProps, getStatusProps } = useComponentContext()\n\n const computedChildren = useMemo(() => {\n if (children) return runIfFn(children, { month })\n\n return (\n <>\n <CalendarMonthSelect />\n <CalendarYearSelect />\n </>\n )\n }, [children, month])\n\n return {\n ...mergeProps(controlProps, rest)(),\n children: (\n <>\n {computedChildren}\n <styled.div {...getStatusProps()} />\n </>\n ),\n }\n})\n\nexport interface CalendarPrevButtonProps extends HTMLStyledProps<\"button\"> {}\n\nexport const CalendarPrevButton = withContext<\n \"button\",\n CalendarPrevButtonProps\n>(\"button\", [\"button\", \"prev\"])(\n undefined,\n ({ children = <ChevronLeftIcon />, ...rest }) => {\n const { buttonProps, getPrevButtonProps, prevButtonProps } =\n useComponentContext()\n\n return {\n children,\n ...getPrevButtonProps(mergeProps(buttonProps, prevButtonProps, rest)()),\n }\n },\n)\n\nexport interface CalendarNextButtonProps extends HTMLStyledProps<\"button\"> {}\n\nexport const CalendarNextButton = withContext<\n \"button\",\n CalendarNextButtonProps\n>(\"button\", [\"button\", \"next\"])(\n undefined,\n ({ children = <ChevronRightIcon />, ...rest }) => {\n const { buttonProps, getNextButtonProps, nextButtonProps } =\n useComponentContext()\n\n return {\n children,\n ...getNextButtonProps(mergeProps(buttonProps, nextButtonProps, rest)()),\n }\n },\n)\n\nexport interface CalendarSeparatorProps extends HTMLStyledProps<\"span\"> {}\n\nexport const CalendarSeparator = withContext<\"span\", CalendarSeparatorProps>(\n \"span\",\n \"separator\",\n)({ children: \"/\", role: \"separator\" })\n\nexport interface CalendarYearSelectProps extends Select.RootProps {}\n\nexport const CalendarYearSelect = withContext<\"div\", CalendarYearSelectProps>(\n (props) => {\n const { yearItems, getYearSelectProps, selectProps, yearSelectProps } =\n useComponentContext()\n const { contentProps, rootProps, ...rest } = mergeProps(\n selectProps,\n yearSelectProps,\n props,\n )()\n\n return (\n <Select.Root\n variant=\"plain\"\n items={yearItems}\n minH=\"{cell-size}\"\n contentProps={{ minW: \"{select-content-size}\", ...contentProps }}\n rootProps={{\n fontSize: \"{select-font-size}\",\n w: \"{select-root-size}\",\n ...rootProps,\n }}\n {...resetFieldProps}\n {...getYearSelectProps(rest)}\n />\n )\n },\n [\"select\", \"years\"],\n)()\n\nexport interface CalendarMonthSelectProps extends Select.RootProps {}\n\nexport const CalendarMonthSelect = withContext<\"div\", CalendarMonthSelectProps>(\n (props) => {\n const { monthItems, getMonthSelectProps, monthSelectProps, selectProps } =\n useComponentContext()\n const { contentProps, rootProps, ...rest } = mergeProps(\n selectProps,\n monthSelectProps,\n props,\n )()\n\n return (\n <Select.Root\n variant=\"plain\"\n items={monthItems}\n minH=\"{cell-size}\"\n contentProps={{ minW: \"{select-content-size}\", ...contentProps }}\n rootProps={{\n fontSize: \"{select-font-size}\",\n w: \"{select-root-size}\",\n ...rootProps,\n }}\n {...resetFieldProps}\n {...getMonthSelectProps(rest)}\n />\n )\n },\n [\"select\", \"months\"],\n)()\n\nexport interface CalendarMonthProps extends Omit<\n HTMLStyledProps<\"table\">,\n \"children\"\n> {\n /**\n * The day component to use.\n */\n day?: ReactNodeOrFunction<{ value: Date }>\n}\n\nexport const CalendarMonth = withContext<\"table\", CalendarMonthProps>(\n \"table\",\n \"month\",\n)(undefined, ({ day: dayProp, ...rest }) => {\n const {\n day,\n monthDays,\n weekdays,\n dayProps,\n getMonthProps,\n getWeekdayProps,\n monthProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n } = useComponentContext()\n\n dayProp ??= day\n\n const children = (\n <>\n <styled.thead aria-hidden>\n <CalendarWeekDays {...weekdaysProps}>\n {weekdays.map(({ label, value }, index) => (\n <CalendarWeekday\n key={index}\n {...getWeekdayProps({ ...weekdayProps, value })}\n >\n {label}\n </CalendarWeekday>\n ))}\n </CalendarWeekDays>\n </styled.thead>\n\n <CalendarWeeks {...weeksProps}>\n {monthDays.map((week, index) => (\n <CalendarWeek key={index} {...weekProps}>\n {week.map(({ label, value }) => (\n <CalendarDay\n key={value.toDateString()}\n {...{ ...dayProps, value }}\n >\n {runIfFn(dayProp, { value }) ?? (\n <styled.span>{label}</styled.span>\n )}\n </CalendarDay>\n ))}\n </CalendarWeek>\n ))}\n </CalendarWeeks>\n </>\n )\n\n return {\n ...getMonthProps(mergeProps(monthProps, rest)()),\n children,\n }\n})\n\nconst CalendarWeekDays = withContext(\"tr\", [\"row\", \"weekdays\"])()\n\nconst CalendarWeekday = withContext(\"th\", [\"cell\", \"weekday\"])()\n\nconst CalendarWeeks = withContext(\"tbody\", \"weeks\")()\n\nconst CalendarWeek = withContext(\"tr\", [\"row\", \"week\"])()\n\ninterface CalendarDayProps\n extends Omit<HTMLStyledProps<\"td\">, \"value\">, UseCalendarDayProps {}\n\nconst CalendarDay = withContext<\"td\", CalendarDayProps>(\"td\", [\"cell\", \"day\"])(\n undefined,\n (props) => {\n const { getDayProps } = useCalendarDay(props)\n\n return getDayProps()\n },\n)\n"],"mappings":";;;;;;;;;;;;;;AAiIA,MAAM,EACJ,kBACA,cAAc,sBACd,qBACA,iBAAiB,yBACjB,aACA,iBACEA,yBAAAA,oBACF,YACAC,uBAAAA,aACF;;;;;;AASA,MAAa,eAAe,cACwC,EAChE,UACA,KACA,aACA,cACA,UACA,YACA,kBACA,iBACA,iBACA,iBACA,aACA,cACA,eACA,WACA,YACA,iBACA,GAAG,YACqC;CACxC,MAAM,EACJ,aACA,UACA,YACA,aACA,UACA,QACA,KACA,SACA,SACA,OACA,WACA,YACA,UACA,OACA,gBACA,cACA,OACA,OACA,UACA,aACA,WACA,eACA,qBACA,oBACA,oBACA,oBACA,cACA,gBACA,iBACA,oBACA,UACA,eACA,aACA,gBACEC,qBAAAA,YAAY,KAAK;CACrB,MAAM,mBAAA,GAAkBC,MAAAA,QAAAA,QACf;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CACA,MAAM,oBAAA,GAAmBA,MAAAA,QAAAA,QAChB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,4BAAD;EAA4B,OAAO;EACjC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,iBAAD;GAAiB,OAAO;GACtB,UAAA,iBAAA,GAAA,kBAAA,IAAA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"}
|
|
1
|
+
{"version":3,"file":"calendar.cjs","names":["createSlotComponent","calendarStyle","useCalendar","useMemo","CalendarDescendantsContext","CalendarContext","styled","mergeProps","useCalendarContext","ChevronLeftIcon","ChevronRightIcon","resetFieldProps","useCalendarDay"],"sources":["../../../../src/components/calendar/calendar.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement } from \"react\"\nimport type { GenericsComponent, HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { ReactNodeOrFunction } from \"../../utils\"\nimport type { CalendarStyle } from \"./calendar.style\"\nimport type {\n UseCalendarDayProps,\n UseCalendarProps,\n UseCalendarReturn,\n} from \"./use-calendar\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport { runIfFn } from \"../../utils\"\nimport { resetFieldProps } from \"../field\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icon\"\nimport { Select } from \"../select\"\nimport { calendarStyle } from \"./calendar.style\"\nimport {\n CalendarContext,\n CalendarDescendantsContext,\n useCalendar,\n useCalendarContext,\n useCalendarDay,\n} from \"./use-calendar\"\n\ninterface ComponentContext\n extends\n Pick<\n UseCalendarReturn,\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n >,\n Pick<\n CalendarRootProps,\n | \"buttonProps\"\n | \"controlProps\"\n | \"day\"\n | \"dayProps\"\n | \"monthProps\"\n | \"monthSelectProps\"\n | \"navigationProps\"\n | \"nextButtonProps\"\n | \"prevButtonProps\"\n | \"selectProps\"\n | \"weekdayProps\"\n | \"weekdaysProps\"\n | \"weekProps\"\n | \"weeksProps\"\n | \"yearSelectProps\"\n > {}\n\nexport interface CalendarRootProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<HTMLStyledProps, \"defaultValue\" | \"onChange\">,\n ThemeProps<CalendarStyle>,\n UseCalendarProps<Multiple, Range>,\n Pick<CalendarMonthProps, \"day\"> {\n /**\n * Props for the button component.\n */\n buttonProps?: HTMLStyledProps<\"button\">\n /**\n * Props for the control component.\n */\n controlProps?: CalendarControlProps\n /**\n * Props for the day component.\n */\n dayProps?: Omit<CalendarDayProps, \"value\">\n /**\n * Props for the month component.\n */\n monthProps?: CalendarMonthProps\n /**\n * Props for the month select component.\n */\n monthSelectProps?: CalendarMonthSelectProps\n /**\n * Props for the navigation component.\n */\n navigationProps?: Omit<CalendarNavigationProps, \"children\">\n /**\n * Props for the next button component.\n */\n nextButtonProps?: CalendarNextButtonProps\n /**\n * Props for the prev button component.\n */\n prevButtonProps?: CalendarPrevButtonProps\n /**\n * Props for the select component.\n */\n selectProps?: Select.RootProps\n /**\n * Props for the weekday component.\n */\n weekdayProps?: HTMLStyledProps<\"th\">\n /**\n * Props for the weekdays component.\n */\n weekdaysProps?: HTMLStyledProps<\"tr\">\n /**\n * Props for the week component.\n */\n weekProps?: HTMLStyledProps<\"tr\">\n /**\n * Props for the weeks component.\n */\n weeksProps?: HTMLStyledProps<\"tbody\">\n /**\n * Props for the year select component.\n */\n yearSelectProps?: CalendarYearSelectProps\n}\n\nconst {\n ComponentContext,\n PropsContext: CalendarPropsContext,\n useComponentContext,\n usePropsContext: useCalendarPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<CalendarRootProps, CalendarStyle, ComponentContext>(\n \"calendar\",\n calendarStyle,\n)\n\nexport { CalendarPropsContext, useCalendarPropsContext }\n\n/**\n * `Calendar` is a component for displaying or selecting dates in a calendar.\n *\n * @see https://yamada-ui.com/docs/components/calendar\n */\nexport const CalendarRoot = withProvider(\n <Multiple extends boolean = false, Range extends boolean = false>({\n children,\n day,\n buttonProps,\n controlProps,\n dayProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n ...props\n }: CalendarRootProps<Multiple, Range>) => {\n const {\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 } = useCalendar(props)\n const calendarContext = useMemo(\n () => ({\n currentDate,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }),\n [\n currentDate,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n ],\n )\n const componentContext = useMemo(\n () => ({\n day,\n monthDays,\n monthItems,\n weekdays,\n yearItems,\n buttonProps,\n controlProps,\n dayProps,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n }),\n [\n day,\n monthDays,\n monthItems,\n weekdays,\n yearItems,\n buttonProps,\n controlProps,\n dayProps,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n monthProps,\n monthSelectProps,\n navigationProps,\n nextButtonProps,\n prevButtonProps,\n selectProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n yearSelectProps,\n ],\n )\n\n return (\n <CalendarDescendantsContext value={descendants}>\n <CalendarContext value={calendarContext}>\n <ComponentContext value={componentContext}>\n <styled.div {...getRootProps()}>\n {children ?? (\n <>\n <CalendarNavigation />\n <CalendarMonth />\n </>\n )}\n </styled.div>\n </ComponentContext>\n </CalendarContext>\n </CalendarDescendantsContext>\n )\n },\n \"root\",\n)() as GenericsComponent<{\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: CalendarRootProps<Multiple, Range>,\n ): ReactElement\n}>\n\nexport interface CalendarNavigationProps extends HTMLStyledProps {}\n\nexport const CalendarNavigation = withContext<\"div\", CalendarNavigationProps>(\n \"div\",\n [\"row\", \"navigation\"],\n)(undefined, ({ children, ...rest }) => {\n const { getNavigationProps, navigationProps } = useComponentContext()\n\n const computedChildren = useMemo(() => {\n if (children) return children\n\n return (\n <>\n <CalendarPrevButton />\n <CalendarControl />\n <CalendarNextButton />\n </>\n )\n }, [children])\n\n return {\n ...getNavigationProps(mergeProps(navigationProps, rest)()),\n children: computedChildren,\n }\n})\n\nexport interface CalendarControlProps extends Omit<\n HTMLStyledProps,\n \"children\"\n> {\n /**\n * The control children to use.\n */\n children?: ReactNodeOrFunction<{ month: Date }>\n}\n\nexport const CalendarControl = withContext<\"div\", CalendarControlProps>(\n \"div\",\n \"control\",\n)(undefined, ({ children, ...rest }) => {\n const { month } = useCalendarContext()\n const { controlProps, getStatusProps } = useComponentContext()\n\n const computedChildren = useMemo(() => {\n if (children) return runIfFn(children, { month })\n\n return (\n <>\n <CalendarMonthSelect />\n <CalendarYearSelect />\n </>\n )\n }, [children, month])\n\n return {\n ...mergeProps(controlProps, rest)(),\n children: (\n <>\n {computedChildren}\n <styled.div {...getStatusProps()} />\n </>\n ),\n }\n})\n\nexport interface CalendarPrevButtonProps extends HTMLStyledProps<\"button\"> {}\n\nexport const CalendarPrevButton = withContext<\n \"button\",\n CalendarPrevButtonProps\n>(\"button\", [\"button\", \"prev\"])(\n undefined,\n ({ children = <ChevronLeftIcon />, ...rest }) => {\n const { buttonProps, getPrevButtonProps, prevButtonProps } =\n useComponentContext()\n\n return {\n children,\n ...getPrevButtonProps(mergeProps(buttonProps, prevButtonProps, rest)()),\n }\n },\n)\n\nexport interface CalendarNextButtonProps extends HTMLStyledProps<\"button\"> {}\n\nexport const CalendarNextButton = withContext<\n \"button\",\n CalendarNextButtonProps\n>(\"button\", [\"button\", \"next\"])(\n undefined,\n ({ children = <ChevronRightIcon />, ...rest }) => {\n const { buttonProps, getNextButtonProps, nextButtonProps } =\n useComponentContext()\n\n return {\n children,\n ...getNextButtonProps(mergeProps(buttonProps, nextButtonProps, rest)()),\n }\n },\n)\n\nexport interface CalendarSeparatorProps extends HTMLStyledProps<\"span\"> {}\n\nexport const CalendarSeparator = withContext<\"span\", CalendarSeparatorProps>(\n \"span\",\n \"separator\",\n)({ children: \"/\", role: \"separator\" })\n\nexport interface CalendarYearSelectProps extends Select.RootProps {}\n\nexport const CalendarYearSelect = withContext<\"div\", CalendarYearSelectProps>(\n (props) => {\n const { yearItems, getYearSelectProps, selectProps, yearSelectProps } =\n useComponentContext()\n const { contentProps, rootProps, ...rest } = mergeProps(\n selectProps,\n yearSelectProps,\n props,\n )()\n\n return (\n <Select.Root\n variant=\"plain\"\n items={yearItems}\n minH=\"{cell-size}\"\n contentProps={{ minW: \"{select-content-size}\", ...contentProps }}\n rootProps={{\n fontSize: \"{select-font-size}\",\n w: \"{select-root-size}\",\n ...rootProps,\n }}\n {...resetFieldProps}\n {...getYearSelectProps(rest)}\n />\n )\n },\n [\"select\", \"years\"],\n)()\n\nexport interface CalendarMonthSelectProps extends Select.RootProps {}\n\nexport const CalendarMonthSelect = withContext<\"div\", CalendarMonthSelectProps>(\n (props) => {\n const { monthItems, getMonthSelectProps, monthSelectProps, selectProps } =\n useComponentContext()\n const { contentProps, rootProps, ...rest } = mergeProps(\n selectProps,\n monthSelectProps,\n props,\n )()\n\n return (\n <Select.Root\n variant=\"plain\"\n items={monthItems}\n minH=\"{cell-size}\"\n contentProps={{ minW: \"{select-content-size}\", ...contentProps }}\n rootProps={{\n fontSize: \"{select-font-size}\",\n w: \"{select-root-size}\",\n ...rootProps,\n }}\n {...resetFieldProps}\n {...getMonthSelectProps(rest)}\n />\n )\n },\n [\"select\", \"months\"],\n)()\n\nexport interface CalendarMonthProps extends Omit<\n HTMLStyledProps<\"table\">,\n \"children\"\n> {\n /**\n * The day component to use.\n */\n day?: ReactNodeOrFunction<{ value: Date }>\n}\n\nexport const CalendarMonth = withContext<\"table\", CalendarMonthProps>(\n \"table\",\n \"month\",\n)(undefined, ({ day: dayProp, ...rest }) => {\n const {\n day,\n monthDays,\n weekdays,\n dayProps,\n getMonthProps,\n getWeekdayProps,\n monthProps,\n weekdayProps,\n weekdaysProps,\n weekProps,\n weeksProps,\n } = useComponentContext()\n\n dayProp ??= day\n\n const children = (\n <>\n <styled.thead aria-hidden>\n <CalendarWeekDays {...weekdaysProps}>\n {weekdays.map(({ label, value }, index) => (\n <CalendarWeekday\n key={index}\n {...getWeekdayProps({ ...weekdayProps, value })}\n >\n {label}\n </CalendarWeekday>\n ))}\n </CalendarWeekDays>\n </styled.thead>\n\n <CalendarWeeks {...weeksProps}>\n {monthDays.map((week, index) => (\n <CalendarWeek key={index} {...weekProps}>\n {week.map(({ label, value }) => (\n <CalendarDay\n key={value.toDateString()}\n {...{ ...dayProps, value }}\n >\n {runIfFn(dayProp, { value }) ?? (\n <styled.span>{label}</styled.span>\n )}\n </CalendarDay>\n ))}\n </CalendarWeek>\n ))}\n </CalendarWeeks>\n </>\n )\n\n return {\n ...getMonthProps(mergeProps(monthProps, rest)()),\n children,\n }\n})\n\nconst CalendarWeekDays = withContext(\"tr\", [\"row\", \"weekdays\"])()\n\nconst CalendarWeekday = withContext(\"th\", [\"cell\", \"weekday\"])()\n\nconst CalendarWeeks = withContext(\"tbody\", \"weeks\")()\n\nconst CalendarWeek = withContext(\"tr\", [\"row\", \"week\"])()\n\ninterface CalendarDayProps\n extends Omit<HTMLStyledProps<\"td\">, \"value\">, UseCalendarDayProps {}\n\nconst CalendarDay = withContext<\"td\", CalendarDayProps>(\"td\", [\"cell\", \"day\"])(\n undefined,\n (props) => {\n const { getDayProps } = useCalendarDay(props)\n\n return getDayProps()\n },\n)\n"],"mappings":";;;;;;;;;;;;;;AAiIA,MAAM,EACJ,kBACA,cAAc,sBACd,qBACA,iBAAiB,yBACjB,aACA,iBACEA,yBAAAA,oBACF,YACAC,uBAAAA,aACF;;;;;;AASA,MAAa,eAAe,cACwC,EAChE,UACA,KACA,aACA,cACA,UACA,YACA,kBACA,iBACA,iBACA,iBACA,aACA,cACA,eACA,WACA,YACA,iBACA,GAAG,YACqC;CACxC,MAAM,EACJ,aACA,aACA,UACA,YACA,aACA,UACA,QACA,KACA,SACA,SACA,OACA,WACA,YACA,UACA,OACA,gBACA,cACA,OACA,OACA,UACA,aACA,WACA,eACA,qBACA,oBACA,oBACA,oBACA,cACA,gBACA,iBACA,oBACA,UACA,eACA,aACA,gBACEC,qBAAAA,YAAY,KAAK;CACrB,MAAM,mBAAA,GAAkBC,MAAAA,QAAAA,QACf;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CACA,MAAM,oBAAA,GAAmBA,MAAAA,QAAAA,QAChB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,4BAAD;EAA4B,OAAO;EACjC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,iBAAD;GAAiB,OAAO;GACtB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAD;IAAkB,OAAO;IACvB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,OAAO,KAAR;KAAY,GAAI,aAAa;KAC1B,UAAA,YACC,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,CAAqB,CAAA,GACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,CAAgB,CAAA,CAChB,EAAA,CAAA;IAEM,CAAA;GACI,CAAA;EACH,CAAA;CACS,CAAA;AAEhC,GACA,MACF,CAAC,CAAC;AAQF,MAAa,qBAAqB,YAChC,OACA,CAAC,OAAO,YAAY,CACtB,CAAC,CAAC,KAAA,IAAY,EAAE,UAAU,GAAG,WAAW;CACtC,MAAM,EAAE,oBAAoB,oBAAoB,oBAAoB;CAEpE,MAAM,oBAAA,GAAmBH,MAAAA,QAAAA,OAAc;EACrC,IAAI,UAAU,OAAO;EAErB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,CAAqB,CAAA;GACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD,CAAkB,CAAA;GAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,CAAqB,CAAA;EACrB,EAAA,CAAA;CAEN,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO;EACL,GAAG,mBAAmBI,cAAAA,WAAW,iBAAiB,IAAI,CAAC,CAAC,CAAC;EACzD,UAAU;CACZ;AACF,CAAC;AAYD,MAAa,kBAAkB,YAC7B,OACA,SACF,CAAC,CAAC,KAAA,IAAY,EAAE,UAAU,GAAG,WAAW;CACtC,MAAM,EAAE,UAAUC,qBAAAA,mBAAmB;CACrC,MAAM,EAAE,cAAc,mBAAmB,oBAAoB;CAE7D,MAAM,oBAAA,GAAmBL,MAAAA,QAAAA,OAAc;EACrC,IAAI,UAAU,QAAA,GAAA,oBAAA,cAAO,QAAA,CAAQ,UAAU,EAAE,MAAM,CAAC;EAEhD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAD,CAAsB,CAAA,GACtB,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,CAAqB,CAAA,CACrB,EAAA,CAAA;CAEN,GAAG,CAAC,UAAU,KAAK,CAAC;CAEpB,OAAO;EACL,GAAGI,cAAAA,WAAW,cAAc,IAAI,CAAC,CAAC;EAClC,UACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACG,kBACD,iBAAA,GAAA,kBAAA,IAAA,CAACD,gBAAAA,OAAO,KAAR,EAAY,GAAI,eAAe,EAAI,CAAA,CACnC,EAAA,CAAA;CAEN;AACF,CAAC;AAID,MAAa,qBAAqB,YAGhC,UAAU,CAAC,UAAU,MAAM,CAAC,CAAC,CAC7B,KAAA,IACC,EAAE,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACG,0BAAAA,iBAAD,CAAkB,CAAA,GAAG,GAAG,WAAW;CAC/C,MAAM,EAAE,aAAa,oBAAoB,oBACvC,oBAAoB;CAEtB,OAAO;EACL;EACA,GAAG,mBAAmBF,cAAAA,WAAW,aAAa,iBAAiB,IAAI,CAAC,CAAC,CAAC;CACxE;AACF,CACF;AAIA,MAAa,qBAAqB,YAGhC,UAAU,CAAC,UAAU,MAAM,CAAC,CAAC,CAC7B,KAAA,IACC,EAAE,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACG,2BAAAA,kBAAD,CAAmB,CAAA,GAAG,GAAG,WAAW;CAChD,MAAM,EAAE,aAAa,oBAAoB,oBACvC,oBAAoB;CAEtB,OAAO;EACL;EACA,GAAG,mBAAmBH,cAAAA,WAAW,aAAa,iBAAiB,IAAI,CAAC,CAAC,CAAC;CACxE;AACF,CACF;AAIiC,YAC/B,QACA,WACF,CAAC,CAAC;CAAE,UAAU;CAAK,MAAM;AAAY,CAAC;AAItC,MAAa,qBAAqB,aAC/B,UAAU;CACT,MAAM,EAAE,WAAW,oBAAoB,aAAa,oBAClD,oBAAoB;CACtB,MAAM,EAAE,cAAc,WAAW,GAAG,SAASA,cAAAA,WAC3C,aACA,iBACA,KACF,CAAC,CAAC;CAEF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAA,eAAA,YAAA;EACE,SAAQ;EACR,OAAO;EACP,MAAK;EACL,cAAc;GAAE,MAAM;GAAyB,GAAG;EAAa;EAC/D,WAAW;GACT,UAAU;GACV,GAAG;GACH,GAAG;EACL;EACA,GAAII,wBAAAA;EACJ,GAAI,mBAAmB,IAAI;CAC5B,CAAA;AAEL,GACA,CAAC,UAAU,OAAO,CACpB,CAAC,CAAC;AAIF,MAAa,sBAAsB,aAChC,UAAU;CACT,MAAM,EAAE,YAAY,qBAAqB,kBAAkB,gBACzD,oBAAoB;CACtB,MAAM,EAAE,cAAc,WAAW,GAAG,SAASJ,cAAAA,WAC3C,aACA,kBACA,KACF,CAAC,CAAC;CAEF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAA,eAAA,YAAA;EACE,SAAQ;EACR,OAAO;EACP,MAAK;EACL,cAAc;GAAE,MAAM;GAAyB,GAAG;EAAa;EAC/D,WAAW;GACT,UAAU;GACV,GAAG;GACH,GAAG;EACL;EACA,GAAII,wBAAAA;EACJ,GAAI,oBAAoB,IAAI;CAC7B,CAAA;AAEL,GACA,CAAC,UAAU,QAAQ,CACrB,CAAC,CAAC;AAYF,MAAa,gBAAgB,YAC3B,SACA,OACF,CAAC,CAAC,KAAA,IAAY,EAAE,KAAK,SAAS,GAAG,WAAW;CAC1C,MAAM,EACJ,KACA,WACA,UACA,UACA,eACA,iBACA,YACA,cACA,eACA,WACA,eACE,oBAAoB;CAExB,YAAY;CAEZ,MAAM,WACJ,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACL,gBAAAA,OAAO,OAAR;EAAc,eAAA;EACZ,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAD;GAAkB,GAAI;GACnB,UAAA,SAAS,KAAK,EAAE,OAAO,SAAS,UAC/B,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD;IAEE,GAAI,gBAAgB;KAAE,GAAG;KAAc;IAAM,CAAC;IAE7C,UAAA;GACc,GAJV,KAIU,CAClB;EACe,CAAA;CACN,CAAA,GAEd,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD;EAAe,GAAI;EAChB,UAAA,UAAU,KAAK,MAAM,UACpB,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;GAA0B,GAAI;GAC3B,UAAA,KAAK,KAAK,EAAE,OAAO,YAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD;IAEQ,GAAG;IAAU;IAElB,WAAA,GAAA,oBAAA,cAAA,QAAA,CAAQ,SAAS,EAAE,MAAM,CAAC,KACzB,iBAAA,GAAA,kBAAA,IAAA,CAACA,gBAAAA,OAAO,MAAR,EAAA,UAAc,MAAmB,CAAA;GAExB,GANN,MAAM,aAAa,CAMb,CACd;EACW,GAXK,KAWL,CACf;CACY,CAAA,CACf,EAAA,CAAA;CAGJ,OAAO;EACL,GAAG,cAAcC,cAAAA,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC;EAC/C;CACF;AACF,CAAC;AAED,MAAM,mBAAmB,YAAY,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAEhE,MAAM,kBAAkB,YAAY,MAAM,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC;AAE/D,MAAM,gBAAgB,YAAY,SAAS,OAAO,CAAC,CAAC;AAEpD,MAAM,eAAe,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;AAKxD,MAAM,cAAc,YAAoC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAC5E,KAAA,IACC,UAAU;CACT,MAAM,EAAE,gBAAgBK,qBAAAA,eAAe,KAAK;CAE5C,OAAO,YAAY;AACrB,CACF"}
|
|
@@ -124,7 +124,7 @@ const getAdjustedMonth = (value, month) => {
|
|
|
124
124
|
};
|
|
125
125
|
const { DescendantsContext: CalendarDescendantsContext, useDescendant: useCalendarDescendant, useDescendants: useCalendarDescendants } = require_hooks_use_descendants_index.createDescendants();
|
|
126
126
|
const [CalendarContext, useCalendarContext] = require_context.createContext({ name: "CalendarContext" });
|
|
127
|
-
const useCalendar = ({ defaultMonth = /* @__PURE__ */ new Date(), multiple = false, range = false, defaultValue = range ? {
|
|
127
|
+
const useCalendar = ({ defaultMonth = () => /* @__PURE__ */ new Date(), multiple = false, range = false, defaultValue = range ? {
|
|
128
128
|
end: void 0,
|
|
129
129
|
start: void 0
|
|
130
130
|
} : multiple ? [] : void 0, disabled = false, excludeDate, format = {}, holidays = DEFAULT_HOLIDAYS, locale: localeProp, max, maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE, month: monthProp, startDayOfWeek = DEFAULT_FIRST_DAY_OF_WEEK, today = true, value: valueProp, weekendDays = DEFAULT_WEEKEND_DAYS, onChange: onChangeProp, onChangeMonth: onChangeMonthProp, ...rest } = {}) => {
|
|
@@ -155,6 +155,7 @@ const useCalendar = ({ defaultMonth = /* @__PURE__ */ new Date(), multiple = fal
|
|
|
155
155
|
}, [dateTimeFormat, format.day]);
|
|
156
156
|
const descendants = useCalendarDescendants();
|
|
157
157
|
const monthRef = (0, react.useRef)(null);
|
|
158
|
+
const [currentDate] = (0, react.useState)(() => /* @__PURE__ */ new Date());
|
|
158
159
|
const [value, setValue] = require_hooks_use_controllable_state_index.useControllableState({
|
|
159
160
|
defaultValue,
|
|
160
161
|
value: valueProp,
|
|
@@ -162,10 +163,9 @@ const useCalendar = ({ defaultMonth = /* @__PURE__ */ new Date(), multiple = fal
|
|
|
162
163
|
});
|
|
163
164
|
const [month, setMonth] = require_hooks_use_controllable_state_index.useControllableState({
|
|
164
165
|
defaultValue: () => {
|
|
166
|
+
defaultMonth = (0, require_utils_index.utils_exports.runIfFn)(defaultMonth);
|
|
165
167
|
if ((0, dayjs.default)(minDate).isAfter((0, dayjs.default)(defaultMonth))) defaultMonth = (0, dayjs.default)(minDate).set("date", 1).toDate();
|
|
166
|
-
|
|
167
|
-
else if (defaultValue) defaultMonth = getAdjustedMonth(defaultValue, defaultMonth);
|
|
168
|
-
return defaultMonth;
|
|
168
|
+
return getAdjustedMonth(value, defaultMonth);
|
|
169
169
|
},
|
|
170
170
|
value: monthProp,
|
|
171
171
|
onChange: onChangeMonthProp
|
|
@@ -385,6 +385,7 @@ const useCalendar = ({ defaultMonth = /* @__PURE__ */ new Date(), multiple = fal
|
|
|
385
385
|
t
|
|
386
386
|
]);
|
|
387
387
|
return {
|
|
388
|
+
currentDate,
|
|
388
389
|
descendants,
|
|
389
390
|
disabled,
|
|
390
391
|
endOfMonth,
|
|
@@ -423,13 +424,17 @@ const useCalendar = ({ defaultMonth = /* @__PURE__ */ new Date(), multiple = fal
|
|
|
423
424
|
};
|
|
424
425
|
const useCalendarDay = ({ value, ...rest }) => {
|
|
425
426
|
const { t } = require_i18n_provider.useI18n("calendar");
|
|
426
|
-
const { disabled: rootDisabled, excludeDate, holidays, locale, max, maxDate, minDate, month, startDayOfWeek, today: highlightToday, value: selectedValue, weekendDays, onChange, onMonthChange, onNextMonth, onPrevMonth } = useCalendarContext();
|
|
427
|
+
const { currentDate, disabled: rootDisabled, excludeDate, holidays, locale, max, maxDate, minDate, month, startDayOfWeek, today: highlightToday, value: selectedValue, weekendDays, onChange, onMonthChange, onNextMonth, onPrevMonth } = useCalendarContext();
|
|
427
428
|
const dateTimeFormat = require_use_format_date_time.useDateTimeFormat({ locale });
|
|
428
429
|
const cellRef = (0, react.useRef)(null);
|
|
429
430
|
const outside = (0, react.useMemo)(() => !isSameMonth(month, value), [month, value]);
|
|
430
431
|
const holiday = (0, react.useMemo)(() => holidays.some((holiday) => isSameDate(holiday, value)), [holidays, value]);
|
|
431
432
|
const weekend = (0, react.useMemo)(() => weekendDays.includes(value.getDay()), [weekendDays, value]);
|
|
432
|
-
const today = (0, react.useMemo)(() => highlightToday && isSameDate(value,
|
|
433
|
+
const today = (0, react.useMemo)(() => highlightToday && isSameDate(value, currentDate), [
|
|
434
|
+
highlightToday,
|
|
435
|
+
value,
|
|
436
|
+
currentDate
|
|
437
|
+
]);
|
|
433
438
|
const selected = (0, react.useMemo)(() => {
|
|
434
439
|
if ((0, require_utils_index.utils_exports.isDate)(selectedValue)) return isSameDate(selectedValue, value);
|
|
435
440
|
else if ((0, require_utils_index.utils_exports.isArray)(selectedValue)) return selectedValue.some((selectedValue) => isSameDate(selectedValue, value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-calendar.cjs","names":["createDescendants","createContext","useI18n","useDateTimeFormat","useCallback","useRef","useControllableState","useMemo","mergeProps","visuallyHiddenAttributes","mergeRefs","useSplitProps"],"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.cjs","names":["createDescendants","createContext","useI18n","useDateTimeFormat","useCallback","useRef","useState","useControllableState","useMemo","mergeProps","visuallyHiddenAttributes","mergeRefs","useSplitProps"],"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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"}
|
|
@@ -27,7 +27,7 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
27
27
|
if ((0, dayjs.default)(minDate).isAfter((0, dayjs.default)(maxDate))) maxDate = minDate;
|
|
28
28
|
const { getDocument } = require_environment_provider.useEnvironment();
|
|
29
29
|
const { locale: defaultLocale, t } = require_i18n_provider.useI18n("datePicker");
|
|
30
|
-
const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
|
|
30
|
+
const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = () => /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
|
|
31
31
|
end: void 0,
|
|
32
32
|
start: void 0
|
|
33
33
|
} : 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 } = require_use_field_props.useFieldProps(props);
|
|
@@ -50,6 +50,7 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
50
50
|
const startInputRef = (0, react.useRef)(null);
|
|
51
51
|
const endInputRef = (0, react.useRef)(null);
|
|
52
52
|
const focusByClickRef = (0, react.useRef)(false);
|
|
53
|
+
const [currentDate] = (0, react.useState)(() => /* @__PURE__ */ new Date());
|
|
53
54
|
const [focused, setFocused] = (0, react.useState)(false);
|
|
54
55
|
const [value, setValue] = require_hooks_use_controllable_state_index.useControllableState({
|
|
55
56
|
defaultValue,
|
|
@@ -58,11 +59,9 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
58
59
|
});
|
|
59
60
|
const [month, setMonth] = require_hooks_use_controllable_state_index.useControllableState({
|
|
60
61
|
defaultValue: () => {
|
|
61
|
-
let
|
|
62
|
-
if ((0, dayjs.default)(minDate).isAfter((0, dayjs.default)(
|
|
63
|
-
|
|
64
|
-
else if (defaultValue) value = require_use_calendar.getAdjustedMonth(defaultValue, value);
|
|
65
|
-
return value;
|
|
62
|
+
let defaultValue = (0, require_utils_index.utils_exports.runIfFn)(defaultMonth);
|
|
63
|
+
if ((0, dayjs.default)(minDate).isAfter((0, dayjs.default)(defaultValue))) defaultValue = (0, dayjs.default)(minDate).set("date", 1).toDate();
|
|
64
|
+
return require_use_calendar.getAdjustedMonth(value, defaultValue);
|
|
66
65
|
},
|
|
67
66
|
value: monthProp,
|
|
68
67
|
onChange: onChangeMonthProp
|
|
@@ -158,13 +157,13 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
158
157
|
]);
|
|
159
158
|
const { endPlaceholder, startPlaceholder } = (0, react.useMemo)(() => {
|
|
160
159
|
if (range) {
|
|
161
|
-
const startPlaceholder = placeholderProp ?? dateTimeFormat(
|
|
160
|
+
const startPlaceholder = placeholderProp ?? dateTimeFormat(currentDate, inputFormat);
|
|
162
161
|
return {
|
|
163
|
-
endPlaceholder: placeholderProp ?? dateTimeFormat((0, dayjs.default)().add(1, "day").toDate(), inputFormat),
|
|
162
|
+
endPlaceholder: placeholderProp ?? dateTimeFormat((0, dayjs.default)(currentDate).add(1, "day").toDate(), inputFormat),
|
|
164
163
|
startPlaceholder
|
|
165
164
|
};
|
|
166
165
|
} else {
|
|
167
|
-
const placeholder = placeholderProp ?? dateTimeFormat(
|
|
166
|
+
const placeholder = placeholderProp ?? dateTimeFormat(currentDate, inputFormat);
|
|
168
167
|
return {
|
|
169
168
|
endPlaceholder: placeholder,
|
|
170
169
|
startPlaceholder: placeholder
|
|
@@ -174,7 +173,8 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
174
173
|
dateTimeFormat,
|
|
175
174
|
inputFormat,
|
|
176
175
|
placeholderProp,
|
|
177
|
-
range
|
|
176
|
+
range,
|
|
177
|
+
currentDate
|
|
178
178
|
]);
|
|
179
179
|
const onChange = (0, react.useCallback)((value) => {
|
|
180
180
|
setValue(value);
|