Fix advanced search form

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 59aee3f5023dc9722bd6f4f74abb19ea6bf39980)
This commit is contained in:
dab246
2023-12-06 09:27:59 +07:00
committed by Dat H. Pham
parent f18c4ef122
commit 5bb4249329
7 changed files with 19 additions and 23 deletions
@@ -1,13 +1,12 @@
import 'dart:async';
import 'dart:math';
import 'dart:io';
import 'dart:math';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
@@ -1250,7 +1249,7 @@ class _SuggestionsListState<T, P, R> extends State<_SuggestionsList<T, P, R>>
final listItemContactWidget = _contacts?.map((P contact) {
if (widget.contactSuggestionBuilder != null) {
return Material(
color: Colors.transparent,
type: MaterialType.transparency,
child: InkWell(
child: widget.contactSuggestionBuilder!(context, contact),
onTap: () => widget.onContactSuggestionSelected?.call(contact),
@@ -2,12 +2,12 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:flutter/material.dart';
class AutoCompleteTagItemWebStyle {
static const double paddingTop = 4.5;
static const double paddingTop = 8;
static const double paddingEnd = 40.0;
static const double labelPaddingHorizontal = 4.0;
static const EdgeInsetsGeometry collapsedPadding = EdgeInsetsDirectional.symmetric(vertical: 5, horizontal: 8);
static const EdgeInsetsGeometry collapsedPadding = EdgeInsetsDirectional.symmetric(vertical: 4, horizontal: 8);
static const EdgeInsetsGeometry marginCollapsed = EdgeInsets.only(top: 5.5);
static const EdgeInsetsGeometry marginCollapsed = EdgeInsets.only(top: 8);
static const BorderRadius shapeBorderRadius = BorderRadius.all(Radius.circular(10.0));
@@ -28,6 +28,7 @@ class TextFieldAutoCompleteEmailAddressWebStyles {
static const Color focusedBorderColor = AppColor.primaryColor;
static const Color enableBorderColor = AppColor.colorInputBorderCreateMailbox;
static const Color suggestionBoxBackgroundColor = Colors.white;
static const Color cursorColor = AppColor.primaryColor;
static const TextStyle fieldTitleTextStyle = TextStyle(
color: AppColor.colorContentEmail,
@@ -1,5 +1,4 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
@@ -11,14 +10,12 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
@override
Widget build(BuildContext context) {
final responsiveUtils = Get.find<ResponsiveUtils>();
return PointerInterceptor(
child: GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: Container(
constraints: BoxConstraints(
maxHeight: _getHeightOverlay(context, responsiveUtils),
maxHeight: _getHeightOverlay(context),
),
margin: const EdgeInsetsDirectional.only(top: 4, bottom: 16, end: 22),
padding: const EdgeInsets.symmetric(horizontal: 8),
@@ -45,10 +42,10 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
);
}
double _getHeightOverlay(BuildContext context, ResponsiveUtils responsiveUtils) {
double _getHeightOverlay(BuildContext context) {
const double maxHeightTopBar = 80;
const double paddingBottom = 16;
final currentHeight = responsiveUtils.getSizeScreenHeight(context);
final currentHeight = context.height;
double maxHeightForm = currentHeight - maxHeightTopBar - paddingBottom;
return maxHeightForm;
}
@@ -70,6 +70,7 @@ class AutoCompleteTagItemWidgetWeb extends StatelessWidget {
_imagePaths.icClose,
fit: BoxFit.fill,
),
padding: EdgeInsets.zero,
labelStyle: AutoCompleteTagItemWebStyle.labelTextStyle,
backgroundColor: _getTagBackgroundColor(),
shape: RoundedRectangleBorder(
@@ -111,7 +112,7 @@ class AutoCompleteTagItemWidgetWeb extends StatelessWidget {
if (isLatestTagFocused && isLatestEmail) {
return const BorderSide(width: 1, color: AppColor.primaryColor);
} else {
return BorderSide.none;
return const BorderSide(width: 0, color: AppColor.colorEmailAddressTag);
}
}
}
@@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:math';
import 'package:collection/collection.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
@@ -111,6 +112,7 @@ class _TextFieldAutocompleteEmailAddressWebState extends State<TextFieldAutocomp
focusNodeKeyboard: widget.focusNode,
keyboardType: TextInputType.emailAddress,
textInputAction: TextInputAction.done,
cursorColor: TextFieldAutoCompleteEmailAddressWebStyles.cursorColor,
debounceDuration: TextFieldAutoCompleteEmailAddressWebStyles.debounceDuration,
inputDecoration: InputDecoration(
filled: true,
@@ -16,6 +16,7 @@ import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/icon_open_advanced_search_widget.dart';
@@ -23,8 +24,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/qu
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/email_quick_search_item_tile_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/recent_search_item_tile_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
final _searchController = Get.find<search.SearchController>();
@@ -184,6 +183,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
controller: _searchController.searchInputController,
focusNode: _searchController.searchFocus,
textInputAction: TextInputAction.done,
cursorColor: AppColor.primaryColor,
textDirection: DirectionUtils.getDirectionByLanguage(context),
onSubmitted: (keyword) => _invokeSearchEmailAction(context, keyword.trim()),
decoration: InputDecoration(
@@ -196,10 +196,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
labelStyle: const TextStyle(color: Colors.black, fontSize: 16.0)
),
leftButton: Padding(
padding: EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 0 : 8,
right: AppUtils.isDirectionRTL(context) ? 8 : 0
),
padding: const EdgeInsetsDirectional.only(start: 8),
child: buildIconWeb(
minSize: 40,
iconPadding: EdgeInsets.zero,
@@ -225,11 +222,10 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
final isFilterSelected = filter.isApplied(_searchController.listFilterOnSuggestionForm);
return Chip(
labelPadding: EdgeInsets.only(
labelPadding: const EdgeInsetsDirectional.only(
top: 2,
bottom: 2,
right: AppUtils.isDirectionRTL(context) ? 0 : 10,
left: AppUtils.isDirectionRTL(context) ? 10 : 0,
end: 10,
),
label: Text(
filter.getName(context),
@@ -246,7 +242,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
labelStyle: filter.getTextStyle(isFilterSelected: isFilterSelected),
backgroundColor: filter.getBackgroundColor(isFilterSelected: isFilterSelected),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
borderRadius: const BorderRadius.all(Radius.circular(10)),
side: BorderSide(color: filter.getBackgroundColor(isFilterSelected: isFilterSelected)),
),
);