Fixes to the polls UI (#10150)
* Allow unselecting choices in multiple choice polls * Properly disable checkboxes/radio buttons for polls in public pages * Visually differentiate checkboxes and radio buttons
This commit is contained in:
		
					parent
					
						
							
								1a7de769a3
							
						
					
				
			
			
				commit
				
					
						4ced609497
					
				
			
		
					 2 changed files with 17 additions and 8 deletions
				
			
		|  | @ -60,7 +60,11 @@ class Poll extends ImmutablePureComponent { | |||
| 
 | ||||
|     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 = {}; | ||||
|  | @ -86,11 +90,11 @@ class Poll extends ImmutablePureComponent { | |||
|   }; | ||||
| 
 | ||||
|   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')}> | ||||
|  | @ -109,9 +113,10 @@ class Poll extends ImmutablePureComponent { | |||
|             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')} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue