if (this.props.poll.get('multiple')) {
const tmp = { ...this.state.selected };
- tmp[value] = true;
+ if (tmp[value]) {
+ delete tmp[value];
+ } else {
+ tmp[value] = true;
+ }
this.setState({ selected: tmp });
} else {
const tmp = {};
};
renderOption (option, optionIndex) {
- const { poll } = this.props;
- const percent = (option.get('votes_count') / poll.get('votes_count')) * 100;
- const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count'));
- const active = !!this.state.selected[`${optionIndex}`];
- const showResults = poll.get('voted') || poll.get('expired');
+ const { poll, disabled } = this.props;
+ const percent = (option.get('votes_count') / poll.get('votes_count')) * 100;
+ const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count'));
+ const active = !!this.state.selected[`${optionIndex}`];
+ const showResults = poll.get('voted') || poll.get('expired');
return (
<li key={option.get('title')}>
value={optionIndex}
checked={active}
onChange={this.handleOptionChange}
+ disabled={disabled}
/>
- {!showResults && <span className={classNames('poll__input', { active })} />}
+ {!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />}
{showResults && <span className='poll__number'>{Math.floor(percent)}%</span>}
{option.get('title')}