feat(cw-button): Add aria controls to CW trigger (#2303)
Add an ID to the CW spoiler input field to give aria-controls a handle on it. Pass that id to the CW trigger button. Modify text icon button component to accept aria controls id value. Add aria-expanded value to text icon button to indicate when it is expanded.
This commit is contained in:
		
							parent
							
								
									7355f7f8f4
								
							
						
					
					
						commit
						38de6907d9
					
				
					 3 changed files with 7 additions and 5 deletions
				
			
		|  | @ -146,7 +146,7 @@ class ComposeForm extends React.PureComponent { | |||
|       <div className='compose-form'> | ||||
|         <Collapsable isVisible={this.props.spoiler} fullHeight={50}> | ||||
|           <div className="spoiler-input"> | ||||
|             <input placeholder={intl.formatMessage(messages.spoiler_placeholder)} value={this.props.spoiler_text} onChange={this.handleChangeSpoilerText} onKeyDown={this.handleKeyDown} type="text" className="spoiler-input__input" /> | ||||
|             <input placeholder={intl.formatMessage(messages.spoiler_placeholder)} value={this.props.spoiler_text} onChange={this.handleChangeSpoilerText} onKeyDown={this.handleKeyDown} type="text" className="spoiler-input__input"  id='cw-spoiler-input'/> | ||||
|           </div> | ||||
|         </Collapsable> | ||||
| 
 | ||||
|  |  | |||
|  | @ -13,10 +13,10 @@ class TextIconButton extends React.PureComponent { | |||
|   } | ||||
| 
 | ||||
|   render () { | ||||
|     const { label, title, active } = this.props; | ||||
|     const { label, title, active, ariaControls } = this.props; | ||||
| 
 | ||||
|     return ( | ||||
|       <button title={title} aria-label={title} className={`text-icon-button ${active ? 'active' : ''}`} onClick={this.handleClick}> | ||||
|       <button title={title} aria-label={title} className={`text-icon-button ${active ? 'active' : ''}`} aria-expanded={active} onClick={this.handleClick} aria-controls={ariaControls}> | ||||
|         {label} | ||||
|       </button> | ||||
|     ); | ||||
|  | @ -28,7 +28,8 @@ TextIconButton.propTypes = { | |||
|   label: PropTypes.string.isRequired, | ||||
|   title: PropTypes.string, | ||||
|   active: PropTypes.bool, | ||||
|   onClick: PropTypes.func.isRequired | ||||
|   onClick: PropTypes.func.isRequired, | ||||
|   ariaControls: PropTypes.string | ||||
| }; | ||||
| 
 | ||||
| export default TextIconButton; | ||||
|  |  | |||
|  | @ -10,7 +10,8 @@ const messages = defineMessages({ | |||
| const mapStateToProps = (state, { intl }) => ({ | ||||
|   label: 'CW', | ||||
|   title: intl.formatMessage(messages.title), | ||||
|   active: state.getIn(['compose', 'spoiler']) | ||||
|   active: state.getIn(['compose', 'spoiler']), | ||||
|   ariaControls: 'cw-spoiler-input' | ||||
| }); | ||||
| 
 | ||||
| const mapDispatchToProps = dispatch => ({ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue