rsuite
Version:
A suite of react components
37 lines • 1.24 kB
JavaScript
'use client';
import { useMemo } from 'react';
import { useEventCallback } from "../../internals/hooks/index.js";
import { addMonths } from "../../internals/utils/date/index.js";
export function useCalendarHandlers({
index,
calendarDateRange,
onChangeCalendarMonth,
onChangeCalendarTime,
onSelect
}) {
const calendarDate = useMemo(() => calendarDateRange[index], [calendarDateRange, index]);
const handleSelect = useEventCallback((date, event) => {
onSelect?.(index, date, event);
});
const handleChangeMonth = useEventCallback(nextPageDate => {
onChangeCalendarMonth?.(index, nextPageDate);
});
const handleChangeTime = useEventCallback(nextPageDate => {
onChangeCalendarTime?.(index, nextPageDate);
});
const handleMoveForward = useEventCallback(() => {
onChangeCalendarMonth?.(index, addMonths(calendarDate, 1));
});
const handleMoveBackward = useEventCallback(() => {
onChangeCalendarMonth?.(index, addMonths(calendarDate, -1));
});
return {
calendarDate,
onSelect: handleSelect,
onChangeMonth: handleChangeMonth,
onChangeTime: handleChangeTime,
onMoveForward: handleMoveForward,
onMoveBackward: handleMoveBackward
};
}
export default useCalendarHandlers;