diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart index c6551d825..c2d54bc71 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -9,6 +9,7 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:model/model.dart'; import 'package:permission_handler/permission_handler.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; @@ -284,10 +285,11 @@ class AdvancedFilterController extends BaseController { barrierColor: Colors.black54, pageBuilder: (context, animation, secondaryAnimation) { return Dialog( - elevation: 0, - backgroundColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(18.0)), + elevation: 0, + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(18.0)), + child: PointerInterceptor( child: MultipleViewDateRangePicker( confirmText: AppLocalizations.of(context).setDate, cancelText: AppLocalizations.of(context).cancel, @@ -300,7 +302,8 @@ class AdvancedFilterController extends BaseController { setDateActionCallback: ({startDate, endDate}) { _handleSelectDateRangeResult(context, startDate, endDate); }, - ) + ), + ) ); } ); diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index c82501dba..73bf385f7 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart'; @@ -251,9 +252,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { } else { return PortalTarget( visible: searchController.isAdvancedSearchViewOpen.isTrue, - portalFollower: GestureDetector( + portalFollower: PointerInterceptor( + child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () => searchController.selectOpenAdvanceSearch()), + ), child: PortalTarget( visible: searchController.isAdvancedSearchViewOpen.isTrue, anchor: const Aligned( diff --git a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart index d46d43009..c5ed514fb 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart @@ -2,6 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart'; class AdvancedSearchFilterOverlay extends StatelessWidget { @@ -17,31 +18,33 @@ class AdvancedSearchFilterOverlay extends StatelessWidget { Widget build(BuildContext context) { final responsiveUtils = Get.find(); - return GestureDetector( - onTap: () => FocusManager.instance.primaryFocus?.unfocus(), - child: Padding( - padding: const EdgeInsets.only(top: 4, bottom: 16), - child: Container( - constraints: BoxConstraints( - maxHeight: _getHeightOverlay(context, responsiveUtils), - ), - width: maxWidth ?? 660, - padding: const EdgeInsets.all(32), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(16), - boxShadow: const [ - BoxShadow( - color: AppColor.colorShadowComposer, - blurRadius: 32, - offset: Offset.zero), - BoxShadow( - color: AppColor.colorDropShadow, - blurRadius: 4, - offset: Offset.zero), - ]), - child: SingleChildScrollView( - child: AdvancedSearchInputForm(), + return PointerInterceptor( + child: GestureDetector( + onTap: () => FocusManager.instance.primaryFocus?.unfocus(), + child: Padding( + padding: const EdgeInsets.only(top: 4, bottom: 16), + child: Container( + constraints: BoxConstraints( + maxHeight: _getHeightOverlay(context, responsiveUtils), + ), + width: maxWidth ?? 660, + padding: const EdgeInsets.all(32), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + boxShadow: const [ + BoxShadow( + color: AppColor.colorShadowComposer, + blurRadius: 32, + offset: Offset.zero), + BoxShadow( + color: AppColor.colorDropShadow, + blurRadius: 4, + offset: Offset.zero), + ]), + child: SingleChildScrollView( + child: AdvancedSearchInputForm(), + ), ), ), ), diff --git a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart index 1c2b5c040..362d6dafa 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart @@ -5,6 +5,7 @@ import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:model/email/presentation_email.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart'; @@ -34,9 +35,11 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { return PortalTarget( visible: controller.isAdvancedSearchViewOpen.isTrue, - portalFollower: GestureDetector( + portalFollower: PointerInterceptor( + child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () => controller.selectOpenAdvanceSearch()), + ), child: PortalTarget( visible: controller.isAdvancedSearchViewOpen.isTrue, anchor: const Aligned(