blob: e1bd46281b80d63fac23351666ab12f2fdf2ef5f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class MasterSlave
constructor: (selector)->
$(selector).find('[data-master]').each (i, slave)->
$slave = $(slave)
master = $($slave.data().master)
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}"
$slave.toggle 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($slave.find('[data-master]').length == 0)
export default MasterSlave
|