Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix accessibility issues #175

Merged
merged 6 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions src/components/AcceptAllOrMoreChoices.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export function AcceptAllOrMoreChoices({
};

return (
<div className="column-content" role="none">
<div className="column-content">
<div>
<div>
<p
Expand All @@ -51,19 +51,16 @@ export function AcceptAllOrMoreChoices({
</p>
</div>
<div>
<p className="paragraph"
<p
className="paragraph"
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: formatMessage(messages.acceptAllDescription),
}}
/>
</div>
</div>
<div
className="accept-or-reject-all-button-row"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<div className="accept-or-reject-all-button-row">
<Button
primaryText={formatMessage(messages.acceptAllButtonPrimary)}
handleClick={handleAcceptAll}
Expand Down
11 changes: 4 additions & 7 deletions src/components/AcceptOrRejectAdvertising.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export function AcceptOrRejectAdvertising({
const { formatMessage } = useIntl();

return (
<div className="column-content" role="none">
<div className="column-content">
<div>
<div>
<p
Expand All @@ -31,7 +31,8 @@ export function AcceptOrRejectAdvertising({
</p>
</div>
<div>
<p className="paragraph"
<p
className="paragraph"
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: formatMessage(
Expand All @@ -41,11 +42,7 @@ export function AcceptOrRejectAdvertising({
/>
</div>
</div>
<div
className="accept-or-reject-all-button-row"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<div className="accept-or-reject-all-button-row">
<Button
primaryText={formatMessage(messages.acceptAdvertising)}
handleClick={(event) => {
Expand Down
11 changes: 4 additions & 7 deletions src/components/AcceptOrRejectAll.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export function AcceptOrRejectAll({
};

return (
<div className="column-content" role="none">
<div className="column-content">
<div>
<div>
<p
Expand All @@ -52,19 +52,16 @@ export function AcceptOrRejectAll({
</p>
</div>
<div>
<p className="paragraph"
<p
className="paragraph"
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: formatMessage(messages.acceptAllDescription),
}}
/>
</div>
</div>
<div
className="accept-or-reject-all-button-row"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<div className="accept-or-reject-all-button-row">
<Button
primaryText={formatMessage(messages.acceptAllButtonPrimary)}
handleClick={handleAcceptAll}
Expand Down
11 changes: 4 additions & 7 deletions src/components/AcceptOrRejectAllOrMoreChoices.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export function AcceptOrRejectAllOrMoreChoices({
};

return (
<div className="column-content" role="none">
<div className="column-content">
<div>
<div>
<p
Expand All @@ -62,19 +62,16 @@ export function AcceptOrRejectAllOrMoreChoices({
</p>
</div>
<div>
<p className="paragraph"
<p
className="paragraph"
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: formatMessage(messages.acceptAllDescription),
}}
/>
</div>
</div>
<div
className="accept-or-reject-all-button-row"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<div className="accept-or-reject-all-button-row">
<Button
primaryText={formatMessage(messages.acceptAllButtonPrimary)}
handleClick={handleAcceptAll}
Expand Down
11 changes: 4 additions & 7 deletions src/components/AcceptOrRejectAnalytics.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export function AcceptOrRejectAnalytics({
const { formatMessage } = useIntl();

return (
<div className="column-content" role="none">
<div className="column-content">
<div>
<div>
<p
Expand All @@ -31,7 +31,8 @@ export function AcceptOrRejectAnalytics({
</p>
</div>
<div>
<p className="paragraph"
<p
className="paragraph"
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: formatMessage(
Expand All @@ -41,11 +42,7 @@ export function AcceptOrRejectAnalytics({
/>
</div>
</div>
<div
className="accept-or-reject-all-button-row"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<div className="accept-or-reject-all-button-row">
<Button
primaryText={formatMessage(messages.acceptAnalytics)}
handleClick={(event) => {
Expand Down
117 changes: 60 additions & 57 deletions src/components/CompleteOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,67 +68,70 @@ export function CompleteOptions({

return (
<div className="complete-options-container" role="none">
<p
role="heading"
id="consent-dialog-title"
className="text-title text-title-center"
>
{formatMessage(messages.consentTitle)}
</p>
<form className="complete-options-form">
<GPCIndicator />
{description && description !== '-' ? (
<p className="paragraph">
<div
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: description,
<fieldset>
<legend
id="consent-dialog-title"
className="text-title text-title-center"
>
{formatMessage(messages.consentTitle)}
</legend>
<form className="complete-options-form">
<GPCIndicator />
{description && description !== '-' ? (
<p className="paragraph">
<div
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
__html: description,
}}
/>
</p>
) : undefined}

<div
className="toggles-container"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<Toggle
key="Essential"
name={formatMessage(purposeToMessageKey.Essential)}
initialToggleState
disabled
handleToggle={() => {
// noop
}}
ariaLabel={formatMessage(
completeOptionsMessages.essentialAriaLabel,
)}
/>
</p>
) : undefined}

<div
className="toggles-container"
role="group"
aria-label={formatMessage(messages.buttonGroupAriaDescription)}
>
<Toggle
key="Essential"
name={formatMessage(purposeToMessageKey.Essential)}
initialToggleState
disabled
handleToggle={() => {
// noop
}}
ariaLabel={formatMessage(
completeOptionsMessages.essentialAriaLabel,
{orderedSelections.map(([purpose, isChecked], idx) => (
<Toggle
key={purpose}
name={
Object.hasOwnProperty.call(purposeToMessageKey, purpose)
? formatMessage(purposeToMessageKey[purpose])
: purpose
}
initialToggleState={isChecked}
disabled={false}
handleToggle={(checked: boolean) =>
handleToggle(purpose, checked)
}
{...(idx === 0 ? { initialFocus: true } : {})}
/>
))}
</div>
<Button
handleClick={handleSave}
primaryText={formatMessage(
completeOptionsMessages.saveButtonPrimary,
)}
type="submit"
{...(orderedSelections.length === 0 ? { initialFocus: true } : {})}
/>
{orderedSelections.map(([purpose, isChecked], idx) => (
<Toggle
key={purpose}
name={
Object.hasOwnProperty.call(purposeToMessageKey, purpose)
? formatMessage(purposeToMessageKey[purpose])
: purpose
}
initialToggleState={isChecked}
disabled={false}
handleToggle={(checked: boolean) =>
handleToggle(purpose, checked)
}
{...(idx === 0 ? { initialFocus: true } : {})}
/>
))}
</div>
<Button
handleClick={handleSave}
primaryText={formatMessage(completeOptionsMessages.saveButtonPrimary)}
type="submit"
{...(orderedSelections.length === 0 ? { initialFocus: true } : {})}
/>
</form>
</form>
</fieldset>
</div>
);
}
14 changes: 4 additions & 10 deletions src/components/Main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,20 +87,14 @@ export function Main({
}
return (
<div
role="dialog"
aria-modal="true"
role="regions"
aria-label={formatMessage(messages.modalAriaLabel)}
aria-live="polite"
className="modal-container"
id="consentManagerMainDialog"
ref={dialogRef}
>
<div role="document" className="modal-container-inner">
<div
role="main"
className="inner-container"
aria-description={formatMessage(messages.modalAriaDescription)}
>
<div className="modal-container-inner">
<div className="inner-container">
{viewState === 'QuickOptions' && (
<QuickOptions handleSetViewState={handleSetViewState} />
)}
Expand Down Expand Up @@ -206,7 +200,7 @@ export function Main({
/>
)}
</div>
<div role="contentinfo" className="footer-container">
<div className="footer-container">
<TranscendLogo fontColor={config.theme.fontColor} />
<BottomMenu
firstSelectedViewState={firstSelectedViewState}
Expand Down
2 changes: 1 addition & 1 deletion src/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ export const messages = defineMessages('ui.src.messages', {
'The description text for the CompleteOptionsToggles view state.',
},
modalAriaLabel: {
defaultMessage: 'User data usage dialog',
defaultMessage: 'cookie consent banner',
description:
'The aria label used by screen readers for the modal. This is read when the modal is opened and focused.',
},
Expand Down
4 changes: 1 addition & 3 deletions src/tests/__snapshots__/AcceptAllOrMoreChoices.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`AcceptAllOrMoreChoices matches snapshot 1`] = `
"<div>
<div class="column-content" role="none">
<div class="column-content">
<div>
<div>
<p
Expand All @@ -22,8 +22,6 @@ exports[`AcceptAllOrMoreChoices matches snapshot 1`] = `
</div>
<div
class="accept-or-reject-all-button-row"
role="group"
aria-label="Select consent and close dialog"
>
<button class="button">
<span class="button-base-text button-primary-text"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`AcceptOrRejectAdvertising matches snapshot 1`] = `
"<div>
<div class="column-content" role="none">
<div class="column-content">
<div>
<div>
<p
Expand All @@ -22,8 +22,6 @@ exports[`AcceptOrRejectAdvertising matches snapshot 1`] = `
</div>
<div
class="accept-or-reject-all-button-row"
role="group"
aria-label="Select consent and close dialog"
>
<button class="button">
<span class="button-base-text button-primary-text">Okay</span></button
Expand Down
4 changes: 1 addition & 3 deletions src/tests/__snapshots__/AcceptOrRejectAll.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`AcceptOrRejectAll matches snapshot 1`] = `
"<div>
<div class="column-content" role="none">
<div class="column-content">
<div>
<div>
<p
Expand All @@ -22,8 +22,6 @@ exports[`AcceptOrRejectAll matches snapshot 1`] = `
</div>
<div
class="accept-or-reject-all-button-row"
role="group"
aria-label="Select consent and close dialog"
>
<button class="button">
<span class="button-base-text button-primary-text"
Expand Down
Loading
Loading