export function disableFormSubmission(form: HTMLFormElement): void {
form.classList.remove('w-form');
const parent = form.parentElement as HTMLElement;
if (parent) {
parent.classList.remove('w-form');
}
form.addEventListener('submit', function(event) {
event.preventDefault();
});
}
export function formValues (form: HTMLFormElement): { [key: string]: string } {
const formData = new FormData(form);
const values: { [key: string]: string } = {};
formData.forEach((value, key) => {
values[key] = value as string;
});
return values;
}
export function formValue (form: HTMLFormElement, key: string): string {
const values = formValues(form);
return values[key];
}
export function formValidate (form: HTMLFormElement): boolean {
const inputs = form.querySelectorAll('input, select, textarea');
let isValid = false;
inputs.forEach((input: HTMLInputElement) => {
if (input.required && input.value) {
isValid = true;
}
});
return isValid;
}
export function formError(form, message){
const errorMessage = message || 'Form is not valid. Please check the fields and try again.';
const successDiv = form.parentElement.querySelector(".w-form-done");
const errorDiv = form.parentElement.querySelector(".w-form-fail");
if (successDiv) {
successDiv.style.display = 'none';
}
if (errorDiv) {
errorDiv.style.display = 'block';
errorDiv.innerHTML = errorMessage;
}
}
export function formErrorHide(form){
const errorDiv = form.parentElement.querySelector(".w-form-fail");
if (errorDiv) {
errorDiv.style.display = 'none';
}
}
export function formSuccess(form, formSubmitAction, nativeSucessMessage:boolean = true){
//default formSubmitAction is 'showMessage'
const successAction = formSubmitAction || 'showMessage';
if (successAction === 'redirect'){
const redirectUrl = form.getAttribute('data-redirect');
if (redirectUrl){
window.location.href = redirectUrl
}
}
const successDiv = form.parentElement.querySelector(".w-form-done");
const errorDiv = form.parentElement.querySelector(".w-form-fail");
if(nativeSucessMessage == true){form.style.display = 'none';}
if (successDiv){
successDiv.style.display = 'block';
}
if (errorDiv){
errorDiv.style.display = 'none';
}
}
export function formSubmitLoader(form: HTMLFormElement, message: string = 'Please wait...', disable: boolean = true){
const submitButton: HTMLInputElement = form.querySelector('input[type="submit"]');
if (submitButton){
submitButton.disabled = disable;
submitButton.value = message;
}
}
export function formReset(form: HTMLFormElement, resetFields: boolean = false){
if (resetFields){
form.reset();
}
//clear all form fields
const errorDiv: HTMLElement = form.parentElement.querySelector(".w-form-fail");
if (errorDiv) {
errorDiv.style.display = 'none';
}
const successDiv: HTMLElement = form.parentElement.querySelector(".w-form-done");
if (successDiv) {
successDiv.style.display = 'none';
}
form.style.display = '';
}