ming-demo3
Version:
mdf metaui web
224 lines (197 loc) • 7.78 kB
JavaScript
"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