Sha256: 3ab6bcc8fe15c35e836f9b192971b412cc8ac3ed510077beda452def7fde2f9d

Contents?: true

Size: 1.66 KB

Versions: 39

Compression:

Stored size: 1.66 KB

Contents

import { Controller } from '@hotwired/stimulus'
import Rollbar from 'rollbar'

export default class extends Controller {
  connect () {
    this.element.querySelectorAll('.form-select, .form-control').forEach((slct) => {
      slct.addEventListener('change', (e) => {
        if (e.target.value) {
          slct.classList.remove('is-invalid')
        }
      })
    })
    this.element.querySelectorAll('.btn-check').forEach((slct) => {
      slct.addEventListener('change', (e) => {
        const invalid = e.target.closest('.is-invalid')
        if (invalid) {
          invalid.classList.remove('is-invalid')
        }
      })
    })
    const errorTitle = this.element.querySelector('.error-title')
    if (errorTitle) {
      const invalidField = document.querySelector('.is-invalid')
      const baseAlert = document.querySelector('.alert-danger')
      if (!invalidField && !baseAlert) {
        const errorTitle = this.element.querySelector('.error-title')
        // TODO!: testear con capybara
        errorTitle.innerText = 'Ocurrió algo inesperado. Por favor, intentá nuevamente o ponete en contacto con nosotros.'
        // TODO!: link a contacto
        const form = this.element.querySelector('form')
        const errorMsg = `${form.id} - ${form.action} - ${form.dataset.errors}`
        console.error(errorMsg)
        Rollbar.error(errorMsg)
      }
    }
  }

  submit () {
    let form = null
    if (this.element instanceof HTMLFormElement) {
      form = this.element
    } else {
      form = this.element.querySelector('form')
    }
    if (form) {
      form.requestSubmit()
    } else {
      Rollbar.error('No form found')
      console.error('No form found')
    }
  }
}

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
pg_rails-7.6.30 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.29 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.28 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.27 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.26 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.25 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.24 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.24.pre.5 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.24.pre.4 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.24.pre.3 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.23 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.22 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.22.pre.3 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.22.pre.2 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.22.pre.1 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.21 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.21.pre.11 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.21.pre.10 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.21.pre.9 pg_layout/app/javascript/controllers/pg_form_controller.js
pg_rails-7.6.21.pre.8 pg_layout/app/javascript/controllers/pg_form_controller.js