@yamada-ui/calendar
Version:
Yamada UI calendar component
1 lines • 17.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/use-range-date-picker.ts"],"sourcesContent":["import type { PropGetter } from \"@yamada-ui/core\"\nimport type { ChangeEvent, CSSProperties } from \"react\"\nimport type { UseCalendarProps } from \"./use-calendar\"\nimport type { UseCalendarPickerProps } from \"./use-calendar-picker\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport {\n getActiveElement,\n handlerAll,\n isActiveElement,\n isContains,\n isNumber,\n mergeRefs,\n useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useRef, useState } from \"react\"\nimport { isAfterDate, isBeforeDate } from \"./calendar-utils\"\nimport { useCalendarPicker } from \"./use-calendar-picker\"\n\ninterface CalendarProps\n extends Omit<\n UseCalendarProps<[Date?, Date?]>,\n \"enableMultiple\" | \"enableRange\" | \"nextRef\" | \"prevRef\" | \"typeRef\"\n > {}\n\ninterface UseRangeDatePickerOptions {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * The end date placeholder\n */\n endPlaceholder?: string\n /**\n * The start date placeholder\n */\n startPlaceholder?: string\n}\n\nexport interface UseRangeDatePickerProps\n extends UseCalendarPickerProps<CalendarProps>,\n UseRangeDatePickerOptions {}\n\nexport const useRangeDatePicker = ({\n allowInputBeyond = false,\n closeOnSelect = true,\n defaultValue = [],\n endPlaceholder,\n maxSelectValues,\n placeholder,\n startPlaceholder,\n value: valueProp,\n onChange: onChangeProp,\n ...rest\n}: UseRangeDatePickerProps) => {\n const composition = useRef<boolean>(false)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const draftValue = useRef<[Date?, Date?] | undefined>(undefined)\n const [value, setValue] = useControllableState<[Date?, Date?]>({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [startValue, endValue] = value\n const minDate =\n endValue && isNumber(maxSelectValues)\n ? dayjs(endValue)\n .subtract(maxSelectValues - 1, \"day\")\n .toDate()\n : undefined\n const maxDate =\n startValue && isNumber(maxSelectValues)\n ? dayjs(startValue)\n .add(maxSelectValues - 1, \"day\")\n .toDate()\n : undefined\n\n const {\n allowInput,\n containerRef,\n dateToString,\n inputFormat,\n locale,\n open,\n pattern,\n stringToDate,\n formControlProps,\n getCalendarProps,\n getContainerProps,\n getFieldProps,\n getIconProps,\n getPopoverProps,\n inputProps,\n onClose,\n } = useCalendarPicker({\n ...rest,\n allowInputBeyond,\n autoFocus: false,\n defaultValue,\n enableRange: true,\n maxSelectValues,\n value,\n onChange: ([startValue, endValue]: [Date?, Date?]) => {\n setStartInputValue(dateToString(startValue) ?? \"\")\n setEndInputValue(dateToString(endValue) ?? \"\")\n\n draftValue.current = [startValue, endValue]\n setValue([startValue, endValue])\n\n if (closeOnSelect && startValue && endValue) onClose()\n },\n onClear: () => {\n setStartInputValue(\"\")\n setEndInputValue(\"\")\n setValue([])\n\n draftValue.current = undefined\n\n if (allowInput && open) startInputRef.current?.focus()\n },\n onClick: (ev) => {\n if (open) {\n if (!startValue) {\n startInputRef.current?.focus()\n } else {\n endInputRef.current?.focus()\n }\n }\n\n rest.onClick?.(ev)\n },\n onClose: () => {\n const [startValue, endValue] = draftValue.current ?? value\n\n setStartInputValue(dateToString(startValue) ?? \"\")\n setEndInputValue(dateToString(endValue) ?? \"\")\n\n draftValue.current = undefined\n\n rest.onClose?.()\n },\n onDelete: (ev) => {\n if (!endInputRef.current || endInputRef.current.value.length > 1) return\n\n if (!containerRef.current) return\n\n const activeEl = getActiveElement(containerRef.current)\n\n if (!isContains(activeEl, endInputRef.current)) return\n\n ev.preventDefault()\n ev.stopPropagation()\n\n setEndInputValue(\"\")\n setValue([startValue, undefined])\n\n const startInputValue = startInputRef.current?.value ?? \"\"\n const index = startInputValue.length\n\n startInputRef.current?.focus()\n startInputRef.current?.setSelectionRange(index, index)\n },\n onEnter: () => {\n if (composition.current) return\n\n if (!containerRef.current) return\n\n const activeEl = getActiveElement(containerRef.current)\n\n const start = isContains(activeEl, startInputRef.current)\n\n if (start) {\n const value = dateToString(startValue)\n\n if (value) {\n setStartInputValue(value)\n\n const endInputValue = endInputRef.current?.value ?? \"\"\n const index = endInputValue.length\n\n endInputRef.current?.focus()\n endInputRef.current?.setSelectionRange(index, index)\n }\n } else {\n const value = dateToString(endValue)\n\n if (value) setEndInputValue(value)\n }\n },\n })\n\n const [startInputValue, setStartInputValue] = useState<string>(\n dateToString(startValue) ?? \"\",\n )\n const [endInputValue, setEndInputValue] = useState<string>(\n dateToString(endValue) ?? \"\",\n )\n\n const onStartChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n let inputValue = ev.target.value\n\n if (!composition.current) inputValue = inputValue.replace(pattern, \"\")\n\n let startValue = stringToDate(inputValue)\n\n if (!!startValue && dayjs(startValue).isValid()) {\n if (!allowInputBeyond) {\n if (minDate && isBeforeDate(startValue, minDate)) startValue = minDate\n }\n\n if (endValue && isAfterDate(startValue, endValue)) startValue = endValue\n } else {\n startValue = undefined\n }\n\n draftValue.current = [startValue, endValue]\n setValue([startValue, endValue])\n setStartInputValue(inputValue)\n },\n [pattern, stringToDate, allowInputBeyond, minDate, setValue, endValue],\n )\n\n const onEndChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n let inputValue = ev.target.value\n\n if (!composition.current) inputValue = inputValue.replace(pattern, \"\")\n\n let endValue = stringToDate(inputValue)\n\n if (!!endValue && dayjs(endValue).isValid()) {\n if (!allowInputBeyond) {\n if (maxDate && isAfterDate(endValue, maxDate)) endValue = maxDate\n }\n\n if (startValue && isBeforeDate(endValue, startValue))\n endValue = startValue\n } else {\n endValue = undefined\n }\n\n draftValue.current = [startValue, endValue]\n setValue([startValue, endValue])\n setEndInputValue(inputValue)\n },\n [startValue, allowInputBeyond, maxDate, pattern, stringToDate, setValue],\n )\n\n useUpdateEffect(() => {\n setValue(valueProp ?? [])\n }, [valueProp])\n\n useUpdateEffect(() => {\n if (startInputRef.current && isActiveElement(startInputRef.current)) return\n\n setStartInputValue(dateToString(startValue) ?? \"\")\n }, [value])\n\n useUpdateEffect(() => {\n if (endInputRef.current && isActiveElement(endInputRef.current)) return\n\n setEndInputValue(dateToString(endValue) ?? \"\")\n }, [value])\n\n useUpdateEffect(() => {\n setStartInputValue(dateToString(startValue) ?? \"\")\n setEndInputValue(dateToString(endValue) ?? \"\")\n }, [locale, inputFormat])\n\n const getStartInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref) => {\n const style: CSSProperties = {\n ...props.style,\n ...inputProps.style,\n ...(formControlProps.disabled || !allowInput\n ? { pointerEvents: \"none\" }\n : {}),\n }\n\n return {\n \"aria-label\": \"Start Date\",\n placeholder: startPlaceholder ?? placeholder,\n tabIndex: !allowInput ? -1 : 0,\n zIndex: !startInputValue ? 1 : undefined,\n ...formControlProps,\n ...inputProps,\n ...props,\n ref: mergeRefs(ref, startInputRef),\n style,\n value: startInputValue,\n onChange: handlerAll(props.onChange, onStartChange),\n onClick: handlerAll(props.onClick, (ev) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n onCompositionEnd: handlerAll(props.onCompositionEnd, () => {\n composition.current = false\n\n setStartInputValue((prev) => prev.replace(pattern, \"\"))\n }),\n onCompositionStart: handlerAll(\n props.onCompositionStart,\n () => (composition.current = true),\n ),\n }\n },\n [\n inputProps,\n allowInput,\n startPlaceholder,\n placeholder,\n formControlProps,\n startInputValue,\n onStartChange,\n pattern,\n ],\n )\n\n const getEndInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref) => {\n const style: CSSProperties = {\n ...props.style,\n ...(inputProps as { style?: CSSProperties }).style,\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n }\n\n return {\n \"aria-label\": \"End Date\",\n placeholder: endPlaceholder ?? placeholder,\n ...formControlProps,\n ...inputProps,\n ...props,\n ref: mergeRefs(ref, endInputRef),\n style,\n cursor: formControlProps.readOnly ? \"default\" : \"text\",\n pointerEvents: formControlProps.disabled ? \"none\" : \"auto\",\n tabIndex: !allowInput || !startInputValue ? -1 : 0,\n value: endInputValue,\n onChange: handlerAll(props.onChange, onEndChange),\n onClick: handlerAll(props.onClick, (ev) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n onCompositionEnd: handlerAll(props.onCompositionEnd, () => {\n composition.current = false\n\n setEndInputValue((prev) => prev.replace(pattern, \"\"))\n }),\n onCompositionStart: handlerAll(\n props.onCompositionStart,\n () => (composition.current = true),\n ),\n }\n },\n [\n startInputValue,\n inputProps,\n allowInput,\n endPlaceholder,\n placeholder,\n formControlProps,\n endInputValue,\n onEndChange,\n pattern,\n ],\n )\n\n return {\n dateToString,\n inputValue: [startInputValue, endInputValue],\n value,\n getCalendarProps,\n getContainerProps,\n getEndInputProps,\n getFieldProps,\n getIconProps,\n getPopoverProps,\n getStartInputProps,\n onClose,\n }\n}\n\nexport type UseRangeDatePickerReturn = ReturnType<typeof useRangeDatePicker>\n"],"mappings":"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","names":["startValue","endValue","_a","_b","startInputValue","value","endInputValue"]}