Mithril Grouped Checkbox
CoffeeScript
checkbox_group =
checkbox: (opts, i, ctrl) -> [
m 'input[type="checkbox"]', {
name: opts.name,
value: opts.value
onchange: (e) ->
ctrl.is_checked()[i] = e.target.checked
checked: ctrl.is_checked()[i]
} m "p", ["Names: "],
m "label[for=#{opts.name}]", opts.value
m "br"
]
controller: (args) ->
is_checked: m.prop(args.data.map () -> false)
selected: ->
args.data
.filter((d, i) => @is_checked()[i])
.map((d, i) -> d.value)
view: (ctrl, args) ->
[
m "input-group", args.data.map (d, i) =>
@checkbox(d, i, ctrl)
m "p", ["Checked Names: ", JSON.stringify(ctrl.selected())]
]
data = [
{name: "Ralph", value: "Ralph"},
{name: "Jane", value: "Jane"}
]
mycb = m.component(checkbox_group, {data: data})
m.mount(document.body, mycb)