UNPKG

dareway-rui

Version:

304 lines (264 loc) 12.4 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck')); var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass')); var _possibleConstructorReturn2 = _interopRequireDefault(require('@babel/runtime/helpers/possibleConstructorReturn')); var _getPrototypeOf2 = _interopRequireDefault(require('@babel/runtime/helpers/getPrototypeOf')); var _assertThisInitialized2 = _interopRequireDefault(require('@babel/runtime/helpers/assertThisInitialized')); var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits')); var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty')); var _react = _interopRequireDefault(require('react')); var _reactDom = _interopRequireDefault(require('react-dom')); var _propTypes = _interopRequireDefault(require('prop-types')); var _reactLifecyclesCompat = require('react-lifecycles-compat'); var _createChainedFunction = _interopRequireDefault(require('rc-util/lib/createChainedFunction')); var _KeyCode = _interopRequireDefault(require('rc-util/lib/KeyCode')); var _placements = _interopRequireDefault(require('./picker/placements')); var _placementsForGrid = _interopRequireDefault(require('./picker/placementsForGrid')); var _rcTrigger = _interopRequireDefault(require('rc-trigger')); function noop() {} function refFn(field, component) { this[field] = component; } var Picker = /*#__PURE__*/ (function(_React$Component) { (0, _inherits2.default)(Picker, _React$Component); function Picker(_props) { var _this; (0, _classCallCheck2.default)(this, Picker); _this = (0, _possibleConstructorReturn2.default)( this, (0, _getPrototypeOf2.default)(Picker).call(this, _props) ); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onCalendarKeyDown', function( event ) { if (event.keyCode === _KeyCode.default.ESC) { event.stopPropagation(); _this.close(_this.focus); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onCalendarSelect', function( value ) { var cause = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var props = _this.props; if (!('value' in props)) { _this.setState({ value: value }); } if ( cause.source === 'keyboard' || cause.source === 'dateInputSelect' || (!props.calendar.props.timePicker && cause.source !== 'dateInput') || cause.source === 'todayButton' ) { _this.close(_this.focus); } props.onChange(value); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onKeyDown', function(event) { if ( !_this.state.open && (event.keyCode === _KeyCode.default.DOWN || event.keyCode === _KeyCode.default.ENTER) ) { _this.open(); event.preventDefault(); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onCalendarOk', function() { _this.close(_this.focus); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onCalendarClear', function() { _this.close(_this.focus); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onVisibleChange', function( open ) { _this.setOpen(open); }); (0, _defineProperty2.default)( (0, _assertThisInitialized2.default)(_this), 'getCalendarElement', function() { var props = _this.props; var state = _this.state; var calendarProps = props.calendar.props; var value = state.value; var defaultValue = value; var extraProps = { ref: _this.saveCalendarRef, defaultValue: defaultValue || calendarProps.defaultValue, selectedValue: value, onKeyDown: _this.onCalendarKeyDown, onOk: (0, _createChainedFunction.default)(calendarProps.onOk, _this.onCalendarOk), onSelect: (0, _createChainedFunction.default)(calendarProps.onSelect, _this.onCalendarSelect), onClear: (0, _createChainedFunction.default)(calendarProps.onClear, _this.onCalendarClear) }; return _react.default.cloneElement(props.calendar, extraProps); } ); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'setOpen', function( open, callback ) { var onOpenChange = _this.props.onOpenChange; if (_this.state.open !== open) { if (!('open' in _this.props)) { _this.setState( { open: open }, callback ); } onOpenChange(open); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'open', function(callback) { _this.setOpen(true, callback); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'close', function(callback) { _this.setOpen(false, callback); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'focus', function() { if (!_this.state.open) { // ReactDOM.findDOMNode(this).focus(); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'focusCalendar', function() { if (_this.state.open && !!_this.calendarInstance) { _this.calendarInstance.focus(); } }); var _open; if ('open' in _props) { _open = _props.open; } else { _open = _props.defaultOpen; } var _value = _props.value || _props.defaultValue; _this.saveCalendarRef = refFn.bind((0, _assertThisInitialized2.default)(_this), 'calendarInstance'); _this.state = { open: _open, value: _value }; return _this; } (0, _createClass2.default)( Picker, [ { key: 'componentDidUpdate', value: function componentDidUpdate(_, prevState) { if (!prevState.open && this.state.open) { // setTimeout is for making sure saveCalendarRef happen before focusCalendar this.focusTimeout = setTimeout(this.focusCalendar, 0, this); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { clearTimeout(this.focusTimeout); } }, { key: 'render', value: function render() { var props = this.props; var prefixCls = props.prefixCls, placement = props.placement, style = props.style, getCalendarContainer = props.getCalendarContainer, align = props.align, animation = props.animation, disabled = props.disabled, dropdownClassName = props.dropdownClassName, transitionName = props.transitionName, children = props.children, isForGrid = props.isForGrid; var state = this.state; return _react.default.createElement( _rcTrigger.default, { popup: this.getCalendarElement(), popupAlign: align, builtinPlacements: isForGrid ? _placementsForGrid.default : _placements.default, popupPlacement: placement, action: disabled && !state.open ? [] : ['click'], destroyPopupOnHide: true, getPopupContainer: getCalendarContainer, popupStyle: style, popupAnimation: animation, popupTransitionName: transitionName, popupVisible: state.open, onPopupVisibleChange: this.onVisibleChange, prefixCls: prefixCls, popupClassName: dropdownClassName }, _react.default.cloneElement(children(state, props), { onKeyDown: this.onKeyDown }) ); } } ], [ { key: 'getDerivedStateFromProps', value: function getDerivedStateFromProps(nextProps) { var newState = {}; var value = nextProps.value, open = nextProps.open; if ('value' in nextProps) { newState.value = value; } if (open !== undefined) { newState.open = open; } return newState; } } ] ); return Picker; })(_react.default.Component); (0, _defineProperty2.default)(Picker, 'propTypes', { animation: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string]), disabled: _propTypes.default.bool, transitionName: _propTypes.default.string, onChange: _propTypes.default.func, onOpenChange: _propTypes.default.func, children: _propTypes.default.func, getCalendarContainer: _propTypes.default.func, calendar: _propTypes.default.element, style: _propTypes.default.object, open: _propTypes.default.bool, defaultOpen: _propTypes.default.bool, prefixCls: _propTypes.default.string, placement: _propTypes.default.any, value: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.array]), defaultValue: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.array]), align: _propTypes.default.object }); (0, _defineProperty2.default)(Picker, 'defaultProps', { prefixCls: 'rc-calendar-picker', style: {}, align: {}, placement: 'bottomLeft', defaultOpen: false, onChange: noop, onOpenChange: noop, isForGrid: false }); (0, _reactLifecyclesCompat.polyfill)(Picker); var _default = Picker; exports.default = _default; //@ sourceMappingURL=Picker.js.map