TF-3911 Support keyboard shortcut actions ESC to close composer on web
This commit is contained in:
+2
-3
@@ -2,7 +2,6 @@
|
||||
import 'package:core/presentation/constants/constants_ui.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/view/mobile/editor_fullscreen_dialog_view.dart';
|
||||
@@ -14,8 +13,8 @@ extension HandleContentHeightExceededExtension on ComposerController {
|
||||
isContentHeightExceeded.value = height == ConstantsUI.composerHtmlContentMaxHeight;
|
||||
}
|
||||
|
||||
Future<void> viewEntireContent(BuildContext context) async {
|
||||
clearFocus(context);
|
||||
Future<void> viewEntireContent() async {
|
||||
clearFocus();
|
||||
|
||||
final currentContent = await getContentInEditor();
|
||||
log('HandleContentHeightExceededExtension::showComposerFullscreen:currentContent = $currentContent');
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
|
||||
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/composer/composer_action_shortcut_type.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
extension HandleKeyboardShortcutActionsExtension on ComposerController {
|
||||
void onKeyDownEditorAction(int? keyCode) {
|
||||
log('$runtimeType::onKeyDownEditorAction:🔥keyCode: $keyCode');
|
||||
final shortcutType = AppShortcutManager.getComposerActionFromKeyCode(keyCode);
|
||||
log('$runtimeType::onKeyDownEditorAction:🔥Shortcut triggered: $shortcutType');
|
||||
if (shortcutType == null) return;
|
||||
handleComposerShortcutAction(shortcutType);
|
||||
}
|
||||
|
||||
void onKeyboardShortcutInit() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
keyboardShortcutFocusNode = FocusNode();
|
||||
keyboardShortcutFocusNode?.addListener(() {
|
||||
log('$runtimeType::onKeyboardShortcutInit: keyboardShortcutFocusNode: ${keyboardShortcutFocusNode?.hasFocus}');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void onKeyboardShortcutDispose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
keyboardShortcutFocusNode?.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
void refocusKeyboardShortcutFocus() {
|
||||
if (keyboardShortcutFocusNode?.hasFocus == false) {
|
||||
keyboardShortcutFocusNode?.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
void onKeyDownEventAction(KeyEvent event) {
|
||||
final shortcutType = AppShortcutManager.getComposerActionFromEvent(event);
|
||||
log('$runtimeType::onKeyDownEventAction:🔥Shortcut triggered: $shortcutType');
|
||||
if (shortcutType == null) return;
|
||||
handleComposerShortcutAction(shortcutType);
|
||||
}
|
||||
|
||||
void handleComposerShortcutAction(ComposerActionShortcutType shortcutType) {
|
||||
log('$runtimeType::handleComposerShortcutAction: 🔥 Shortcut triggered: $shortcutType');
|
||||
if (currentContext == null) return;
|
||||
handleClickCloseComposer(currentContext!);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -57,7 +57,7 @@ extension HandleOpenContextMenuExtension on ComposerController {
|
||||
handleClickSaveAsTemplateButton(context);
|
||||
break;
|
||||
case ComposerActionType.delete:
|
||||
handleClickDeleteComposer(context);
|
||||
handleClickDeleteComposer();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user