jam-cloud/web/app/assets/javascripts/react-components/CheckBoxList.js.jsx.coffee

41 lines
1.3 KiB
CoffeeScript

context = window
rest = window.JK.Rest()
logger = context.JK.logger
@CheckBoxList = React.createClass({
objects: []
componentDidUnmount: () ->
@root.off("change", ".checkItem input[type=checkbox]")
componentDidMount: () ->
@root = jQuery(this.getDOMNode())
@root.off("change", ".checkItem input[type=checkbox]").on("change", ".checkItem input[type=checkbox]", @onItemChanged)
onItemChanged: (e) ->
e.preventDefault()
this.props.onItemChanged(this.props.objectName, @selectedObjects())
selectedObjects: ->
selected=[]
@root = jQuery(this.getDOMNode())
$(".checkItem input[type=checkbox]:checked", @root).each ->
selected.push $(this).data("object-id")
selected
render: () ->
object_options = []
for object in this.props.sourceObjects
nm = "check_#{object.id}"
checkedStr = if @isChecked(object.id) then "checked" else ""
object_options.push `<div className='checkItem'><input type='checkbox' name={nm} data-object-id={object.id} defaultChecked={checkedStr}></input><label htmlFor={nm}>{object.description}</label></div>`
`<div className="CheckBoxList react-component">
<div className="checkbox-scroller left">
{object_options}
</div>
</div>`
isChecked: (id) ->
this.props.selectedObjects? && id in this.props.selectedObjects
})