UNPKG

preact-arco-design

Version:

Arco Design React UI Library.

36 lines (33 loc) 1.16 kB
import React, { useCallback, forwardRef, useRef } from "preact/compat"; import { FormProviderContext } from "./context"; var FormProviderComponent = function FormProviderComponent(props, _) { var formsRef = useRef({}); var register = useCallback(function (name, form) { if (name) { formsRef.current[name] = form; } return function () { delete formsRef.current[name]; }; }, []); var onFormSubmit = useCallback(function (name, changedValues) { props.onFormSubmit && props.onFormSubmit(name, changedValues, { forms: formsRef.current }); }, [props.onFormSubmit]); var onFormValuesChange = useCallback(function (name, values) { props.onFormValuesChange && props.onFormValuesChange(name, values, { forms: formsRef.current }); }, [props.onFormValuesChange]); return React.createElement(FormProviderContext.Provider, { value: { onFormValuesChange: onFormValuesChange, onFormSubmit: onFormSubmit, register: register } }, props.children); }; var FormProvider = forwardRef(FormProviderComponent); FormProvider.displayName = 'FormProvider'; export default FormProvider;