@@ -43,6 +43,7 @@ export default class ModalPortal extends Component {
43
43
} ) ,
44
44
className : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . object ] ) ,
45
45
overlayClassName : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . object ] ) ,
46
+ parentSelector : PropTypes . func ,
46
47
bodyOpenClassName : PropTypes . string ,
47
48
htmlOpenClassName : PropTypes . string ,
48
49
ariaHideApp : PropTypes . bool ,
@@ -149,15 +150,19 @@ export default class ModalPortal extends Component {
149
150
appElement,
150
151
ariaHideApp,
151
152
htmlOpenClassName,
152
- bodyOpenClassName
153
+ bodyOpenClassName,
154
+ parentSelector
153
155
} = this . props ;
154
156
157
+ const parentDocument =
158
+ ( parentSelector && parentSelector ( ) . ownerDocument ) || document ;
159
+
155
160
// Add classes.
156
- bodyOpenClassName && classList . add ( document . body , bodyOpenClassName ) ;
161
+ bodyOpenClassName && classList . add ( parentDocument . body , bodyOpenClassName ) ;
157
162
158
163
htmlOpenClassName &&
159
164
classList . add (
160
- document . getElementsByTagName ( "html" ) [ 0 ] ,
165
+ parentDocument . getElementsByTagName ( "html" ) [ 0 ] ,
161
166
htmlOpenClassName
162
167
) ;
163
168
@@ -174,15 +179,20 @@ export default class ModalPortal extends Component {
174
179
appElement,
175
180
ariaHideApp,
176
181
htmlOpenClassName,
177
- bodyOpenClassName
182
+ bodyOpenClassName,
183
+ parentSelector
178
184
} = this . props ;
179
185
186
+ const parentDocument =
187
+ ( parentSelector && parentSelector ( ) . ownerDocument ) || document ;
188
+
180
189
// Remove classes.
181
- bodyOpenClassName && classList . remove ( document . body , bodyOpenClassName ) ;
190
+ bodyOpenClassName &&
191
+ classList . remove ( parentDocument . body , bodyOpenClassName ) ;
182
192
183
193
htmlOpenClassName &&
184
194
classList . remove (
185
- document . getElementsByTagName ( "html" ) [ 0 ] ,
195
+ parentDocument . getElementsByTagName ( "html" ) [ 0 ] ,
186
196
htmlOpenClassName
187
197
) ;
188
198
0 commit comments