UNPKG

@material-ui/lab

Version:

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

85 lines (65 loc) 3.26 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.makePickerWithStateAndWrapper = makePickerWithStateAndWrapper; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _Picker = _interopRequireDefault(require("./Picker")); var _dateUtils = require("../date-utils"); var _withDefaultProps = require("../withDefaultProps"); var _KeyboardDateInput = require("../KeyboardDateInput"); var _withDateAdapterProp = require("../withDateAdapterProp"); var _makeWrapperComponent = require("../wrappers/makeWrapperComponent"); var _PureDateInput = require("../PureDateInput"); var _usePickerState = require("../hooks/usePickerState"); const valueManager = { emptyValue: null, parseInput: _dateUtils.parsePickerInputValue, areValuesEqual: (utils, a, b) => utils.isEqual(a, b) }; function makePickerWithStateAndWrapper(Wrapper, { name, useInterceptProps, useValidation, DefaultToolbarComponent }) { const WrapperComponent = (0, _makeWrapperComponent.makeWrapperComponent)(Wrapper, { KeyboardDateInputComponent: _KeyboardDateInput.KeyboardDateInput, PureDateInputComponent: _PureDateInput.PureDateInput }); function PickerWithState(__props) { const allProps = useInterceptProps(__props); const validationError = useValidation(allProps.value, allProps) !== null; const { pickerProps, inputProps, wrapperProps } = (0, _usePickerState.usePickerState)(allProps, valueManager); // Note that we are passing down all the value without spread. // It saves us >1kb gzip and make any prop available automatically on any level down. const other = (0, _objectWithoutPropertiesLoose2.default)(allProps, ["value", "onChange"]); const AllDateInputProps = (0, _extends2.default)({}, inputProps, other, { validationError }); return /*#__PURE__*/React.createElement(WrapperComponent, (0, _extends2.default)({ wrapperProps: wrapperProps, DateInputProps: AllDateInputProps }, other), /*#__PURE__*/React.createElement(_Picker.default, (0, _extends2.default)({}, pickerProps, { toolbarTitle: allProps.label || allProps.toolbarTitle, ToolbarComponent: other.ToolbarComponent || DefaultToolbarComponent, DateInputProps: AllDateInputProps }, other))); } const FinalPickerComponent = (0, _withDefaultProps.withDefaultProps)({ name }, (0, _withDateAdapterProp.withDateAdapterProp)(PickerWithState)); // tslint:disable-next-line // @ts-ignore Simply ignore generic values in props, because it is impossible // to keep generics without additional cast when using forwardRef // @see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35834 return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(FinalPickerComponent, (0, _extends2.default)({}, props, { forwardedRef: ref }))); }