diff --git a/packages/@react-aria/overlays/src/ariaHideOutside.ts b/packages/@react-aria/overlays/src/ariaHideOutside.ts index efdd0c2a83f..07d350ef47e 100644 --- a/packages/@react-aria/overlays/src/ariaHideOutside.ts +++ b/packages/@react-aria/overlays/src/ariaHideOutside.ts @@ -11,7 +11,6 @@ */ import {getOwnerWindow} from '@react-aria/utils'; - const supportsInert = typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype; interface AriaHideOutsideOptions { @@ -72,6 +71,7 @@ export function ariaHideOutside(targets: Element[], options?: AriaHideOutsideOpt // made for elements with role="row" since VoiceOver on iOS has issues hiding elements with role="row". // For that case we want to hide the cells inside as well (https://bugs.webkit.org/show_bug.cgi?id=222623). if ( + hiddenNodes.has(node) || visibleNodes.has(node) || (node.parentElement && hiddenNodes.has(node.parentElement) && node.parentElement.getAttribute('role') !== 'row') ) { @@ -136,7 +136,7 @@ export function ariaHideOutside(targets: Element[], options?: AriaHideOutsideOpt let observer = new MutationObserver(changes => { for (let change of changes) { - if (change.type !== 'childList' || change.addedNodes.length === 0) { + if (change.type !== 'childList') { continue; } diff --git a/packages/@react-aria/overlays/test/ariaHideOutside.test.js b/packages/@react-aria/overlays/test/ariaHideOutside.test.js index 2a9f610f4c2..be0196cb5e3 100644 --- a/packages/@react-aria/overlays/test/ariaHideOutside.test.js +++ b/packages/@react-aria/overlays/test/ariaHideOutside.test.js @@ -10,9 +10,9 @@ * governing permissions and limitations under the License. */ +import {act, render, waitFor} from '@react-spectrum/test-utils-internal'; import {ariaHideOutside} from '../src'; -import React from 'react'; -import {render, waitFor} from '@react-spectrum/test-utils-internal'; +import React, {useState} from 'react'; describe('ariaHideOutside', function () { it('should hide everything except the provided element [button]', function () { @@ -354,10 +354,13 @@ describe('ariaHideOutside', function () { }); it('should hide everything except the provided element [row]', function () { - let {getAllByRole} = render( + let {getAllByRole, getByTestId} = render(