TF-3953 Close several modals when click outside
This commit is contained in:
@@ -31,6 +31,7 @@ import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/base/before_reconnect_handler.dart';
|
||||
import 'package:tmail_ui_user/features/base/before_reconnect_manager.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/auto_complete_result_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/base_ui_state.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/button_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/exceptions/compose_email_exception.dart';
|
||||
@@ -781,7 +782,7 @@ class ComposerController extends BaseController
|
||||
}
|
||||
|
||||
if (!isEnableEmailSendButton.value) {
|
||||
showConfirmDialogAction(context,
|
||||
MessageDialogActionManager().showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_without_recipient,
|
||||
AppLocalizations.of(context).add_recipients,
|
||||
title: AppLocalizations.of(context).sending_failed,
|
||||
@@ -797,7 +798,7 @@ class ComposerController extends BaseController
|
||||
.where((emailAddress) => !EmailUtils.isEmailAddressValid(emailAddress.emailAddress))
|
||||
.toList();
|
||||
if (listEmailAddressInvalid.isNotEmpty) {
|
||||
showConfirmDialogAction(context,
|
||||
MessageDialogActionManager().showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_with_email_address_invalid,
|
||||
AppLocalizations.of(context).fix_email_addresses,
|
||||
onConfirmAction: () {
|
||||
@@ -815,7 +816,7 @@ class ComposerController extends BaseController
|
||||
}
|
||||
|
||||
if (subjectEmail.value == null || subjectEmail.isEmpty == true) {
|
||||
showConfirmDialogAction(context,
|
||||
MessageDialogActionManager().showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_without_a_subject,
|
||||
AppLocalizations.of(context).cancel,
|
||||
cancelTitle: AppLocalizations.of(context).send_anyway,
|
||||
@@ -830,7 +831,7 @@ class ComposerController extends BaseController
|
||||
}
|
||||
|
||||
if (!uploadController.allUploadAttachmentsCompleted) {
|
||||
showConfirmDialogAction(
|
||||
MessageDialogActionManager().showConfirmDialogAction(
|
||||
context,
|
||||
AppLocalizations.of(context).messageDialogSendEmailUploadingAttachment,
|
||||
AppLocalizations.of(context).got_it,
|
||||
@@ -843,7 +844,7 @@ class ComposerController extends BaseController
|
||||
}
|
||||
|
||||
if (uploadController.isExceededMaxSizeAttachmentsPerEmail()) {
|
||||
showConfirmDialogAction(
|
||||
MessageDialogActionManager().showConfirmDialogAction(
|
||||
context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_exceeds_maximum_size(
|
||||
filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)),
|
||||
@@ -985,7 +986,7 @@ class ComposerController extends BaseController
|
||||
appLocalizations: AppLocalizations.of(context),
|
||||
exception: failure.exception,
|
||||
);
|
||||
await showConfirmDialogAction(
|
||||
await MessageDialogActionManager().showConfirmDialogAction(
|
||||
context,
|
||||
title: '',
|
||||
errorMessage,
|
||||
@@ -1956,14 +1957,13 @@ class ComposerController extends BaseController
|
||||
}
|
||||
|
||||
Future<void> _showConfirmDialogSaveMessage(BuildContext context) async {
|
||||
await showConfirmDialogAction(
|
||||
await MessageDialogActionManager().showConfirmDialogAction(
|
||||
context,
|
||||
title: AppLocalizations.of(context).saveMessage.capitalizeFirstEach,
|
||||
AppLocalizations.of(context).warningMessageWhenClickCloseComposer,
|
||||
AppLocalizations.of(context).save,
|
||||
cancelTitle: AppLocalizations.of(context).discardChanges,
|
||||
alignCenter: true,
|
||||
outsideDismissible: false,
|
||||
autoPerformPopBack: false,
|
||||
isArrangeActionButtonsVertical: true,
|
||||
isScrollContentEnabled: responsiveUtils.isLandscapeMobile(context),
|
||||
@@ -1987,6 +1987,7 @@ class ComposerController extends BaseController
|
||||
}
|
||||
},
|
||||
);
|
||||
_closeComposerButtonState = ButtonState.enabled;
|
||||
}
|
||||
|
||||
void handleOnDragEnterHtmlEditorWeb(List<dynamic>? types) {
|
||||
@@ -2212,7 +2213,7 @@ class ComposerController extends BaseController
|
||||
exception: failure.exception,
|
||||
isDraft: true,
|
||||
);
|
||||
await showConfirmDialogAction(
|
||||
await MessageDialogActionManager().showConfirmDialogAction(
|
||||
context,
|
||||
title: '',
|
||||
errorMessage,
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/email/prefix_email_address.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/composer_print_draft_extension.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/handle_edit_recipient_extension.dart';
|
||||
@@ -27,6 +28,7 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/web/from_co
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/local_file_drop_zone_widget.dart';
|
||||
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';
|
||||
|
||||
class ComposerView extends GetWidget<ComposerController> {
|
||||
|
||||
@@ -39,6 +41,20 @@ class ComposerView extends GetWidget<ComposerController> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final iframeOverlay = Obx(() {
|
||||
if (controller.mailboxDashBoardController.isDisplayedOverlayViewOnIFrame ||
|
||||
MessageDialogActionManager().isDialogOpened) {
|
||||
return Positioned.fill(
|
||||
key: const ValueKey('tap-to-close'),
|
||||
child: PointerInterceptor(
|
||||
child: const SizedBox.expand(),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
});
|
||||
|
||||
return ResponsiveWidget(
|
||||
responsiveUtils: controller.responsiveUtils,
|
||||
mobile: MobileResponsiveContainerView(
|
||||
@@ -329,6 +345,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
iframeOverlay,
|
||||
],
|
||||
);
|
||||
}
|
||||
@@ -647,6 +664,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
iframeOverlay,
|
||||
],
|
||||
);
|
||||
}
|
||||
@@ -967,6 +985,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
iframeOverlay,
|
||||
],
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user