UNPKG

@uiw-admin/components

Version:
197 lines (191 loc) 6.67 kB
"use strict"; 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;