TF-2116 Create WebEditorComposer widget and style
(cherry picked from commit 6ea82d66c0e319918a1938b39d0961b7d894a02f)
This commit is contained in:
+33
-19
@@ -3,39 +3,53 @@ import 'package:core/presentation/utils/html_transformer/html_utils.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:html_editor_enhanced/html_editor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
|
||||
class EmailEditorWidget extends StatefulWidget {
|
||||
typedef OnChangeContentEditorAction = Function(String? text);
|
||||
typedef OnInitialContentEditorAction = Function(String text);
|
||||
typedef OnMouseDownEditorAction = Function(BuildContext context);
|
||||
typedef OnEditorSettingsChange = Function(EditorSettings settings);
|
||||
|
||||
class WebEditorWidget extends StatefulWidget {
|
||||
|
||||
final ComposerController controller;
|
||||
final String content;
|
||||
final TextDirection direction;
|
||||
final HtmlEditorController editorController;
|
||||
final OnInitialContentEditorAction? onInitial;
|
||||
final OnChangeContentEditorAction? onChangeContent;
|
||||
final VoidCallback? onFocus;
|
||||
final VoidCallback? onUnFocus;
|
||||
final OnMouseDownEditorAction? onMouseDown;
|
||||
final OnEditorSettingsChange? onEditorSettings;
|
||||
|
||||
const EmailEditorWidget({
|
||||
const WebEditorWidget({
|
||||
super.key,
|
||||
required this.controller,
|
||||
required this.content,
|
||||
required this.direction,
|
||||
required this.editorController,
|
||||
this.onInitial,
|
||||
this.onChangeContent,
|
||||
this.onFocus,
|
||||
this.onUnFocus,
|
||||
this.onMouseDown,
|
||||
this.onEditorSettings,
|
||||
});
|
||||
|
||||
@override
|
||||
State<EmailEditorWidget> createState() => _EmailEditorState();
|
||||
State<WebEditorWidget> createState() => _WebEditorState();
|
||||
}
|
||||
|
||||
class _EmailEditorState extends State<EmailEditorWidget> {
|
||||
class _WebEditorState extends State<WebEditorWidget> {
|
||||
|
||||
late ComposerController _controller;
|
||||
late HtmlEditorController _editorController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_controller = widget.controller;
|
||||
_editorController = _controller.richTextWebController.editorController;
|
||||
_editorController = widget.editorController;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant EmailEditorWidget oldWidget) {
|
||||
void didUpdateWidget(covariant WebEditorWidget oldWidget) {
|
||||
log('_EmailEditorState::didUpdateWidget():Old: ${oldWidget.direction} | current: ${widget.direction}');
|
||||
if (oldWidget.direction != widget.direction) {
|
||||
_editorController.updateBodyDirection(widget.direction.name);
|
||||
@@ -61,14 +75,14 @@ class _EmailEditorState extends State<EmailEditorWidget> {
|
||||
),
|
||||
otherOptions: const OtherOptions(height: 550),
|
||||
callbacks: Callbacks(
|
||||
onBeforeCommand: _controller.onChangeTextEditorWeb,
|
||||
onChangeContent: _controller.onChangeTextEditorWeb,
|
||||
onInit: () => _controller.handleInitHtmlEditorWeb(widget.content),
|
||||
onFocus: _controller.handleOnFocusHtmlEditorWeb,
|
||||
onBlur: _controller.handleOnUnFocusHtmlEditorWeb,
|
||||
onMouseDown: () => _controller.handleOnMouseDownHtmlEditorWeb(context),
|
||||
onChangeSelection: _controller.richTextWebController.onEditorSettingsChange,
|
||||
onChangeCodeview: _controller.onChangeTextEditorWeb
|
||||
onBeforeCommand: widget.onChangeContent,
|
||||
onChangeContent: widget.onChangeContent,
|
||||
onInit: () => widget.onInitial?.call(widget.content),
|
||||
onFocus: widget.onFocus,
|
||||
onBlur: widget.onUnFocus,
|
||||
onMouseDown: () => widget.onMouseDown?.call(context),
|
||||
onChangeSelection: widget.onEditorSettings,
|
||||
onChangeCodeview: widget.onChangeContent
|
||||
),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user