Skip to content

Commit eaa68d7

Browse files
author
Carlo Bernardini
authored
fix(a11y): accessibility improvements (#98)
Various accessibility improvements
1 parent a3f9e9c commit eaa68d7

16 files changed

Lines changed: 64 additions & 8 deletions

File tree

src/components/Alert/Alert.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const Alert = props => {
1616

1717
return (
1818
<div {...rest} {...block(props)}>
19-
<div {...elem('content', props)}>
19+
<div {...elem('content', props)} role="alert">
2020
{!!title && <strong {...elem('title', props)}>{title}</strong>}
2121
{children}
2222
</div>

src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ exports[`<Alert> that renders an alert should add classes when props are changed
66
>
77
<div
88
className="Alert__content Alert__content--context Alert__content--context_bad"
9+
role="alert"
910
>
1011
<strong
1112
className="Alert__title Alert__title--context Alert__title--context_bad"
@@ -33,6 +34,7 @@ exports[`<Alert> that renders an alert should have a button that works 1`] = `
3334
>
3435
<div
3536
className="Alert__content Alert__content--context Alert__content--context_brand"
37+
role="alert"
3638
>
3739
<strong
3840
className="Alert__title Alert__title--context Alert__title--context_brand"
@@ -75,6 +77,7 @@ exports[`<Alert> that renders an alert should render default alert correctly 1`]
7577
>
7678
<div
7779
className="Alert__content Alert__content--context Alert__content--context_brand"
80+
role="alert"
7881
>
7982
This is a basic alert without title or action
8083
</div>

src/components/ButtonGroup/ButtonGroup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const ButtonGroup = props => {
1414
const { children, size, isBlock, isInline, ...rest } = props;
1515

1616
return (
17-
<div {...rest} {...block(props)}>
17+
<div {...rest} {...block(props)} role="group">
1818
{React.Children.map(children, button =>
1919
React.cloneElement(button, {
2020
...button.props,

src/components/ButtonGroup/__tests__/__snapshots__/ButtonGroup.spec.js.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ exports[`<ButtonGroup> that renders a button should add classes when props are c
88
>
99
<div
1010
className="ButtonGroup ButtonGroup--size ButtonGroup--size_large ButtonGroup--isBlock"
11+
role="group"
1112
>
1213
<Button
1314
className="ButtonGroup__button ButtonGroup__button--size ButtonGroup__button--size_large ButtonGroup__button--isBlock"
@@ -61,6 +62,7 @@ exports[`<ButtonGroup> that renders a button should render default button correc
6162
>
6263
<div
6364
className="ButtonGroup ButtonGroup--size ButtonGroup--size_normal"
65+
role="group"
6466
>
6567
<Button
6668
className="ButtonGroup__button ButtonGroup__button--size ButtonGroup__button--size_normal"

src/components/LoadingSpinner/LoadingSpinner.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const { block, elem } = bem({
1414
const LoadingSpinner = props => {
1515
const { centerIn, children, context, hidden, size, ...rest } = props;
1616
return (
17-
<div {...rest} {...block(props)}>
17+
<div {...rest} {...block(props)} role="status" aria-busy={!hidden} aria-hidden={hidden}>
1818
<svg
1919
viewBox={[0, 0, 44, 44]}
2020
style={(s => {

src/components/LoadingSpinner/__tests__/__snapshots__/LoadingSpinner.spec.js.snap

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
exports[`<LoadingSpinner> that renders a circular loading spinner should add classes when props are changed 1`] = `
44
<div
5+
aria-busy={false}
6+
aria-hidden={true}
57
className="LoadingSpinner LoadingSpinner--centerIn LoadingSpinner--centerIn_viewport LoadingSpinner--context LoadingSpinner--context_primary LoadingSpinner--hidden"
8+
role="status"
69
>
710
<svg
811
className="LoadingSpinner__svg LoadingSpinner__svg--centerIn LoadingSpinner__svg--centerIn_viewport LoadingSpinner__svg--context LoadingSpinner__svg--context_primary LoadingSpinner__svg--hidden"
@@ -35,7 +38,10 @@ exports[`<LoadingSpinner> that renders a circular loading spinner should add cla
3538
3639
exports[`<LoadingSpinner> that renders a circular loading spinner should render a default spinner correctly 1`] = `
3740
<div
41+
aria-busy={true}
42+
aria-hidden={false}
3843
className="LoadingSpinner LoadingSpinner--context LoadingSpinner--context_brand"
44+
role="status"
3945
>
4046
<svg
4147
className="LoadingSpinner__svg LoadingSpinner__svg--context LoadingSpinner__svg--context_brand"
@@ -63,7 +69,10 @@ exports[`<LoadingSpinner> that renders a circular loading spinner should render
6369
6470
exports[`<LoadingSpinner> that renders a circular loading spinner should render a spinner with label 1`] = `
6571
<div
72+
aria-busy={true}
73+
aria-hidden={false}
6674
className="LoadingSpinner LoadingSpinner--context LoadingSpinner--context_brand"
75+
role="status"
6776
>
6877
<svg
6978
className="LoadingSpinner__svg LoadingSpinner__svg--context LoadingSpinner__svg--context_brand"

src/components/ProgressBar/ProgressBar.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,15 @@ const ProgressBar = props => {
1515
const percentageAdjusted = Math.max(0, Math.min(percentage, 100));
1616

1717
return (
18-
<div {...rest} {...block(props)}>
18+
<div
19+
{...rest}
20+
{...block(props)}
21+
role="progressbar"
22+
aria-hidden={hidden}
23+
aria-valuenow={percentageAdjusted}
24+
aria-valuemin="0"
25+
aria-valuemax="100"
26+
>
1927
<div
2028
{...elem('fill', props)}
2129
style={{

src/components/ProgressBar/__tests__/__snapshots__/ProgressBar.spec.js.snap

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
exports[`<ProgressBar> that renders a horizontal progress bar should render a default progress bar correctly 1`] = `
44
<div
5+
aria-hidden={false}
6+
aria-valuemax="100"
7+
aria-valuemin="0"
8+
aria-valuenow={25}
59
className="ProgressBar ProgressBar--context ProgressBar--context_brand"
10+
role="progressbar"
611
>
712
<div
813
className="ProgressBar__fill ProgressBar__fill--context ProgressBar__fill--context_brand"

src/components/Tabs/TabContent/TabContent.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const { block } = bem({
1212
const TabContent = props => {
1313
const { children, ...rest } = props;
1414
return (
15-
<div {...rest} {...block(props)}>
15+
<div {...rest} {...block(props)} role="tabpanel">
1616
{children}
1717
</div>
1818
);

src/components/Tabs/TabContent/__tests__/__snapshots__/TabContent.spec.js.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
exports[`<TabContent> should render tab content correctly 1`] = `
44
<div
55
className="TabContent"
6+
role="tabpanel"
67
>
78
<h1>
89
Tab content

0 commit comments

Comments
 (0)