Sha256: 82f8752404804384d43fff511c054c581a140c34a5f4f60bb9305fb48ee43dea

Contents?: true

Size: 1.27 KB

Versions: 11

Compression:

Stored size: 1.27 KB

Contents

/**
 * This script modifies the behavior of Abide form validation to address the issue of form validation errors
 * appearing prematurely in input fields.
 *
 * The primary goal is to hide error messages until the input field loses focus.
 */

class AbideFormValidatorFixer {
  initialize() {
    const forms = document.querySelectorAll("main [data-live-validate='true']");

    forms.forEach((form) => {
      if (this.isElementVisible(form)) {
        this.setupForm(form);
      }
    });
  }

  isElementVisible(element) {
    return element.offsetParent !== null && getComputedStyle(element).display !== "none";
  }

  setupForm(form) {
    const inputs = form.querySelectorAll("input");

    inputs.forEach((input) => {
      const errorElement = input.closest("label")?.querySelector(".form-error") || input.parentElement.querySelector(".form-error");
      if (!errorElement) {
        return;
      }
      form.removeAttribute("data-live-validate");
      input.addEventListener("input", this.hideErrorElement.bind(this, errorElement));
    });
  }

  hideErrorElement(errorElement) {
    errorElement.classList.remove("is-visible");
  }
}

document.addEventListener("DOMContentLoaded", () => {
  const validatorFixer = new AbideFormValidatorFixer();
  validatorFixer.initialize();
});

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
decidim-core-0.29.2 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.28.5 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.1 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.28.4 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.0 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.28.3 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.0.rc4 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.0.rc3 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.0.rc2 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.29.0.rc1 app/packs/src/decidim/abide_form_validator_fixer.js
decidim-core-0.28.2 app/packs/src/decidim/abide_form_validator_fixer.js