@ywfe/materials-design
Version:
YwDesign for lowcode
93 lines (92 loc) • 3 kB
JavaScript
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _Input from "@alifd/next/lib/input";
import _Select from "@alifd/next/lib/select";
import React, { useState, Component } from 'react';
// 根据指定字段获取数据
// const tempPlaceHolder = '${rule}';
var tempPlaceHolderReg = /\$\{rule\}/g;
var valueReg = /\{"var":".*"\}/g;
var defaultTempFunc = 'this.appHelper?.utils?.jsonLogic(${rule},${data})';
var defaultTempHolderReg = /\$\{data\}/g;
var FieldSetter = function FieldSetter(props) {
var _onChange = props.onChange,
field = props.field,
data = props.data,
template = props.template,
_props$defaultField = props.defaultField,
defaultField = _props$defaultField === void 0 ? '' : _props$defaultField;
var _template = template || defaultTempFunc.replace(defaultTempHolderReg, data.value);
var formatDefaultSetterVal = function formatDefaultSetterVal() {
var defaultValue = field.parent.getPropValue(field.name);
if (defaultValue !== null && defaultValue !== void 0 && defaultValue.value) {
var matchData = defaultValue.value.match(valueReg);
console.log(JSON.parse(matchData[0])["var"]);
if (matchData && matchData.length) {
return JSON.parse(matchData[0])["var"] || defaultField;
}
}
return defaultField;
};
var _useState = useState(formatDefaultSetterVal()),
value = _useState[0],
setValue = _useState[1];
var items = [];
var formatFieldVal = function formatFieldVal(rule) {
var func = _template.replace(tempPlaceHolderReg, JSON.stringify(rule));
return {
type: 'JSExpression',
value: func
};
};
return /*#__PURE__*/React.createElement("div", {
className: "lc-field-setter"
}, items !== null && items !== void 0 && items.length ? /*#__PURE__*/React.createElement(_Select, {
value: value,
style: {
width: '100%'
},
placeholder: "\u8BF7\u9009\u62E9\u5B57\u6BB5",
dataSource: items,
onChange: function onChange(val) {
if (!val) return;
var rules = {
"var": val
};
_onChange(formatFieldVal(rules));
}
}) : /*#__PURE__*/React.createElement(_Input, {
style: {
width: '100%'
},
value: value,
onInput: function onInput(e) {
if (!e.target.value) return;
var rules = {
"var": e.target.value
};
setValue(e.target.value);
_onChange(formatFieldVal(rules));
}
}));
};
FieldSetter.defaultProps = {
value: undefined,
type: 'string',
defaultValue: null,
hasClear: true,
onChange: function onChange() {
return undefined;
}
};
var _default = /*#__PURE__*/function (_Component) {
_inheritsLoose(_default, _Component);
function _default() {
return _Component.apply(this, arguments) || this;
}
var _proto = _default.prototype;
_proto.render = function render() {
return /*#__PURE__*/React.createElement(FieldSetter, this.props);
};
return _default;
}(Component);
export { _default as default };