From 49eff17fb6fcc6a624b03832471bb0928a503d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 25 Sep 2020 14:17:53 +0200 Subject: [PATCH] add link button --- .eslintrc.js | 1 + docs/src/demos/Extensions/Link/index.vue | 11 +++++++++++ packages/core/src/commands/removeMark.ts | 2 +- packages/extension-link/index.ts | 12 +++++++++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 3683e0b6..b0b56cb7 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -35,6 +35,7 @@ module.exports = { 'airbnb-base', ], rules: { + 'no-alert': 'off', semi: ['error', 'never'], 'import/extensions': 'off', 'import/no-extraneous-dependencies': 'off', diff --git a/docs/src/demos/Extensions/Link/index.vue b/docs/src/demos/Extensions/Link/index.vue index eec5c0d4..0eb52905 100644 --- a/docs/src/demos/Extensions/Link/index.vue +++ b/docs/src/demos/Extensions/Link/index.vue @@ -1,5 +1,8 @@ @@ -39,6 +42,14 @@ export default { }) }, + methods: { + addLink() { + const url = window.prompt('Link:') + + this.editor.link(url) + }, + }, + beforeDestroy() { this.editor.destroy() }, diff --git a/packages/core/src/commands/removeMark.ts b/packages/core/src/commands/removeMark.ts index 49028fdf..00971361 100644 --- a/packages/core/src/commands/removeMark.ts +++ b/packages/core/src/commands/removeMark.ts @@ -7,7 +7,7 @@ type RemoveMarkCommand = (typeOrName: string | MarkType) => Command declare module '../Editor' { interface Commands { - toggleMark: RemoveMarkCommand, + removeMark: RemoveMarkCommand, } } diff --git a/packages/extension-link/index.ts b/packages/extension-link/index.ts index 5b925d37..d95f5475 100644 --- a/packages/extension-link/index.ts +++ b/packages/extension-link/index.ts @@ -8,7 +8,7 @@ export interface LinkOptions { target: string, } -export type LinkCommand = () => Command +export type LinkCommand = (url?: string) => Command declare module '@tiptap/core/src/Editor' { interface Commands { @@ -50,8 +50,14 @@ export default new Mark() }, 0], })) .commands(({ name }) => ({ - link: () => ({ commands }) => { - return commands.toggleMark(name) + link: url => ({ commands }) => { + if (!url) { + return commands.removeMark(name) + } + + return commands.updateMark(name, { + href: url, + }) }, })) .pasteRules(({ type }) => [