ming-demo3
Version:
mdf metaui web
643 lines (557 loc) • 22 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _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 = _interopRequireWildcard(require("react"));
var _baseui = require("@mdf/baseui");
var _label = _interopRequireDefault(require("./label"));
var _text = _interopRequireDefault(require("./text"));
var _SvgIcon = _interopRequireDefault(require("@mdf/metaui-web/lib/components/common/SvgIcon"));
var _extend = require("@mdf/cube/lib/extend");
var Option = _baseui.Select.Option;
var Search = _baseui.Input.Search;
var ListRefer = function (_Component) {
(0, _inherits2["default"])(ListRefer, _Component);
function ListRefer(props) {
var _this;
(0, _classCallCheck2["default"])(this, ListRefer);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ListRefer).call(this, props));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getModel", function () {
return _this.props.model || _this.model;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "open", function (e) {
_this.referViewModel = e.vm;
_this.gridModel = e.vm.get('table');
_this.gridModel.addListener((0, _assertThisInitialized2["default"])(_this));
if (typeof _this.props.afterOkClick === 'function') _this.referViewModel.on('afterOkClick', _this.props.afterOkClick);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setValue", function (value) {
_this.setState({
value: value
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setDataSource", function (dataSource) {
_this.dataSourceReady = true;
_this.setState({
dataSource: dataSource,
_dataSource: [].concat(dataSource)
});
var _this$state = _this.state,
multiple = _this$state.multiple,
dataStatus = _this$state.dataStatus,
textField = _this$state.textField;
if (multiple) {
if (!dataStatus || dataStatus == {}) {
dataSource.map(function (ele, index) {
dataStatus[ele.id] = {
name: ele[textField],
checked: false,
index: ele.id
};
});
} else {
dataSource.map(function (ele, index) {
if (!dataStatus[ele.id]) {
dataStatus[ele.id] = {
name: ele[textField],
checked: false,
index: ele.id
};
}
});
}
_this.setState({
dataStatus: dataStatus
});
}
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClick", function () {
if (_this.hasClicked) return;
_this.hasClicked = true;
_this.onClick();
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClick", function () {
if (_this.state.showPop) return;
_this.setState({
dataSource: [],
_dataSource: []
});
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) model.browse(true);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleJointQuery", function () {
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.fireEvent('jointQuery');
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e, value) {
var textField = _this.state.textField;
var index = _this.state.dataSource.findIndex(function (item) {
return item[textField] === value;
});
var referValue;
if (value == null) {
referValue = value;
} else {
_this.gridModel.select([index]);
referValue = _this.gridModel.getSelectedRows();
}
_this.referViewModel.execute('afterOkClick', referValue);
_this.setState({
showPop: false
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onButtonClick", function (e, type) {
var _this$state2 = _this.state,
checkedKeys = _this$state2.checkedKeys,
dataSource = _this$state2.dataSource;
if (type == 'submit') {
var rows = dataSource.filter(function (v) {
return checkedKeys.includes(v.id);
});
_this.referViewModel.execute('afterOkClick', rows);
}
_this.setState({
showPop: false
});
var model = _this.getModel();
model.execute('blur');
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChecked", function (e, id) {
var _this$state3 = _this.state,
dataStatus = _this$state3.dataStatus,
checkedKeys = _this$state3.checkedKeys;
var checked = e.target.checked;
dataStatus[id].checked = checked;
if (checked) {
checkedKeys.push(dataStatus[id].index);
} else {
checkedKeys = [];
for (var key in dataStatus) {
if (dataStatus[key].checked) {
checkedKeys.push(dataStatus[key].index);
}
}
}
_this.setState({
dataStatus: dataStatus,
checkedKeys: checkedKeys
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPopClick", function () {
var disabled = _this.state.disabled;
if (disabled) return;
_this.setState({
showPop: !_this.state.showPop
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClear", function (e) {
e.preventDefault();
e.stopPropagation();
_this.getModel().setValue(null, true);
_this.setState({
dataStatus: {},
checkedKeys: []
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onVisibleChange", function (visible) {
var disabled = _this.state.disabled;
if (disabled) return;
_this.setState({
showPop: visible
});
if (!visible) {
_this.dataSourceReady = false;
var model = _this.getModel();
model.execute('blur');
}
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSearchChange", function (e) {
var value = e.target.value;
var _dataSource = _this.getDataSource(value);
_this.setState({
searchValue: value,
_dataSource: _dataSource
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getDataSource", function (searchValue) {
var _this$state4 = _this.state,
dataSource = _this$state4.dataSource,
textField = _this$state4.textField;
var _dataSource = [];
if (searchValue) {
dataSource.map(function (ele) {
var elementText = ele[textField];
if (cb.utils.isEmpty(elementText)) return;
if (typeof elementText !== 'string') elementText = elementText.toString();
if (elementText.indexOf(searchValue) > -1) {
_dataSource.push(ele);
}
});
} else {
_dataSource = [].concat(dataSource);
}
return _dataSource;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSearchClear", function () {
_this.setState({
searchValue: ''
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPopContent", function () {
var _this$state5 = _this.state,
multiple = _this$state5.multiple,
disabled = _this$state5.disabled,
dataSource = _this$state5.dataSource,
searchValue = _this$state5.searchValue,
value = _this$state5.value,
showPop = _this$state5.showPop,
dataStatus = _this$state5.dataStatus,
checkedKeys = _this$state5.checkedKeys,
textField = _this$state5.textField;
var controls = [];
var searchClearControl = searchValue.length ? _react["default"].createElement("span", {
onClick: _this.onSearchClear,
className: "ant-select-selection__clear"
}) : null;
if (dataSource.length <= 0) {
var nodata = _react["default"].createElement("div", {
className: "no-data"
}, searchValue ? null : _react["default"].createElement(_SvgIcon["default"], {
type: "nodata"
}), searchValue ? "暂无搜索结果哦~" : "暂时没有数据哦~");
return _react["default"].createElement("div", null, searchClearControl, _react["default"].createElement(Search, {
value: searchValue,
onChange: _this.onSearchChange
}), _this.dataSourceReady ? nodata : null);
}
var _dataSource = _this.getDataSource(searchValue);
if (_dataSource.length === 0) {
if (!multiple) {
controls.push(_react["default"].createElement("li", {
className: "no-data"
}, "\u6682\u65E0\u641C\u7D22\u7ED3\u679C\u54E6~"));
} else {
controls.push(_react["default"].createElement("div", {
className: "no-data"
}, "\u6682\u65E0\u641C\u7D22\u7ED3\u679C\u54E6~"));
}
}
_dataSource.length && _dataSource.map(function (ele) {
var _this2 = this;
if (!multiple) {
controls.push(_react["default"].createElement("li", {
onClick: function onClick(e) {
return _this2.onChange(e, ele[textField]);
}
}, ele[textField]));
} else {
var checked = dataStatus[ele.id] ? dataStatus[ele.id].checked : false;
controls.push(_react["default"].createElement(_baseui.Checkbox, {
checked: checked,
key: ele.id,
onChange: function onChange(e) {
return _this2.onChecked(e, ele.id);
}
}, ele[textField]));
}
}, (0, _assertThisInitialized2["default"])(_this));
if (!multiple) {
return _react["default"].createElement("div", {
className: "listRefer-list-container"
}, searchClearControl, _react["default"].createElement(Search, {
value: searchValue,
onChange: _this.onSearchChange
}), _react["default"].createElement("ul", {
className: "defaut-list listRefer-list"
}, controls));
} else {
return _react["default"].createElement("div", {
className: "listRefer"
}, searchClearControl, _react["default"].createElement(Search, {
value: searchValue,
onChange: _this.onSearchChange
}), controls, _react["default"].createElement("div", {
className: "filter-btn-1"
}, _react["default"].createElement(_baseui.Button, {
className: "ant-btn-sm",
type: "primary",
onClick: function onClick(e) {
return _this.onButtonClick(e, 'submit');
}
}, "\u786E\u5B9A"), _react["default"].createElement(_baseui.Button, {
className: "ant-btn-sm",
type: "default",
onClick: function onClick(e) {
return _this.onButtonClick(e, 'cancel');
}
}, "\u53D6\u6D88")));
}
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getListRefer", function () {
var _this$state6 = _this.state,
multiple = _this$state6.multiple,
disabled = _this$state6.disabled,
value = _this$state6.value,
showPop = _this$state6.showPop;
var contentClass = "",
showClear = false,
selectionControl = null;
if (value && value != "") {
selectionControl = _react["default"].createElement("span", {
className: "ant-select-selection-selected-value"
}, value);
showClear = true;
} else {
selectionControl = _react["default"].createElement("span", {
className: "ant-select-selection__placeholder"
});
}
if (disabled) {
contentClass = "ant-select ant-select-disabled ant-select-allow-clear";
} else {
contentClass = "ant-select ant-select-enabled ant-select-allow-clear";
}
if (showPop) contentClass = contentClass + ' ant-select-open ant-select-focused';
var clearControl = showClear ? _react["default"].createElement("span", {
onClick: _this.onClear,
className: "ant-select-selection__clear"
}) : _react["default"].createElement("span", null);
return _react["default"].createElement("span", {
ref: function ref(node) {
return _this.input = node;
},
onClick: _this.onClick,
className: contentClass
}, _react["default"].createElement("span", {
className: "uretail-treerefer-selection ant-select-selection ant-select-selection--single",
role: "combobox",
"aria-autocomplete": "list",
"aria-haspopup": "true",
tabindex: "0",
"aria-expanded": "false"
}, _react["default"].createElement("span", {
className: "ant-select-selection__rendered"
}, selectionControl), clearControl, _react["default"].createElement("span", {
className: "ant-select-arrow",
style: {
outline: 'none'
}
}, _react["default"].createElement("b", null))));
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "baseControl", function () {
var _baseControl = null;
var _this$state7 = _this.state,
after = _this$state7.after,
bottom = _this$state7.bottom,
afterPopoverKey = _this$state7.afterPopoverKey,
readOnly = _this$state7.readOnly,
dataSource = _this$state7.dataSource,
searchValue = _this$state7.searchValue,
disabled = _this$state7.disabled;
if (readOnly || disabled) {
_baseControl = (0, _text["default"])(_this.state.value);
} else {
var _this$state8 = _this.state,
textField = _this$state8.textField,
keyField = _this$state8.keyField,
multiple = _this$state8.multiple,
_disabled = _this$state8.disabled,
showPop = _this$state8.showPop,
popWidth = _this$state8.popWidth;
var index = dataSource.findIndex(function (item) {
return item[textField] === _this.state.value;
});
var popContent = _this.getPopContent();
var control = _this.getListRefer();
var extraProps = {};
if (popWidth) extraProps.overlayStyle = {
width: popWidth
};
_baseControl = _react["default"].createElement(_baseui.Popover, (0, _extends2["default"])({}, extraProps, {
visible: showPop,
getPopupContainer: function getPopupContainer(triggerNode) {
return document.getElementById('yxyweb-support-mount-popover') || document.body || triggerNode.parentNode;
},
overlayClassName: "uretail-pop ".concat(cb.rest.interMode === 'touch' ? 'listrefer-touch-container' : ''),
content: popContent,
trigger: "click",
placement: "bottom",
onClick: _this.onPopClick,
onVisibleChange: _this.onVisibleChange
}), control);
}
var AfterComName;
if (!afterPopoverKey && !after && !bottom) {
return _baseControl;
} else {
AfterComName = _extend.extendComp.popover[afterPopoverKey];
return _react["default"].createElement("div", {
className: "input-bottom"
}, _react["default"].createElement("div", {
className: "control-flex"
}, _baseControl, afterPopoverKey ? _react["default"].createElement(AfterComName, null) : after && _react["default"].createElement("span", null, after)), !readOnly && !disabled && bottom && _react["default"].createElement("div", {
className: "input-bottom-text",
title: bottom
}, bottom));
}
});
var cStyle = props.cStyle;
var config = null;
if (cStyle) {
try {
config = JSON.parse(cStyle);
} catch (e) {}
}
_this.state = Object.assign({
bIsNull: props.bIsNull,
visible: !props.bHidden,
showPop: false,
dataStatus: {},
checkedKeys: [],
searchValue: '',
dataSource: [],
classname: props.className || '',
_dataSource: []
}, config);
_this.dataSourceReady = false;
return _this;
}
(0, _createClass2["default"])(ListRefer, [{
key: "componentDidMount",
value: function componentDidMount() {
if (this.props.model) this.props.model.addListener(this);
if (this.props.autoLoad) {
this.onClick();
this.setState({
showPop: true
});
}
if (this.props.focus) this.refs.input.refs.input.focus();
this.setState({
popWidth: this.input.clientWidth
});
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
if (this.props.model) {
this.props.model.addListener(this);
if (this.state.err && prevState.value != this.state.value) {
this.props.model.validate();
}
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
var model = this.getModel();
if (model) model.removeListener(this);
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
if (nextProps.model) {
if (!this.props.model) {
nextProps.model.addListener(this);
} else {
return;
}
} else {
if (this.props.model) {
this.props.model.removeListener(this);
}
}
}
}, {
key: "validate",
value: function validate(val) {
this.setState({
err: val.type && 'has-' + val.type,
msg: val.message
});
}
}, {
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 _this3 = this;
if (!this.state.visible) return null;
var _this$props = this.props,
bJointQuery = _this$props.bJointQuery,
cShowCaption = _this$props.cShowCaption;
var title = bJointQuery ? _react["default"].createElement("a", {
onClick: function onClick(e) {
return _this3.handleJointQuery(e);
}
}, cShowCaption) : cShowCaption;
title = !this.state.readOnly && !this.state.disabled && 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 = "basic-list-refer has-feedback ".concat(this.state.classname || '', " ") + 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 ListRefer;
}(_react.Component);
exports["default"] = ListRefer;
//# sourceMappingURL=listrefer.js.map