UNPKG

material-ui-pickers-fork

Version:

React components, that implements material design pickers for material-ui v1

248 lines (198 loc) 7.06 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _keycode = _interopRequireDefault(require("keycode")); var _ModalDialog = _interopRequireDefault(require("../_shared/ModalDialog")); var _DateTextField = _interopRequireDefault(require("../_shared/DateTextField")); var _propTypes2 = _interopRequireDefault(require("../constants/prop-types")); var ModalWrapper = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(ModalWrapper, _PureComponent); function ModalWrapper() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _PureComponent.call.apply(_PureComponent, [this].concat(args)) || this; _this.state = { open: false }; _this.handleKeyDown = function (event) { switch ((0, _keycode.default)(event)) { case 'enter': _this.handleAccept(); break; default: // if keycode is not handled, stop execution return; } // if event was handled prevent other side effects event.preventDefault(); }; _this.handleSetTodayDate = function () { if (_this.props.onSetToday) { _this.props.onSetToday(); } }; _this.open = function () { _this.setState({ open: true }); if (_this.props.onOpen) { _this.props.onOpen(); } }; _this.close = function () { _this.setState({ open: false }); if (_this.props.onClose) { _this.props.onClose(); } }; _this.handleAccept = function () { _this.close(); if (_this.props.onAccept) { _this.props.onAccept(); } }; _this.handleDismiss = function () { _this.close(); if (_this.props.onDismiss) { _this.props.onDismiss(); } }; _this.handleClear = function () { _this.close(); if (_this.props.onClear) { _this.props.onClear(); } }; return _this; } ModalWrapper.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) { // only if accept = true close the dialog if (nextProps.isAccepted) { return { open: false }; } return null; }; var _proto = ModalWrapper.prototype; _proto.render = function render() { var _this$props = this.props, value = _this$props.value, format = _this$props.format, children = _this$props.children, dialogContentClassName = _this$props.dialogContentClassName, onAccept = _this$props.onAccept, onDismiss = _this$props.onDismiss, invalidLabel = _this$props.invalidLabel, labelFunc = _this$props.labelFunc, okLabel = _this$props.okLabel, cancelLabel = _this$props.cancelLabel, clearLabel = _this$props.clearLabel, clearable = _this$props.clearable, todayLabel = _this$props.todayLabel, showTodayButton = _this$props.showTodayButton, onOpen = _this$props.onOpen, onClose = _this$props.onClose, onSetToday = _this$props.onSetToday, isAccepted = _this$props.isAccepted, container = _this$props.container, other = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["value", "format", "children", "dialogContentClassName", "onAccept", "onDismiss", "invalidLabel", "labelFunc", "okLabel", "cancelLabel", "clearLabel", "clearable", "todayLabel", "showTodayButton", "onOpen", "onClose", "onSetToday", "isAccepted", "container"]); return _react.default.createElement(_react.Fragment, null, _react.default.createElement(_DateTextField.default, (0, _extends2.default)({ value: value, format: format, onClick: this.open // onFocus={this.togglePicker} <- Currently not properly works with .blur() on TextField , invalidLabel: invalidLabel, labelFunc: labelFunc, clearable: clearable }, other)), _react.default.createElement(_ModalDialog.default, { open: this.state.open, onKeyDown: this.handleKeyDown, onClear: this.handleClear, onAccept: this.handleAccept, onDismiss: this.handleDismiss, onSetToday: this.handleSetTodayDate, dialogContentClassName: dialogContentClassName, clearLabel: clearLabel, todayLabel: todayLabel, okLabel: okLabel, cancelLabel: cancelLabel, clearable: clearable, showTodayButton: showTodayButton, container: container }, children)); }; return ModalWrapper; }(_react.PureComponent); exports.default = ModalWrapper; ModalWrapper.propTypes = { /** Picker value */ value: _propTypes2.default.date, /** Format string */ invalidLabel: _propTypes.default.node, /** Function for dynamic rendering label (date, invalidLabel) => string */ labelFunc: _propTypes.default.func, /** "OK" label message */ okLabel: _propTypes.default.node, /** "Cancel" label message */ cancelLabel: _propTypes.default.node, /** "Clear" label message */ clearLabel: _propTypes.default.node, /** If true clear button will be displayed */ clearable: _propTypes.default.bool, /** "Today" label message */ todayLabel: _propTypes.default.string, /** * If true today button will be displayed * <b>Note*</b> that clear button has higher priority */ showTodayButton: _propTypes.default.bool, /** On open callback */ onOpen: _propTypes.default.func, /** On close callback */ onClose: _propTypes.default.func, /** Format string */ format: _propTypes.default.string, onAccept: _propTypes.default.func, onDismiss: _propTypes.default.func, onClear: _propTypes.default.func, onSetToday: _propTypes.default.func, children: _propTypes.default.node.isRequired, dialogContentClassName: _propTypes.default.string, isAccepted: _propTypes.default.bool.isRequired, container: _propTypes.default.node }; ModalWrapper.defaultProps = { dialogContentClassName: '', invalidLabel: undefined, value: new Date(), labelFunc: undefined, okLabel: 'OK', cancelLabel: 'Cancel', clearLabel: 'Clear', todayLabel: 'Today', clearable: false, showTodayButton: false, format: undefined, onAccept: undefined, onDismiss: undefined, onClear: undefined, onOpen: undefined, onClose: undefined, onSetToday: undefined, container: undefined };