dareway-rui
Version:
352 lines (297 loc) • 14.5 kB
JavaScript
'use strict';
var _interopRequireWildcard = require('@babel/runtime/helpers/interopRequireWildcard');
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault');
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = createPicker;
var _extends2 = _interopRequireDefault(require('@babel/runtime/helpers/extends'));
var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck'));
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 _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass'));
var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits'));
var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty'));
var React = _interopRequireWildcard(require('react'));
var moment = _interopRequireWildcard(require('moment'));
var _reactLifecyclesCompat = require('react-lifecycles-compat');
var _MonthCalendar = _interopRequireDefault(require('./RcCalendar/MonthCalendar'));
var _Picker = _interopRequireDefault(require('./RcCalendar/Picker'));
var _classnames = _interopRequireDefault(require('classnames'));
var _omit = _interopRequireDefault(require('omit.js'));
var _ruiIcon = _interopRequireDefault(require('rui-icon'));
var _warning = _interopRequireDefault(require('antd/lib/_util/warning'));
var _interopDefault = _interopRequireDefault(require('antd/lib/_util/interopDefault'));
function createPicker(TheCalendar) {
var CalenderWrapper =
/*#__PURE__*/
(function(_React$Component) {
(0, _inherits2.default)(CalenderWrapper, _React$Component);
(0, _createClass2.default)(CalenderWrapper, null, [
{
key: 'getDerivedStateFromProps',
value: function getDerivedStateFromProps(nextProps, prevState) {
var state = {};
var open = prevState.open;
if ('open' in nextProps) {
state.open = nextProps.open;
open = nextProps.open || false;
}
if ('value' in nextProps) {
state.value = nextProps.value;
if (
nextProps.value !== prevState.value ||
(!open && nextProps.value !== prevState.showDate)
) {
state.showDate = nextProps.value;
}
}
return state;
}
}
]);
function CalenderWrapper(_props) {
var _this;
(0, _classCallCheck2.default)(this, CalenderWrapper);
_this = (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(CalenderWrapper).call(this, _props)
);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'renderFooter', function() {
var _this$props = _this.props,
prefixCls = _this$props.prefixCls,
renderExtraFooter = _this$props.renderExtraFooter;
return renderExtraFooter
? React.createElement(
'div',
{
className: ''.concat(prefixCls, '-footer-extra')
},
renderExtraFooter.apply(void 0, arguments)
)
: null;
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'clearSelection', function(
e
) {
e.preventDefault();
e.stopPropagation();
_this.handleChange(null);
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleChange', function(
value
) {
var props = _this.props;
if (!('value' in props)) {
_this.setState({
value: value,
showDate: value
});
}
props.onChange(value, (value && value.format(props.format)) || '');
_this.focus();
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleDateChange', function(
value
) {
var props = _this.props;
if (!('value' in props)) {
_this.setState({
value: value,
showDate: value
});
}
if (props.onDateChange) {
props.onDateChange(value, (value && value.format(props.format)) || '');
}
_this.focus();
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleTimeChange', function(
value
) {
var props = _this.props;
if (!('value' in props)) {
_this.setState({
value: value,
showDate: value
});
}
if (props.onTimeChange) {
props.onTimeChange(value, (value && value.format(props.format)) || '');
}
_this.focus();
});
(0, _defineProperty2.default)(
(0, _assertThisInitialized2.default)(_this),
'handleIconClick',
function() {
var onIconClick = _this.props.onIconClick;
if (onIconClick) {
onIconClick();
}
}
);
(0, _defineProperty2.default)(
(0, _assertThisInitialized2.default)(_this),
'handleCalendarChange',
function(value) {
_this.setState({
showDate: value
});
}
);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'handleOpenChange', function(
open
) {
var onOpenChange = _this.props.onOpenChange;
if (!('open' in _this.props)) {
_this.setState({
open: open
});
}
if (onOpenChange) {
onOpenChange(open);
}
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'saveInput', function(
node
) {});
var _value = _props.value || _props.defaultValue;
if (_value && !(0, _interopDefault.default)(moment).isMoment(_value)) {
throw new Error(
'The value/defaultValue of DatePicker or MonthPicker must be ' +
'a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value'
);
}
_this.state = {
value: _value,
showDate: _value,
open: false
};
_this.input;
return _this;
}
(0, _createClass2.default)(CalenderWrapper, [
{
key: 'focus',
value: function focus() {}
},
{
key: 'blur',
value: function blur() {}
},
{
key: 'render',
value: function render() {
var _classNames,
_this2 = this;
var _this$state = this.state,
value = _this$state.value,
showDate = _this$state.showDate,
open = _this$state.open;
var props = (0, _omit.default)(this.props, ['onChange']);
var prefixCls = props.prefixCls,
locale = props.locale,
localeCode = props.localeCode,
suffixIcon = props.suffixIcon;
var placeholder = 'placeholder' in props ? props.placeholder : locale.lang.placeholder;
var disabledTime = props.showTime ? props.disabledTime : null;
var calendarClassName = (0, _classnames.default)(
((_classNames = {}),
(0, _defineProperty2.default)(_classNames, ''.concat(prefixCls, '-time'), props.showTime),
(0, _defineProperty2.default)(
_classNames,
''.concat(prefixCls, '-month'),
_MonthCalendar.default === TheCalendar
),
_classNames)
);
if (value && localeCode) {
value.locale(localeCode);
}
var pickerProps = {};
var calendarProps = {};
var pickerStyle = {};
if (props.showTime) {
calendarProps = {
// fix https://github.com/ant-design/ant-design/issues/1902
onSelect: this.handleTimeChange
};
pickerStyle.width = 195;
} else {
pickerProps = {
onChange: this.handleDateChange
};
}
if ('mode' in props) {
calendarProps.mode = props.mode;
}
(0, _warning.default)(
!('onOK' in props),
'It should be `DatePicker[onOk]` or `MonthPicker[onOk]`, instead of `onOK`!'
);
var calendar = React.createElement(
TheCalendar,
(0, _extends2.default)({}, calendarProps, {
disabledDate: props.disabledDate,
disabledTime: disabledTime,
locale: locale.lang,
timePicker: props.timePicker,
defaultValue: props.defaultPickerValue || (0, _interopDefault.default)(moment)(),
dateInputPlaceholder: placeholder,
prefixCls: prefixCls,
className: calendarClassName,
onOk: props.onOk,
dateRender: props.dateRender,
format: props.format,
showToday: props.showToday,
monthCellContentRender: props.monthCellContentRender,
renderFooter: this.renderFooter,
onPanelChange: props.onPanelChange,
onChange: this.handleCalendarChange,
value: showDate
})
);
var input = function input(_ref) {
var inputValue = _ref.value;
return React.createElement(
'div',
{
onClick: _this2.handleIconClick
},
React.createElement(_ruiIcon.default, {
style: {
cursor: 'pointer'
},
type: 'calendar',
className: ''.concat(prefixCls, '-picker-icon')
})
);
};
return React.createElement(
_Picker.default,
(0, _extends2.default)({}, props, pickerProps, {
calendar: calendar,
value: value,
prefixCls: ''.concat(prefixCls, '-picker-container'),
style: props.popupStyle,
open: open,
onOpenChange: this.handleOpenChange
}),
input
);
}
}
]);
return CalenderWrapper;
})(React.Component);
(0, _defineProperty2.default)(CalenderWrapper, 'defaultProps', {
prefixCls: 'ant-calendar',
allowClear: true,
showToday: true
});
(0, _reactLifecyclesCompat.polyfill)(CalenderWrapper);
return CalenderWrapper;
}
//@ sourceMappingURL=createPicker.js.map