UNPKG

rsuite

Version:

A suite of react components

92 lines (91 loc) 4.68 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; import PropTypes from 'prop-types'; import React, { useCallback } from 'react'; import { addMonths, isSameMonth } from '../utils/dateUtils'; import CalendarCore from '../Calendar/CalendarContainer'; import { DATERANGE_DISABLED_TARGET } from '../utils'; var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) { var _props$as = props.as, Component = _props$as === void 0 ? CalendarCore : _props$as, _props$calendarDate = props.calendarDate, calendarDate = _props$calendarDate === void 0 ? [new Date(), addMonths(new Date(), 1)] : _props$calendarDate, _props$format = props.format, format = _props$format === void 0 ? 'yyyy-MM-dd' : _props$format, disabledDate = props.disabledDate, _props$index = props.index, index = _props$index === void 0 ? 0 : _props$index, limitEndYear = props.limitEndYear, onChangeCalendarMonth = props.onChangeCalendarMonth, onChangeCalendarTime = props.onChangeCalendarTime, onToggleMeridian = props.onToggleMeridian, onSelect = props.onSelect, _props$value = props.value, value = _props$value === void 0 ? [] : _props$value, rest = _objectWithoutPropertiesLoose(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarMonth", "onChangeCalendarTime", "onToggleMeridian", "onSelect", "value"]); var onMoveForward = useCallback(function (nextPageDate) { onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate); }, [index, onChangeCalendarMonth]); var onMoveBackward = useCallback(function (nextPageDate) { onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate); }, [index, onChangeCalendarMonth]); var handleSelect = useCallback(function (date, event) { onSelect === null || onSelect === void 0 ? void 0 : onSelect(index, date, event); }, [index, onSelect]); var handleChangeMonth = useCallback(function (nextPageDate) { onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate); }, [index, onChangeCalendarMonth]); var handleChangeTime = useCallback(function (nextPageDate) { onChangeCalendarTime === null || onChangeCalendarTime === void 0 ? void 0 : onChangeCalendarTime(index, nextPageDate); }, [index, onChangeCalendarTime]); var handleToggleMeridian = useCallback(function (event) { onToggleMeridian(index, event); }, [index, onToggleMeridian]); var inSameMonth = useCallback(function (date) { return isSameMonth(date, calendarDate[index]); }, [calendarDate, index]); var getCalendarDate = useCallback(function () { return calendarDate[index]; }, [calendarDate, index]); var handleMoveForward = useCallback(function () { onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward(addMonths(getCalendarDate(), 1)); }, [getCalendarDate, onMoveForward]); var handleMoveBackward = useCallback(function () { onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward(addMonths(getCalendarDate(), -1)); }, [getCalendarDate, onMoveBackward]); var disabledMonth = useCallback(function (date) { return disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date, value, DATERANGE_DISABLED_TARGET.CALENDAR); }, [disabledDate, value]); return /*#__PURE__*/React.createElement(Component, _extends({}, rest, { format: format, dateRange: value, disabledDate: disabledMonth, inSameMonth: inSameMonth, index: index, limitEndYear: limitEndYear, onChangeMonth: handleChangeMonth, onChangeTime: handleChangeTime, onMoveBackward: handleMoveBackward, onMoveForward: handleMoveForward, onToggleMeridian: handleToggleMeridian, onSelect: handleSelect, calendarDate: getCalendarDate(), ref: ref })); }); Calendar.displayName = 'DateRangePicker.Calendar'; Calendar.propTypes = { value: PropTypes.arrayOf(PropTypes.instanceOf(Date)), hoverValue: PropTypes.arrayOf(PropTypes.instanceOf(Date)), calendarDate: PropTypes.arrayOf(PropTypes.instanceOf(Date)), index: PropTypes.number, format: PropTypes.string, isoWeek: PropTypes.bool, limitEndYear: PropTypes.number, classPrefix: PropTypes.string, disabledDate: PropTypes.func, onSelect: PropTypes.func, onMouseMove: PropTypes.func, onChangeCalendarMonth: PropTypes.func }; export default Calendar;