UNPKG

@uiw-admin/components

Version:
101 lines 3.06 kB
import _extends from "@babel/runtime/helpers/extends"; import { Form, Button, Row, Col } from 'uiw'; import React from 'react'; import { validator, getRules } from './utils'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; export * from './interface'; function ComForm(props) { var { fields: fieldArr, buttonGroup, buttonGroupClassName, buttonGroupStyle, showSaveButton = false, showResetButton = false, saveButtonProps = {}, resetButtonProps = {} } = props; var buttonGroupArr = buttonGroup || [_extends({ style: { display: showSaveButton ? 'flex' : 'none' }, htmlType: 'submit', children: saveButtonProps.label || '提交' }, saveButtonProps), _extends({ style: { display: showResetButton ? 'flex' : 'none' }, children: resetButtonProps.label || '重置', htmlType: 'reset' }, resetButtonProps)]; return /*#__PURE__*/_jsx(Form, { onChange: value => props.onChange == null ? void 0 : props.onChange(value), onSubmitError: error => { if (props.onSubmitError) { props.onSubmitError(error); } else { return error.filed ? _extends({}, error.filed) : null; } }, fields: fieldArr, onSubmit: (_ref, event) => { var { initial, current } = _ref; if (props.onSubmit) { props.onSubmit({ initial, current }, event); } else { var result = validator(current, getRules(fieldArr)); if (Object.keys(result).length) { var error = new Error(); error.filed = result; throw error; } } }, children: childProps => { var { fields, canSubmit, resetForm } = childProps; return /*#__PURE__*/_jsxs(React.Fragment, { children: [/*#__PURE__*/_jsx(Row, { gutter: 10, children: fields && Object.keys(fields).map(key => { var ColProps = _extends({}, props.colProps || {}); if (fieldArr) { ColProps = _extends({}, ColProps, fieldArr[key].colProps || {}); } return /*#__PURE__*/_jsx(Col, _extends({ span: 8 }, ColProps, { children: fields[key] }), key); }) }), /*#__PURE__*/_jsx("div", { className: "w-form-item-center " + buttonGroupClassName, style: buttonGroupStyle, children: buttonGroupArr.map((item, index) => { if (typeof item === 'function') { return item(childProps); } var props = _extends({}, item); if (item.htmlType === 'submit') { props.disabled = !(canSubmit != null && canSubmit()); } else if (item.htmlType === 'reset') { props.onClick = resetForm; } return /*#__PURE__*/_jsx(Button, _extends({}, props), index); }) })] }); } }); } export default ComForm;