UNPKG

@yamada-ui/calendar

Version:

Yamada UI calendar component

1 lines • 20.7 kB
{"version":3,"sources":["../src/use-calendar-picker.ts"],"sourcesContent":["import type {\n HTMLProps,\n HTMLUIProps,\n PropGetter,\n RequiredPropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { ComboBoxProps, PopoverProps } from \"@yamada-ui/popover\"\nimport type {\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEvent,\n} from \"react\"\nimport type { CalendarBaseProps, CalendarProps } from \"./calendar\"\nimport type { UseCalendarProps } from \"./use-calendar\"\nimport { layoutStyleProperties, useI18n, useTheme } from \"@yamada-ui/core\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { useDisclosure } from \"@yamada-ui/use-disclosure\"\nimport { useOutsideClick } from \"@yamada-ui/use-outside-click\"\nimport {\n dataAttr,\n getEventRelatedTarget,\n handlerAll,\n isContains,\n mergeRefs,\n pickObject,\n splitObject,\n} from \"@yamada-ui/utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useRef } from \"react\"\nimport { isAfterDate, isBeforeDate } from \"./calendar-utils\"\n\ninterface CalendarThemeProps extends ThemeProps<\"Calendar\"> {}\n\ninterface InputProps\n extends Omit<\n HTMLUIProps<\"input\">,\n | \"children\"\n | \"defaultValue\"\n | \"disabled\"\n | \"onChange\"\n | \"readOnly\"\n | \"required\"\n | \"size\"\n | \"type\"\n | keyof UseCalendarPickerBaseProps\n > {}\n\ninterface UseCalendarPickerOptions {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, focus will be transferred to the input element when the popover opens and container or clear icon clicked.\n *\n * @private\n * @default true\n */\n autoFocus?: boolean\n /**\n * ColorScheme for the calendar component.\n */\n calendarColorScheme?: CalendarThemeProps[\"colorScheme\"]\n /**\n * Size for the calendar component.\n */\n calendarSize?: CalendarThemeProps[\"size\"]\n /**\n * Variant for the calendar component.\n */\n calendarVariant?: CalendarThemeProps[\"variant\"]\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see Docs https://day.js.org/docs/en/display/format#list-of-localized-formats\n * @default 'YYYY/MM/DD'\n */\n inputFormat?: string\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The pattern used to check the input element.\n *\n * @default '/[^0-9\\-\\/]/g'\n */\n pattern?: RegExp\n /**\n * Props for calendar component.\n */\n calendarProps?: CalendarBaseProps\n /**\n * The callback invoked when date picker clear icon clicked.\n *\n * @private\n */\n onClear?: () => void\n /**\n * The callback invoked when you hit the `Backspace` key.\n *\n * @private\n */\n onDelete?: (ev: KeyboardEvent<HTMLDivElement>) => void\n /**\n * The callback invoked when you hit the `Enter` key.\n *\n * @private\n */\n onEnter?: (ev: KeyboardEvent<HTMLDivElement>) => void\n}\n\ntype UseCalendarPickerBaseProps<\n T extends UseCalendarProps<any> = UseCalendarProps<any>,\n> = ComboBoxProps & FormControlOptions & T & UseCalendarPickerOptions\n\nexport type UseCalendarPickerProps<\n T extends UseCalendarProps<any> = UseCalendarProps<any>,\n> = InputProps & UseCalendarPickerBaseProps<T>\n\nexport const useCalendarPicker = <T extends UseCalendarProps<any>>(\n props: UseCalendarPickerProps<T>,\n) => {\n const { locale: defaultLocale } = useI18n()\n const { theme } = useTheme()\n const themeLocale = theme.__config?.date?.locale\n const {\n type,\n allowInput = true,\n allowInputBeyond = false,\n amountOfMonths,\n animation,\n autoFocus = true,\n boundary,\n calendarColorScheme,\n calendarSize,\n calendarVariant,\n closeDelay,\n closeOnBlur = true,\n closeOnEsc = true,\n dateFormat,\n defaultIsOpen,\n defaultMonth,\n defaultOpen,\n defaultType,\n defaultValue,\n disableOutsideDays,\n duration = 0.2,\n enableMultiple,\n enableRange,\n eventListeners,\n excludeDate,\n firstDayOfWeek,\n flip,\n gutter,\n hiddenOutsideDays,\n holidays,\n inputFormat = \"YYYY/MM/DD\",\n isLazy,\n isOpen,\n lazy = isLazy,\n lazyBehavior,\n locale = themeLocale ?? defaultLocale,\n matchWidth,\n maxDate,\n maxSelectValues,\n minDate,\n minSelectValues,\n modifiers,\n month,\n monthFormat,\n offset,\n open: openProp,\n openDelay,\n paginateBy,\n parseDate,\n pattern = /[^0-9\\-\\/]/g,\n placement = \"bottom-start\",\n preventOverflow,\n strategy,\n today,\n value,\n weekdayFormat,\n weekendDays,\n withControls,\n withHeader,\n withLabel,\n withWeekdays,\n yearFormat,\n calendarProps,\n onChange,\n onChangeMonth,\n onChangeType,\n onClear: onClearProp,\n onClose: onCloseProp,\n onDelete,\n onEnter,\n onOpen: onOpenProp,\n __selectType,\n ...rest\n } = useFormControlProps(props)\n const { \"aria-readonly\": _ariaReadonly, ...formControlProps } = pickObject(\n rest,\n formControlProperties,\n )\n const [containerProps, inputProps] = splitObject(rest, layoutStyleProperties)\n const {\n open,\n onClose,\n onOpen: onInternalOpen,\n } = useDisclosure({\n defaultIsOpen,\n defaultOpen,\n isOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const containerRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const { disabled, readOnly } = formControlProps\n\n const stringToDate = useCallback(\n (value: string): Date | undefined => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value, inputFormat, locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (maxDate && isAfterDate(date, maxDate)) date = maxDate\n if (minDate && isBeforeDate(date, minDate)) date = minDate\n }\n\n return date\n },\n [\n allowInputBeyond,\n excludeDate,\n inputFormat,\n locale,\n maxDate,\n minDate,\n parseDate,\n ],\n )\n\n const dateToString = useCallback(\n (value: Date | undefined): string | undefined => {\n if (value == null) return undefined\n if (excludeDate?.(value)) return undefined\n\n if (!allowInputBeyond) {\n if (maxDate && isAfterDate(value, maxDate)) value = maxDate\n if (minDate && isBeforeDate(value, minDate)) value = minDate\n }\n\n return dayjs(value).locale(locale).format(inputFormat)\n },\n [allowInputBeyond, excludeDate, inputFormat, locale, maxDate, minDate],\n )\n\n const onOpen = useCallback(() => {\n if (disabled || readOnly) return\n\n onInternalOpen()\n\n if (autoFocus && allowInput) inputRef.current?.focus()\n }, [autoFocus, allowInput, disabled, readOnly, onInternalOpen])\n\n const onClick = useCallback(() => {\n if (open) {\n if (autoFocus && allowInput) inputRef.current?.focus()\n } else {\n onOpen()\n }\n }, [autoFocus, allowInput, open, onOpen])\n\n const onFocus = useCallback(() => {\n if (!open) onOpen()\n }, [open, onOpen])\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLDivElement>) => {\n const relatedTarget = getEventRelatedTarget(ev)\n\n if (isContains(containerRef.current, relatedTarget)) return\n\n if (!closeOnBlur) return\n\n if (open) onClose()\n },\n [closeOnBlur, open, onClose],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \" \") ev.key = ev.code\n\n if (disabled || readOnly) return\n\n const actions: {\n [key: string]: KeyboardEventHandler<HTMLDivElement> | undefined\n } = {\n Backspace: onDelete,\n Enter: !open\n ? (ev) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n onOpen()\n }\n : onEnter,\n Escape: closeOnEsc\n ? (ev) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n onClose()\n }\n : undefined,\n Space: !open\n ? (ev) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n onOpen()\n }\n : undefined,\n }\n\n const action = actions[ev.key]\n\n if (!action) return\n\n action(ev)\n },\n [closeOnEsc, disabled, readOnly, open, onClose, onEnter, onDelete, onOpen],\n )\n\n const onClear = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.stopPropagation()\n\n onClearProp?.()\n\n if (autoFocus && allowInput && open) inputRef.current?.focus()\n },\n [autoFocus, allowInput, open, onClearProp],\n )\n\n useOutsideClick({\n ref: containerRef,\n enabled: open && closeOnBlur,\n handler: onClose,\n })\n\n const getContainerProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref: mergeRefs(containerRef, ref),\n ...containerProps,\n ...formControlProps,\n ...props,\n onBlur: handlerAll(\n props.onBlur,\n rest.onBlur as FocusEventHandler<HTMLDivElement>,\n onBlur,\n ),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n }),\n [containerProps, formControlProps, onBlur, onClick, rest],\n )\n\n const getPopoverProps = useCallback(\n (props?: PopoverProps): PopoverProps => ({\n animation,\n boundary,\n closeDelay,\n duration,\n eventListeners,\n flip,\n gutter,\n lazy,\n lazyBehavior,\n matchWidth,\n modifiers,\n offset,\n openDelay,\n placement,\n preventOverflow,\n strategy,\n ...props,\n closeOnBlur: false,\n closeOnButton: false,\n isOpen: open,\n trigger: \"never\",\n onClose,\n onOpen,\n }),\n [\n animation,\n boundary,\n closeDelay,\n duration,\n eventListeners,\n flip,\n gutter,\n open,\n lazy,\n lazyBehavior,\n matchWidth,\n modifiers,\n offset,\n onClose,\n onOpen,\n openDelay,\n placement,\n preventOverflow,\n strategy,\n ],\n )\n\n const getFieldProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n return {\n \"aria-haspopup\": \"dialog\",\n \"data-active\": dataAttr(open),\n \"data-not-allowed\": dataAttr(!readOnly && !disabled && !allowInput),\n role: \"combobox\",\n tabIndex: -1,\n ...formControlProps,\n ...props,\n ref: mergeRefs(inputRef, ref),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n onKeyDown: handlerAll(\n props.onKeyDown,\n rest.onKeyDown as KeyboardEventHandler<HTMLDivElement>,\n onKeyDown,\n ),\n }\n },\n [\n allowInput,\n disabled,\n readOnly,\n formControlProps,\n open,\n rest,\n onFocus,\n onKeyDown,\n ],\n )\n\n const getCalendarProps = useCallback(\n (props?: CalendarProps): CalendarProps => ({\n ...props,\n type,\n colorScheme: calendarColorScheme,\n size: calendarSize,\n variant: calendarVariant,\n amountOfMonths,\n dateFormat,\n defaultMonth,\n defaultType,\n disableOutsideDays,\n firstDayOfWeek,\n hiddenOutsideDays,\n holidays,\n maxSelectValues,\n minSelectValues,\n month,\n monthFormat,\n paginateBy,\n today,\n weekdayFormat,\n weekendDays,\n withControls,\n withHeader,\n withLabel,\n withWeekdays,\n yearFormat,\n onChangeMonth,\n onChangeType,\n ...calendarProps,\n defaultValue,\n enableMultiple,\n enableRange,\n excludeDate,\n locale,\n maxDate,\n minDate,\n value,\n onChange,\n __selectType,\n }),\n [\n hiddenOutsideDays,\n maxSelectValues,\n minSelectValues,\n enableMultiple,\n enableRange,\n amountOfMonths,\n calendarColorScheme,\n calendarProps,\n calendarSize,\n calendarVariant,\n dateFormat,\n defaultMonth,\n defaultType,\n defaultValue,\n disableOutsideDays,\n excludeDate,\n firstDayOfWeek,\n holidays,\n locale,\n maxDate,\n minDate,\n month,\n monthFormat,\n onChange,\n onChangeMonth,\n onChangeType,\n paginateBy,\n today,\n type,\n value,\n weekdayFormat,\n weekendDays,\n withControls,\n withHeader,\n withLabel,\n withWeekdays,\n yearFormat,\n __selectType,\n ],\n )\n\n const getIconProps: RequiredPropGetter<\n { clear: boolean } & HTMLProps,\n HTMLProps\n > = useCallback(\n ({ clear, ...props }) => ({\n ...props,\n ...formControlProps,\n onClick: handlerAll(props.onClick, clear ? onClear : undefined),\n }),\n [formControlProps, onClear],\n )\n\n return {\n allowInput,\n containerRef,\n dateToString,\n inputFormat,\n inputRef,\n locale,\n open,\n pattern,\n stringToDate,\n formControlProps,\n getCalendarProps,\n getContainerProps,\n getFieldProps,\n getIconProps,\n getPopoverProps,\n inputProps: inputProps as InputProps,\n onClose,\n onOpen,\n }\n}\n\nexport type UseCalendarPickerReturn = ReturnType<typeof useCalendarPicker>\n"],"mappings":"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","names":["value","_a","ev","props"]}