Skip to content

Commit ef1336a

Browse files
guidaritay1orjones
andauthored
fix: fixed VO and JAWS problem in FF and Safari (#14156)
* fix: fixed VO and JAWS problem in FF and Safari * fix: removed aria hidden * fix: removed tabIndex from focus sentinel * fix: remove wrong tabIndex * fix(composedmodal): improve initial focus to match modal behavior * Update Modal.js Remove the tabIndex from Modal * fix: added button inside the dialog --------- Co-authored-by: Taylor Jones <taylor.jones826@gmail.com>
1 parent f20a3a4 commit ef1336a

1 file changed

Lines changed: 19 additions & 16 deletions

File tree

packages/react/src/components/ComposedModal/ComposedModal.tsx

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -305,28 +305,30 @@ const ComposedModal = React.forwardRef<HTMLDivElement, ComposedModalProps>(
305305
});
306306

307307
useEffect(() => {
308-
const focusButton = (focusContainerElement) => {
309-
if (focusContainerElement) {
310-
const primaryFocusElement =
311-
focusContainerElement.querySelector(selectorPrimaryFocus);
312-
if (primaryFocusElement) {
313-
primaryFocusElement.focus();
314-
return;
315-
}
316-
if (button.current) {
317-
button.current.focus();
318-
}
308+
const initialFocus = (focusContainerElement) => {
309+
const containerElement = focusContainerElement || innerModal.current;
310+
const primaryFocusElement = containerElement
311+
? containerElement.querySelector(selectorPrimaryFocus)
312+
: null;
313+
314+
if (primaryFocusElement) {
315+
return primaryFocusElement;
319316
}
317+
318+
return button && button.current;
320319
};
321320

322-
if (!open) {
323-
return;
324-
}
321+
const focusButton = (focusContainerElement) => {
322+
const target = initialFocus(focusContainerElement);
323+
if (target) {
324+
target.focus();
325+
}
326+
};
325327

326-
if (innerModal.current) {
328+
if (open && isOpen) {
327329
focusButton(innerModal.current);
328330
}
329-
}, [open, selectorPrimaryFocus]);
331+
}, [open, selectorPrimaryFocus, isOpen]);
330332

331333
return (
332334
<div
@@ -345,6 +347,7 @@ const ComposedModal = React.forwardRef<HTMLDivElement, ComposedModalProps>(
345347
aria-label={ariaLabel ? ariaLabel : generatedAriaLabel}
346348
aria-labelledby={ariaLabelledBy}>
347349
{/* Non-translatable: Focus-wrap code makes this `<button>` not actually read by screen readers */}
350+
348351
<button
349352
type="button"
350353
ref={startSentinel}

0 commit comments

Comments
 (0)