TF-3002 [MOBILE] Apply new design for SearchFilterButton

This commit is contained in:
dab246
2024-09-13 14:22:06 +07:00
committed by Dat H. Pham
parent fec26a555b
commit 33bf16d8f9
10 changed files with 433 additions and 438 deletions
@@ -557,6 +557,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
key: Key('${searchFilter.name}_search_filter_button'),
searchFilter: searchFilter,
imagePaths: controller.imagePaths,
responsiveUtils: controller.responsiveUtils,
isSelected: isSelected,
receiveTimeType: receiveTimeType,
startDate: startDate,
@@ -1,6 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
@@ -83,16 +84,24 @@ enum QuickSearchFilter {
}
}
Color getBackgroundColor({bool isFilterSelected = false}) {
if (isFilterSelected) {
Color getBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
} else {
return AppColor.colorSearchFilterButton;
}
}
Color getSuggestionBackgroundColor({bool isFilterSelected = false}) {
if (isFilterSelected) {
Color getMobileBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
} else {
return AppColor.colorMobileSearchFilterButton.withOpacity(0.6);
}
}
Color getSuggestionBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
} else {
return AppColor.colorSuggestionSearchFilterButton.withOpacity(0.6);
@@ -143,8 +152,16 @@ enum QuickSearchFilter {
}
}
bool isOnTapWithPositionActionSupported() =>
this == QuickSearchFilter.dateTime || this == QuickSearchFilter.sortBy;
bool isOnTapWithPositionActionSupported(
BuildContext context,
ResponsiveUtils responsiveUtils
) {
if (responsiveUtils.isMobile(context)) {
return false;
} else {
return this == QuickSearchFilter.dateTime || this == QuickSearchFilter.sortBy;
}
}
bool isArrowDownIconSupported() =>
this == QuickSearchFilter.dateTime ||
@@ -1,6 +1,6 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -24,6 +24,7 @@ class SearchFilterButton extends StatelessWidget {
final QuickSearchFilter searchFilter;
final bool isSelected;
final ImagePaths imagePaths;
final ResponsiveUtils responsiveUtils;
final EmailReceiveTimeType? receiveTimeType;
final EmailSortOrderType? sortOrderType;
final DateTime? startDate;
@@ -41,6 +42,7 @@ class SearchFilterButton extends StatelessWidget {
super.key,
required this.searchFilter,
required this.imagePaths,
required this.responsiveUtils,
this.isSelected = false,
this.receiveTimeType,
this.sortOrderType,
@@ -120,14 +122,14 @@ class SearchFilterButton extends StatelessWidget {
return childItem;
}
if (!searchFilter.isOnTapWithPositionActionSupported()) {
if (!searchFilter.isOnTapWithPositionActionSupported(context, responsiveUtils)) {
return Material(
type: MaterialType.transparency,
child: InkWell(
onTap: !searchFilter.isOnTapWithPositionActionSupported()
onTap: !searchFilter.isOnTapWithPositionActionSupported(context, responsiveUtils)
? () => _onTapAction(context)
: null,
onTapDown: searchFilter.isOnTapWithPositionActionSupported() && !isSelected
onTapDown: searchFilter.isOnTapWithPositionActionSupported(context, responsiveUtils) && !isSelected
? (details) => _onTapDownAction(context, details)
: null,
borderRadius: SearchFilterButtonStyle.borderRadius,
@@ -155,7 +157,7 @@ class SearchFilterButton extends StatelessWidget {
decoration: BoxDecoration(
borderRadius: SearchFilterButtonStyle.borderRadius,
color: backgroundColor ?? searchFilter.getBackgroundColor(
isFilterSelected: isSelected
isSelected: isSelected
)
),
padding: buttonPadding ?? SearchFilterButtonStyle.getButtonPadding(isSelected),
@@ -1,6 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/quick_search/quick_search_input_form.dart';
import 'package:core/utils/direction_utils.dart';
@@ -29,6 +30,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
final _searchController = Get.find<search.SearchController>();
final _dashBoardController = Get.find<MailboxDashBoardController>();
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
SearchInputFormWidget({Key? key}) : super(key: key);
@@ -235,8 +237,9 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
return SearchFilterButton(
searchFilter: searchFilter,
imagePaths: _imagePaths,
responsiveUtils: _responsiveUtils,
isSelected: isSelected,
backgroundColor: searchFilter.getSuggestionBackgroundColor(isFilterSelected: isSelected),
backgroundColor: searchFilter.getSuggestionBackgroundColor(isSelected: isSelected),
onDeleteSearchFilterAction: (searchFilter) {
_searchController.deleteQuickSearchFilterFromSuggestionSearchView(searchFilter);
suggestionsListState.invalidateSuggestions();