UNPKG

ming-demo3

Version:
224 lines (197 loc) 7.78 kB
"use strict"; 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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); 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 _baseui = require("@mdf/baseui"); var _reactDom = require("react-dom"); var _label = _interopRequireDefault(require("./label")); var _text = _interopRequireDefault(require("./text")); var _moment = _interopRequireDefault(require("moment")); var DatePickerControl = function (_React$Component) { (0, _inherits2["default"])(DatePickerControl, _React$Component); function DatePickerControl(props) { var _this; (0, _classCallCheck2["default"])(this, DatePickerControl); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(DatePickerControl).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onOk", function () { _this.props.model.execute('blur'); }); _this.handleBodyClick = _this.handleBodyClick.bind((0, _assertThisInitialized2["default"])(_this)); _this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this)); _this.state = { bIsNull: props.bIsNull, focus: props.focus, value: null, format: props.cFormatData || 'YYYY-MM-DD', disabled: false, visible: !props.bHidden, style: {}, size: 'default', locale: '', err: '', msg: '', className: props.className || '', isInFilterJSX: props.isInFilterJSX }; return _this; } (0, _createClass2["default"])(DatePickerControl, [{ key: "componentDidMount", value: function componentDidMount() { if (this.props.model) { this.props.model.addListener(this); } } }, { key: "componentDidUpdate", value: function componentDidUpdate() { if (this.props.model) this.props.model.addListener(this); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { if (this.props.model) this.props.model.removeListener(this); } }, { key: "handleBodyClick", value: function handleBodyClick(e) { document.body.removeEventListener('click', this.handleBodyClick); if (this.contains(this.refs.div, e.target)) return; if (e.target && cb.dom((0, _reactDom.findDOMNode)(e.target)).parents('div.ant-calendar').length) return; if (this.props.model) this.props.model.execute('blur'); } }, { key: "onChange", value: function onChange(value) { if (this.props.model) { var dateString = value ? value.format(this.state.format) : null; this.props.model.setValue(dateString, true); if (this.state.format && this.state.format.indexOf('mm') > -1) return; this.props.model.execute('blur'); } } }, { key: "toggleOpen", value: function toggleOpen(status) { if (this.props.model) { this.props.model.fireEvent('toggleOpen'); } } }, { key: "validate", value: function validate(val) { this.setState({ err: 'has-' + val.type, msg: val.message }); } }, { key: "contains", value: function contains(elem, target) { if (elem === target) return true; if (!elem || !elem.children || !elem.children.length) return false; for (var i = 0, len = elem.children.length; i < len; i++) { if (this.contains(elem.children[i], target)) return true; } return false; } }, { key: "getCalendarContainer", value: function getCalendarContainer() { return document.getElementById('popup-container'); } }, { key: "baseControl", value: function baseControl() { var _this2 = this; var _this$state = this.state, value = _this$state.value, format = _this$state.format; var showValue = value && (0, _typeof2["default"])(value) !== 'object' ? (0, _moment["default"])(value, format) : ''; var baseControl; if (this.state.readOnly) { baseControl = (0, _text["default"])(showValue ? showValue.format(format) : showValue); } else { var showTime = this.state.format && this.state.format.indexOf('mm') > -1; var pickerProps = { value: showValue || null }; if (cb.rest.interMode === 'touch') pickerProps.getCalendarContainer = this.getCalendarContainer; baseControl = _react["default"].createElement(_baseui.DatePicker, (0, _extends2["default"])({ placeholder: null, onOpenChange: function onOpenChange(e) { return _this2.toggleOpen(e); }, showTime: showTime, onOk: this.onOk, locale: this.state.locale, size: this.state.size, style: this.state.style, disabled: this.state.disabled, format: this.state.format }, pickerProps, { onChange: this.onChange })); } return baseControl; } }, { key: "relatedControl", value: function relatedControl() { var control = this.baseControl(); var relatedControl = this.props.relatedControl; if (!relatedControl) return control; return _react["default"].createElement("div", { className: "has-related" }, _react["default"].createElement("div", { className: "viewCell" }, control), relatedControl); } }, { key: "getControl", value: function getControl() { var cShowCaption = this.props.cShowCaption; var title = !this.state.readOnly && this.state.bIsNull === false && cShowCaption ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, { type: "star" }), cShowCaption) : _react["default"].createElement("label", null, cShowCaption); var control = cShowCaption ? _react["default"].createElement(_label["default"], { control: this.relatedControl(), title: title }) : this.relatedControl(); return control; } }, { key: "render", value: function render() { document.body.addEventListener('click', this.handleBodyClick); var control = this.getControl(); var style = this.state.visible ? {} : { display: "none" }; var className = this.state.err + ' ' + this.state.className; if (this.state.isInFilterJSX) className = className + " isInFilterJSX isInFilterJSX-DatePicker"; return _react["default"].createElement("div", { ref: "div", style: style, className: className }, control, _react["default"].createElement("div", { className: "ant-form-explain" }, this.state.msg)); } }]); return DatePickerControl; }(_react["default"].Component); exports["default"] = DatePickerControl; //# sourceMappingURL=datepicker.js.map