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