@steveesamson/microform
Version:
`microform` is a tiny library for managing forms in `svelte/sveltekit`.
44 lines (43 loc) • 1.27 kB
JavaScript
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] || '';
}
}
}
}
};
};