chore: link editor on mobile [skip e2e]
This commit is contained in:
@@ -27,6 +27,7 @@ import { MarkdownTransformers } from './MarkdownTransformers'
|
||||
import { RemoveBrokenTablesPlugin } from './Plugins/TablePlugin'
|
||||
import TableActionMenuPlugin from './Plugins/TableCellActionMenuPlugin'
|
||||
import ToolbarPlugin from './Plugins/ToolbarPlugin/ToolbarPlugin'
|
||||
import { useMediaQuery, MutuallyExclusiveMediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
|
||||
|
||||
type BlocksEditorProps = {
|
||||
onChange?: (value: string, preview: string) => void
|
||||
@@ -72,9 +73,11 @@ export const BlocksEditor: FunctionComponent<BlocksEditorProps> = ({
|
||||
}
|
||||
}
|
||||
|
||||
const isMobile = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
|
||||
|
||||
return (
|
||||
<>
|
||||
<ToolbarPlugin />
|
||||
{!isMobile && <ToolbarPlugin />}
|
||||
<RichTextPlugin
|
||||
contentEditable={
|
||||
<div id="blocks-editor" className="editor-scroller h-full min-h-0">
|
||||
@@ -92,6 +95,7 @@ export const BlocksEditor: FunctionComponent<BlocksEditorProps> = ({
|
||||
placeholder={null}
|
||||
ErrorBoundary={LexicalErrorBoundary}
|
||||
/>
|
||||
{isMobile && <ToolbarPlugin />}
|
||||
<ListPlugin />
|
||||
<MarkdownShortcutPlugin transformers={MarkdownTransformers} />
|
||||
<TablePlugin hasCellMerge />
|
||||
|
||||
@@ -143,11 +143,16 @@ const FloatingLinkEditor = ({
|
||||
return (
|
||||
<Portal>
|
||||
<div
|
||||
ref={linkEditorRef}
|
||||
className="absolute left-0 top-0 z-modal rounded-lg border border-border bg-contrast px-2 py-1 shadow-sm shadow-contrast translucent-ui:border-[--popover-border-color] translucent-ui:bg-[--popover-background-color] translucent-ui:[backdrop-filter:var(--popover-backdrop-filter)] md:opacity-0"
|
||||
id="super-link-editor"
|
||||
className="absolute bottom-12 left-1/2 z-modal w-[calc(100%_-_1rem)] -translate-x-1/2 rounded-lg border border-border bg-contrast px-2 py-1 shadow-sm shadow-contrast translucent-ui:border-[--popover-border-color] translucent-ui:bg-[--popover-background-color] translucent-ui:[backdrop-filter:var(--popover-backdrop-filter)] md:bottom-0 md:left-0 md:w-auto md:translate-x-0 md:opacity-0"
|
||||
>
|
||||
{isEditMode ? (
|
||||
<div className="flex flex-col gap-2 py-1">
|
||||
<div
|
||||
className="flex flex-col gap-2 py-1"
|
||||
onBlur={() => {
|
||||
setEditMode(false)
|
||||
}}
|
||||
>
|
||||
{isLinkText && (
|
||||
<div className="flex items-center gap-1.5">
|
||||
<Icon type="plain-text" className="flex-shrink-0" />
|
||||
|
||||
@@ -339,8 +339,11 @@ const ToolbarPlugin = () => {
|
||||
const handleRootBlur = (event: FocusEvent) => {
|
||||
const elementToBeFocused = event.relatedTarget as Node
|
||||
const containerContainsElementToFocus = container?.contains(elementToBeFocused)
|
||||
const linkEditorContainsElementToFocus = document
|
||||
.getElementById('super-link-editor')
|
||||
?.contains(elementToBeFocused)
|
||||
const willFocusDismissButton = dismissButtonRef.current === elementToBeFocused
|
||||
if (containerContainsElementToFocus && !willFocusDismissButton) {
|
||||
if ((containerContainsElementToFocus || linkEditorContainsElementToFocus) && !willFocusDismissButton) {
|
||||
return
|
||||
}
|
||||
setIsFocusInEditor(false)
|
||||
|
||||
Reference in New Issue
Block a user