diff --git a/package.json b/package.json index b22faf95a01..df31b59c8b3 100644 --- a/package.json +++ b/package.json @@ -160,6 +160,7 @@ "react": "^18.0.0", "react-axe": "^3.0.2", "react-dom": "^18.0.0", + "react-frame-component": "^5.0.0", "react-test-renderer": "^16.9.0", "recast": "^0.20", "recursive-readdir": "^2.2.2", diff --git a/packages/@react-aria/interactions/stories/useFocusRing.stories.tsx b/packages/@react-aria/interactions/stories/useFocusRing.stories.tsx index 7598fb38ac8..54523ac34e8 100644 --- a/packages/@react-aria/interactions/stories/useFocusRing.stories.tsx +++ b/packages/@react-aria/interactions/stories/useFocusRing.stories.tsx @@ -12,10 +12,10 @@ import {addWindowFocusTracking} from '../src'; import {Cell, Column, Row, TableBody, TableHeader, TableView} from '@react-spectrum/table'; +import Frame from 'react-frame-component'; import {Key} from '@react-types/shared'; import {mergeProps} from '@react-aria/utils'; import React, {useEffect, useRef, useState} from 'react'; -import ReactDOM from 'react-dom'; import {SearchField} from '@react-spectrum/searchfield'; import {useButton} from '@react-aria/button'; import {useFocusRing} from '@react-aria/focus'; @@ -100,50 +100,34 @@ function SearchExample() { ); } -function Button() { - const buttonRef = useRef(null); +function MyButton(props) { + const buttonRef = props.btnRef; - const {buttonProps} = useButton({}, buttonRef); const {focusProps, isFocusVisible, isFocused} = useFocusRing(); + let {buttonProps} = useButton(props, buttonRef); return ( - ); } -const IframeWrapper = ({children}) => { - const iframeRef = useRef(null); - +const IFrameExample = (props) => { + let btnRef = useRef(null); useEffect(() => { - if (iframeRef.current) { - const main = document.createElement('main'); - const iframeDocument = iframeRef.current.contentDocument; - - if (iframeDocument) { - iframeDocument.body.innerHTML = ''; - iframeDocument.body.appendChild(main); - ReactDOM.render(children, main); - - return addWindowFocusTracking(iframeDocument.body); - } - } - }, [children]); + return addWindowFocusTracking(btnRef.current); + }, []); - return