Fix advanced search form
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 59aee3f5023dc9722bd6f4f74abb19ea6bf39980)
This commit is contained in:
@@ -1,13 +1,12 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/direction_utils.dart';
|
import 'package:core/utils/direction_utils.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.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) {
|
final listItemContactWidget = _contacts?.map((P contact) {
|
||||||
if (widget.contactSuggestionBuilder != null) {
|
if (widget.contactSuggestionBuilder != null) {
|
||||||
return Material(
|
return Material(
|
||||||
color: Colors.transparent,
|
type: MaterialType.transparency,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
child: widget.contactSuggestionBuilder!(context, contact),
|
child: widget.contactSuggestionBuilder!(context, contact),
|
||||||
onTap: () => widget.onContactSuggestionSelected?.call(contact),
|
onTap: () => widget.onContactSuggestionSelected?.call(contact),
|
||||||
|
|||||||
+3
-3
@@ -2,12 +2,12 @@ import 'package:core/presentation/extensions/color_extension.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class AutoCompleteTagItemWebStyle {
|
class AutoCompleteTagItemWebStyle {
|
||||||
static const double paddingTop = 4.5;
|
static const double paddingTop = 8;
|
||||||
static const double paddingEnd = 40.0;
|
static const double paddingEnd = 40.0;
|
||||||
static const double labelPaddingHorizontal = 4.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));
|
static const BorderRadius shapeBorderRadius = BorderRadius.all(Radius.circular(10.0));
|
||||||
|
|
||||||
|
|||||||
+1
@@ -28,6 +28,7 @@ class TextFieldAutoCompleteEmailAddressWebStyles {
|
|||||||
static const Color focusedBorderColor = AppColor.primaryColor;
|
static const Color focusedBorderColor = AppColor.primaryColor;
|
||||||
static const Color enableBorderColor = AppColor.colorInputBorderCreateMailbox;
|
static const Color enableBorderColor = AppColor.colorInputBorderCreateMailbox;
|
||||||
static const Color suggestionBoxBackgroundColor = Colors.white;
|
static const Color suggestionBoxBackgroundColor = Colors.white;
|
||||||
|
static const Color cursorColor = AppColor.primaryColor;
|
||||||
|
|
||||||
static const TextStyle fieldTitleTextStyle = TextStyle(
|
static const TextStyle fieldTitleTextStyle = TextStyle(
|
||||||
color: AppColor.colorContentEmail,
|
color: AppColor.colorContentEmail,
|
||||||
|
|||||||
+3
-6
@@ -1,5 +1,4 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
@@ -11,14 +10,12 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
return PointerInterceptor(
|
return PointerInterceptor(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||||
child: Container(
|
child: Container(
|
||||||
constraints: BoxConstraints(
|
constraints: BoxConstraints(
|
||||||
maxHeight: _getHeightOverlay(context, responsiveUtils),
|
maxHeight: _getHeightOverlay(context),
|
||||||
),
|
),
|
||||||
margin: const EdgeInsetsDirectional.only(top: 4, bottom: 16, end: 22),
|
margin: const EdgeInsetsDirectional.only(top: 4, bottom: 16, end: 22),
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
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 maxHeightTopBar = 80;
|
||||||
const double paddingBottom = 16;
|
const double paddingBottom = 16;
|
||||||
final currentHeight = responsiveUtils.getSizeScreenHeight(context);
|
final currentHeight = context.height;
|
||||||
double maxHeightForm = currentHeight - maxHeightTopBar - paddingBottom;
|
double maxHeightForm = currentHeight - maxHeightTopBar - paddingBottom;
|
||||||
return maxHeightForm;
|
return maxHeightForm;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -70,6 +70,7 @@ class AutoCompleteTagItemWidgetWeb extends StatelessWidget {
|
|||||||
_imagePaths.icClose,
|
_imagePaths.icClose,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
labelStyle: AutoCompleteTagItemWebStyle.labelTextStyle,
|
labelStyle: AutoCompleteTagItemWebStyle.labelTextStyle,
|
||||||
backgroundColor: _getTagBackgroundColor(),
|
backgroundColor: _getTagBackgroundColor(),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
@@ -111,7 +112,7 @@ class AutoCompleteTagItemWidgetWeb extends StatelessWidget {
|
|||||||
if (isLatestTagFocused && isLatestEmail) {
|
if (isLatestTagFocused && isLatestEmail) {
|
||||||
return const BorderSide(width: 1, color: AppColor.primaryColor);
|
return const BorderSide(width: 1, color: AppColor.primaryColor);
|
||||||
} else {
|
} else {
|
||||||
return BorderSide.none;
|
return const BorderSide(width: 0, color: AppColor.colorEmailAddressTag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
@@ -111,6 +112,7 @@ class _TextFieldAutocompleteEmailAddressWebState extends State<TextFieldAutocomp
|
|||||||
focusNodeKeyboard: widget.focusNode,
|
focusNodeKeyboard: widget.focusNode,
|
||||||
keyboardType: TextInputType.emailAddress,
|
keyboardType: TextInputType.emailAddress,
|
||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
|
cursorColor: TextFieldAutoCompleteEmailAddressWebStyles.cursorColor,
|
||||||
debounceDuration: TextFieldAutoCompleteEmailAddressWebStyles.debounceDuration,
|
debounceDuration: TextFieldAutoCompleteEmailAddressWebStyles.debounceDuration,
|
||||||
inputDecoration: InputDecoration(
|
inputDecoration: InputDecoration(
|
||||||
filled: true,
|
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/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/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/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/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/advanced_search_filter_overlay.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/icon_open_advanced_search_widget.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/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/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/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 {
|
class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||||
final _searchController = Get.find<search.SearchController>();
|
final _searchController = Get.find<search.SearchController>();
|
||||||
@@ -184,6 +183,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
controller: _searchController.searchInputController,
|
controller: _searchController.searchInputController,
|
||||||
focusNode: _searchController.searchFocus,
|
focusNode: _searchController.searchFocus,
|
||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
|
cursorColor: AppColor.primaryColor,
|
||||||
textDirection: DirectionUtils.getDirectionByLanguage(context),
|
textDirection: DirectionUtils.getDirectionByLanguage(context),
|
||||||
onSubmitted: (keyword) => _invokeSearchEmailAction(context, keyword.trim()),
|
onSubmitted: (keyword) => _invokeSearchEmailAction(context, keyword.trim()),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
@@ -196,10 +196,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
labelStyle: const TextStyle(color: Colors.black, fontSize: 16.0)
|
labelStyle: const TextStyle(color: Colors.black, fontSize: 16.0)
|
||||||
),
|
),
|
||||||
leftButton: Padding(
|
leftButton: Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: const EdgeInsetsDirectional.only(start: 8),
|
||||||
left: AppUtils.isDirectionRTL(context) ? 0 : 8,
|
|
||||||
right: AppUtils.isDirectionRTL(context) ? 8 : 0
|
|
||||||
),
|
|
||||||
child: buildIconWeb(
|
child: buildIconWeb(
|
||||||
minSize: 40,
|
minSize: 40,
|
||||||
iconPadding: EdgeInsets.zero,
|
iconPadding: EdgeInsets.zero,
|
||||||
@@ -225,11 +222,10 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
final isFilterSelected = filter.isApplied(_searchController.listFilterOnSuggestionForm);
|
final isFilterSelected = filter.isApplied(_searchController.listFilterOnSuggestionForm);
|
||||||
|
|
||||||
return Chip(
|
return Chip(
|
||||||
labelPadding: EdgeInsets.only(
|
labelPadding: const EdgeInsetsDirectional.only(
|
||||||
top: 2,
|
top: 2,
|
||||||
bottom: 2,
|
bottom: 2,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 10,
|
end: 10,
|
||||||
left: AppUtils.isDirectionRTL(context) ? 10 : 0,
|
|
||||||
),
|
),
|
||||||
label: Text(
|
label: Text(
|
||||||
filter.getName(context),
|
filter.getName(context),
|
||||||
@@ -246,7 +242,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
labelStyle: filter.getTextStyle(isFilterSelected: isFilterSelected),
|
labelStyle: filter.getTextStyle(isFilterSelected: isFilterSelected),
|
||||||
backgroundColor: filter.getBackgroundColor(isFilterSelected: isFilterSelected),
|
backgroundColor: filter.getBackgroundColor(isFilterSelected: isFilterSelected),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: const BorderRadius.all(Radius.circular(10)),
|
||||||
side: BorderSide(color: filter.getBackgroundColor(isFilterSelected: isFilterSelected)),
|
side: BorderSide(color: filter.getBackgroundColor(isFilterSelected: isFilterSelected)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user