diff options
Diffstat (limited to 'app/javascript/helpers')
| -rw-r--r-- | app/javascript/helpers/master_slave.coffee | 17 | 
1 files changed, 12 insertions, 5 deletions
| diff --git a/app/javascript/helpers/master_slave.coffee b/app/javascript/helpers/master_slave.coffee index 81bebe36a..e1bd46281 100644 --- a/app/javascript/helpers/master_slave.coffee +++ b/app/javascript/helpers/master_slave.coffee @@ -3,14 +3,21 @@ class MasterSlave      $(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 = -> +      if $slave.find('[data-master]').length == 0 +        $slave.find("input:disabled, select:disabled").attr "data-slave-force-disabled", "true" +      toggle = (disableInputs=true)->          val = master.filter(":checked").val() if master.filter("[type=radio]").length > 0          val ||= master.val() -        selected = val == $slave.data().value +        selected = "#{val}" == "#{$slave.data().value}"          $slave.toggle selected -        $slave.find("input, select").filter(":not([data-slave-force-disabled])").attr "disabled", !selected +        $slave.toggleClass "active", selected +        if disableInputs +          disabled = !selected +          disabled = disabled || $slave.parents("[data-master]:not(.active)").length > 0 +          $slave.find("input, select").filter(":not([data-slave-force-disabled])").attr "disabled", disabled +        if selected +          $("[data-select2ed='true']").select2()        master.change toggle -      toggle() +      toggle($slave.find('[data-master]').length == 0)  export default MasterSlave | 
