@uiw-admin/components
Version:
197 lines (191 loc) • 6.67 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _uiw = require("uiw");
var _Select = _interopRequireDefault(require("./widgets/Select"));
var _Radio = _interopRequireDefault(require("./widgets/Radio"));
var _SearchTree = _interopRequireDefault(require("./widgets/SearchTree"));
var _hooks = require("./hooks");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["widgetProps", "key", "widget", "label", "initialValue"];
var widgets = {
input: _uiw.Input,
radio: _Radio["default"],
checkbox: _uiw.Checkbox,
"switch": _uiw.Switch,
select: _Select["default"],
searchSelect: _uiw.SearchSelect,
textarea: _uiw.Textarea,
dateInput: _uiw.DateInput,
timePicker: _uiw.TimePicker,
monthPicker: _uiw.MonthPicker,
searchTree: _SearchTree["default"],
dateInputRange: _uiw.DateInputRange
// treeChecked: TreeChecked,
};
var BaseForm = function BaseForm(props) {
var store = (0, _hooks.useStore)();
var formRef = (0, _react.useRef)();
var _ref = store,
updateStore = _ref.updateStore,
updateForm = _ref.updateForm;
var columns = props.columns,
searchBtns = props.searchBtns,
onBeforeSearch = props.onBeforeSearch,
_props$formCol = props.formCol,
formCol = _props$formCol === void 0 ? 5 : _props$formCol;
var getFields = function getFields(formProps, title) {
var widgetProps = formProps.widgetProps,
key = formProps.key,
widget = formProps.widget,
label = formProps.label,
initialValue = formProps.initialValue,
otherProps = (0, _objectWithoutProperties2["default"])(formProps, _excluded);
var Widget = widgets[widget];
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
label: label || title,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Widget, (0, _objectSpread2["default"])({}, widgetProps))
}, otherProps), {}, {
initialValue: initialValue
});
};
// 获取表单配置
var getFormFields = (0, _react.useMemo)(function () {
var fields = {};
var helper = function helper(cols) {
cols.forEach(function (col) {
if (col.props && Object.keys(col.props).length > 0) {
if (Array.isArray(col.props)) {
col.props.forEach(function (f) {
var name = f.key || col.key;
fields[name] = getFields(f, col.title);
});
} else {
var key = col.props.key;
var name = key || col.key;
fields[name] = getFields(col.props, col.title);
}
}
// 多层children
if (col.children && col.children.length > 0) {
helper(col.children);
}
});
};
helper(columns);
return fields;
}, [JSON.stringify(columns)]);
// 查询
var onFormSearch = function onFormSearch(_ref2) {
var initial = _ref2.initial,
current = _ref2.current;
updateStore({
searchValues: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, initial), current)
});
// onSearch();
};
(0, _react.useEffect)(function () {
// 存储表单组件实例
if (formRef.current) {
updateForm(formRef);
}
}, [formRef]);
// 表单占比
var cent = 100 / formCol + '%';
var itemsLength = Object.keys(getFormFields).length;
var emptyLength = formCol - 1 - itemsLength % formCol;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Form, {
style: {
background: '#fff'
},
className: "uiw-protable-form",
resetOnSubmit: false,
onSubmit: function onSubmit(_ref3) {
var initial = _ref3.initial,
current = _ref3.current;
// 搜索前校验
if (onBeforeSearch) {
if (onBeforeSearch !== null && onBeforeSearch !== void 0 && onBeforeSearch({
initial: initial,
current: current
})) {
onFormSearch({
initial: initial,
current: current
});
}
} else {
onFormSearch({
initial: initial,
current: current
});
}
},
onSubmitError: function onSubmitError(error) {
if (error.filed) {
return (0, _objectSpread2["default"])({}, error.filed);
}
return null;
},
ref: formRef,
fields: getFormFields,
children: function children(_ref4) {
var _ref4$fields = _ref4.fields,
fields = _ref4$fields === void 0 ? {} : _ref4$fields,
state = _ref4.state,
canSubmit = _ref4.canSubmit,
resetForm = _ref4.resetForm;
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_uiw.Row, {
gutter: 12,
children: [Object.keys(fields).map(function (key) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Col, {
fixed: true,
style: {
width: cent
},
children: fields[key]
}, key);
}), Array.from({
length: emptyLength
}, function (_, index) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Col, {
fixed: true,
style: {
width: cent
}
}, index.toString());
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Col, {
align: "bottom",
style: {
textAlign: 'right',
marginBottom: 10,
marginTop: 10
},
children: searchBtns && searchBtns.map(function (btn, idx) {
return btn !== null && btn !== void 0 && btn.render ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_react["default"].Fragment, {
children: btn.render
}, idx.toString()) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Button, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
style: {
marginLeft: 5
}
}, btn), {}, {
children: btn.label
}), idx.toString());
})
})]
})
});
}
});
};
var _default = BaseForm;
exports["default"] = _default;
module.exports = exports.default;