Sha256: dcb1620eb83ae95003898156879599a52b727ae1dc84c434e15579339a61f4d5

Contents?: true

Size: 1.61 KB

Versions: 6

Compression:

Stored size: 1.61 KB

Contents

(() => {
  const cloneElement = (id) => ActiveElement.cloneElement('form', id);

  const initModalButtons = () => {
    document.querySelectorAll('[data-field-type="form-modal"]').forEach((element) => {
      const formId = element.dataset.formId;
      const form = document.querySelector(`#${formId}`);
      const wrapper = document.querySelector(`#form-wrapper-${formId}`);
      const modal = cloneElement('modal');
      const modalBody = modal.querySelector('[data-field-type="modal-body"]');
      const bootstrapModal = new bootstrap.Modal(modal);
      const title = element.dataset.formTitle;
      const titleElement = modal.querySelector('[data-field-type="modal-title"]');
      titleElement.append(title);

      modalBody.append(form);

      document.body.append(modal);

      element.addEventListener('click', () => {
        wrapper.classList.remove('d-none');
        bootstrapModal.toggle();
        return false;
      });
    });
  };

  const initClearFormButtons = () => {
    document.querySelectorAll('form').forEach((form) => {
      form.querySelectorAll('[data-form-input-type="clear"]').forEach((clearFormButton) => {
        clearFormButton.addEventListener('click', (ev) => {
          ev.preventDefault();

          form.querySelectorAll('.form-fields input:enabled, .form-fields select:enabled, .form-fields textarea:enabled')
              .filter((formInput) => !formInput.readonly)
              .forEach((formInput) => formInput.value = '');
        });
      });
    });
  };

  window.addEventListener(ActiveElement.reloadEvent, () => {
    initModalButtons();
    initClearFormButtons();
  });
})();

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
active_element-0.0.23 app/assets/javascripts/active_element/form.js
active_element-0.0.22 app/assets/javascripts/active_element/form.js
active_element-0.0.21 app/assets/javascripts/active_element/form.js
active_element-0.0.19 app/assets/javascripts/active_element/form.js
active_element-0.0.18 app/assets/javascripts/active_element/form.js
active_element-0.0.17 app/assets/javascripts/active_element/form.js