@uiw-admin/components
Version:
150 lines (147 loc) • 6.45 kB
JavaScript
"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;