Sha256: 771efcb78d6a55d6b72f1df6b4b15fe378b6462f208fdb4e9d3c2dfc34d23ba5

Contents?: true

Size: 1.51 KB

Versions: 16

Compression:

Stored size: 1.51 KB

Contents

#
# Magic Radios
# TODO refactoring
# TODO checkboxes
#
#  @example
#    = f.radio_button :main_addr_same_as_jur, true, data: {disable: ".main-addr"}
#    = f.radio_button :main_addr_same_as_jur, false, data: {enable: ".main-addr"}
#    = f.text_field :main_addr, :disabled => @profile.main_addr_same_as_jur, :class => "main-addr"
#    javascript:
#      $('.some form').magicRadios();

( ( $ ) ->

  $.fn.magicRadios = (suspend = true, closestDock = 'fieldset, form, body', eventName = 'change.magic-radios') ->
    if @length
      jDocks = if @is 'input:radio' then @closest closestDock else @
      jDocks.off eventName
      if suspend
        jDocks.on eventName, 'input:radio', (event) ->
          jDock = $ event.delegateTarget
          rules = [
            ['enable',   'disabled', false, true]
            ['check',    'checked',  true]
            ['uncheck',  'checked',  false]
            ['disable',  'disabled', true]
            ['writable', 'readonly', false, true]
            ['readonly', 'readonly', true]
          ]
          for rule in rules
            [dataParam, propName, propValue, focusFirst] = rule
            linkedFields = $(@).data dataParam
            if linkedFields
              jFounded = jDock.find linkedFields
              jFields = jFounded.filter ':input'
              jFields = jFounded.find ':input'  unless jFields.length
              if jFields.length
                jFields.prop propName, propValue
                jFields.first().focus()  if focusFirst
          true
    @

)( jQuery )

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ultimate-base-0.7.2 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.6.2 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.6.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.5.0.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.4.1.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.4.0.1 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.4.0.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.5.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.4.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.3.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.2.1 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.2 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.1.1 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.1 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.0 app/assets/javascripts/ultimate/improves/magic-radios.js.coffee
ultimate-base-0.3.0.alpha app/assets/javascripts/ultimate/improves/magic-radios.js.coffee