UNPKG

choerodon-ui

Version:

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

1,070 lines (910 loc) 36.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); 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 _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _moment = _interopRequireWildcard(require("moment")); var _classnames = _interopRequireDefault(require("classnames")); var _raf = _interopRequireDefault(require("raf")); var _defaultTo = _interopRequireDefault(require("lodash/defaultTo")); 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 _measureTextWidth = _interopRequireDefault(require("../_util/measureTextWidth")); var _TextField = _interopRequireDefault(require("../text-field/TextField")); var _viewComponents; 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 = (0, _createSuper2["default"])(DatePicker); function DatePicker() { var _this; (0, _classCallCheck2["default"])(this, DatePicker); _this = _super.apply(this, arguments); _this.handleDateMouseEnter = function (currentDate) { _this.hoverValue = currentDate && currentDate.format(_this.getDateFormat()); }; _this.handleDateMouseLeave = function () { _this.hoverValue = null; }; return _this; } (0, _createClass2["default"])(DatePicker, [{ key: "value", get: function get() { var _this2 = 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(_this2.checkMoment, _this2); } return _this2.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 _this3 = this; (0, _mobx.runInAction)(function () { _this3.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'); } }, { 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, _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 viewMode = 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(String(viewMode).toLowerCase()), viewMode)); } }, { key: "getPopupEditor", value: function getPopupEditor() { var editorInPopup = this.observableProps.editorInPopup; if (editorInPopup) { var _classNames2; var prefixCls = this.prefixCls, range = this.range, text = this.text, rangeTarget = this.rangeTarget; var popupHoverValue = this.getHoverValue(true); var className = (0, _classnames["default"])("".concat(prefixCls, "-popup-editor"), (_classNames2 = {}, (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-popup-hover-value"), !(0, _isNil["default"])(popupHoverValue) && !range), (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-popup-hover-value-start"), !(0, _isNil["default"])(popupHoverValue) && range && rangeTarget === 0), (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-popup-hover-value-end"), !(0, _isNil["default"])(popupHoverValue) && range && rangeTarget === 1), _classNames2)); 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 _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 /*#__PURE__*/_react["default"].createElement("span", { key: "popup-editor", className: (0, _classnames["default"])(className, "".concat(prefixCls, "-range-text")) }, /*#__PURE__*/_react["default"].createElement("input", { className: "".concat(prefixCls, "-range-start"), onChange: this.handleChange, onFocus: this.handleRangeStart, value: rangeTarget === 0 ? (0, _defaultTo["default"])((0, _defaultTo["default"])(popupHoverValue, text), startText) : startText, placeholder: startPlaceholder, ref: rangeTarget === 0 ? this.savePopupRangeEditor : undefined }), /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-range-split") }, "~"), /*#__PURE__*/_react["default"].createElement("input", { className: "".concat(prefixCls, "-range-end"), onChange: this.handleChange, onFocus: this.handleRangeEnd, value: rangeTarget === 1 ? (0, _defaultTo["default"])((0, _defaultTo["default"])(popupHoverValue, text), endText) : endText, placeholder: endPlaceHolder, ref: rangeTarget === 1 ? this.savePopupRangeEditor : undefined })); } var value = (0, _isNil["default"])(popupHoverValue) ? this.getTextNode() : popupHoverValue; return /*#__PURE__*/_react["default"].createElement(_TextField["default"], { key: "popup-editor", value: value, onInput: this.handleChange, border: false, className: className, placeholder: startPlaceholder }); } } }, { key: "getHoverValue", value: function getHoverValue(isPopup) { var editorInPopup = this.props.editorInPopup; var hoverValue = this.hoverValue; return isPopup && editorInPopup ? hoverValue : !isPopup && !editorInPopup ? hoverValue : undefined; } // 处理 hover 值显示 }, { key: "getEditorTextInfo", value: function getEditorTextInfo(rangeTarget) { var isFlat = this.props.isFlat; var hoverValue = this.getHoverValue(false); if (!(0, _isNil["default"])(hoverValue)) { if (rangeTarget === undefined || rangeTarget === 0 && this.rangeTarget === 0 || rangeTarget === 1 && this.rangeTarget === 1) { return { text: hoverValue, width: isFlat ? (0, _measureTextWidth["default"])(hoverValue) : 0 }; } } return (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getEditorTextInfo", this).call(this, rangeTarget); } }, { key: "getRangeInputValue", value: function getRangeInputValue(startText, endText) { var hoverValue = this.getHoverValue(false); if ((0, _isNil["default"])(hoverValue)) { return (0, _get3["default"])((0, _getPrototypeOf2["default"])(DatePicker.prototype), "getRangeInputValue", this).call(this, startText, endText); } return hoverValue; } }, { key: "getInputClassString", value: function getInputClassString(className) { var prefixCls = this.prefixCls; var hoverValue = this.getHoverValue(false); return (0, _classnames["default"])(className, (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-hover-value"), !(0, _isNil["default"])(hoverValue))); } }, { key: "getPopupContent", value: function getPopupContent() { var _this4 = this; var mode = this.getViewMode(); var date = this.getSelectedDate(); return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, this.getPopupEditor(), /*#__PURE__*/(0, _react.createElement)(viewComponents[mode], { ref: function ref(node) { return _this4.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', onDateMouseEnter: this.handleDateMouseEnter, onDateMouseLeave: this.handleDateMouseLeave })); } }, { 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 configLimit = this.getContextConfig(minOrMax); if (configLimit) { limit = configLimit(this.getFieldType()); } } 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 _this5 = this; (0, _mobx.runInAction)(function () { _this5.mode = mode; }); } }, { key: "handlePopupAnimateAppear", value: function handlePopupAnimateAppear() {// noop } }, { key: "handlePopupAnimateEnd", value: function handlePopupAnimateEnd(key, exists) { var _this6 = this; if (key === 'align') { if (exists) { var popupRangeEditor = this.popupRangeEditor; if (popupRangeEditor) { (0, _raf["default"])(function () { popupRangeEditor.focus(); }); } } else { (0, _mobx.runInAction)(function () { _this6.selectedDate = undefined; _this6.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, _this7 = 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 : _this7.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; } }]); return DatePicker; }(_TriggerField2["default"]); DatePicker.displayName = 'DatePicker'; DatePicker.defaultProps = (0, _objectSpread2["default"])((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)([_mobx.observable], DatePicker.prototype, "hoverValue", void 0); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "savePopupRangeEditor", null); (0, _tslib.__decorate)([_autobind["default"]], DatePicker.prototype, "defaultRenderer", null); (0, _tslib.__decorate)([_mobx.action], DatePicker.prototype, "handleDateMouseEnter", void 0); (0, _tslib.__decorate)([_mobx.action], DatePicker.prototype, "handleDateMouseLeave", void 0); (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