diff --git a/src/zui/ZUIEditor/ButtonExtensionUI.tsx b/src/zui/ZUIEditor/ButtonExtensionUI.tsx index affed734c..b0c3a37c3 100644 --- a/src/zui/ZUIEditor/ButtonExtensionUI.tsx +++ b/src/zui/ZUIEditor/ButtonExtensionUI.tsx @@ -3,6 +3,7 @@ import { FC, useEffect, useState } from 'react'; import { ProsemirrorNode } from 'remirror'; import TextAndHrefOverlay from './elements/TextAndHrefOverlay'; +import formatUrl from 'utils/formatUrl'; const ButtonExtensionUI: FC = () => { const state = useEditorState(); @@ -40,16 +41,22 @@ const ButtonExtensionUI: FC = () => { return ( { + // TODO: Hide somehow + }} onChangeHref={(href) => setHref(href)} onChangeText={(text) => setText(text)} onSubmit={() => { - setButtonText(state.selection.$head.pos, text); - setButtonHref(state.selection.$head.pos, href); + const formattedHref = formatUrl(href); + if (formattedHref) { + setButtonText(state.selection.$head.pos, text); + setButtonHref(state.selection.$head.pos, formattedHref); + } }} open={visible} text={text} x={left} - y={top + 20} + y={top + 30} /> ); }; diff --git a/src/zui/ZUIEditor/LinkExtensionUI.tsx b/src/zui/ZUIEditor/LinkExtensionUI.tsx index 02b8f8968..edbffeaba 100644 --- a/src/zui/ZUIEditor/LinkExtensionUI.tsx +++ b/src/zui/ZUIEditor/LinkExtensionUI.tsx @@ -1,12 +1,9 @@ -import { OpenInNew } from '@mui/icons-material'; -import { Box, Button, IconButton, Paper, TextField } from '@mui/material'; import { useCommands, useEditorState, useEditorView } from '@remirror/react'; import { FC, useEffect, useState } from 'react'; import { ProsemirrorNode } from 'remirror'; -import { Msg, useMessages } from 'core/i18n'; import formatUrl from 'utils/formatUrl'; -import messageIds from 'zui/l10n/messageIds'; +import TextAndHrefOverlay from './elements/TextAndHrefOverlay'; export type NodeWithPosition = { from: number; @@ -17,7 +14,6 @@ export type NodeWithPosition = { const LinkExtensionUI: FC = () => { const state = useEditorState(); const view = useEditorView(); - const messages = useMessages(messageIds); const { removeLink, removeUnfinishedLinks, updateLink, updateLinkText } = useCommands(); @@ -77,100 +73,36 @@ const LinkExtensionUI: FC = () => { }, [state.selection]); const formattedHref = formatUrl(linkHref); - const canSubmit = !!formattedHref && linkText.length > 0; return ( - - - {showLinkMaker && ( - - - - setLinkHref(ev.target.value)} - size="small" - value={linkHref} - /> - - - - - - setLinkText(ev.target.value)} - placeholder={messages.editor.extensions.link.textPlaceholder()} - size="small" - value={linkText} - /> - - - - - - - - - - - - )} - - + { + setSelectedNodes([]); + }} + onChangeHref={(href) => setLinkHref(href)} + onChangeText={(text) => setLinkText(text)} + onRemove={() => { + removeLink({ + from: selectedNodes[0].from, + to: selectedNodes[0].to, + }); + }} + onSubmit={() => { + updateLink({ href: formattedHref || '' }); + updateLinkText( + { + from: selectedNodes[0].from, + to: selectedNodes[0].to, + }, + linkText + ); + }} + open={showLinkMaker} + text={linkText} + x={left} + y={top + 20} + /> ); }; diff --git a/src/zui/ZUIEditor/elements/TextAndHrefOverlay.tsx b/src/zui/ZUIEditor/elements/TextAndHrefOverlay.tsx index 156a063e3..6b4e3e40e 100644 --- a/src/zui/ZUIEditor/elements/TextAndHrefOverlay.tsx +++ b/src/zui/ZUIEditor/elements/TextAndHrefOverlay.tsx @@ -8,8 +8,10 @@ import { Msg, useMessages } from 'core/i18n'; type Props = { href: string; + onCancel: () => void; onChangeHref: (href: string) => void; onChangeText: (text: string) => void; + onRemove?: () => void; onSubmit: () => void; open: boolean; text: string; @@ -19,8 +21,10 @@ type Props = { const TextAndHrefOverlay: FC = ({ href, + onCancel, onChangeHref, onChangeText, + onRemove, onSubmit, open, text, @@ -75,28 +79,42 @@ const TextAndHrefOverlay: FC = ({ value={text} /> - - + + {!!onRemove && ( + + )} + + - + +