Sha256: fa2133f075fceffd1ba297d7a39be5c2873a19ffb846621e74ffe4d747d27690

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

this.EffectiveBootstrap ||= new class
  initialize: (target) ->
    $(target || document).find('[data-input-js-options]:not(.initialized)').each (i, element) ->
      $element = $(element)
      options = $element.data('input-js-options')

      method_name = options['method_name']
      delete options['method_name']

      unless EffectiveBootstrap[method_name]
        return console.error("EffectiveBootstrap #{method_name} has not been implemented")

      EffectiveBootstrap[method_name].call(this, $element, options)
      $element.addClass('initialized')

  validate: (form) ->
    $form = $(form)

    # Clear any server side validation on individual inputs
    $form.find('.alert.is-invalid').remove()
    $form.find('.is-invalid').removeClass('is-invalid')
    $form.find('.is-valid').removeClass('is-valid')

    valid = form.checkValidity()

    if valid
      $form.addClass('form-is-valid').removeClass('form-is-invalid')
      setTimeout((-> EffectiveBootstrap.disable($form)), 0)
    else
      $form.addClass('was-validated').addClass('form-is-invalid').removeClass('form-is-valid')

    valid

  disable: ($form) ->
    $form.find('[type=submit]').prop('disabled', true)

  enable: ($form) ->
    $form.removeClass('form-is-valid').find('[type=submit]').removeAttr('disabled')

$ -> EffectiveBootstrap.initialize()
$(document).on 'turbolinks:load', -> EffectiveBootstrap.initialize()
$(document).on 'cocoon:after-insert', -> EffectiveBootstrap.initialize()
$(document).on 'effective-bootstrap:initialize', (event) -> EffectiveBootstrap.initialize(event.currentTarget)

$(document).on 'ajax:beforeSend', 'form[data-remote]', -> this.checkValidity()

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
effective_bootstrap-0.0.6 app/assets/javascripts/effective_bootstrap/base.js.coffee