TF-691 Hide advanced search menu overlay when click outside menu
This commit is contained in:
@@ -161,10 +161,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
}),
|
}),
|
||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
Obx(() => !searchController.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
|
Obx(() => !searchController.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
|
||||||
Obx(() => searchController.isSearchActive()
|
Obx(() {
|
||||||
? Expanded(child: _buildSearchForm(context))
|
if (searchController.isSearchActive()) {
|
||||||
: PortalTarget(
|
return Expanded(child: _buildSearchForm(context));
|
||||||
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
} else {
|
||||||
|
return PortalTarget(
|
||||||
|
visible: searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
|
portalFollower: GestureDetector(
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
onTap: () => searchController.selectOpenAdvanceSearch()),
|
||||||
|
child: PortalTarget(
|
||||||
|
visible: searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
anchor: const Aligned(
|
anchor: const Aligned(
|
||||||
follower: Alignment.topRight,
|
follower: Alignment.topRight,
|
||||||
target: Alignment.bottomRight,
|
target: Alignment.bottomRight,
|
||||||
@@ -175,14 +182,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
widthFactor: 3,
|
widthFactor: 3,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
portalFollower: responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
|
portalFollower: responsiveUtils.isMobile(context)
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: const AdvancedSearchFilterOverlay(),
|
||||||
child: (SearchBarView(imagePaths)
|
child: (SearchBarView(imagePaths)
|
||||||
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
||||||
..maxSizeWidth(240)
|
..maxSizeWidth(240)
|
||||||
..addOnOpenSearchViewAction(() => searchController.enableSearch())
|
..addOnOpenSearchViewAction(() => searchController.enableSearch())
|
||||||
..addRightButton(IconOpenAdvancedSearchWidget(context)))
|
..addRightButton(IconOpenAdvancedSearchWidget(context)))
|
||||||
.build(),
|
.build(),
|
||||||
)),
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
Obx(() => !searchController.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
|
Obx(() => !searchController.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
|
||||||
Obx(() => (AvatarBuilder()
|
Obx(() => (AvatarBuilder()
|
||||||
..text(controller.userProfile.value?.getAvatarText() ?? '')
|
..text(controller.userProfile.value?.getAvatarText() ?? '')
|
||||||
@@ -427,6 +439,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
color: AppColor.colorBgSearchBar),
|
color: AppColor.colorBgSearchBar),
|
||||||
height: 45,
|
height: 45,
|
||||||
|
child: PortalTarget(
|
||||||
|
visible: searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
|
portalFollower: GestureDetector(
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
onTap: () => searchController.selectOpenAdvanceSearch()),
|
||||||
child: PortalTarget(
|
child: PortalTarget(
|
||||||
visible: searchController.isAdvancedSearchViewOpen.isTrue,
|
visible: searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
anchor: const Aligned(
|
anchor: const Aligned(
|
||||||
@@ -439,7 +456,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
widthFactor: 1,
|
widthFactor: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
portalFollower: const AdvancedSearchFilterOverlay(),
|
portalFollower: responsiveUtils.isMobile(context)
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: const AdvancedSearchFilterOverlay(),
|
||||||
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
||||||
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
||||||
controller: searchController.searchInputController,
|
controller: searchController.searchInputController,
|
||||||
@@ -590,6 +609,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
OpenEmailDetailedAction(context, presentationEmail));
|
OpenEmailDetailedAction(context, presentationEmail));
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)),
|
)),
|
||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -170,6 +170,11 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
|
|
||||||
Widget _buildSearchFormInActive(BuildContext context) {
|
Widget _buildSearchFormInActive(BuildContext context) {
|
||||||
return PortalTarget(
|
return PortalTarget(
|
||||||
|
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
|
portalFollower: GestureDetector(
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
onTap: () => controller.searchController.selectOpenAdvanceSearch()),
|
||||||
|
child: PortalTarget(
|
||||||
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
anchor: const Aligned(
|
anchor: const Aligned(
|
||||||
follower: Alignment.topLeft,
|
follower: Alignment.topLeft,
|
||||||
@@ -181,12 +186,15 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
widthFactor: 1,
|
widthFactor: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
portalFollower: _responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
|
portalFollower: _responsiveUtils.isMobile(context)
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: const AdvancedSearchFilterOverlay(),
|
||||||
child: (SearchBarView(_imagePaths)
|
child: (SearchBarView(_imagePaths)
|
||||||
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
||||||
..addOnOpenSearchViewAction(() => controller.enableSearch(context))
|
..addOnOpenSearchViewAction(() => controller.enableSearch(context))
|
||||||
..addRightButton(IconOpenAdvancedSearchWidget(context)))
|
..addRightButton(IconOpenAdvancedSearchWidget(context)))
|
||||||
.build(),
|
.build(),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,6 +212,11 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
color: AppColor.colorBgSearchBar),
|
color: AppColor.colorBgSearchBar),
|
||||||
height: 45,
|
height: 45,
|
||||||
|
child: PortalTarget(
|
||||||
|
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
|
portalFollower: GestureDetector(
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
onTap: () => controller.searchController.selectOpenAdvanceSearch()),
|
||||||
child: PortalTarget(
|
child: PortalTarget(
|
||||||
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
anchor: const Aligned(
|
anchor: const Aligned(
|
||||||
@@ -216,7 +229,9 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
widthFactor: 1,
|
widthFactor: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
portalFollower: _responsiveUtils.isMobile(context) ? const SizedBox.shrink() : const AdvancedSearchFilterOverlay(),
|
portalFollower: _responsiveUtils.isMobile(context)
|
||||||
|
? const SizedBox.shrink()
|
||||||
|
: const AdvancedSearchFilterOverlay(),
|
||||||
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
||||||
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
||||||
controller: controller.searchController.searchInputController,
|
controller: controller.searchController.searchInputController,
|
||||||
@@ -364,6 +379,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
presentationEmail);
|
presentationEmail);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)),
|
)),
|
||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user