TF-691 Hide advanced search menu overlay when click outside menu

This commit is contained in:
dab246
2022-08-04 16:04:59 +07:00
committed by Dat H. Pham
parent 6b1d967861
commit fcaedeaf55
2 changed files with 348 additions and 312 deletions
@@ -161,10 +161,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
}),
const SizedBox(width: 16),
Obx(() => !searchController.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
Obx(() => searchController.isSearchActive()
? Expanded(child: _buildSearchForm(context))
: PortalTarget(
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
Obx(() {
if (searchController.isSearchActive()) {
return Expanded(child: _buildSearchForm(context));
} else {
return PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => searchController.selectOpenAdvanceSearch()),
child: PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned(
follower: Alignment.topRight,
target: Alignment.bottomRight,
@@ -175,14 +182,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
widthFactor: 3,
),
),
portalFollower: responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
portalFollower: responsiveUtils.isMobile(context)
? const SizedBox.shrink()
: const AdvancedSearchFilterOverlay(),
child: (SearchBarView(imagePaths)
..hintTextSearch(AppLocalizations.of(context).search_emails)
..maxSizeWidth(240)
..addOnOpenSearchViewAction(() => searchController.enableSearch())
..addRightButton(IconOpenAdvancedSearchWidget(context)))
.build(),
)),
),
);
}
}),
Obx(() => !searchController.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
Obx(() => (AvatarBuilder()
..text(controller.userProfile.value?.getAvatarText() ?? '')
@@ -427,6 +439,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
borderRadius: BorderRadius.all(Radius.circular(10)),
color: AppColor.colorBgSearchBar),
height: 45,
child: PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => searchController.selectOpenAdvanceSearch()),
child: PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned(
@@ -439,7 +456,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
widthFactor: 1,
),
),
portalFollower: const AdvancedSearchFilterOverlay(),
portalFollower: responsiveUtils.isMobile(context)
? const SizedBox.shrink()
: const AdvancedSearchFilterOverlay(),
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
textFieldConfiguration: QuickSearchTextFieldConfiguration(
controller: searchController.searchInputController,
@@ -590,6 +609,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
OpenEmailDetailedAction(context, presentationEmail));
}),
),
),
)),
const SizedBox(width: 16),
]
@@ -170,6 +170,11 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
Widget _buildSearchFormInActive(BuildContext context) {
return PortalTarget(
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => controller.searchController.selectOpenAdvanceSearch()),
child: PortalTarget(
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned(
follower: Alignment.topLeft,
@@ -181,12 +186,15 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
widthFactor: 1,
),
),
portalFollower: _responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
portalFollower: _responsiveUtils.isMobile(context)
? const SizedBox.shrink()
: const AdvancedSearchFilterOverlay(),
child: (SearchBarView(_imagePaths)
..hintTextSearch(AppLocalizations.of(context).search_emails)
..addOnOpenSearchViewAction(() => controller.enableSearch(context))
..addRightButton(IconOpenAdvancedSearchWidget(context)))
.build(),
),
);
}
@@ -204,6 +212,11 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
borderRadius: BorderRadius.all(Radius.circular(10)),
color: AppColor.colorBgSearchBar),
height: 45,
child: PortalTarget(
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => controller.searchController.selectOpenAdvanceSearch()),
child: PortalTarget(
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned(
@@ -216,7 +229,9 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
widthFactor: 1,
),
),
portalFollower: _responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
portalFollower: _responsiveUtils.isMobile(context)
? const SizedBox.shrink()
: const AdvancedSearchFilterOverlay(),
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
textFieldConfiguration: QuickSearchTextFieldConfiguration(
controller: controller.searchController.searchInputController,
@@ -364,6 +379,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
presentationEmail);
}),
),
),
)),
const SizedBox(width: 16),
]