UNPKG

rsuite

Version:

A suite of react components

27 lines 985 B
'use client'; import { useState, useCallback, useRef } from 'react'; import { useUpdateEffect } from "../../internals/hooks/index.js"; import { startOfToday } from "../../internals/utils/date/index.js"; export const useCalendarDate = (value, defaultDate) => { const valueRef = useRef(value); const [calendarDate, setValue] = useState(value ?? defaultDate ?? startOfToday()); const setCalendarDate = useCallback(date => { if (date && date?.valueOf() !== calendarDate?.valueOf()) { setValue(date); } }, [calendarDate]); const resetCalendarDate = useCallback((nextValue = value) => { setValue(nextValue ?? defaultDate ?? startOfToday()); }, [defaultDate, value]); useUpdateEffect(() => { if (value?.valueOf() !== valueRef.current?.valueOf()) { setCalendarDate(value ?? defaultDate ?? startOfToday()); valueRef.current = value; } }, [value, defaultDate]); return { calendarDate, setCalendarDate, resetCalendarDate }; };