TF-4004 Avoid lost focus when display above iframe

This commit is contained in:
dab246
2025-09-09 04:22:56 +07:00
committed by Dat H. Pham
parent dab3dc3b99
commit c12a3b4ecf
4 changed files with 14 additions and 3 deletions
@@ -30,6 +30,7 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/web/local_f
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/mobile_responsive_app_bar_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/toolbar_rich_text_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart';
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
class ComposerView extends GetWidget<ComposerController> {
@@ -45,7 +46,8 @@ class ComposerView extends GetWidget<ComposerController> {
final iframeOverlay = Obx(() {
bool isOverlayEnabled = controller.mailboxDashBoardController.isDisplayedOverlayViewOnIFrame ||
MessageDialogActionManager().isDialogOpened ||
ColorDialogPicker().isOpened.isTrue;
ColorDialogPicker().isOpened.isTrue ||
DialogRouter.isRuleFilterDialogOpened.isTrue;
if (isOverlayEnabled) {
return Positioned.fill(
@@ -38,6 +38,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class EmailView extends GetWidget<SingleEmailController> {
@@ -535,7 +536,8 @@ class EmailView extends GetWidget<SingleEmailController> {
bool isOverlayEnabled = controller.mailboxDashBoardController.isDisplayedOverlayViewOnIFrame ||
MessageDialogActionManager().isDialogOpened ||
EmailActionReactor.isDialogOpened ||
ColorDialogPicker().isOpened.isTrue;
ColorDialogPicker().isOpened.isTrue ||
DialogRouter.isRuleFilterDialogOpened.isTrue;
if (isOverlayEnabled) {
return Positioned.fill(
@@ -28,7 +28,8 @@ class SignatureBuilder extends StatelessWidget {
if (PlatformInfo.isWeb) {
final iframeOverlay = Obx(() {
if (MessageDialogActionManager().isDialogOpened ||
DialogRouter.isDialogOpened) {
DialogRouter.isDialogOpened ||
DialogRouter.isRuleFilterDialogOpened.isTrue) {
return Positioned.fill(
child: PointerInterceptor(
child: const SizedBox.expand(),
+6
View File
@@ -33,10 +33,15 @@ class DialogRouter {
);
_isDialogOpened.value = false;
if (routeName == AppRoutes.rulesFilterCreator) {
isRuleFilterDialogOpened.value = false;
}
return returnedValue;
}
static final RxBool _isDialogOpened = false.obs;
static final RxBool isRuleFilterDialogOpened = false.obs;
static bool get isDialogOpened => _isDialogOpened.value;
static void _bindingDI(String routeName) {
@@ -46,6 +51,7 @@ class DialogRouter {
MailboxCreatorBindings().dependencies();
break;
case AppRoutes.rulesFilterCreator:
isRuleFilterDialogOpened.value = true;
RulesFilterCreatorBindings().dependencies();
break;
case AppRoutes.identityCreator: