From e34e051f4167607df92b6f96ba9af7cadff87aaa Mon Sep 17 00:00:00 2001 From: Seviche Date: Wed, 29 Mar 2023 16:50:53 +0800 Subject: [PATCH] Add Url input menu --- package.json | 1 + pnpm-lock.yaml | 18 ++++ src/components/Tiptap/BubbleMenu.vue | 139 ++++++++++++++++++--------- src/components/Tiptap/Editor.vue | 13 ++- src/style.css | 24 +++++ 5 files changed, 147 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index d60fe6c..3b52086 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@prosemirror-adapter/vue": "^0.2.3", "@tiptap/extension-bubble-menu": "2.0.0-beta.220", "@tiptap/extension-character-count": "2.0.0-beta.220", + "@tiptap/extension-link": "2.0.0-beta.220", "@tiptap/extension-typography": "2.0.0-beta.220", "@tiptap/pm": "2.0.0-beta.220", "@tiptap/starter-kit": "2.0.0-beta.220", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb53ca8..6902873 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ dependencies: '@tiptap/extension-character-count': specifier: 2.0.0-beta.220 version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220) + '@tiptap/extension-link': + specifier: 2.0.0-beta.220 + version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220) '@tiptap/extension-typography': specifier: 2.0.0-beta.220 version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220) @@ -780,6 +783,17 @@ packages: '@tiptap/core': 2.0.0-beta.220(@tiptap/pm@2.0.0-beta.220) dev: false + /@tiptap/extension-link@2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220): + resolution: {integrity: sha512-vjEA8cE37ZZVVgPHSpttw3kbJoClb+ya/BVukDtJ1h6C7mIR1rqzNxTgpbnXJuA8xww0JOjpa5dpzEgcs294fA==} + peerDependencies: + '@tiptap/core': ^2.0.0-beta.209 + '@tiptap/pm': ^2.0.0-beta.209 + dependencies: + '@tiptap/core': 2.0.0-beta.220(@tiptap/pm@2.0.0-beta.220) + '@tiptap/pm': 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220) + linkifyjs: 4.1.1 + dev: false + /@tiptap/extension-list-item@2.0.0-beta.220(@tiptap/core@2.0.0-beta.220): resolution: {integrity: sha512-+O0ivwxPP2l/m9PAowb2ytDT/cM5kwu0s1W5MUsHPIqf+M6ahnl4ESjhWZfDHUzvjqPq6MTbqoQLHbB1KS/N7w==} peerDependencies: @@ -2870,6 +2884,10 @@ packages: uc.micro: 1.0.6 dev: false + /linkifyjs@4.1.1: + resolution: {integrity: sha512-zFN/CTVmbcVef+WaDXT63dNzzkfRBKT1j464NJQkV7iSgJU0sLBus9W0HBwnXK13/hf168pbrx/V/bjEHOXNHA==} + dev: false + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} diff --git a/src/components/Tiptap/BubbleMenu.vue b/src/components/Tiptap/BubbleMenu.vue index 567c582..128f815 100644 --- a/src/components/Tiptap/BubbleMenu.vue +++ b/src/components/Tiptap/BubbleMenu.vue @@ -1,59 +1,110 @@ - - \ No newline at end of file diff --git a/src/components/Tiptap/Editor.vue b/src/components/Tiptap/Editor.vue index fffbb15..af71d67 100644 --- a/src/components/Tiptap/Editor.vue +++ b/src/components/Tiptap/Editor.vue @@ -2,19 +2,24 @@ import { EditorContent, useEditor } from '@tiptap/vue-3' import StarterKit from '@tiptap/starter-kit' import Typography from '@tiptap/extension-typography' +import Link from '@tiptap/extension-link' import BubbleMenu from './BubbleMenu.vue' const editor = useEditor({ content: '

I’m running Tiptap with Vue.js. šŸŽ‰

', - extensions: [StarterKit, Typography], + extensions: [ + StarterKit, + Typography, + Link.configure({ + openOnClick: false, + }), + ], editable: true, autofocus: true, }) diff --git a/src/style.css b/src/style.css index 31f10ed..8a5e13d 100644 --- a/src/style.css +++ b/src/style.css @@ -9,3 +9,27 @@ .editor { @apply mx-auto; } + +.btn-ghost { + @apply hover:bg-slate-200; +} + +.btn-active{ + @apply bg-slate-200; +} + +.menu-btn { + @apply btn btn-ghost btn-sm rounded-md p-2; +} + +.menu-btn > span { + @apply w-4; +} + +.menu-btn.btn-active { + @apply bg-slate-200; +} + +.input-group{ + @apply h-4; +} \ No newline at end of file