UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

1,079 lines (917 loc) 35.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _moment = _interopRequireWildcard(require("moment")); var _classnames = _interopRequireDefault(require("classnames")); var _raf = _interopRequireDefault(require("raf")); var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject")); var _isString = _interopRequireDefault(require("lodash/isString")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _noop = _interopRequireDefault(require("lodash/noop")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _KeyCode = _interopRequireDefault(require("../../../lib/_util/KeyCode")); var _warning = _interopRequireDefault(require("../../../lib/_util/warning")); var _TriggerField2 = _interopRequireDefault(require("../trigger-field/TriggerField")); var _DaysView = _interopRequireDefault(require("./DaysView")); var _DateTimesView = _interopRequireDefault(require("./DateTimesView")); var _WeeksView = _interopRequireDefault(require("./WeeksView")); var _TimesView = _interopRequireDefault(require("./TimesView")); var _MonthsView = _interopRequireDefault(require("./MonthsView")); var _YearsView = _interopRequireDefault(require("./YearsView")); var _DecadeYearsView = _interopRequireDefault(require("./DecadeYearsView")); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _enum = require("./enum"); var _EventManager = require("../_util/EventManager"); var _localeContext = require("../locale-context"); var _isSame = _interopRequireDefault(require("../_util/isSame")); var _TextField = _interopRequireDefault(require("../text-field/TextField")); var _viewComponents; function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var viewComponents = (_viewComponents = {}, (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.decade, _DecadeYearsView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.year, _YearsView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.month, _MonthsView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.date, _DaysView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.dateTime, _DateTimesView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.week, _WeeksView["default"]), (0, _defineProperty2["default"])(_viewComponents, _enum.ViewMode.time, _TimesView["default"]), _viewComponents); var createDefaultTime = function createDefaultTime() { return (0, _moment["default"])('00:00:00', 'HH:mm:ss'); }; var DatePicker = /*#__PURE__*/ function (_TriggerField) { (0, _inherits2["default"])(DatePicker, _TriggerField); var _super = _createSuper(DatePicker); function DatePicker() { (0, _classCallCheck2["default"])(this, DatePicker); return _super.apply(this, arguments); } (0, _createClass2["default"])(DatePicker, [{ key: "savePopupRangeEditor", value: function savePopupRangeEditor(node) { this.popupRangeEditor = node; if (node && this.popup) { (0, _raf["default"])(function () { node.focus(); }); } } }, { key: "isEditable", value: function isEditable() { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "isEditable", this).call(this) && !this.isEditableLike() && this.getViewMode() !== _enum.ViewMode.week; } }, { key: "isEditableLike", value: function isEditableLike() { return this.popup && this.observableProps.editorInPopup; } }, { key: "getOmitPropsKeys", value: function getOmitPropsKeys() { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getOmitPropsKeys", this).call(this).concat(['mode', 'filter', 'cellRenderer', 'maxLength', 'minLength', 'timeZone', 'editorInPopup', 'defaultTime']); } }, { key: "getOtherProps", value: function getOtherProps() { var otherProps = (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getOtherProps", this).call(this); delete otherProps.maxLength; return otherProps; } }, { key: "getObservableProps", value: function getObservableProps(props, context) { return (0, _objectSpread2["default"])({}, (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getObservableProps", this).call(this, props, context), { editorInPopup: props.editorInPopup }); } }, { key: "defaultRenderer", value: function defaultRenderer(props) { var renderedText = (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "defaultRenderer", this).call(this, props); var mode = this.getDefaultViewMode(); var value = props.value; if (value && [_enum.ViewMode.time, _enum.ViewMode.dateTime].includes(mode)) { var _this$props$timeZone = this.props.timeZone, timeZone = _this$props$timeZone === void 0 ? this.getContextConfig('formatter').timeZone : _this$props$timeZone; if (timeZone) { var renderedTimeZone = typeof timeZone === 'function' ? timeZone(value) : value.format(timeZone); if ((0, _isString["default"])(renderedTimeZone)) { return "".concat(renderedText).concat(renderedTimeZone); } return [renderedText, renderedTimeZone]; } } return renderedText; } }, { key: "getDefaultTime", value: function getDefaultTime() { var _this$props$defaultTi = this.props.defaultTime, defaultTime = _this$props$defaultTi === void 0 ? createDefaultTime() : _this$props$defaultTi; if ((0, _mobx.isArrayLike)(defaultTime)) { return [defaultTime[0] || createDefaultTime(), defaultTime[1] || createDefaultTime()]; } return [defaultTime, defaultTime]; } }, { key: "getDefaultViewMode", value: function getDefaultViewMode() { var mode = this.props.mode; if (mode === _enum.ViewMode.decade || mode === undefined) { return _enum.ViewMode.date; } return mode; } }, { key: "getPopupClassName", value: function getPopupClassName(defaultClassName) { var _this$getViewMode; return (0, _classnames["default"])((0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getPopupClassName", this).call(this, defaultClassName), (0, _defineProperty2["default"])({}, "".concat(this.prefixCls, "-popup-").concat((_this$getViewMode = this.getViewMode()) === null || _this$getViewMode === void 0 ? void 0 : _this$getViewMode.toLowerCase()), this.getViewMode())); } }, { key: "getPopupEditor", value: function getPopupEditor() { var editorInPopup = this.observableProps.editorInPopup; if (editorInPopup) { var prefixCls = this.prefixCls, range = this.range, text = this.text; var className = "".concat(prefixCls, "-popup-editor"); var _this$getPlaceholders = this.getPlaceholders(), _this$getPlaceholders2 = (0, _slicedToArray2["default"])(_this$getPlaceholders, 2), startPlaceholder = _this$getPlaceholders2[0], _this$getPlaceholders3 = _this$getPlaceholders2[1], endPlaceHolder = _this$getPlaceholders3 === void 0 ? startPlaceholder : _this$getPlaceholders3; if (range) { var rangeTarget = this.rangeTarget; var _this$processRangeVal = this.processRangeValue(this.rangeValue), _this$processRangeVal2 = (0, _slicedToArray2["default"])(_this$processRangeVal, 2), _this$processRangeVal3 = _this$processRangeVal2[0], startValue = _this$processRangeVal3 === void 0 ? '' : _this$processRangeVal3, _this$processRangeVal4 = _this$processRangeVal2[1], endValue = _this$processRangeVal4 === void 0 ? '' : _this$processRangeVal4; var startText = this.getText(startValue); var endText = this.getText(endValue); return _react["default"].createElement("span", { key: "popup-editor", className: (0, _classnames["default"])(className, "".concat(prefixCls, "-range-text")) }, _react["default"].createElement("input", { className: "".concat(prefixCls, "-range-start"), onChange: this.handleChange, onFocus: this.handleRangeStart, value: rangeTarget === 0 && text !== undefined ? text : startText, placeholder: startPlaceholder, ref: rangeTarget === 0 ? this.savePopupRangeEditor : undefined }), _react["default"].createElement("span", { className: "".concat(prefixCls, "-range-split") }, "~"), _react["default"].createElement("input", { className: "".concat(prefixCls, "-range-end"), onChange: this.handleChange, onFocus: this.handleRangeEnd, value: rangeTarget === 1 && text !== undefined ? text : endText, placeholder: endPlaceHolder, ref: rangeTarget === 1 ? this.savePopupRangeEditor : undefined })); } return _react["default"].createElement(_TextField["default"], { key: "popup-editor", value: this.getTextNode(), onInput: this.handleChange, border: false, className: className, placeholder: startPlaceholder }); } } }, { key: "getPopupContent", value: function getPopupContent() { var _this = this; var mode = this.getViewMode(); var date = this.getSelectedDate(); return _react["default"].createElement(_react["default"].Fragment, null, this.getPopupEditor(), (0, _react.createElement)(viewComponents[mode], { ref: function ref(node) { return _this.view = node; }, date: date, mode: this.getDefaultViewMode(), disabledNow: !this.isValidNowDate(date), renderer: this.getCellRenderer(mode), onSelect: this.handleSelect, onSelectedDateChange: this.handleSelectedDateChange, onViewModeChange: this.handelViewModeChange, isValidDate: this.isValidDate, format: this.getDateFormat(), step: this.getProp('step') || {}, renderExtraFooter: this.getProp('renderExtraFooter'), extraFooterPlacement: this.getProp('extraFooterPlacement') || 'bottom' })); } }, { key: "getCellRenderer", value: function getCellRenderer(mode) { var _this$props$cellRende = this.props.cellRenderer, cellRenderer = _this$props$cellRende === void 0 ? _noop["default"] : _this$props$cellRende; return cellRenderer(mode); } }, { key: "getTriggerIconFont", value: function getTriggerIconFont() { return 'date_range'; } }, { key: "getFieldType", value: function getFieldType() { return viewComponents[this.getDefaultViewMode()].type; } }, { key: "getViewMode", value: function getViewMode() { var _this$mode = this.mode, mode = _this$mode === void 0 ? this.getDefaultViewMode() : _this$mode; return mode; } }, { key: "toMoment", value: function toMoment(item) { var field = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.field; var noCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if ((0, _isNil["default"])(item)) { return undefined; } if ((0, _moment.isMoment)(item)) { return item; } (0, _warning["default"])(noCheck, "DatePicker: The value of DatePicker is not moment."); var format = this.getDateFormat(field); if (item instanceof Date) { item = (0, _moment["default"])(item).format(format); } var range = this.range, rangeTarget = this.rangeTarget; var date = (0, _moment["default"])(item, format); if (date.isValid()) { var _date$parsingFlags = date.parsingFlags(), unusedTokens = _date$parsingFlags.unusedTokens; if (unusedTokens.includes('HH') && unusedTokens.includes('mm') && unusedTokens.includes('ss')) { var defaultTime = this.getDefaultTime()[range && rangeTarget !== undefined ? rangeTarget : 0]; date.hour(defaultTime.hour()); date.minute(defaultTime.minute()); date.second(defaultTime.second()); } } return date; } }, { key: "checkMoment", value: function checkMoment(item) { return this.toMoment(item); } }, { key: "compare", value: function compare(oldValue, newValue) { return (0, _isSame["default"])(this.momentToTimestamp(oldValue), this.momentToTimestamp(newValue)); } }, { key: "setText", value: function setText(text) { (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "setText", this).call(this, text); if (text) { var date = this.toMoment(text); if (date && date.isValid()) { this.changeSelectedDate(date); } } } }, { key: "afterSetValue", value: function afterSetValue() { (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "afterSetValue", this).call(this); this.setText(undefined); } }, { key: "momentToTimestamp", value: function momentToTimestamp(value) { if ((0, _moment.isMoment)(value)) { return (0, _moment["default"])(value).valueOf(); } return value; } // processValue(value: any): ReactNode { // return super.processValue(this.checkMoment(value)); // } }, { key: "getSelectedDate", value: function getSelectedDate() { var range = this.range, multiple = this.multiple, rangeTarget = this.rangeTarget, rangeValue = this.rangeValue; var selectedDate = this.selectedDate || range && !multiple && rangeTarget !== undefined && rangeValue && rangeValue[rangeTarget] || !multiple && this.getValue(); if ((0, _moment.isMoment)(selectedDate) && selectedDate.isValid()) { return selectedDate.clone(); } return this.getValidDate(this.getDefaultTime()[range && rangeTarget !== undefined ? rangeTarget : 0]); } }, { key: "getLimit", value: function getLimit(minOrMax) { var limit = this.getProp(minOrMax); if (!(0, _isNil["default"])(limit)) { var record = this.record; if (record && (0, _isString["default"])(limit)) { var field = record.dataSet.getField(limit); if (field) { var value = record.get(limit); if (value) { var momentValue = this.toMoment(value, field, true); if (momentValue) { return this.getLimitWithType(momentValue.clone(), minOrMax); } } return undefined; } } return this.getLimitWithType((0, _moment["default"])(limit), minOrMax); } } }, { key: "getLimitWithType", value: function getLimitWithType(limit, minOrMax) { if (minOrMax === 'min') { return limit.startOf('d'); } return limit.endOf('d'); } }, { key: "getPopupStyleFromAlign", value: function getPopupStyleFromAlign() { return undefined; } }, { key: "handleSelectedDateChange", value: function handleSelectedDateChange(selectedDate, mode) { if (this.isUnderRange(selectedDate, mode)) { this.changeSelectedDate(selectedDate); } } }, { key: "handelViewModeChange", value: function handelViewModeChange(mode) { var _this2 = this; (0, _mobx.runInAction)(function () { _this2.mode = mode; }); } }, { key: "handlePopupAnimateAppear", value: function handlePopupAnimateAppear() {// noop } }, { key: "handlePopupAnimateEnd", value: function handlePopupAnimateEnd(key, exists) { var _this3 = this; if (key === 'align') { if (exists) { var popupRangeEditor = this.popupRangeEditor; if (popupRangeEditor) { (0, _raf["default"])(function () { popupRangeEditor.focus(); }); } } else { (0, _mobx.runInAction)(function () { _this3.selectedDate = undefined; _this3.mode = undefined; }); } } } }, { key: "handleSelect", value: function handleSelect(date, expand) { if (this.multiple && this.isSelected(date)) { this.unChoose(date); } else { this.choose(date, expand); } } }, { key: "handleKeyDown", value: function handleKeyDown(e) { if (!this.disabled && !this.readOnly) { var el = this.popup ? this.view || this : this; switch (e.keyCode) { case _KeyCode["default"].RIGHT: el.handleKeyDownRight(e); break; case _KeyCode["default"].LEFT: el.handleKeyDownLeft(e); break; case _KeyCode["default"].DOWN: el.handleKeyDownDown(e); break; case _KeyCode["default"].UP: el.handleKeyDownUp(e); break; case _KeyCode["default"].END: el.handleKeyDownEnd(e); break; case _KeyCode["default"].HOME: el.handleKeyDownHome(e); break; case _KeyCode["default"].PAGE_UP: el.handleKeyDownPageUp(e); break; case _KeyCode["default"].PAGE_DOWN: el.handleKeyDownPageDown(e); break; case _KeyCode["default"].ENTER: el.handleKeyDownEnter(e); break; case _KeyCode["default"].TAB: this.handleKeyDownTab(); break; case _KeyCode["default"].ESC: this.handleKeyDownEsc(e); break; case _KeyCode["default"].SPACE: this.handleKeyDownSpace(e); break; default: } } (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "handleKeyDown", this).call(this, e); } }, { key: "handleKeyDownHome", value: function handleKeyDownHome(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().startOf('M')); } } }, { key: "handleKeyDownEnd", value: function handleKeyDownEnd(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().endOf('M')); } } }, { key: "handleKeyDownLeft", value: function handleKeyDownLeft(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().subtract(1, 'd')); } } }, { key: "handleKeyDownRight", value: function handleKeyDownRight(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().add(1, 'd')); } } }, { key: "handleKeyDownUp", value: function handleKeyDownUp(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().subtract(1, 'w')); } } }, { key: "handleKeyDownDown", value: function handleKeyDownDown(e) { if (this.multiple) { this.expand(); } else if (!this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().add(1, 'w')); } } }, { key: "handleKeyDownPageUp", value: function handleKeyDownPageUp(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().subtract(1, e.altKey ? 'y' : 'M')); } } }, { key: "handleKeyDownPageDown", value: function handleKeyDownPageDown(e) { if (!this.multiple && !this.editable) { (0, _EventManager.stopEvent)(e); this.choose(this.getSelectedDate().add(1, e.altKey ? 'y' : 'M')); } } }, { key: "handleKeyDownEnter", value: function handleKeyDownEnter(_e) { if (!this.multiple && !this.editable) { this.choose(this.getSelectedDate()); } } }, { key: "handleKeyDownEsc", value: function handleKeyDownEsc(e) { if (this.popup) { e.preventDefault(); this.collapse(); } } }, { key: "handleKeyDownTab", value: function handleKeyDownTab() {// this.collapse(); } }, { key: "handleKeyDownSpace", value: function handleKeyDownSpace(e) { if (!this.isEditable()) { e.preventDefault(); } if (!this.popup) { this.expand(); } } }, { key: "handleEnterDown", value: function handleEnterDown(e) { (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "handleEnterDown", this).call(this, e); if (this.multiple && this.range) { this.setRangeTarget(0); this.beginRange(); this.expand(); } } }, { key: "prepareSetValue", value: function prepareSetValue() { var _get2, _this4 = this; for (var _len = arguments.length, value = new Array(_len), _key = 0; _key < _len; _key++) { value[_key] = arguments[_key]; } (_get2 = (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "prepareSetValue", this)).call.apply(_get2, [this].concat((0, _toConsumableArray2["default"])(value.map(function (v) { return v === null ? null : _this4.checkMoment(v); })))); } }, { key: "syncValueOnBlur", value: function syncValueOnBlur(value) { if (value) { this.prepareSetValue(value); } else if (!this.multiple) { this.prepareSetValue(this.emptyValue); } } }, { key: "getValueKey", value: function getValueKey(v) { if ((0, _mobx.isArrayLike)(v)) { return v.map(this.getValueKey, this).join(','); } if ((0, _moment.isMoment)(v)) { return v.format(); } return v; } }, { key: "exchangeRangeValue", value: function exchangeRangeValue(start, end) { var defaultTime = this.props.defaultTime; if (defaultTime) { var _this$getDefaultTime = this.getDefaultTime(), _this$getDefaultTime2 = (0, _slicedToArray2["default"])(_this$getDefaultTime, 2), startDefaultTime = _this$getDefaultTime2[0], endDefaultTime = _this$getDefaultTime2[1]; var startHour = start.hour(); var startMinute = start.minute(); var startSecond = start.second(); var startDefaultHour = startDefaultTime.hour(); var startDefaultMinute = startDefaultTime.minute(); var startDefaultSecond = startDefaultTime.second(); var endHour = end.hour(); var endMinute = end.minute(); var endSecond = end.second(); var endDefaultHour = endDefaultTime.hour(); var endDefaultMinute = endDefaultTime.minute(); var endDefaultSecond = endDefaultTime.second(); if (startHour === startDefaultHour && startMinute === startDefaultMinute && startSecond === startDefaultSecond) { end.hour(startHour); end.minute(startMinute); end.second(startSecond); } if (endHour === endDefaultHour && endMinute === endDefaultMinute && endSecond === endDefaultSecond) { start.hour(endHour); start.minute(endMinute); start.second(endSecond); } } (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "exchangeRangeValue", this).call(this, start, end); } }, { key: "changeSelectedDate", value: function changeSelectedDate(selectedDate) { this.selectedDate = this.getValidDate(selectedDate); } }, { key: "isSelected", value: function isSelected(date) { return this.getValues().some(function (value) { return date.isSame(value); }); } }, { key: "unChoose", value: function unChoose(date) { this.removeValue(date, -1); } /** * * @param date 返回的时间 * @param expand 是否保持时间选择器的展开 */ }, { key: "choose", value: function choose(date, expand) { date = this.getValidDate(date); this.prepareSetValue(date); this.changeSelectedDate(date); var range = this.range, rangeTarget = this.rangeTarget; if (range ? rangeTarget === 1 : !this.multiple) { if (!expand) { this.collapse(); } } if (range && rangeTarget === 0 && this.popup && !expand) { this.setRangeTarget(1); } } }, { key: "setRangeTarget", value: function setRangeTarget(target) { if (this.isFocused && target !== undefined && target !== this.rangeTarget) { this.expand(); } this.selectedDate = undefined; (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "setRangeTarget", this).call(this, target); } }, { key: "getValidDate", value: function getValidDate(date) { var min = this.min, max = this.max; if (min && date.isSameOrBefore(min)) { date = min; } else if (max && date.isSameOrAfter(max)) { date = max; } return date; } }, { key: "isLowerRange", value: function isLowerRange(m1, m2) { var moment1 = this.toMoment(m1); if (moment1) { return moment1.isBefore(this.toMoment(m2)); } return false; } }, { key: "isUnderRange", value: function isUnderRange(date, mode) { var min = this.min, max = this.max; if (min || max) { var start = (min || date).clone(); var end = (max || date).clone(); switch (mode || this.getViewMode()) { case _enum.ViewMode.month: start = start.startOf('M'); end = end.endOf('M'); break; case _enum.ViewMode.year: start = start.startOf('y'); end = end.endOf('y'); break; case _enum.ViewMode.decade: start = start.startOf('y').subtract(start.year() % 10, 'y').startOf('d'); end = end.endOf('y').add(9 - end.year() % 10, 'y').endOf('d'); break; case _enum.ViewMode.dateTime: start = start.startOf('d'); end = end.endOf('d'); break; default: } return date.isBetween(start, end, undefined, '[]'); } return true; } }, { key: "isValidDate", value: function isValidDate(currentDate, selected) { var filter = this.props.filter; var isValid = this.isUnderRange(currentDate); if (isValid && filter) { return filter(currentDate, selected, this.getViewMode()); } return isValid; } }, { key: "isValidNowDate", value: function isValidNowDate(selected) { var filter = this.props.filter; var isValid = this.isUnderRange((0, _moment["default"])()); if (isValid && filter) { return filter((0, _moment["default"])(), selected); } return isValid; } }, { key: "getValidatorProp", value: function getValidatorProp(key) { if (['maxLength', 'minLength'].includes(key)) { return; } switch (key) { case 'min': case 'max': return this[key]; case 'format': return this.getDateFormat(); default: return (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getValidatorProp", this).call(this, key); } } }, { key: "renderLengthInfo", value: function renderLengthInfo() { return undefined; } }, { key: "value", get: function get() { var _this5 = this; var value = this.observableProps.value; var range = this.range; if ((0, _mobx.isArrayLike)(value)) { return value.map(function (item) { if ((0, _mobx.isArrayLike)(item)) { return item.map(_this5.checkMoment, _this5); } return _this5.checkMoment(item); }); } if ((0, _mobx.isArrayLike)(range)) { if ((0, _isPlainObject["default"])(value)) { var _ref; var _range = (0, _slicedToArray2["default"])(range, 2), start = _range[0], end = _range[1]; return _ref = {}, (0, _defineProperty2["default"])(_ref, start, this.checkMoment(value[start])), (0, _defineProperty2["default"])(_ref, end, this.checkMoment(value[end])), _ref; } } return this.checkMoment(value); }, set: function set(value) { var _this6 = this; (0, _mobx.runInAction)(function () { _this6.observableProps.value = value; }); } }, { key: "defaultValidationMessages", get: function get() { var label = this.getProp('label'); return { valueMissing: (0, _localeContext.$l)('DatePicker', label ? 'value_missing' : 'value_missing_no_label', { label: label }) }; } }, { key: "min", get: function get() { return this.getLimit('min'); } }, { key: "max", get: function get() { return this.getLimit('max'); } }]); return DatePicker; }(_TriggerField2["default"]); DatePicker.displayName = 'DatePicker'; DatePicker.propTypes = (0, _objectSpread2["default"])({ /** * 日期格式,如 `YYYY-MM-DD HH:mm:ss` */ format: _propTypes["default"].string, /** * 显示模式date|dateTime|time|year|month|week */ mode: _propTypes["default"].string, /** * 单元格渲染 */ cellRenderer: _propTypes["default"].func, /** * 日期过滤 */ filter: _propTypes["default"].func, /** * 最小日期 */ min: _propTypes["default"].any, /** * 最大日期 */ max: _propTypes["default"].any, /** * 时间步距 */ step: _propTypes["default"].shape({ hour: _propTypes["default"].number, minute: _propTypes["default"].number, second: _propTypes["default"].number }), /** * 时区显示 */ timeZone: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].func]), /** * 编辑器在下拉框中显示 */ editorInPopup: _propTypes["default"].bool }, _TriggerField2["default"].propTypes); DatePicker.defaultProps = (0, _objectSpread2["default"])({}, _TriggerField2["default"].defaultProps, { suffixCls: 'calendar-picker', mode: _enum.ViewMode.date }); (0, _tslib.__decorate)([_mobx.computed], DatePicker.prototype, "value", null); (0, _tslib.__decorate)([_mobx.computed], DatePicker.prototype, "min", null); (0, _tslib.__decorate)([_mobx.computed], DatePicker.prototype, "max", null); (0, _tslib.__decorate)([_mobx.observable], DatePicker.prototype, "selectedDate", void 0); (0, _tslib.__decorate)([_mobx.observable], DatePicker.prototype, "mode", void 0); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "savePopupRangeEditor", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "defaultRenderer", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "compare", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "handleSelectedDateChange", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "handelViewModeChange", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "handlePopupAnimateEnd", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "handleSelect", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "handleKeyDown", null); (0, _tslib.__decorate)([_mobx.action], DatePicker.prototype, "handleEnterDown", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "getValueKey", null); (0, _tslib.__decorate)([_mobx.action], DatePicker.prototype, "changeSelectedDate", null); (0, _tslib.__decorate)([_mobx.action], DatePicker.prototype, "setRangeTarget", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "isUnderRange", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "isValidDate", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "isValidNowDate", null); DatePicker = (0, _tslib.__decorate)([_mobxReact.observer], DatePicker); var _default = DatePicker; exports["default"] = _default; //# sourceMappingURL=DatePicker.js.map