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 }) => [