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:
+47
@@ -0,0 +1,47 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart' hide SearchController;
|
||||
import 'package:tmail_ui_user/features/base/shortcut/app_shortcut_manager.dart';
|
||||
import 'package:tmail_ui_user/features/base/shortcut/search/search_action_shortcut_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||
|
||||
extension HandleKeyboardShortcutActionsExtension on SearchController {
|
||||
void onKeyboardShortcutInit() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
keyboardFocusNode = FocusNode();
|
||||
}
|
||||
}
|
||||
|
||||
void onKeyboardShortcutDispose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
keyboardFocusNode?.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
void clearKeyboardShortcutFocus() {
|
||||
if (keyboardFocusNode?.hasFocus == true) {
|
||||
keyboardFocusNode?.unfocus();
|
||||
}
|
||||
}
|
||||
|
||||
void refocusKeyboardShortcutFocus() {
|
||||
if (keyboardFocusNode?.hasFocus == false) {
|
||||
keyboardFocusNode?.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
void onKeyDownEventAction(KeyEvent event) {
|
||||
final shortcutType = AppShortcutManager.getSearchActionFromEvent(event);
|
||||
log('$runtimeType::onKeyDownEventAction:🔥Shortcut triggered: $shortcutType');
|
||||
if (shortcutType == null) return;
|
||||
handleSearchShortcutAction(shortcutType);
|
||||
}
|
||||
|
||||
void handleSearchShortcutAction(SearchActionShortcutType shortcutType) {
|
||||
log('$runtimeType::handleSearchShortcutAction: 🔥 Shortcut triggered: $shortcutType');
|
||||
if (searchFocus.hasFocus) {
|
||||
searchFocus.unfocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user