aboutsummaryrefslogtreecommitdiffstats
path: root/app/javascript/helpers/master_slave.coffee
blob: 81bebe36a71a34c8c6886f1f873eac30fc0b6328 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MasterSlave
  constructor: (selector)->
    $(selector).find('[data-master]').each (i, slave)->
      $slave = $(slave)
      master = $($slave.data().master)
      $slave.find("input:disabled, select:disabled").attr "data-slave-force-disabled", "true"
      toggle = ->
        val = master.filter(":checked").val() if master.filter("[type=radio]").length > 0
        val ||= master.val()
        selected = val == $slave.data().value
        $slave.toggle selected
        $slave.find("input, select").filter(":not([data-slave-force-disabled])").attr "disabled", !selected
      master.change toggle
      toggle()

export default MasterSlave