TF-3002 [WEB] Add delete button in search filters
This commit is contained in:
+8
-4
@@ -15,6 +15,7 @@ typedef OnSelectSearchFilterAction = Function(
|
||||
BuildContext context,
|
||||
QuickSearchFilter searchFilter,
|
||||
{RelativeRect? buttonPosition});
|
||||
typedef OnDeleteSearchFilterAction = Function(QuickSearchFilter searchFilter);
|
||||
|
||||
class SearchFilterButton extends StatelessWidget {
|
||||
|
||||
@@ -32,7 +33,9 @@ class SearchFilterButton extends StatelessWidget {
|
||||
final UserName? userName;
|
||||
final PresentationMailbox? mailbox;
|
||||
final Color? backgroundColor;
|
||||
final EdgeInsetsGeometry? buttonPadding;
|
||||
final OnSelectSearchFilterAction? onSelectSearchFilterAction;
|
||||
final OnDeleteSearchFilterAction? onDeleteSearchFilterAction;
|
||||
|
||||
const SearchFilterButton({
|
||||
super.key,
|
||||
@@ -48,7 +51,9 @@ class SearchFilterButton extends StatelessWidget {
|
||||
this.userName,
|
||||
this.mailbox,
|
||||
this.backgroundColor,
|
||||
this.buttonPadding,
|
||||
this.onSelectSearchFilterAction,
|
||||
this.onDeleteSearchFilterAction,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -69,8 +74,7 @@ class SearchFilterButton extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: SearchFilterButtonStyle.borderRadius,
|
||||
color: backgroundColor ?? searchFilter.getBackgroundColor(isFilterSelected: isSelected)),
|
||||
padding: SearchFilterButtonStyle.buttonPadding,
|
||||
height: SearchFilterButtonStyle.buttonSize,
|
||||
padding: buttonPadding ?? SearchFilterButtonStyle.getButtonPadding(isSelected),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
@@ -104,9 +108,9 @@ class SearchFilterButton extends StatelessWidget {
|
||||
icon: imagePaths.icDeleteSelection,
|
||||
iconSize: SearchFilterButtonStyle.deleteIconSize,
|
||||
iconColor: AppColor.colorTextBody,
|
||||
padding: EdgeInsets.zero,
|
||||
padding: const EdgeInsets.all(8),
|
||||
backgroundColor: Colors.transparent,
|
||||
margin: SearchFilterButtonStyle.elementPadding,
|
||||
onTapActionCallback: () => onDeleteSearchFilterAction?.call(searchFilter),
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
@@ -70,16 +70,19 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
QuickSearchFilter.last7Days,
|
||||
QuickSearchFilter.fromMe,
|
||||
],
|
||||
actionButtonBuilder: (context, filterAction) {
|
||||
actionButtonBuilder: (context, filterAction, suggestionsListState) {
|
||||
if (filterAction is QuickSearchFilter) {
|
||||
return buildListButtonForQuickSearchForm(context, filterAction);
|
||||
return buildListButtonForQuickSearchForm(
|
||||
context,
|
||||
filterAction,
|
||||
suggestionsListState);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
},
|
||||
buttonActionCallback: (filterAction) {
|
||||
if (filterAction is QuickSearchFilter) {
|
||||
_dashBoardController.addFilterToSuggestionForm(filterAction);
|
||||
_searchController.addQuickSearchFilterToSuggestionSearchView(filterAction);
|
||||
}
|
||||
},
|
||||
listActionPadding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 6),
|
||||
@@ -94,7 +97,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
)
|
||||
)
|
||||
),
|
||||
buttonShowAllResult: (context, keyword) {
|
||||
buttonShowAllResult: (context, keyword, _) {
|
||||
if (keyword is String) {
|
||||
return _buildShowAllResultButton(context, keyword);
|
||||
} else {
|
||||
@@ -221,7 +224,11 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildListButtonForQuickSearchForm(BuildContext context, QuickSearchFilter searchFilter) {
|
||||
Widget buildListButtonForQuickSearchForm(
|
||||
BuildContext context,
|
||||
QuickSearchFilter searchFilter,
|
||||
SuggestionsListState suggestionsListState
|
||||
) {
|
||||
return Obx(() {
|
||||
final isSelected = searchFilter.isApplied(_searchController.listFilterOnSuggestionForm);
|
||||
|
||||
@@ -230,6 +237,10 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
imagePaths: _imagePaths,
|
||||
isSelected: isSelected,
|
||||
backgroundColor: searchFilter.getSuggestionBackgroundColor(isFilterSelected: isSelected),
|
||||
onDeleteSearchFilterAction: (searchFilter) {
|
||||
_searchController.deleteQuickSearchFilterFromSuggestionSearchView(searchFilter);
|
||||
suggestionsListState.invalidateSuggestions();
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user