aboutsummaryrefslogtreecommitdiffstats
path: root/app/javascript/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'app/javascript/helpers')
-rw-r--r--app/javascript/helpers/master_slave.coffee17
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