TF-3002 [WEB] Add Advanced Search & Clear filter button in search filters

This commit is contained in:
dab246
2024-09-13 09:08:46 +07:00
committed by Dat H. Pham
parent e6eeabedee
commit b10b2200ff
5 changed files with 72 additions and 5 deletions
@@ -161,4 +161,22 @@ class SearchEmailByFromFieldsAction extends DashBoardAction {
class CloseSearchEmailViewAction extends DashBoardAction {}
class CancelSelectionSearchEmailAction extends DashBoardAction {}
class CancelSelectionSearchEmailAction extends DashBoardAction {}
class OpenAdvancedSearchViewAction extends DashBoardAction {
final BuildContext context;
OpenAdvancedSearchViewAction(this.context);
@override
List<Object?> get props => [context];
}
class ClearSearchFilterAppliedAction extends DashBoardAction {
final BuildContext context;
ClearSearchFilterAppliedAction(this.context);
@override
List<Object?> get props => [context];
}
@@ -83,6 +83,7 @@ class AdvancedFilterController extends BaseController {
_resetAllToOriginalValue();
_clearAllTextFieldInput();
searchController.searchInputController.clear();
searchController.clearSortOrder();
searchController.deactivateAdvancedSearch();
searchController.isAdvancedSearchViewOpen.value = false;
_mailboxDashBoardController.searchEmail(context);
@@ -421,6 +422,10 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(fromOption: Some(listAddress));
_mailboxDashBoardController.dispatchAction(StartSearchEmailAction());
} else if (action is OpenAdvancedSearchViewAction) {
initSearchFilterField(action.context);
} else if (action is ClearSearchFilterAppliedAction) {
clearSearchFilter(action.context);
}
}
);
@@ -2815,6 +2815,20 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
&& selectedMailbox.value!.countTotalEmails <= 0;
}
bool get isSearchFilterHasApplied {
return searchController.isSearchFilterHasApplied ||
filterMessageOption.value != FilterMessageOption.all;
}
void openAdvancedSearchView(BuildContext context) {
dispatchAction(OpenAdvancedSearchViewAction(context));
searchController.openAdvanceSearch();
}
void clearAllSearchFilterApplied(BuildContext context) {
dispatchAction(ClearSearchFilterAppliedAction(context));
}
@override
void onClose() {
if (PlatformInfo.isWeb) {
@@ -200,6 +200,15 @@ class SearchController extends BaseController with DateRangePickerMixin {
bool get isSearchEmailRunning => simpleSearchIsActivated.isTrue || advancedSearchIsActivated.isTrue;
bool get isSearchFilterHasApplied {
return searchEmailFilter.value.from.isNotEmpty ||
searchEmailFilter.value.to.isNotEmpty ||
searchEmailFilter.value.emailReceiveTimeType != EmailReceiveTimeType.allTime ||
(searchEmailFilter.value.mailbox != PresentationMailbox.unifiedMailbox && searchEmailFilter.value.mailbox != null) ||
searchEmailFilter.value.hasAttachment == true ||
sortOrderFiltered.value != EmailSortOrderType.mostRecent;
}
void enableSearch() {
searchState.value = searchState.value.enableSearchState();
}
@@ -263,7 +272,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
searchFocus.unfocus();
}
void _clearSortOrder() {
void clearSortOrder() {
sortOrderFiltered.value = EmailSortOrderType.mostRecent;
}
@@ -272,7 +281,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
deactivateSimpleSearch();
hideSimpleSearchFormView();
_clearSortOrder();
clearSortOrder();
clearSearchFilter();
deactivateAdvancedSearch();
hideAdvancedSearchFormView();
@@ -441,7 +441,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
Flexible(
child: SizedBox(
height: 45,
child: ScrollbarListView(
@@ -469,12 +469,33 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
_buildQuickSearchFilterButton(context, QuickSearchFilter.dateTime),
MailboxDashboardViewWebStyle.searchFilterSizeBoxMargin,
_buildQuickSearchFilterButton(context, QuickSearchFilter.hasAttachment),
MailboxDashboardViewWebStyle.searchFilterSizeBoxMargin,
],
),
),
)
),
if (controller.isSearchFilterHasApplied)
TMailButtonWidget.fromText(
text: AppLocalizations.of(context).clearFilter,
backgroundColor: Colors.transparent,
margin: const EdgeInsetsDirectional.only(start: 8),
borderRadius: 10,
textStyle: const TextStyle(
color: AppColor.primaryColor,
fontSize: 13,
fontWeight: FontWeight.w500),
onTapActionCallback: () => controller.clearAllSearchFilterApplied(context))
else
TMailButtonWidget.fromText(
text: AppLocalizations.of(context).advancedSearch,
backgroundColor: Colors.transparent,
margin: const EdgeInsetsDirectional.only(start: 8),
borderRadius: 10,
textStyle: const TextStyle(
color: AppColor.primaryColor,
fontSize: 13,
fontWeight: FontWeight.w500),
onTapActionCallback: () => controller.openAdvancedSearchView(context))
]
),
);