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)