@@ -43,6 +43,7 @@ export default class ModalPortal extends Component {
4343 } ) ,
4444 className : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . object ] ) ,
4545 overlayClassName : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . object ] ) ,
46+ parentSelector : PropTypes . func ,
4647 bodyOpenClassName : PropTypes . string ,
4748 htmlOpenClassName : PropTypes . string ,
4849 ariaHideApp : PropTypes . bool ,
@@ -149,15 +150,19 @@ export default class ModalPortal extends Component {
149150 appElement,
150151 ariaHideApp,
151152 htmlOpenClassName,
152- bodyOpenClassName
153+ bodyOpenClassName,
154+ parentSelector
153155 } = this . props ;
154156
157+ const parentDocument =
158+ ( parentSelector && parentSelector ( ) . ownerDocument ) || document ;
159+
155160 // Add classes.
156- bodyOpenClassName && classList . add ( document . body , bodyOpenClassName ) ;
161+ bodyOpenClassName && classList . add ( parentDocument . body , bodyOpenClassName ) ;
157162
158163 htmlOpenClassName &&
159164 classList . add (
160- document . getElementsByTagName ( "html" ) [ 0 ] ,
165+ parentDocument . getElementsByTagName ( "html" ) [ 0 ] ,
161166 htmlOpenClassName
162167 ) ;
163168
@@ -174,15 +179,20 @@ export default class ModalPortal extends Component {
174179 appElement,
175180 ariaHideApp,
176181 htmlOpenClassName,
177- bodyOpenClassName
182+ bodyOpenClassName,
183+ parentSelector
178184 } = this . props ;
179185
186+ const parentDocument =
187+ ( parentSelector && parentSelector ( ) . ownerDocument ) || document ;
188+
180189 // Remove classes.
181- bodyOpenClassName && classList . remove ( document . body , bodyOpenClassName ) ;
190+ bodyOpenClassName &&
191+ classList . remove ( parentDocument . body , bodyOpenClassName ) ;
182192
183193 htmlOpenClassName &&
184194 classList . remove (
185- document . getElementsByTagName ( "html" ) [ 0 ] ,
195+ parentDocument . getElementsByTagName ( "html" ) [ 0 ] ,
186196 htmlOpenClassName
187197 ) ;
188198
0 commit comments