@stormid/validate
Version:
Client-side form validation
34 lines (33 loc) • 1.25 kB
JavaScript
import { isSubmitButton, hasNameValue, hasFormactionValue } from './utils';
import {
createButtonValueNode,
cleanupButtonValueNode
} from '../dom';
import { PREHOOK_DELAY } from '../constants';
export const postValidation = (event, resolve, store) => {
const { settings, form } = store.getState();
let buttonValueNode = false;
let cachedAction = false;
const submit = () => {
if (settings.submit) settings.submit();
else form.submit();
};
if (isSubmitButton(document.activeElement)) {
if (hasNameValue(document.activeElement)) {
buttonValueNode = createButtonValueNode(document.activeElement, form);
}
if (hasFormactionValue(document.activeElement)) {
cachedAction = form.getAttribute('action');
form.setAttribute('action', document.activeElement.getAttribute('formaction'));
}
}
if (event && event.target) {
if (settings.preSubmitHook) {
settings.preSubmitHook();
window.setTimeout(submit, PREHOOK_DELAY);
} else submit();
}
buttonValueNode && cleanupButtonValueNode(buttonValueNode);
cachedAction && form.setAttribute('action', cachedAction);
return resolve(true);
};