@uiw-admin/components
Version:
101 lines • 3.06 kB
JavaScript
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;