UNPKG

rsuite

Version:

A suite of react components

673 lines (570 loc) 27.6 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _omit = _interopRequireDefault(require("lodash/omit")); var _partial = _interopRequireDefault(require("lodash/partial")); var _pick = _interopRequireDefault(require("lodash/pick")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _CustomProvider = require("../CustomProvider"); var _Toolbar = _interopRequireDefault(require("../DatePicker/Toolbar")); var _Picker = require("../Picker"); var _utils = require("../utils"); var _dateUtils = require("../utils/dateUtils"); var _Calendar2 = _interopRequireDefault(require("./Calendar")); var disabledDateUtils = _interopRequireWildcard(require("./disabledDateUtils")); var _utils2 = require("./utils"); var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) { var _ref, _ref2, _merge; var _props$as = props.as, Component = _props$as === void 0 ? 'div' : _props$as, _props$classPrefix = props.classPrefix, classPrefix = _props$classPrefix === void 0 ? 'picker' : _props$classPrefix, className = props.className, _props$appearance = props.appearance, appearance = _props$appearance === void 0 ? 'default' : _props$appearance, _props$cleanable = props.cleanable, cleanable = _props$cleanable === void 0 ? true : _props$cleanable, _props$character = props.character, character = _props$character === void 0 ? ' ~ ' : _props$character, defaultCalendarValue = props.defaultCalendarValue, defaultValue = props.defaultValue, disabled = props.disabled, disabledDateProp = props.disabledDate, _props$format = props.format, formatStr = _props$format === void 0 ? 'yyyy-MM-dd' : _props$format, hoverRange = props.hoverRange, _props$isoWeek = props.isoWeek, isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek, _props$limitEndYear = props.limitEndYear, limitEndYear = _props$limitEndYear === void 0 ? 1000 : _props$limitEndYear, overrideLocale = props.locale, menuClassName = props.menuClassName, menuStyle = props.menuStyle, oneTap = props.oneTap, _props$placeholder = props.placeholder, placeholder = _props$placeholder === void 0 ? '' : _props$placeholder, _props$placement = props.placement, placement = _props$placement === void 0 ? 'bottomStart' : _props$placement, ranges = props.ranges, renderValue = props.renderValue, _props$showOneCalenda = props.showOneCalendar, showOneCalendar = _props$showOneCalenda === void 0 ? false : _props$showOneCalenda, showWeekNumbers = props.showWeekNumbers, showMeridian = props.showMeridian, style = props.style, toggleAs = props.toggleAs, caretAs = props.caretAs, valueProp = props.value, onChange = props.onChange, onClean = props.onClean, onClose = props.onClose, onEnter = props.onEnter, onEntered = props.onEntered, onExited = props.onExited, onOk = props.onOk, onOpen = props.onOpen, onSelect = props.onSelect, renderTitle = props.renderTitle, rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect", "renderTitle"]); var _useClassNames = (0, _utils.useClassNames)(classPrefix), merge = _useClassNames.merge, prefix = _useClassNames.prefix; var _useCustom = (0, _utils.useCustom)('DateRangePicker', overrideLocale), locale = _useCustom.locale, formatDate = _useCustom.formatDate, parseDate = _useCustom.parseDate; var rangeFormatStr = "" + formatStr + character + formatStr; var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null), value = _useControlled[0], setValue = _useControlled[1]; /** * Whether to complete the selection. * Everytime selection will change this value. If the value is false, it means that the selection has not been completed. * * In `oneTap` mode, select action will not change this value, its value should be true always. */ var hasDoneSelect = (0, _react.useRef)(true); /** * The currently selected date range. * * The time range is selected by two clicks. After the first click, * the cursor will store a temporary event date in the process until * the second click to determine the end date of the date range. * */ var _useState = (0, _react.useState)((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []), selectedDates = _useState[0], setSelectedDates = _useState[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove` var _useState2 = (0, _react.useState)(null), hoverDateRange = _useState2[0], setHoverDateRange = _useState2[1]; // The displayed calendar panel is rendered based on this value. var _useState3 = (0, _react.useState)((0, _utils2.getCalendarDate)({ value: (_ref2 = valueProp !== null && valueProp !== void 0 ? valueProp : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null })), calendarDate = _useState3[0], setCalendarDate = _useState3[1]; var _useState4 = (0, _react.useState)(), inputState = _useState4[0], setInputState = _useState4[1]; /** * When hoverRange is set, `selectValue` will be updated during the hover process, * which will cause the `selectValue` to be updated after the first click, * so declare a Ref to temporarily store the `selectValue` of the first click. */ var selectRangeValueRef = (0, _react.useRef)(null); /** * Call this function to update the calendar panel rendering benchmark value. * If params `value` is not passed, it defaults to [new Date(), addMonth(new Date(), 1)]. */ var updateCalendarDate = (0, _react.useCallback)(function (value) { setCalendarDate((0, _utils2.getCalendarDate)({ value: value })); }, []); // if valueProp changed then update selectValue/hoverValue (0, _react.useEffect)(function () { setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []); setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null); }, [valueProp]); var _useState5 = (0, _react.useState)(false), isPickerToggleActive = _useState5[0], setPickerToggleActive = _useState5[1]; var rootRef = (0, _react.useRef)(null); var overlayRef = (0, _react.useRef)(null); var targetRef = (0, _react.useRef)(null); var triggerRef = (0, _react.useRef)(null); var handleCloseDropdown = (0, _react.useCallback)(function () { var _triggerRef$current, _triggerRef$current$c; (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current); }, []); (0, _Picker.usePublicMethods)(ref, { triggerRef: triggerRef, overlayRef: overlayRef, targetRef: targetRef, rootRef: rootRef }); var getDisplayString = (0, _react.useCallback)(function (nextValue, isPlaintext) { var _nextValue$, _nextValue$2; var startDate = (_nextValue$ = nextValue === null || nextValue === void 0 ? void 0 : nextValue[0]) !== null && _nextValue$ !== void 0 ? _nextValue$ : null; var endDate = (_nextValue$2 = nextValue === null || nextValue === void 0 ? void 0 : nextValue[1]) !== null && _nextValue$2 !== void 0 ? _nextValue$2 : null; if (startDate && endDate) { var displayValue = [startDate, endDate].sort(_dateUtils.compareAsc); if (isPlaintext) { return formatDate(displayValue[0], formatStr) + character + formatDate(displayValue[1], formatStr); } return renderValue ? renderValue(displayValue, formatStr) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, { date: displayValue[0], formatStr: formatStr }), character, /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, { date: displayValue[1], formatStr: formatStr })); } return isPlaintext ? '' : placeholder || rangeFormatStr; }, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue]); /** * preset hover range */ var getHoverRangeValue = (0, _react.useCallback)(function (date) { function getHoverRangeFunc() { if (hoverRange === 'week') { return (0, _partial.default)(_utils2.getWeekHoverRange, isoWeek); } else if (hoverRange === 'month') { return _utils2.getMonthHoverRange; } return hoverRange; } var hoverRangeFunc = getHoverRangeFunc(); if ((0, _isNil.default)(hoverRangeFunc)) { return null; } var hoverValues = hoverRangeFunc(date); var isHoverRangeValid = hoverValues instanceof Array && hoverValues.length === 2; if (!isHoverRangeValid) { return null; } if (_utils.DateUtils.isAfter(hoverValues[0], hoverValues[1])) { hoverValues.reverse(); } return hoverValues; }, [hoverRange, isoWeek]); var handleValueUpdate = (0, _react.useCallback)(function (event, nextValue, closeOverlay) { if (closeOverlay === void 0) { closeOverlay = true; } // If nextValue is null, it means that the user is erasing the selected dates. setSelectedDates(nextValue !== null && nextValue !== void 0 ? nextValue : []); if (!(0, _utils2.isSameRange)(nextValue, value, formatStr)) { setValue(nextValue); onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event); } // `closeOverlay` default value is `true` if (closeOverlay !== false) { handleCloseDropdown(); } }, [formatStr, handleCloseDropdown, onChange, setValue, value]); /** * Select the date range. If oneTap is not set, you need to click twice to select the start time and end time. * The MouseMove event is called between the first click and the second click to update the selection state. */ var handleMouseMove = (0, _react.useCallback)(function (date) { var nextHoverDateRange = getHoverRangeValue(date); // If hasDoneSelect is false, // it means there's already one selected date // and waiting for user to select the second date to complete the selection. if (!hasDoneSelect.current) { // If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules if (!(0, _isNil.default)(nextHoverDateRange) && !(0, _isNil.default)(selectRangeValueRef.current)) { var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]]; if (_utils.DateUtils.isBefore(nextHoverDateRange[0], selectRangeValueRef.current[0])) { nextSelectedDates = [nextHoverDateRange[0], selectRangeValueRef.current[1]]; } setSelectedDates(nextSelectedDates); } else { setHoverDateRange(function (prevHoverValue) { return (0, _isNil.default)(prevHoverValue) ? null : [prevHoverValue[0], date]; }); } // Before the first click, if nextHoverDateRange has a value, hoverDateRange needs to be updated } else if (!(0, _isNil.default)(nextHoverDateRange)) { setHoverDateRange(nextHoverDateRange); } }, [getHoverRangeValue]); /** * Callback for selecting a date cell in the calendar grid */ var handleSelectDate = (0, _react.useCallback)(function (date, event) { var nextSelectDates = hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : []; var hoverRangeValue = getHoverRangeValue(date); var noHoverRangeValid = (0, _isNil.default)(hoverRangeValue); // in `oneTap` mode if (hasDoneSelect.current && oneTap) { handleValueUpdate(event, noHoverRangeValid ? [(0, _utils2.setTimingMargin)(date), (0, _utils2.setTimingMargin)(date, 'right')] : hoverRangeValue); hasDoneSelect.current = false; return; } // no preset hover range can use if (noHoverRangeValid) { // start select if (hasDoneSelect.current) { nextSelectDates = [date]; } else { // finish select nextSelectDates[1] = date; } } else { if (!hasDoneSelect.current) { nextSelectDates = selectedDates; selectRangeValueRef.current = null; } else { nextSelectDates = hoverRangeValue; selectRangeValueRef.current = hoverRangeValue; } } // If user have completed the selection, then sort if (nextSelectDates.length === 2 && _utils.DateUtils.isAfter(nextSelectDates[0], nextSelectDates[1])) { nextSelectDates.reverse(); } setHoverDateRange(nextSelectDates.length === 2 ? nextSelectDates : [nextSelectDates[0], nextSelectDates[0]]); setSelectedDates(nextSelectDates); updateCalendarDate(nextSelectDates); onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event); hasDoneSelect.current = !hasDoneSelect.current; }, [getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDate]); /** * If `selectValue` changed, there will be the following effects. * 1. Check if the selection is completed. * 2. if the selection is completed, set the temporary `hoverValue` empty. */ (0, _react.useEffect)(function () { var selectValueLength = selectedDates.length; var doneSelected = selectValueLength === 0 || selectValueLength === 2; doneSelected && setHoverDateRange(null); }, [selectedDates]); var handleChangeCalendarDate = (0, _react.useCallback)(function (index, date) { var nextCalendarDate = Array.from(calendarDate); nextCalendarDate[index] = date; updateCalendarDate(nextCalendarDate); }, [calendarDate, updateCalendarDate]); var handleChangeCalendarTime = (0, _react.useCallback)(function (index, date) { setSelectedDates(function (prev) { var next = [].concat(prev); var clonedDate = new Date(date.valueOf()); // if next[index] is not empty, only update the time after aligning the year, month and day if (next[index]) { clonedDate.setFullYear(next[index].getFullYear(), next[index].getMonth(), next[index].getDate()); } next[index] = clonedDate; return next; }); handleChangeCalendarDate(index, date); }, [handleChangeCalendarDate]); /** * The callback triggered when PM/AM is switched. */ var handleToggleMeridian = (0, _react.useCallback)(function (index) { var next = Array.from(calendarDate); var clonedDate = new Date(next[index].valueOf()); var hours = _utils.DateUtils.getHours(clonedDate); var nextHours = hours >= 12 ? hours - 12 : hours + 12; next[index] = _utils.DateUtils.setHours(clonedDate, nextHours); setCalendarDate(next); // If the value already exists, update the value again. if (selectedDates.length === 2) { setSelectedDates(next); } }, [calendarDate, selectedDates]); /** * Toolbar operation callback function */ var handleShortcutPageDate = (0, _react.useCallback)(function (value, closeOverlay, event) { if (closeOverlay === void 0) { closeOverlay = false; } handleValueUpdate(event, value, closeOverlay); // End unfinished selections. hasDoneSelect.current = true; }, [handleValueUpdate]); var handleOK = (0, _react.useCallback)(function (event) { handleValueUpdate(event, selectedDates); onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event); }, [handleValueUpdate, onOk, selectedDates]); var handleClean = (0, _react.useCallback)(function (event) { updateCalendarDate(null); handleValueUpdate(event, null); }, [handleValueUpdate, updateCalendarDate]); /** * Callback after the input box value is changed. */ var handleInputChange = (0, _react.useCallback)(function (value) { setInputState('Typing'); var rangeValue = value.split(character); // isMatch('01/11/2020', 'MM/dd/yyyy') ==> true // isMatch('2020-11-01', 'MM/dd/yyyy') ==> false if (!_utils.DateUtils.isMatch(rangeValue[0], formatStr, { locale: locale.dateLocale }) || !_utils.DateUtils.isMatch(rangeValue[1], formatStr, { locale: locale.dateLocale })) { setInputState('Error'); return; } var startDate = parseDate(rangeValue[0], formatStr); var endDate = parseDate(rangeValue[1], formatStr); var selectValue = [startDate, endDate]; if (!_utils.DateUtils.isValid(startDate) || !_utils.DateUtils.isValid(endDate)) { setInputState('Error'); return; } if (isDateDisabled(startDate, selectValue, true, _utils.DATERANGE_DISABLED_TARGET.CALENDAR)) { setInputState('Error'); return; } setHoverDateRange(selectValue); setSelectedDates(selectValue); updateCalendarDate(selectValue); }, // eslint-disable-next-line react-hooks/exhaustive-deps [character, rangeFormatStr, updateCalendarDate]); /** * The callback after the enter key is triggered on the input */ var handleInputPressEnd = (0, _react.useCallback)(function (event) { if (inputState === 'Typing') { handleValueUpdate(event, selectedDates.length === 2 ? selectedDates : null); } setInputState('Initial'); }, [handleValueUpdate, selectedDates, inputState]); var handleEnter = (0, _react.useCallback)(function () { var nextCalendarDate; if (value && value.length) { var _startDate = value[0], endData = value[1]; nextCalendarDate = [_startDate, (0, _dateUtils.isSameMonth)(_startDate, endData) ? (0, _dateUtils.addMonths)(endData, 1) : endData]; } else { nextCalendarDate = (0, _utils2.getCalendarDate)({ value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null }); } setSelectedDates(value !== null && value !== void 0 ? value : []); updateCalendarDate(nextCalendarDate); }, [defaultCalendarValue, updateCalendarDate, setSelectedDates, value]); var handleEntered = (0, _react.useCallback)(function () { onOpen === null || onOpen === void 0 ? void 0 : onOpen(); setPickerToggleActive(true); }, [onOpen]); var handleExited = (0, _react.useCallback)(function () { setPickerToggleActive(false); hasDoneSelect.current = true; onClose === null || onClose === void 0 ? void 0 : onClose(); }, [onClose]); var isDateDisabled = (0, _react.useCallback)(function (date, selectDate, selectedDone, target) { var _disabledDateProp; return (_disabledDateProp = disabledDateProp === null || disabledDateProp === void 0 ? void 0 : disabledDateProp(date, selectDate, selectedDone, target)) !== null && _disabledDateProp !== void 0 ? _disabledDateProp : false; }, [disabledDateProp]); var disabledByBetween = (0, _react.useCallback)(function (start, end, type) { // If the date is between the start and the end // the button is disabled while (_utils.DateUtils.isBefore(start, end) || _utils.DateUtils.isSameDay(start, end)) { if (isDateDisabled(start, selectedDates, hasDoneSelect.current, type)) { return true; } start = _utils.DateUtils.addDays(start, 1); } return false; }, [isDateDisabled, selectedDates]); var disabledOkButton = (0, _react.useCallback)(function () { var start = selectedDates[0], end = selectedDates[1]; if (!start || !end || !hasDoneSelect.current) { return true; } return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK); }, [disabledByBetween, selectedDates]); var disabledShortcutButton = (0, _react.useCallback)(function (value) { if (value === void 0) { value = []; } var _value = value, start = _value[0], end = _value[1]; if (!start || !end) { return true; } return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT); }, [disabledByBetween]); var handleDisabledDate = (0, _react.useCallback)(function (date, values, type) { return isDateDisabled(date, values, hasDoneSelect.current, type); }, [isDateDisabled]); var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({ triggerRef: triggerRef, targetRef: targetRef, active: isPickerToggleActive, onExit: handleClean }, rest)); var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) { var left = positionProps.left, top = positionProps.top, className = positionProps.className; var classes = merge(className, menuClassName, prefix('daterange-menu')); var panelClasses = prefix('daterange-panel', { 'daterange-panel-show-one-calendar': showOneCalendar }); var styles = (0, _extends2.default)({}, menuStyle, { left: left, top: top }); var panelProps = { calendarDate: calendarDate, disabledDate: handleDisabledDate, format: formatStr, hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined, isoWeek: isoWeek, limitEndYear: limitEndYear, locale: locale, showOneCalendar: showOneCalendar, showWeekNumbers: showWeekNumbers, value: selectedDates, showMeridian: showMeridian, onChangeCalendarDate: handleChangeCalendarDate, onChangeCalendarTime: handleChangeCalendarTime, onMouseMove: handleMouseMove, onSelect: handleSelectDate, onToggleMeridian: handleToggleMeridian, renderTitle: renderTitle }; return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, { className: classes, ref: (0, _utils.mergeRefs)(overlayRef, speakerRef), target: triggerRef, style: styles }, /*#__PURE__*/_react.default.createElement("div", { className: panelClasses }, /*#__PURE__*/_react.default.createElement("div", { className: prefix('daterange-content') }, /*#__PURE__*/_react.default.createElement("div", { className: prefix('daterange-header') }, getDisplayString(selectedDates)), /*#__PURE__*/_react.default.createElement("div", { className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group')) }, /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({ index: 0 }, panelProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({ index: 1 }, panelProps)))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, { locale: locale, calendarDate: selectedDates, disabledOkBtn: disabledOkButton, disabledShortcut: disabledShortcutButton, hideOkBtn: oneTap, onOk: handleOK, onClickShortcut: handleShortcutPageDate, ranges: ranges }))); }; var hasValue = !(0, _isNil.default)(value) && value.length > 1; var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends2.default)({}, props, { classPrefix: classPrefix, name: 'daterange', appearance: appearance, hasValue: hasValue, cleanable: cleanable })), classes = _usePickerClassName[0], usedClassNamePropKeys = _usePickerClassName[1]; return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, { pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys), ref: triggerRef, placement: placement, onEnter: (0, _utils.createChainedFunction)(handleEnter, onEnter), onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered), onExited: (0, _utils.createChainedFunction)(handleExited, onExited), speaker: renderDropdownMenu }, /*#__PURE__*/_react.default.createElement(Component, { ref: rootRef, className: merge(className, classes, (_merge = {}, _merge[prefix('error')] = inputState === 'Error', _merge)), style: style }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _utils.DateUtils.calendarOnlyProps)), { as: toggleAs, ref: targetRef, appearance: appearance, input: true, inputMask: _utils.DateUtils.getDateMask(rangeFormatStr), inputValue: value ? getDisplayString(value, true) : '', inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : rangeFormatStr, onInputChange: handleInputChange, onInputBlur: handleInputPressEnd, onInputPressEnter: handleInputPressEnd, onKeyDown: onPickerKeyDown, onClean: (0, _utils.createChainedFunction)(handleClean, onClean), cleanable: cleanable && !disabled, hasValue: hasValue, active: isPickerToggleActive, placement: placement, disabled: disabled, caretAs: caretAs || _Calendar.default }), getDisplayString(value)))); }); DateRangePicker.after = disabledDateUtils.after; DateRangePicker.afterToday = disabledDateUtils.afterToday; DateRangePicker.allowedDays = disabledDateUtils.allowedDays; DateRangePicker.allowedMaxDays = disabledDateUtils.allowedMaxDays; DateRangePicker.allowedRange = disabledDateUtils.allowedRange; DateRangePicker.before = disabledDateUtils.before; DateRangePicker.beforeToday = disabledDateUtils.beforeToday; DateRangePicker.combine = disabledDateUtils.combine; DateRangePicker.displayName = 'DateRangePicker'; DateRangePicker.propTypes = (0, _extends2.default)({}, _Picker.pickerPropTypes, { ranges: _propTypes.default.array, value: _propTypes.default.arrayOf(_propTypes.default.instanceOf(Date)), defaultValue: _propTypes.default.arrayOf(_propTypes.default.instanceOf(Date)), defaultCalendarValue: _propTypes.default.arrayOf(_propTypes.default.instanceOf(Date)), hoverRange: _propTypes.default.oneOfType([_propTypes.default.oneOf(['week', 'month']), _propTypes.default.func]), format: _propTypes.default.string, isoWeek: _propTypes.default.bool, oneTap: _propTypes.default.bool, limitEndYear: _propTypes.default.number, onChange: _propTypes.default.func, onOk: _propTypes.default.func, disabledDate: _propTypes.default.func, onSelect: _propTypes.default.func, showWeekNumbers: _propTypes.default.bool, showMeridian: _propTypes.default.bool, showOneCalendar: _propTypes.default.bool }); var _default = DateRangePicker; exports.default = _default;