UNPKG

formsquare

Version:

Serialize html5 forms the smart way

28 lines (22 loc) 764 B
import { contains, extendUniq, filter, flatMap } from "./utils.js"; // eslint-disable-next-line import/prefer-default-export export function formElements(form) { if (form instanceof NodeList || Array.isArray(form)) { return flatMap(formElements, form); } const { elements } = form; if ( !form.id || (typeof window.HTMLFormControlsCollection === "function" && elements instanceof window.HTMLFormControlsCollection) ) { return elements; } // Polyfill for browsers that don't support html5 form attribute. const outside = document.querySelectorAll(`[form="${form.id}"]`); const inside = filter( (el) => contains(el.getAttribute("form"), ["", null, form.id]), elements, ); return extendUniq(inside, outside); }