UNPKG

rsuite

Version:

A suite of react components

60 lines (59 loc) 2.07 kB
'use client'; "use strict"; exports.__esModule = true; exports.useCalendarState = exports.CalendarState = void 0; var _react = require("react"); var _date = require("../../internals/utils/date"); var _hooks = require("../../internals/hooks"); let CalendarState = exports.CalendarState = /*#__PURE__*/function (CalendarState) { CalendarState["TIME"] = "TIME"; CalendarState["MONTH"] = "MONTH"; return CalendarState; }({}); const useCalendarState = props => { const [calendarState, setCalendarState] = (0, _react.useState)(props.defaultState); const reset = (0, _hooks.useEventCallback)(() => { setCalendarState(undefined); if (calendarState === CalendarState.TIME) { props.onToggleTimeDropdown?.(false); } else if (calendarState === CalendarState.MONTH) { props.onToggleMonthDropdown?.(false); } }); const onMoveForward = (0, _hooks.useEventCallback)(() => { props.onMoveForward?.((0, _date.addMonths)(props.calendarDate, 1)); }); const onMoveBackward = (0, _hooks.useEventCallback)(() => { props.onMoveBackward?.((0, _date.addMonths)(props.calendarDate, -1)); }); const onToggleTimeDropdown = (0, _hooks.useEventCallback)(() => { if (calendarState === CalendarState.TIME) { setCalendarState(undefined); } else { setCalendarState(CalendarState.TIME); } props.onToggleTimeDropdown?.(calendarState !== CalendarState.TIME); }); const onToggleMonthDropdown = (0, _hooks.useEventCallback)(() => { if (calendarState === CalendarState.MONTH) { setCalendarState(undefined); } else { setCalendarState(CalendarState.MONTH); } props.onToggleMonthDropdown?.(calendarState !== CalendarState.MONTH); }); const handlers = (0, _react.useMemo)(() => { return { onMoveForward, onMoveBackward, onToggleTimeDropdown, onToggleMonthDropdown }; }, [onMoveBackward, onMoveForward, onToggleMonthDropdown, onToggleTimeDropdown]); return { calendarState, handlers, reset }; }; exports.useCalendarState = useCalendarState;