@nutui/nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
64 lines (63 loc) • 2.44 kB
JavaScript
import React__default from "react";
import { Form as Form$1 } from "@tarojs/components";
import classNames from "classnames";
import { u as useForm, S as SECRET, C as Context, F as FormItem, a as useWatch } from "./formitem.taro-Bee3MWwq.js";
import { C as ComponentDefaults } from "./typings-DV9RBfhj.js";
import { C as Cell } from "./cell.taro-DWLhb5m6.js";
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { labelPosition: "right", starPosition: "left", disabled: false, divider: false, validateTrigger: "onChange", onFinish: (values) => {
}, onFinishFailed: (values, errorFields) => {
} });
const PositionInfo = {
top: "form-layout-top",
left: "form-layout-left",
right: "form-layout-right"
};
const Form = React__default.forwardRef((props, ref) => {
const classPrefix = "nut-form";
const { className, style, footer, children, initialValues, divider, disabled, onFinish, onFinishFailed, validateTrigger, labelPosition, starPosition, form } = Object.assign(Object.assign({}, defaultProps), props);
let formInstance;
if (form !== void 0) {
formInstance = form;
} else {
[formInstance] = useForm();
}
React__default.useImperativeHandle(ref, () => formInstance);
formInstance.starPosition = starPosition;
const { submit, resetFields } = formInstance;
const { setCallback, setInitialValues } = formInstance.getInternal(SECRET);
setCallback({
onFinish,
onFinishFailed
});
const mountRef = React__default.useRef(false);
setInitialValues(initialValues, !mountRef.current);
if (!mountRef.current) {
mountRef.current = true;
}
return React__default.createElement(
Form$1,
{ className: classNames(classPrefix, PositionInfo[labelPosition], className), style, onSubmit: (e) => {
e.preventDefault();
e.stopPropagation();
submit();
}, onReset: (e) => {
e.preventDefault();
e.stopPropagation();
resetFields();
} },
React__default.createElement(
Cell.Group,
{ divider },
React__default.createElement(Context.Provider, { value: { formInstance, labelPosition, disabled, validateTrigger } }, children),
footer ? React__default.createElement(Cell, { className: `${classPrefix}-footer` }, footer) : null
)
);
});
Form.displayName = "NutForm";
const InnerForm = Form;
InnerForm.Item = FormItem;
InnerForm.useForm = useForm;
InnerForm.useWatch = useWatch;
export {
InnerForm as default
};