ldx-widgets
Version:
widgets
69 lines (55 loc) • 1.73 kB
text/coffeescript
React = require 'react'
{li, button, div} = React.DOM
MultiSelectOption = React.createClass
displayName: 'MultiSelectOption'
getDefaultProps: ->
{
option: {}
setValues: ->
}
render: ->
{option, allowDefault, isActive, isTheDefault, disabled, tabIndex, onBlur} =
className = 'multiselect-option'
className += ' is-active' if isActive and option.isSelected
defaultClass = 'multiselect-default'
defaultClass += ' is-selected' if isTheDefault
li {
className: className
onClick: if isActive and not disabled then else ->
}, [
button {
key: 'toggle'
ref: 'toggleBtn'
className: if option.isSelected then 'btn-plus-minus minus left' else 'btn-plus-minus plus left'
tabIndex: tabIndex
onBlur:
} if isActive and not disabled
div {
key: 'label'
className: 'multiselect-option-label'
style:
left: if isActive then 25 else 5
}, option.label
button {
key: 'default'
className: defaultClass
onClick:
tabIndex: tabIndex
}, ['default'] if allowDefault and option.isSelected and not disabled
]
onBlur: ->
{onBlur} =
return unless onBlur?
setTimeout ->
do onBlur
, 15
toggleSelect: (e) ->
e.nativeEvent.stopImmediatePropagation?()
isSelected = not .option.isSelected
if not isSelected then .onRemove(.option)
.setValues(.option)
setAsDefault: (e) ->
e.stopPropagation()
e.nativeEvent.stopImmediatePropagation?()
.setDefault(.option)
module.exports = MultiSelectOption