UNPKG

@steveesamson/microform

Version:

`microform` is a tiny library for managing forms in `svelte/sveltekit`.

44 lines (43 loc) 1.27 kB
import { resetObject } from "./utils.js"; export const formStore = (data) => { const validationMap = {}; // form state const state = $state({ values: { ...data }, errors: {}, unfits: {}, sanity: { ok: false } }); return { validationMap, get values() { return state.values; }, get errors() { return state.errors; }, get unfits() { return state.unfits; }, get sanity() { return state.sanity; }, reset() { resetObject(state.values, data); resetObject(state.errors); resetObject(state.unfits); state.sanity.ok = false; const nodeEntries = Object.entries(validationMap).filter(([, { nodeRef }]) => !!nodeRef); for (const [name, { nodeRef, html }] of nodeEntries) { if (nodeRef) { if (nodeRef.isContentEditable) { nodeRef[html ? 'innerHTML' : 'textContent'] = data[name] || ''; } else { nodeRef['value'] = data[name] || ''; } } } } }; };