TF-1155 Change From/To in advanced search
(cherry picked from commit e3f7abb74e6825473f9d138bc5e3473a76f3a6d6)
This commit is contained in:
+33
-125
@@ -11,7 +11,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/styles/advanced_search_input_form_style.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/styles/advanced_search_input_form_style.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/date_drop_down_button.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/date_drop_down_button.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/text_field_autocomplete_email_adress.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/text_field_autocomplete_email_address_web.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/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
@@ -27,23 +27,39 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return FocusTraversalGroup(
|
return FocusTraversalGroup(
|
||||||
child: Column(
|
child: Obx(() => Column(
|
||||||
children: [
|
children: [
|
||||||
_buildSuggestionFilterField(
|
TextFieldAutocompleteEmailAddressWeb(
|
||||||
listTagSelected: controller.searchEmailFilter.from,
|
field: AdvancedSearchFilterField.form,
|
||||||
context: context,
|
listEmailAddress: controller.listFromEmailAddress,
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.form,
|
expandMode: controller.fromAddressExpandMode.value,
|
||||||
listTagInitial: controller.searchEmailFilter.from,
|
controller: controller.fromEmailAddressController,
|
||||||
currentFocusNode: controller.focusManager.fromFieldFocusNode,
|
focusNode: controller.focusManager.fromFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.toFieldFocusNode
|
nextFocusNode: controller.focusManager.toFieldFocusNode,
|
||||||
|
autoDisposeFocusNode: false,
|
||||||
|
keyTagEditor: controller.keyFromEmailTagEditor,
|
||||||
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
|
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
||||||
|
onRemoveEmailAddressAction: controller.removeEmailAddress,
|
||||||
),
|
),
|
||||||
_buildSuggestionFilterField(
|
TextFieldAutocompleteEmailAddressWeb(
|
||||||
listTagSelected: controller.searchEmailFilter.to,
|
field: AdvancedSearchFilterField.to,
|
||||||
context: context,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.to,
|
expandMode: controller.toAddressExpandMode.value,
|
||||||
listTagInitial: controller.searchEmailFilter.to,
|
controller: controller.toEmailAddressController,
|
||||||
currentFocusNode: controller.focusManager.toFieldFocusNode,
|
focusNode: controller.focusManager.toFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.subjectFieldFocusNode
|
nextFocusNode: controller.focusManager.subjectFieldFocusNode,
|
||||||
|
autoDisposeFocusNode: false,
|
||||||
|
keyTagEditor: controller.keyToEmailTagEditor,
|
||||||
|
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
|
||||||
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
|
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
|
||||||
|
onRemoveEmailAddressAction: controller.removeEmailAddress,
|
||||||
),
|
),
|
||||||
_buildFilterField(
|
_buildFilterField(
|
||||||
textEditingController: controller.subjectFilterInputController,
|
textEditingController: controller.subjectFilterInputController,
|
||||||
@@ -101,7 +117,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
]),
|
]),
|
||||||
AdvancedSearchFilterFormBottomView(focusManager: controller.focusManager)
|
AdvancedSearchFilterFormBottomView(focusManager: controller.focusManager)
|
||||||
],
|
],
|
||||||
),
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,114 +249,6 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildSuggestionFilterField({
|
|
||||||
required AdvancedSearchFilterField advancedSearchFilterField,
|
|
||||||
required BuildContext context,
|
|
||||||
required Set<String> listTagSelected,
|
|
||||||
required Set<String> listTagInitial,
|
|
||||||
FocusNode? currentFocusNode,
|
|
||||||
FocusNode? nextFocusNode,
|
|
||||||
}) {
|
|
||||||
final child = [
|
|
||||||
SizedBox(
|
|
||||||
width: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
|
|
||||||
? null : 112,
|
|
||||||
child: Text(
|
|
||||||
advancedSearchFilterField.getTitle(context),
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 14,
|
|
||||||
color: AppColor.colorContentEmail,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const Padding(padding: EdgeInsets.all(4)),
|
|
||||||
_responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
|
|
||||||
? TextFieldAutocompleteEmailAddress(
|
|
||||||
optionsBuilder: controller.getAutoCompleteSuggestion,
|
|
||||||
advancedSearchFilterField: advancedSearchFilterField,
|
|
||||||
initialTags: listTagInitial,
|
|
||||||
currentFocusNode: currentFocusNode,
|
|
||||||
nextFocusNode: nextFocusNode,
|
|
||||||
onAddTag: (value) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.searchEmailFilter.from.add(value.trim());
|
|
||||||
controller.lastTextForm.value = '';
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.searchEmailFilter.to.add(value.trim());
|
|
||||||
controller.lastTextTo.value = '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDeleteTag: (tag) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.searchEmailFilter.from.remove(tag);
|
|
||||||
controller.lastTextForm.value = '';
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.searchEmailFilter.to.remove(tag);
|
|
||||||
controller.lastTextTo.value = '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onChange: (value) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.lastTextForm.value = value.trim();
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.lastTextTo.value = value.trim();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
: Expanded(
|
|
||||||
child: TextFieldAutocompleteEmailAddress(
|
|
||||||
optionsBuilder: controller.getAutoCompleteSuggestion,
|
|
||||||
advancedSearchFilterField: advancedSearchFilterField,
|
|
||||||
initialTags: listTagInitial,
|
|
||||||
currentFocusNode: currentFocusNode,
|
|
||||||
nextFocusNode: nextFocusNode,
|
|
||||||
onAddTag: (value) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.searchEmailFilter.from.add(value.trim());
|
|
||||||
controller.lastTextForm.value = '';
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.searchEmailFilter.to.add(value.trim());
|
|
||||||
controller.lastTextTo.value = '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onChange: (value) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.lastTextForm.value = value.trim();
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.lastTextTo.value = value.trim();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDeleteTag: (tag) {
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.form) {
|
|
||||||
controller.searchEmailFilter.from.remove(tag);
|
|
||||||
controller.lastTextForm.value = '';
|
|
||||||
}
|
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.to) {
|
|
||||||
controller.searchEmailFilter.to.remove(tag);
|
|
||||||
controller.lastTextTo.value = '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
];
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
|
|
||||||
? Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: child,
|
|
||||||
)
|
|
||||||
: SizedBox(height: 44, child: Row(children: child)),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildTextField({
|
Widget _buildTextField({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required AdvancedSearchFilterField advancedSearchFilterField,
|
required AdvancedSearchFilterField advancedSearchFilterField,
|
||||||
|
|||||||
Reference in New Issue
Block a user