UNPKG

ming-demo3

Version:
460 lines (404 loc) 15 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; 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 _classnames = _interopRequireDefault(require("classnames")); var _row = _interopRequireDefault(require("./row")); var _col = _interopRequireDefault(require("./col")); var _label = _interopRequireDefault(require("./label")); var _text = _interopRequireDefault(require("./text")); var _button = _interopRequireDefault(require("./button")); var _refer = _interopRequireDefault(require("../refer")); var _SvgIcon = _interopRequireDefault(require("@mdf/metaui-web/lib/components/common/SvgIcon")); var _env = _interopRequireDefault(require("../../helpers/env")); var ReferControl = function (_React$Component) { (0, _inherits2["default"])(ReferControl, _React$Component); function ReferControl(props) { var _this; (0, _classCallCheck2["default"])(this, ReferControl); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ReferControl).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleInputChange", function (e) { if (!e.target.value) { var model = _this.getModel(); if (model) model.setValue(null, true); } _this.setState({ value: e.target.value }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "emitEmpty", function () { var model = _this.getModel(); if (model) model.setValue(null, true); _this.refs.inputSearch.refs.input.focus(); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleBodyClick", function (e) { if (!_this.refs.inputSearch) return; if (e.target === _this.refs.inputSearch.refs.input || e.target.classList.contains('anticon-canzhao') || e.target.classList.contains('anticon-close-circle') || cb.dom(e.target).parents('.has-related').length || e.target.classList.contains('ant-input-affix-wrapper')) return; document.body.removeEventListener('click', _this.handleBodyClick); _this.setState({ focused: false }); var model = _this.getModel(); if (model) model.execute('blur'); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleFocus", function (e) { var model = _this.getModel(); if (!model && _this.props.cRefType) { _this.model = new cb.models.ReferModel({ cRefType: _this.props.cRefType, multiple: _this.props.multiple, isList: _this.props.isList ? true : false, value: _this.props.value }); _this.model.addListener((0, _assertThisInitialized2["default"])(_this)); model = _this.getModel(); } if (model) model.browse(false, function (vm) { _this.vm = vm; }); _this.setState({ focused: true, showClear: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "resetEnterMode", function () { _this.isEnterMode = false; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onMouseEnter", function () { _this.setState({ showClear: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onMouseLeave", function () { _this.setState({ showClear: false }); }); _this.state = { touch: _env["default"].INTERACTIVE_MODE === 'touch', bIsNull: props.bIsNull, visible: !props.bHidden, focus: false, modalVisible: false, value: _this.props.value, referType: '', disabled: _this.props.disabled || false, width: 600, title: '参照', err: '', msg: '', showClear: false, focused: false }; _this.onClick = _this.onClick.bind((0, _assertThisInitialized2["default"])(_this)); _this.close = _this.close.bind((0, _assertThisInitialized2["default"])(_this)); _this.handleBodyClick = _this.handleBodyClick.bind((0, _assertThisInitialized2["default"])(_this)); return _this; } (0, _createClass2["default"])(ReferControl, [{ key: "getModel", value: function getModel() { return this.props.model || this.model; } }, { key: "componentDidMount", value: function componentDidMount() { if (this.props.model) this.props.model.addListener(this); if (this.props.focus) this.refs.inputSearch.refs.input.focus(); document.body.addEventListener('click', this.handleBodyClick); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { if (this.props.model) this.props.model.addListener(this); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (!this.props.model && nextProps.model) nextProps.model.addListener(this); if (nextProps.value === this.props.value) return; this.setState({ value: nextProps.value }); if (typeof this.props.valueChange == 'function') this.props.valueChange(nextProps.value); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { document.body.removeEventListener('click', this.handleBodyClick); var model = this.getModel(); if (model) model.removeListener(this); } }, { key: "open", value: function open(e) { document.body.removeEventListener('click', this.handleBodyClick); this.setState({ referType: e.referType, vm: e.vm, modalVisible: true }); } }, { key: "close", value: function close() { this.setState({ modalVisible: false, focused: false }); var model = this.getModel(); if (model) model.execute('blur'); } }, { key: "setValue", value: function setValue(value) { document.body.removeEventListener('click', this.handleBodyClick); this.setState({ modalVisible: false, value: value }); if (!this.isEnterMode) return; this.isEnterMode = false; var model = this.getModel(); if (model) model.execute('blur'); } }, { key: "onClick", value: function onClick() { var model = this.getModel(); if (!model && this.props.cRefType) { this.model = new cb.models.ReferModel({ cRefType: this.props.cRefType, multiple: this.props.multiple, isList: this.props.isList ? true : false, value: this.props.value }); this.model.addListener(this); model = this.getModel(); } if (model) model.browse(); } }, { key: "handleJointQuery", value: function handleJointQuery() { var model = this.getModel(); if (!model && this.props.cRefType) { this.model = new cb.models.ReferModel({ cRefType: this.props.cRefType, multiple: this.props.multiple, isList: this.props.isList ? true : false, value: this.props.value }); this.model.addListener(this); } model = this.getModel(); if (model) model.fireEvent('jointQuery'); } }, { key: "handleOnPressEnter", value: function handleOnPressEnter(e) { if (this.isEnterMode) return; this.isEnterMode = true; var errCallBack = function errCallBack() { e.nativeEvent.stopImmediatePropagation(); e.nativeEvent.stopPropagation(); }; var model = this.getModel(); if (model) { model.fireEvent('pressEnter', this.state.value); model.setState('text', this.state.value); } this.vm && this.vm.fireEvent('pressEnter', { value: this.state.value, model: model, callback: this.resetEnterMode, errCallBack: errCallBack }); } }, { key: "handleInputBlur", value: function handleInputBlur(e) { var value = e.target.value === '' ? null : e.target.value; if (this.props.model) this.props.model.setState('text', value); this.setState({ focused: false, showClear: false }); } }, { key: "setDisabled", value: function setDisabled(val) { this.setState({ disabled: val }); } }, { key: "validate", value: function validate(val) { this.setState({ err: 'has-' + val.type, msg: val.message }); } }, { key: "baseControl", value: function baseControl() { var _this2 = this; var baseControl; if (this.state.readOnly) { baseControl = (0, _text["default"])(this.state.value); } else { var _this$props = this.props, style = _this$props.style, size = _this$props.size, placeholder = _this$props.placeholder; var referTitle = ''; if (this.props.title) { referTitle = _react["default"].createElement(_col["default"], { span: 6 }, this.props.title); } var btnCls = (0, _classnames["default"])({ 'ant-search-btn': true }); var searchCls = (0, _classnames["default"])({ 'ant-search-input': true, 'ant-search-input-focus': this.state.focus }); var suffix; if (!this.state.disabled) { var suffixItems = []; if (!cb.utils.isEmpty(this.state.value) && (this.state.showClear || this.state.touch || this.state.focused || this.props.inTable)) suffixItems.push(_react["default"].createElement(_baseui.Icon, { type: "close-circle", onClick: this.emitEmpty })); suffixItems.push(_react["default"].createElement(_baseui.Icon, { type: "canzhao", onClick: this.onClick })); suffix = _react["default"].createElement("div", null, suffixItems); } baseControl = _react["default"].createElement(_row["default"], { className: this.state.err }, _react["default"].createElement(_col["default"], { span: "line" }, _react["default"].createElement("div", { className: "ant-search-input-wrapper", onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, style: style }, _react["default"].createElement(_baseui.Input, { readOnly: this.state.touch, ref: "inputSearch", disabled: this.state.disabled, placeholder: placeholder, value: this.state.value, onFocus: this.handleFocus, onChange: function onChange(e) { return _this2.handleInputChange(e); }, suffix: suffix, onPressEnter: function onPressEnter(e) { return _this2.handleOnPressEnter(e); }, onBlur: function onBlur(e) { return _this2.handleInputBlur(e); }, onClick: this.state.touch ? this.onClick : null }), _react["default"].createElement(_refer["default"], { visible: this.state.modalVisible, close: this.close, title: this.props.cShowCaption ? this.props.cShowCaption : this.props.title, model: this.state.vm, afterOkClick: this.props.afterOkClick, referType: this.state.referType })))); } return baseControl; } }, { key: "isHideRelatedControl", value: function isHideRelatedControl() { var obj = true; var arr = this.getModel() && this.getModel().getCache("relatedState"); if (arr && arr.length > 0) { arr.forEach(function (ele) { if (ele.visible !== false) obj = false; }); } else { obj = false; } return obj; } }, { key: "relatedControl", value: function relatedControl() { var control = this.baseControl(); var relatedControl = this.props.relatedControl; if (!relatedControl) { return control; } else { var style = {}; if (this.isHideRelatedControl() == true) style.display = "none"; return _react["default"].createElement("div", { className: "has-related" }, _react["default"].createElement("div", { className: "viewCell" }, control), _react["default"].createElement("div", { className: "related-show", style: style }, relatedControl)); } } }, { key: "getControl", value: function getControl() { var _this3 = this; var _this$props2 = this.props, bJointQuery = _this$props2.bJointQuery, cShowCaption = _this$props2.cShowCaption; var title = bJointQuery ? _react["default"].createElement("a", { onClick: function onClick(e) { return _this3.handleJointQuery(e); } }, cShowCaption) : cShowCaption; title = !this.state.readOnly && this.state.bIsNull === false && cShowCaption ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, { type: "star" }), title) : _react["default"].createElement("label", null, title); var control = cShowCaption ? _react["default"].createElement(_label["default"], { control: this.relatedControl(), title: title }) : this.relatedControl(); return control; } }, { key: "render", value: function render() { var control = this.getControl(); var style = this.state.visible ? {} : { display: "none" }; var errClass = 'has-feedback ' + this.state.err; return _react["default"].createElement("div", { style: style, className: errClass }, control, _react["default"].createElement("div", { className: "ant-form-explain" }, this.state.msg)); } }]); return ReferControl; }(_react["default"].Component); exports["default"] = ReferControl; //# sourceMappingURL=refer.js.map