UNPKG

@uiw-admin/components

Version:
150 lines (147 loc) 6.45 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _react = _interopRequireWildcard(require("react")); var _uiw = require("uiw"); var _store = require("./hooks/store"); var _utils = require("./utils"); var _jsxRuntime = require("react/jsx-runtime"); function FormDom(_ref) { var _ref$formDatas = _ref.formDatas, formDatas = _ref$formDatas === void 0 ? [] : _ref$formDatas, formfields = _ref.formfields, formType = _ref.formType, _onSubmit = _ref.onSubmit, _onChange = _ref.onChange, _onSubmitError = _ref.onSubmitError, buttonsContainer = _ref.buttonsContainer, _ref$showSaveButton = _ref.showSaveButton, showSaveButton = _ref$showSaveButton === void 0 ? false : _ref$showSaveButton, _ref$showResetButton = _ref.showResetButton, showResetButton = _ref$showResetButton === void 0 ? false : _ref$showResetButton, _ref$saveButtonProps = _ref.saveButtonProps, saveButtonProps = _ref$saveButtonProps === void 0 ? {} : _ref$saveButtonProps, _ref$resetButtonProps = _ref.resetButtonProps, resetButtonProps = _ref$resetButtonProps === void 0 ? {} : _ref$resetButtonProps, formInstanceRef = _ref.formInstanceRef, className = _ref.className, style = _ref.style; var baseRef = (0, _react.useRef)(null); var store = (0, _store.useStore)(); var colProps = (0, _store.useColPropsContext)(); var _ref2 = store, setFormState = _ref2.setFormState; // 通过store获取表单实例 (0, _react.useEffect)(function () { return setFormState === null || setFormState === void 0 ? void 0 : setFormState(baseRef); }, [baseRef]); // 通过ref获取表单实例 (0, _react.useEffect)(function () { if (baseRef && baseRef.current) { formInstanceRef.current = baseRef; } }, [baseRef]); var styles = (0, _objectSpread2["default"])({ paddingBottom: 10 }, style); if (formType !== 'pure') { styles.background = '#fff'; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Form, { className: className, ref: baseRef, style: styles, resetOnSubmit: false, onSubmit: function onSubmit(_ref3) { var initial = _ref3.initial, current = _ref3.current; // 如果传入了onSubmit走onSubmit,否则主动验证 var filterFormDatas = formDatas.filter(function (item) { return item.hide !== true; }); var validateList = filterFormDatas.map(function (item) { return { key: item.key, value: current[item.key], rules: item.rules, required: item.required }; }) || []; var errorObj = (0, _utils.fromValidate)(validateList); if (Object.keys(errorObj).length > 0) { var err = new Error(); err.filed = errorObj; throw err; } _onSubmit === null || _onSubmit === void 0 ? void 0 : _onSubmit(initial, current); }, onChange: function onChange(_ref4) { var initial = _ref4.initial, current = _ref4.current; return _onChange === null || _onChange === void 0 ? void 0 : _onChange(initial, current); }, onSubmitError: function onSubmitError(error) { if (_onSubmitError) { _onSubmitError === null || _onSubmitError === void 0 ? void 0 : _onSubmitError(error); } else { return error.filed ? (0, _objectSpread2["default"])({}, error.filed) : null; } }, fields: formfields, children: function children(_ref5) { var _ref5$fields = _ref5.fields, fields = _ref5$fields === void 0 ? {} : _ref5$fields, state = _ref5.state, _ref5$canSubmit = _ref5.canSubmit, canSubmit = _ref5$canSubmit === void 0 ? function () { return false; } : _ref5$canSubmit, resetForm = _ref5.resetForm; return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react["default"].Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Row, { gutter: 10, children: Object.keys(fields).map(function (key) { var _fields$key, _fields$key$props, _fields$key2, _fields$key2$props; var colSpan = ((_fields$key = fields[key]) === null || _fields$key === void 0 ? void 0 : (_fields$key$props = _fields$key.props) === null || _fields$key$props === void 0 ? void 0 : _fields$key$props.span) || colProps && colProps.span || '8'; var colstyle = ((_fields$key2 = fields[key]) === null || _fields$key2 === void 0 ? void 0 : (_fields$key2$props = _fields$key2.props) === null || _fields$key2$props === void 0 ? void 0 : _fields$key2$props.colstyle) || {}; return /*#__PURE__*/(0, _react.createElement)(_uiw.Col, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, colProps), {}, { style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, colProps && colProps.style || {}), colstyle), key: key, span: colSpan }), fields[key]); }) }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "w-form-item-center", style: (0, _objectSpread2["default"])({}, buttonsContainer), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Button, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({ className: "uiw-admin-proform-btn", style: { display: showSaveButton ? 'flex' : 'none' }, disabled: !canSubmit(), type: "primary", htmlType: "submit" }, saveButtonProps), {}, { children: saveButtonProps.label || '提交' })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_uiw.Button, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({ className: "uiw-admin-proform-btn", style: { display: showResetButton ? 'flex' : 'none' }, onClick: resetForm }, resetButtonProps), {}, { children: resetButtonProps.label || '重置' }))] })] }); } }); } var _default = FormDom; exports["default"] = _default; module.exports = exports.default;