import * as React from "react"; import ReactModal = require('react-modal'); // tests for static method // string ReactModal.setAppElement("#main"); // HTMLElement ReactModal.setAppElement(document.getElementById("#main")); class ExampleOfUsingReactModal extends React.Component { contentRef: HTMLDivElement; overlayRef: HTMLDivElement; render() { const reactModalRef = React.useRef(); // typed params of `OnAfterOpen` callback const onAfterOpenFn: ReactModal.OnAfterOpenCallback = ({ contentEl, overlayEl }) => { console.assert(contentEl === reactModalRef.current.portal.content); console.assert(overlayEl === reactModalRef.current.portal.overlay); }; const onAfterCloseFn = () => { }; const onRequestCloseFn = (event: React.MouseEvent | React.KeyboardEvent) => { }; const customStyle: ReactModal.Styles = { overlay: { position: 'fixed', top: 0, left: 0, right: 0, bottom: 0, backgroundColor: 'rgba(255, 255, 255, 0.75)' }, content: { position: 'absolute', top: '40px', left: '40px', right: '40px', bottom: '40px', border: '1px solid #ccc', background: '#fff', overflow: 'auto', WebkitOverflowScrolling: 'touch', borderRadius: '4px', outline: 'none', padding: '20px' } }; const customClasses = { afterOpen: 'afterOpen', base: 'base', beforeClose: 'beforeClose' }; const customOverlayClasses = { afterOpen: 'afterOpen', base: 'base', beforeClose: 'beforeClose' }; const customAriaVariables = { labelledby: 'labelledby', describedby: 'describedby', modal: true, }; const customDataVariables = { dataOne: 'one', dataTwo: 'two' }; return ( this.contentRef = instance} overlayRef={instance => this.overlayRef = instance} testId="modal-content" >

Modal Content

Etc.

); } } const MyWrapperComponent: React.FC = () => { const reactModaRef = React.useRef(); // typed params of `OnAfterOpen` are optional for backward compatible types const onAfterOpenOptionalObjFn = () => {}; React.useLayoutEffect(() => { reactModaRef.current.portal.overlay.getAttribute('foo'); reactModaRef.current.portal.content.focus(); }); return ( Hello, World! ); };