@svelteschool/svelte-forms
Version:
A simple form component that doesn't care about what you put in it. It just works.
36 lines (28 loc) • 697 B
JavaScript
import { serialize, deserialize } from '../../utils/serialize'
export function getValues(node) {
let initialUpdateDone = 0
const inputs = [...node.getElementsByTagName('input')]
inputs.forEach(el => {
el.oninput = node.onchange
})
node.addEventListener('input', handleUpdate)
function handleUpdate() {
node.dispatchEvent(new CustomEvent('update', {
detail: { ...serialize(node) }
}));
}
handleUpdate()
return {
update(values) {
if (initialUpdateDone === 2) {
deserialize(node, values)
}
else {
initialUpdateDone += 1;
}
},
destroy() {
node.removeEventListener('input', handleUpdate)
}
};
}