TF-3911 Support keyboard shortcut actions ESC to unfocus search input on web

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-07-29 03:45:51 +07:00
committed by Dat H. Pham
parent 226f6520a7
commit f169ff5feb
5 changed files with 164 additions and 81 deletions
@@ -27,6 +27,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/quick_sear
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_keyboard_shortcut_actions_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
@@ -52,6 +53,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
SearchQuery? get searchQuery => searchEmailFilter.value.text;
FocusNode searchFocus = FocusNode();
FocusNode? keyboardFocusNode;
String currentSearchText = '';
SearchController(
@@ -64,11 +66,17 @@ class SearchController extends BaseController with DateRangePickerMixin {
void onInit() {
super.onInit();
searchFocus.addListener(_onSearchFocusChanged);
onKeyboardShortcutInit();
}
void _onSearchFocusChanged() {
log('SearchController::_onSearchFocusChanged: ${searchFocus.hasFocus}');
isSearchInputFocused.value = searchFocus.hasFocus;
if (searchFocus.hasFocus) {
refocusKeyboardShortcutFocus();
} else {
clearKeyboardShortcutFocus();
}
}
void openAdvanceSearch() {
@@ -336,6 +344,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
searchInputController.dispose();
searchFocus.removeListener(_onSearchFocusChanged);
searchFocus.dispose();
onKeyboardShortcutDispose();
super.onClose();
}
}