Skip to content

Commit d1b03ae

Browse files
committed
Use live region to announce characterCountText.
1 parent d0adbdd commit d1b03ae

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

src/file-upload/internal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import InternalFileDropzone from '../file-dropzone/internal';
1313
import { useFilesDragging } from '../file-dropzone/use-files-dragging';
1414
import InternalFileInput from '../file-input/internal';
1515
import InternalFileTokenGroup from '../file-token-group/internal';
16-
import { ConstraintTextArea, FormFieldError, FormFieldWarning } from '../form-field/internal';
16+
import { ConstraintTextRegion, FormFieldError, FormFieldWarning } from '../form-field/internal';
1717
import { useInternalI18n } from '../i18n/context';
1818
import { getBaseProps } from '../internal/base-component';
1919
import { fireNonCancelableEvent } from '../internal/events';
@@ -167,9 +167,9 @@ function InternalFileUpload(
167167
</FormFieldWarning>
168168
)}
169169
{constraintText && (
170-
<ConstraintTextArea id={constraintTextId} hasValidationText={!!errorText || !!warningText}>
170+
<ConstraintTextRegion id={constraintTextId} hasValidationText={!!errorText || !!warningText}>
171171
{constraintText}
172-
</ConstraintTextArea>
172+
</ConstraintTextRegion>
173173
)}
174174
</div>
175175
)}

src/form-field/__tests__/form-field-rendering.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { render } from '@testing-library/react';
66
import FormField, { FormFieldProps } from '../../../lib/components/form-field';
77
import createWrapper, { FormFieldWrapper } from '../../../lib/components/test-utils/dom';
88

9-
import screenreaderOnlyStyles from '../../../lib/components/internal/components/screenreader-only/styles.css.js';
9+
import formFieldStyles from '../../../lib/components/form-field/styles.css.js';
1010
import liveRegionStyles from '../../../lib/components/live-region/test-classes/styles.css.js';
1111

1212
function renderFormField(props: FormFieldProps = {}) {
@@ -16,7 +16,7 @@ function renderFormField(props: FormFieldProps = {}) {
1616
}
1717

1818
function findDebouncedCharacterCount(wrapper: FormFieldWrapper): HTMLElement | undefined {
19-
return wrapper.findByClassName(screenreaderOnlyStyles.root)?.getElement();
19+
return wrapper.findByClassName(formFieldStyles.constraint)?.findByClassName(liveRegionStyles.root)?.getElement();
2020
}
2121

2222
describe('FormField component', () => {

src/form-field/internal.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import {
1919
getTextFromSelector,
2020
} from '../internal/analytics/selectors';
2121
import { getBaseProps } from '../internal/base-component';
22-
import ScreenreaderOnly from '../internal/components/screenreader-only';
2322
import { FormFieldContext, useFormFieldContext } from '../internal/context/form-field-context';
2423
import { InfoLinkLabelContext } from '../internal/context/info-link-label-context';
2524
import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
@@ -92,7 +91,7 @@ export function FormFieldWarning({ id, children, warningIconAriaLabel }: FormFie
9291
);
9392
}
9493

95-
export function ConstraintTextArea({
94+
export function ConstraintTextRegion({
9695
id,
9796
hasValidationText,
9897
children,
@@ -291,7 +290,7 @@ export default function InternalFormField({
291290
</FormFieldWarning>
292291
)}
293292
{(constraintText || characterCountText) && (
294-
<ConstraintTextArea hasValidationText={!!errorText || !!warningText}>
293+
<ConstraintTextRegion hasValidationText={!!errorText || !!warningText}>
295294
{constraintText && (
296295
<span id={slotIds.constraint} className={testStyles.constraint}>
297296
{constraintText}
@@ -303,10 +302,12 @@ export default function InternalFormField({
303302
<span className={testStyles['character-count']} aria-hidden={true}>
304303
{characterCountText}
305304
</span>
306-
<ScreenreaderOnly id={slotIds.characterCount}>{debouncedCharacterCountText}</ScreenreaderOnly>
305+
<InternalLiveRegion hidden={true} delay={0}>
306+
<span id={slotIds.characterCount}>{debouncedCharacterCountText}</span>
307+
</InternalLiveRegion>
307308
</>
308309
)}
309-
</ConstraintTextArea>
310+
</ConstraintTextRegion>
310311
)}
311312
</div>
312313
)}

0 commit comments

Comments
 (0)