UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

119 lines (97 loc) 4.7 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.makeDateRangePicker = makeDateRangePicker; exports.useDateRangeValidation = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _useUtils = require("../internal/pickers/hooks/useUtils"); var _withDefaultProps = require("../internal/pickers/withDefaultProps"); var _dateHelpersHooks = require("../internal/pickers/hooks/date-helpers-hooks"); var _withDateAdapterProp = require("../internal/pickers/withDateAdapterProp"); var _makeWrapperComponent = require("../internal/pickers/wrappers/makeWrapperComponent"); var _propTypes = require("../internal/pickers/constants/prop-types"); var _useValidation = require("../internal/pickers/hooks/useValidation"); var _usePickerState = require("../internal/pickers/hooks/usePickerState"); var _DateRangePickerView = require("./DateRangePickerView"); var _DateRangePickerInput = _interopRequireDefault(require("./DateRangePickerInput")); var _dateUtils = require("../internal/pickers/date-utils"); const useDateRangeValidation = (0, _useValidation.makeValidationHook)(_dateUtils.validateDateRange, { defaultValidationError: [null, null], isSameError: (a, b) => a[1] === b[1] && a[0] === b[0] }); exports.useDateRangeValidation = useDateRangeValidation; function makeDateRangePicker(name, Wrapper) { const WrapperComponent = (0, _makeWrapperComponent.makeWrapperComponent)(Wrapper, { KeyboardDateInputComponent: _DateRangePickerInput.default, PureDateInputComponent: _DateRangePickerInput.default }); const rangePickerValueManager = { emptyValue: [null, null], parseInput: _dateUtils.parseRangeInputValue, areValuesEqual: (utils, a, b) => utils.isEqual(a[0], b[0]) && utils.isEqual(a[1], b[1]) }; function RangePickerWithStateAndWrapper(_ref) { let { calendars, value, onChange, mask = '__/__/____', startText = 'Start', endText = 'End', inputFormat: passedInputFormat, minDate: __minDate = _propTypes.defaultMinDate, maxDate: __maxDate = _propTypes.defaultMaxDate } = _ref, other = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["calendars", "value", "onChange", "mask", "startText", "endText", "inputFormat", "minDate", "maxDate"]); const utils = (0, _useUtils.useUtils)(); const minDate = (0, _dateHelpersHooks.useParsedDate)(__minDate); const maxDate = (0, _dateHelpersHooks.useParsedDate)(__maxDate); const [currentlySelectingRangeEnd, setCurrentlySelectingRangeEnd] = React.useState('start'); const pickerStateProps = (0, _extends2.default)({}, other, { value, onChange, inputFormat: passedInputFormat || utils.formats.keyboardDate }); const restProps = (0, _extends2.default)({}, other, { minDate, maxDate }); const { pickerProps, inputProps, wrapperProps } = (0, _usePickerState.usePickerState)(pickerStateProps, rangePickerValueManager); const validationError = useDateRangeValidation(value, restProps); const DateInputProps = (0, _extends2.default)({}, inputProps, restProps, { currentlySelectingRangeEnd, setCurrentlySelectingRangeEnd, startText, endText, mask, validationError }); return /*#__PURE__*/React.createElement(WrapperComponent, (0, _extends2.default)({ wrapperProps: wrapperProps, DateInputProps: DateInputProps }, restProps), /*#__PURE__*/React.createElement(_DateRangePickerView.DateRangePickerView, (0, _extends2.default)({ open: wrapperProps.open, DateInputProps: DateInputProps, calendars: calendars, currentlySelectingRangeEnd: currentlySelectingRangeEnd, setCurrentlySelectingRangeEnd: setCurrentlySelectingRangeEnd, startText: startText, endText: endText }, pickerProps, restProps))); } const FinalPickerComponent = (0, _withDefaultProps.withDefaultProps)({ name }, (0, _withDateAdapterProp.withDateAdapterProp)(RangePickerWithStateAndWrapper)); // @ts-expect-error Impossible to save component generics when wrapping with HOC return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(FinalPickerComponent, (0, _extends2.default)({}, props, { forwardedRef: ref }))); }