diff options
author | Marcel Klehr <mklehr@gmx.net> | 2022-10-21 16:12:00 +0300 |
---|---|---|
committer | Jonas <jonas@freesources.org> | 2022-10-31 13:13:03 +0300 |
commit | 36699030e90422f7007887f78172116d936eb281 (patch) | |
tree | b4f5544bdc8df1f800658543e9095e9abb9d9dd6 /src | |
parent | 497432a49535024f5e33763e9ee085edd4257231 (diff) |
Fix link opening in readonly mode
In readonly mode it seems prosemirror doesn't register a click handler override, which is why link clicks go right through to the browser handler.
This commit registers a clickPreventer plugin that preventDefault's clicks when the editor is readonly
fixes #579
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/marks/Link.js | 3 | ||||
-rw-r--r-- | src/plugins/link.js | 18 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/marks/Link.js b/src/marks/Link.js index 02da20f50..c9dc1d071 100644 --- a/src/marks/Link.js +++ b/src/marks/Link.js @@ -22,7 +22,7 @@ import TipTapLink from '@tiptap/extension-link' import { domHref, parseHref, openLink } from './../helpers/links.js' -import { clickHandler } from '../plugins/link.js' +import { clickHandler, clickPreventer } from '../plugins/link.js' const Link = TipTapLink.extend({ @@ -86,6 +86,7 @@ const Link = TipTapLink.extend({ type: this.type, onClick: this.options.onClick, }), + clickPreventer() ] }, }) diff --git a/src/plugins/link.js b/src/plugins/link.js index fbc3df671..fe18ecc41 100644 --- a/src/plugins/link.js +++ b/src/plugins/link.js @@ -27,4 +27,20 @@ const clickHandler = ({ editor, type, onClick }) => { }) } -export { clickHandler } +const clickPreventer = () => { + return new Plugin({ + props: { + key: new PluginKey('textAvoidLinkClick'), + handleDOMEvents: { + click: (view, event) => { + if (!view.editable) { + event.preventDefault() + return false + } + } + } + }, + }) +} + +export { clickHandler, clickPreventer } |