commit: 995f0ad51ca2d151291ff827c7e0b2378ff0e108
parent: 948dd26931f450d42322c32a3eb9d97eccb69d4d
Author: Stephen Burgess <stephenburgess8@gmail.com>
Date: Sun, 23 Apr 2017 13:33:44 -0500
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.
Diffstat:
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/app/assets/javascripts/components/features/compose/components/compose_form.jsx b/app/assets/javascripts/components/features/compose/components/compose_form.jsx
@@ -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>
diff --git a/app/assets/javascripts/components/features/compose/components/text_icon_button.jsx b/app/assets/javascripts/components/features/compose/components/text_icon_button.jsx
@@ -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;
diff --git a/app/assets/javascripts/components/features/compose/containers/spoiler_button_container.jsx b/app/assets/javascripts/components/features/compose/containers/spoiler_button_container.jsx
@@ -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 => ({