UNPKG

react-browser-form

Version:

<div align="center"> <a href="https://deniskabana.github.io/react-browser-form/introduction" title="React Browser Form - Form management in React made simple for browsers."> <img src="https://raw.githubusercontent.com/deniskabana/react-browser-form/

20 lines (16 loc) 969 B
import { DataFlowState } from "../types"; import { transformValueType } from "./transformValueType"; export function hydrateFormState<Schema>(dataFlowState: DataFlowState<Schema>, subset?: string[]): void { // Explicit "any" because of TS issue - https://github.com/microsoft/TypeScript/issues/19437 const domFormElem = (document.forms as any)[dataFlowState.options.name]; // Use defaultValues instead of formState when hydrating formState Object.keys(dataFlowState.options.defaultValues).forEach(key => { // If a subset is provided, only update those values if (subset && subset.length && !subset.includes(key)) return; const domInputElem = domFormElem.elements[key] as HTMLInputElement | undefined; if (domInputElem) { const value = domInputElem.type === "checkbox" ? domInputElem.checked : domInputElem.value; (dataFlowState.formState as any)[key] = transformValueType(key as keyof Schema, value, dataFlowState); } }); }