TF-3002 [WEB] Add Advanced Search & Clear filter button in search filters
This commit is contained in:
@@ -161,4 +161,22 @@ class SearchEmailByFromFieldsAction extends DashBoardAction {
|
|||||||
|
|
||||||
class CloseSearchEmailViewAction 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();
|
_resetAllToOriginalValue();
|
||||||
_clearAllTextFieldInput();
|
_clearAllTextFieldInput();
|
||||||
searchController.searchInputController.clear();
|
searchController.searchInputController.clear();
|
||||||
|
searchController.clearSortOrder();
|
||||||
searchController.deactivateAdvancedSearch();
|
searchController.deactivateAdvancedSearch();
|
||||||
searchController.isAdvancedSearchViewOpen.value = false;
|
searchController.isAdvancedSearchViewOpen.value = false;
|
||||||
_mailboxDashBoardController.searchEmail(context);
|
_mailboxDashBoardController.searchEmail(context);
|
||||||
@@ -421,6 +422,10 @@ class AdvancedFilterController extends BaseController {
|
|||||||
searchController.updateFilterEmail(fromOption: Some(listAddress));
|
searchController.updateFilterEmail(fromOption: Some(listAddress));
|
||||||
|
|
||||||
_mailboxDashBoardController.dispatchAction(StartSearchEmailAction());
|
_mailboxDashBoardController.dispatchAction(StartSearchEmailAction());
|
||||||
|
} else if (action is OpenAdvancedSearchViewAction) {
|
||||||
|
initSearchFilterField(action.context);
|
||||||
|
} else if (action is ClearSearchFilterAppliedAction) {
|
||||||
|
clearSearchFilter(action.context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
+14
@@ -2815,6 +2815,20 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
|||||||
&& selectedMailbox.value!.countTotalEmails <= 0;
|
&& 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
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
|
|||||||
@@ -200,6 +200,15 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
|
|
||||||
bool get isSearchEmailRunning => simpleSearchIsActivated.isTrue || advancedSearchIsActivated.isTrue;
|
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() {
|
void enableSearch() {
|
||||||
searchState.value = searchState.value.enableSearchState();
|
searchState.value = searchState.value.enableSearchState();
|
||||||
}
|
}
|
||||||
@@ -263,7 +272,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
searchFocus.unfocus();
|
searchFocus.unfocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _clearSortOrder() {
|
void clearSortOrder() {
|
||||||
sortOrderFiltered.value = EmailSortOrderType.mostRecent;
|
sortOrderFiltered.value = EmailSortOrderType.mostRecent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,7 +281,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
deactivateSimpleSearch();
|
deactivateSimpleSearch();
|
||||||
hideSimpleSearchFormView();
|
hideSimpleSearchFormView();
|
||||||
|
|
||||||
_clearSortOrder();
|
clearSortOrder();
|
||||||
clearSearchFilter();
|
clearSearchFilter();
|
||||||
deactivateAdvancedSearch();
|
deactivateAdvancedSearch();
|
||||||
hideAdvancedSearchFormView();
|
hideAdvancedSearchFormView();
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Flexible(
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: 45,
|
height: 45,
|
||||||
child: ScrollbarListView(
|
child: ScrollbarListView(
|
||||||
@@ -469,12 +469,33 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
_buildQuickSearchFilterButton(context, QuickSearchFilter.dateTime),
|
_buildQuickSearchFilterButton(context, QuickSearchFilter.dateTime),
|
||||||
MailboxDashboardViewWebStyle.searchFilterSizeBoxMargin,
|
MailboxDashboardViewWebStyle.searchFilterSizeBoxMargin,
|
||||||
_buildQuickSearchFilterButton(context, QuickSearchFilter.hasAttachment),
|
_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))
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user