UNPKG

react-signal-forms

Version:

A forms library focusing on performance and modular extensibility.

37 lines 1.73 kB
import React from "react"; import { useArrayFieldItem } from "./arrays/reactContext"; import { useFormContext, useFormContextProvider, } from "./formContext"; export function configureSignalForm(...plugins) { return { SignalForm(props) { return React.createElement(SignalForm, { ...props, plugins: plugins }); }, useField(field) { var _a; if (field == null) { throw new Error(`Missing field configuration. Did you forget to add a field in createFields?`); } const formContext = useFormContext(); const arrayFormItemContext = useArrayFieldItem(); if (arrayFormItemContext != null) { const arrayFieldContext = formContext.fields[arrayFormItemContext.arrayField.name]; const fieldContext = (_a = arrayFieldContext.arrayItems .peek() .find((i) => i.id === arrayFormItemContext.itemId)) === null || _a === void 0 ? void 0 : _a.fields[field.name]; return fieldContext; } const fieldContext = formContext.fields[field.name]; return fieldContext; }, useForm() { const formContext = useFormContext(); return formContext; // & ExpandFormContextProperties<TPlugins> }, }; } const SignalForm = ({ fields, initialValues, plugins, onSubmit, children, }) => { const { ContextProvider, formContext } = useFormContextProvider(fields, plugins, onSubmit, initialValues); console.log("Rendering SignalForm"); return (React.createElement(ContextProvider, { value: formContext.current }, children)); }; //# sourceMappingURL=form.js.map