Skip to content

Commit db2587c

Browse files
committed
fix(bottomsheet): iOS fix for RADSideDrawer
1 parent 7883c8f commit db2587c

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/bottomsheet/bottomsheet.ios.ts

+21-11
Original file line numberDiff line numberDiff line change
@@ -361,14 +361,15 @@ export class ViewWithBottomSheet extends ViewWithBottomSheetBase {
361361
parentController = rootView.viewController.presentedViewController;
362362
}
363363
while (parentController.presentedViewController) {
364-
while (parentController.presentedViewController instanceof UIAlertController ||
365-
(parentController.presentedViewController['isAlertController'] && parentController.presentedViewController.presentedViewController)) {
366-
parentController = parentController.presentedViewController;
364+
while (
365+
parentController.presentedViewController instanceof UIAlertController ||
366+
(parentController.presentedViewController['isAlertController'] && parentController.presentedViewController.presentedViewController)
367+
) {
368+
parentController = parentController.presentedViewController;
367369
}
368370
if (parentController.presentedViewController instanceof UIAlertController || parentController.presentedViewController['isAlertController']) {
369371
break;
370-
}
371-
else {
372+
} else {
372373
parentController = parentController.presentedViewController;
373374
}
374375
}
@@ -379,7 +380,15 @@ export class ViewWithBottomSheet extends ViewWithBottomSheetBase {
379380
}
380381

381382
this.parent = Application.getRootView();
383+
384+
// dirty trick for RADSideDrawer. as we set parent for css variables/classes, _setupAsRootView
385+
// will call _addViewToNativeVisualTree which breaks the bottomSheet with RADSiderDrawer
386+
// so we disable _addViewToNativeVisualTree for _setupAsRootView
387+
// should be fixed in N. we could say if _setupAsRootView then NO _addViewToNativeVisualTree
388+
const oldAddViewToNativeVisualTree = this.parent._addViewToNativeVisualTree;
389+
this.parent._addViewToNativeVisualTree = () => false;
382390
this._setupAsRootView({});
391+
this.parent._addViewToNativeVisualTree = oldAddViewToNativeVisualTree;
383392

384393
this._commonShowNativeBottomSheet(currentView, options);
385394
let controller: IMDLayoutViewController = this.viewController;
@@ -477,20 +486,21 @@ export class ViewWithBottomSheet extends ViewWithBottomSheetBase {
477486
if (rootView.parent) {
478487
rootView = rootView.parent as any;
479488
}
480-
let currentView = parent.modal || parent;
489+
const currentView = parent.modal || parent;
481490
let parentController = currentView.viewController;
482491
if (!parentController.presentedViewController && rootView.viewController.presentedViewController) {
483492
parentController = rootView.viewController.presentedViewController;
484493
}
485494
while (parentController.presentedViewController) {
486-
while (parentController.presentedViewController instanceof UIAlertController ||
487-
(parentController.presentedViewController['isAlertController'] && parentController.presentedViewController.presentedViewController)) {
488-
parentController = parentController.presentedViewController;
495+
while (
496+
parentController.presentedViewController instanceof UIAlertController ||
497+
(parentController.presentedViewController['isAlertController'] && parentController.presentedViewController.presentedViewController)
498+
) {
499+
parentController = parentController.presentedViewController;
489500
}
490501
if (parentController.presentedViewController instanceof UIAlertController || parentController.presentedViewController['isAlertController']) {
491502
break;
492-
}
493-
else {
503+
} else {
494504
parentController = parentController.presentedViewController;
495505
}
496506
}

0 commit comments

Comments
 (0)