From 9bca14738ee4ffa2713c89d8a0b10b03a107d20c Mon Sep 17 00:00:00 2001 From: dab246 Date: Sat, 14 Jun 2025 02:49:37 +0700 Subject: [PATCH] TF-3759 Make it easy to close popup menu when open in email view Signed-off-by: dab246 --- .../mixin/popup_context_menu_action_mixin.dart | 15 +++++++++++---- .../controller/mailbox_dashboard_controller.dart | 1 + ..._display_overlay_view_on_iframe_extension.dart | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/features/base/mixin/popup_context_menu_action_mixin.dart b/lib/features/base/mixin/popup_context_menu_action_mixin.dart index 40c0e9965..75a70adcf 100644 --- a/lib/features/base/mixin/popup_context_menu_action_mixin.dart +++ b/lib/features/base/mixin/popup_context_menu_action_mixin.dart @@ -16,7 +16,7 @@ mixin PopupContextMenuActionMixin { BuildContext context, List actionTiles, ) async { - await (CupertinoActionSheetBuilder(context) + return await (CupertinoActionSheetBuilder(context) ..addTiles(actionTiles) ..addCancelButton(buildCancelButton(context))) .show(); @@ -31,7 +31,7 @@ mixin PopupContextMenuActionMixin { if (PlatformInfo.isWeb) { getBinding()?.isContextMenuOpened.value = true; } - await showModalBottomSheet( + return await showModalBottomSheet( context: context, showDragHandle: true, useSafeArea: true, @@ -69,7 +69,10 @@ mixin PopupContextMenuActionMixin { RelativeRect? position, List popupMenuItems, ) async { - await showMenu( + if (PlatformInfo.isWeb) { + getBinding()?.isPopupMenuOpened.value = true; + } + return await showMenu( context: context, position: position ?? const RelativeRect.fromLTRB(16, 40, 16, 16), color: Colors.white, @@ -81,7 +84,11 @@ mixin PopupContextMenuActionMixin { ), constraints: const BoxConstraints(maxWidth: 300, minWidth: 178), items: popupMenuItems, - ); + ).whenComplete(() { + if (PlatformInfo.isWeb) { + getBinding()?.isPopupMenuOpened.value = false; + } + }); } Widget buildCancelButton(BuildContext context) { diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 6c897f728..be573c695 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -265,6 +265,7 @@ class MailboxDashBoardController extends ReloadableController final isAppGridDialogDisplayed = RxBool(false); final isDrawerOpened = RxBool(false); final isContextMenuOpened = RxBool(false); + final isPopupMenuOpened = RxBool(false); Session? sessionCurrent; Map mapDefaultMailboxIdByRole = {}; diff --git a/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart index 1fad2db2b..04b155c68 100644 --- a/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart +++ b/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart @@ -8,6 +8,7 @@ extension VerifyDisplayOverlayViewOnIframeExtension isLocalFileDraggableAppActive || isAppGridDialogDisplayed.isTrue || isDrawerOpened.isTrue || - isContextMenuOpened.isTrue; + isContextMenuOpened.isTrue || + isPopupMenuOpened.isTrue; } }