UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

23 lines (22 loc) 779 B
import { createContext } from "react"; import { useStore } from "../../react/useStore.js"; import { requireContext } from "../util/context.js"; import { isSchemaRequired } from "./SchemaInput.js"; /** Context for current form. */ export const FormContext = createContext(undefined); FormContext.displayName = "FormContext"; export function requireForm() { return requireContext(FormContext, requireForm); } export function useField(name, form = requireForm(useField)) { useStore(form); const schema = form.requireSchema(name); return { name, schema, onValue: v => form.publish(name, v), value: form.get(name) ?? schema.value, message: useStore(form.messages).get(name), required: isSchemaRequired(schema), }; }