fastlion-amis
Version:
一种MIS页面生成工具
81 lines (80 loc) • 4.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConditionField = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var PopOverContainer_1 = (0, tslib_1.__importDefault)(require("../PopOverContainer"));
var GroupedSelection_1 = (0, tslib_1.__importDefault)(require("../GroupedSelection"));
var ResultBox_1 = (0, tslib_1.__importDefault)(require("../ResultBox"));
var theme_1 = require("../../theme");
var icons_1 = require("../icons");
var helper_1 = require("../../utils/helper");
var locale_1 = require("../../locale");
var SearchBox_1 = (0, tslib_1.__importDefault)(require("../SearchBox"));
var option2value = function (item) { return item.name; };
var ConditionField = /** @class */ (function (_super) {
(0, tslib_1.__extends)(ConditionField, _super);
function ConditionField(props) {
var _this = _super.call(this, props) || this;
_this.state = {
options: props.options
};
_this.onSearch = _this.onSearch.bind(_this);
return _this;
}
ConditionField.prototype.onSearch = function (text) {
var txt = text.toLowerCase();
this.setState({
options: this.props.options
.map(function (item) {
if (item.children) {
var children = item.children.filter(function (child) {
return (child.name.toLowerCase().includes(txt) ||
child.label.toLowerCase().includes(txt));
});
return children.length > 0
? Object.assign({}, item, { children: children }) // 需要copy一份,防止覆盖原始数据
: false;
}
else {
return item.name.toLowerCase().includes(txt) ||
item.label.toLowerCase().includes(txt)
? item
: false;
}
})
.filter(function (item) {
return !!item;
})
});
};
// 选了值,还原options
ConditionField.prototype.onPopClose = function (e, onClose) {
this.setState({
options: this.props.options
});
onClose();
};
ConditionField.prototype.render = function () {
var _this = this;
var _a = this.props, options = _a.options, onChange = _a.onChange, value = _a.value, cx = _a.classnames, fieldClassName = _a.fieldClassName, disabled = _a.disabled, __ = _a.translate, searchable = _a.searchable;
return (react_1.default.createElement(PopOverContainer_1.default, { popOverRender: function (_a) {
var onClose = _a.onClose;
return (react_1.default.createElement(react_1.default.Fragment, null,
searchable ? (react_1.default.createElement(SearchBox_1.default, { mini: false, onSearch: _this.onSearch })) : null,
react_1.default.createElement(GroupedSelection_1.default, { multiple: false, onClick: function (e) { return _this.onPopClose(e, onClose); }, options: _this.state.options, value: [value], option2value: option2value, onChange: function (value) {
return onChange(Array.isArray(value) ? value[0] : value);
} })));
} }, function (_a) {
var onClick = _a.onClick, ref = _a.ref, isOpened = _a.isOpened;
return (react_1.default.createElement("div", { className: cx('CBGroup-field') },
react_1.default.createElement(ResultBox_1.default, { className: cx('CBGroup-fieldInput', fieldClassName, isOpened ? 'is-active' : ''), ref: ref, allowInput: false, result: value ? (0, helper_1.findTree)(options, function (item) { return item.name === value; }) : '', onResultChange: helper_1.noop, onResultClick: onClick, placeholder: __('Condition.field_placeholder'), disabled: disabled },
react_1.default.createElement("span", { className: cx('CBGroup-fieldCaret') },
react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" })))));
}));
};
return ConditionField;
}(react_1.default.Component));
exports.ConditionField = ConditionField;
exports.default = (0, theme_1.themeable)((0, locale_1.localeable)(ConditionField));
//# sourceMappingURL=./components/condition-builder/Field.js.map
;