UNPKG

@nutui/nutui-react-taro

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

64 lines (63 loc) 2.44 kB
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 };