TF-4142 Implement hyperlink insertion

This commit is contained in:
dab246
2025-11-10 12:09:19 +07:00
committed by Dat H. Pham
parent db22415a3e
commit 249520b711
14 changed files with 257 additions and 4 deletions
@@ -30,6 +30,7 @@ class BottomBarComposerWidget extends StatelessWidget {
final VoidCallback printDraftAction;
final VoidCallback toggleMarkAsImportantAction;
final VoidCallback saveAsTemplateAction;
final VoidCallback onOpenInsertLink;
final OnMenuChanged? onPopupMenuChanged;
const BottomBarComposerWidget({
@@ -52,6 +53,7 @@ class BottomBarComposerWidget extends StatelessWidget {
required this.printDraftAction,
required this.toggleMarkAsImportantAction,
required this.saveAsTemplateAction,
required this.onOpenInsertLink,
this.onPopupMenuChanged,
});
@@ -110,6 +112,22 @@ class BottomBarComposerWidget extends StatelessWidget {
),
),
const SizedBox(width: BottomBarComposerWidgetStyle.space),
AbsorbPointer(
absorbing: isCodeViewEnabled,
child: TMailButtonWidget.fromIcon(
icon: imagePaths.icInsertLink,
iconColor: isCodeViewEnabled
? BottomBarComposerWidgetStyle.disabledIconColor
: BottomBarComposerWidgetStyle.iconColor,
borderRadius: BottomBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
padding: BottomBarComposerWidgetStyle.iconPadding,
iconSize: BottomBarComposerWidgetStyle.iconSize,
tooltipMessage: AppLocalizations.of(context).insertLink,
onTapActionCallback: onOpenInsertLink,
),
),
const SizedBox(width: BottomBarComposerWidgetStyle.space),
PopupMenuOverlayWidget(
controller: menuMoreOptionController,
iconButton: HighlightSVGIconOnHover(
@@ -39,6 +39,7 @@ class WebEditorWidget extends StatefulWidget {
final OnEditorTextSizeChanged? onEditorTextSizeChanged;
final double? height;
final double? horizontalPadding;
final LinkOverlayOptions? linkOverlayOptions;
final OnDragEnterListener? onDragEnter;
final OnDragOverListener? onDragOver;
final OnPasteImageSuccessAction? onPasteImageSuccessAction;
@@ -60,6 +61,7 @@ class WebEditorWidget extends StatefulWidget {
this.onEditorTextSizeChanged,
this.height,
this.horizontalPadding,
this.linkOverlayOptions,
this.onDragEnter,
this.onDragOver,
this.onPasteImageSuccessAction,
@@ -141,6 +143,9 @@ class _WebEditorState extends State<WebEditorWidget> {
useDefaultFontStyle: true,
customScrollbar: true,
),
useLinkTooltipOverlay: true,
linkOverlayOptions: widget.linkOverlayOptions
?? const LinkOverlayOptions(),
spellCheck: true,
disableDragAndDrop: true,
normalizeHtmlTextWhenDropping: true,