Merge branch 'feature/MVAPCT-213' into 'develop'
Digital PCT265 story MVAPCT-213 - Allow for panels to override the supported... ### Summary Allow for panels to override the supported orientation. Force chatbot panel to be full screen width on non tablet devices. ### JIRA Ticket https://onejira.verizon.com/browse/MVAPCT-213 Co-authored-by: Scott Pfeil <Scott.Pfeil3@verizonwireless.com> See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1165
This commit is contained in:
commit
50b0280ba4
@ -33,6 +33,9 @@
|
||||
- (void)showArrow;
|
||||
- (void)hideArrow;
|
||||
|
||||
/// Orientation supported by the panel.
|
||||
- (UIInterfaceOrientationMask)supportedInterface;
|
||||
|
||||
/// The width to use if the panel is automatically extended when the screen is big enough.
|
||||
- (CGFloat)panelExtendedWidth;
|
||||
|
||||
|
||||
@ -59,6 +59,13 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) {
|
||||
|
||||
@property (nullable, strong, nonatomic) NSSet *cancellables;
|
||||
|
||||
/// When set to true, the panel will always be full width of the split.
|
||||
@property (nonatomic) BOOL leftPanelFullWidth;
|
||||
|
||||
/// When set to true, the panel will always be full width of the split.
|
||||
@property (nonatomic) BOOL rightPanelFullWidth;
|
||||
|
||||
|
||||
// Convenience getter
|
||||
+ (nullable instancetype)mainSplitViewController;
|
||||
|
||||
@ -131,6 +138,8 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) {
|
||||
|
||||
/// Returns true if a panel is showing.
|
||||
- (BOOL)isAPanelShowing;
|
||||
- (BOOL)isLeftPanelShowing;
|
||||
- (BOOL)isRightPanelShowing;
|
||||
|
||||
#pragma mark - Main Subclassables
|
||||
|
||||
|
||||
@ -679,6 +679,11 @@ CGFloat const PanelAnimationDuration = 0.2;
|
||||
[protocolController panelDidAppear:panel];
|
||||
}
|
||||
}
|
||||
if (@available(iOS 16.0, *)) {
|
||||
if ([panel respondsToSelector:@selector(supportedInterface)]) {
|
||||
[controller setNeedsUpdateOfSupportedInterfaceOrientations];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)panelWillDisappear:(UIViewController <MVMCoreUIPanelProtocol> *)panel animated:(BOOL)animated {
|
||||
@ -709,6 +714,11 @@ CGFloat const PanelAnimationDuration = 0.2;
|
||||
[protocolController panelDidDisappear:panel];
|
||||
}
|
||||
}
|
||||
if (@available(iOS 16.0, *)) {
|
||||
if ([panel respondsToSelector:@selector(supportedInterface)]) {
|
||||
[controller setNeedsUpdateOfSupportedInterfaceOrientations];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)addPanel:(nonnull UIViewController <MVMCoreUIPanelProtocol> *)panel {
|
||||
@ -999,7 +1009,9 @@ CGFloat const PanelAnimationDuration = 0.2;
|
||||
|
||||
CGFloat leftPanelExtendedWidth = [self leftPanelExtendedWidth];
|
||||
CGFloat leftPanelMaxWidth = [self leftPanelMaxWidth];
|
||||
if ([self shouldExtendLeftPanel:numberOfDrawers] && viewWidth > leftPanelExtendedWidth) {
|
||||
if (self.leftPanelFullWidth) {
|
||||
self.leftPanelWidth.constant = viewWidth;
|
||||
} else if ([self shouldExtendLeftPanel:numberOfDrawers] && viewWidth > leftPanelExtendedWidth) {
|
||||
self.leftPanelWidth.constant = leftPanelExtendedWidth;
|
||||
} else if (viewWidth > leftPanelMaxWidth) {
|
||||
self.leftPanelWidth.constant = leftPanelMaxWidth;
|
||||
@ -1009,7 +1021,9 @@ CGFloat const PanelAnimationDuration = 0.2;
|
||||
|
||||
CGFloat rightPanelExtendedWidth = [self rightPanelExtendedWidth];
|
||||
CGFloat rightPanelMaxWidth = [self rightPanelMaxWidth];
|
||||
if ([self shouldExtendRightPanel:numberOfDrawers] && viewWidth > rightPanelExtendedWidth) {
|
||||
if (self.rightPanelFullWidth) {
|
||||
self.rightPanelWidth.constant = viewWidth;
|
||||
} else if ([self shouldExtendRightPanel:numberOfDrawers] && viewWidth > rightPanelExtendedWidth) {
|
||||
self.rightPanelWidth.constant = rightPanelExtendedWidth;
|
||||
} else if (viewWidth > rightPanelMaxWidth) {
|
||||
self.rightPanelWidth.constant = rightPanelMaxWidth;
|
||||
@ -1063,6 +1077,14 @@ CGFloat const PanelAnimationDuration = 0.2;
|
||||
return fabs(self.mainViewLeading.constant) > 1;
|
||||
}
|
||||
|
||||
- (BOOL)isLeftPanelShowing {
|
||||
return !self.leftView.isHidden;
|
||||
}
|
||||
|
||||
- (BOOL)isRightPanelShowing {
|
||||
return !self.rightView.isHidden;
|
||||
}
|
||||
|
||||
#pragma mark - Getters
|
||||
|
||||
// Returns the desired view or falls back. Hot fix until we can get away from using these functions...
|
||||
|
||||
@ -102,4 +102,22 @@ public extension MVMCoreUIUtility {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 16.0, *)
|
||||
@objc @MainActor
|
||||
static func setNeedsUpdateOfSupportedInterfaceOrientations() {
|
||||
var viewController = NavigationHandler.shared().getViewControllerToPresentOn()
|
||||
while let presentedController = viewController?.presentedViewController,
|
||||
!presentedController.isBeingDismissed {
|
||||
viewController = presentedController
|
||||
}
|
||||
if let navigationController = viewController as? UINavigationController {
|
||||
viewController = navigationController.topViewController
|
||||
}
|
||||
if let viewController = viewController {
|
||||
viewController.setNeedsUpdateOfSupportedInterfaceOrientations()
|
||||
} else if let viewController = MVMCoreUISession.sharedGlobal()?.navigationController?.topViewController {
|
||||
viewController.setNeedsUpdateOfSupportedInterfaceOrientations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user