tiptapify 0.2.6 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/tiptapify.css +1 -1
- package/dist/tiptapify.mjs +23430 -25369
- package/dist/tiptapify.umd.js +70 -73
- package/index.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/Footer.vue +1 -1
- package/src/components/Tiptapify.vue +6 -2
- package/src/components/Toolbar/Index.vue +3 -4
- package/src/components/Toolbar/Items.test.ts +53 -0
- package/src/components/Toolbar/Items.vue +5 -5
- package/src/components/UI/HotkeyTooltip.test.ts +65 -0
- package/src/components/UI/HotkeyTooltip.vue +54 -0
- package/src/components/UI/Tooltip.vue +20 -0
- package/src/composables/useTiptapifyConfig.test.ts +66 -0
- package/src/composables/useTiptapifyConfig.ts +17 -0
- package/src/constants/defaults.ts +4 -2
- package/src/extensions/components/actions/redo/Button.vue +5 -9
- package/src/extensions/components/actions/undo/Button.vue +5 -9
- package/src/extensions/components/ai/Button.vue +7 -10
- package/src/extensions/components/ai/Dialog.vue +4 -9
- package/src/extensions/components/alignment/center/Button.vue +5 -9
- package/src/extensions/components/alignment/justify/Button.vue +5 -9
- package/src/extensions/components/alignment/left/Button.vue +5 -9
- package/src/extensions/components/alignment/right/Button.vue +5 -9
- package/src/extensions/components/format/bold/Button.vue +5 -9
- package/src/extensions/components/format/italic/Button.vue +5 -9
- package/src/extensions/components/format/strike/Button.vue +5 -9
- package/src/extensions/components/format/underline/Button.vue +5 -9
- package/src/extensions/components/formatExtra/code/Button.vue +5 -9
- package/src/extensions/components/formatExtra/codeBlock/Button.vue +5 -9
- package/src/extensions/components/formatExtra/quote/Button.vue +5 -9
- package/src/extensions/components/formatExtra/sub/Button.vue +5 -9
- package/src/extensions/components/formatExtra/sup/Button.vue +5 -9
- package/src/extensions/components/list/bullet/Button.vue +8 -13
- package/src/extensions/components/list/indent/Button.vue +5 -9
- package/src/extensions/components/list/numbered/Button.vue +5 -9
- package/src/extensions/components/list/outdent/Button.vue +5 -9
- package/src/extensions/components/list/task/Button.vue +5 -9
- package/src/extensions/components/media/charmap/Button.vue +5 -8
- package/src/extensions/components/media/charmap/Picker.vue +2 -3
- package/src/extensions/components/media/emoji/Button.vue +6 -9
- package/src/extensions/components/media/emoji/Picker.vue +2 -3
- package/src/extensions/components/media/iframe/Button.vue +6 -10
- package/src/extensions/components/media/iframe/IframeDialog.vue +3 -7
- package/src/extensions/components/media/image/Button.vue +6 -10
- package/src/extensions/components/media/image/ImageDialog.vue +5 -10
- package/src/extensions/components/media/link/Button.vue +7 -10
- package/src/extensions/components/media/link/LinkDialog.vue +3 -7
- package/src/extensions/components/media/table/Button.vue +10 -24
- package/src/extensions/components/media/table/ColumnActions.vue +4 -9
- package/src/extensions/components/media/table/RowActions.vue +4 -9
- package/src/extensions/components/media/video/Button.vue +6 -10
- package/src/extensions/components/media/video/VideoDialog.vue +3 -7
- package/src/extensions/components/misc/break/Button.vue +5 -9
- package/src/extensions/components/misc/formatClear/Button.vue +5 -9
- package/src/extensions/components/misc/fullscreen/Button.vue +5 -9
- package/src/extensions/components/misc/invisibleChar/Button.vue +5 -9
- package/src/extensions/components/misc/line/Button.vue +5 -9
- package/src/extensions/components/misc/preview/Button.vue +5 -9
- package/src/extensions/components/misc/source/Button.vue +6 -10
- package/src/extensions/components/misc/source/ShowSourceDialog.vue +4 -5
- package/src/extensions/components/style/color/Button.vue +5 -9
- package/src/extensions/components/style/fontFamily/Button.vue +5 -9
- package/src/extensions/components/style/fontSize/Button.vue +6 -7
- package/src/extensions/components/style/heading/Button.vue +6 -8
- package/src/extensions/components/style/highlight/Button.vue +5 -9
- package/src/extensions/components/style/lineHeight/Button.vue +5 -9
- package/src/index.ts +3 -0
- package/src/utils/hotkeys.test.ts +146 -0
- package/src/utils/hotkeys.ts +65 -0
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
4
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
5
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
5
6
|
import IframeDialog from '@tiptapify/extensions/components/media/iframe/IframeDialog.vue'
|
|
6
|
-
import {
|
|
7
|
-
import { inject,
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, ref, Ref, useTemplateRef } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -29,13 +27,11 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" vie
|
|
|
29
27
|
size="32"
|
|
30
28
|
@click="dialog?.open()"
|
|
31
29
|
>
|
|
32
|
-
<
|
|
33
|
-
{{ t('media.iframe') }}
|
|
34
|
-
</VTooltip>
|
|
30
|
+
<Tooltip :label="t('media.iframe')" />
|
|
35
31
|
<BtnIcon :icon="icon" />
|
|
36
32
|
</VBtn>
|
|
37
33
|
|
|
38
|
-
<IframeDialog ref="dialog"
|
|
34
|
+
<IframeDialog ref="dialog" />
|
|
39
35
|
</template>
|
|
40
36
|
|
|
41
37
|
<style lang="scss" scoped>
|
|
@@ -2,18 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
4
|
import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
|
|
5
|
-
import
|
|
6
|
-
import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
|
|
5
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
7
6
|
|
|
8
7
|
import type { iframeOptions } from '@tiptapify/types/iframe'
|
|
9
8
|
|
|
10
|
-
import { computed, inject,
|
|
9
|
+
import { computed, inject, Ref, ref, useTemplateRef, watch } from 'vue'
|
|
11
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
15
|
-
variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
|
|
16
|
-
})
|
|
12
|
+
const { variantBtn, variantField } = useTiptapifyConfig()
|
|
17
13
|
|
|
18
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
19
15
|
const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
@@ -3,16 +3,14 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
7
|
import ImageDialog from '@tiptapify/extensions/components/media/image/ImageDialog.vue'
|
|
7
|
-
import {
|
|
8
|
-
import { inject,
|
|
8
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
9
|
+
import { inject, Ref } from 'vue'
|
|
9
10
|
|
|
10
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
11
11
|
import { ComposerTranslation } from 'vue-i18n'
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
15
|
-
})
|
|
13
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
16
14
|
|
|
17
15
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
18
16
|
|
|
@@ -27,13 +25,11 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
|
27
25
|
size="32"
|
|
28
26
|
@click="editor.commands.showTiptapifyImage()"
|
|
29
27
|
>
|
|
30
|
-
<
|
|
31
|
-
{{ t('media.image') }}
|
|
32
|
-
</VTooltip>
|
|
28
|
+
<Tooltip :label="t('media.image')" />
|
|
33
29
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiImage}`" />
|
|
34
30
|
</VBtn>
|
|
35
31
|
|
|
36
|
-
<ImageDialog
|
|
32
|
+
<ImageDialog />
|
|
37
33
|
</template>
|
|
38
34
|
|
|
39
35
|
<style lang="scss" scoped>
|
|
@@ -3,16 +3,13 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
8
|
|
|
9
|
-
import { computed, inject, onMounted, onUnmounted,
|
|
9
|
+
import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef } from 'vue'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
|
|
15
|
-
})
|
|
12
|
+
const { variantBtn, variantField } = useTiptapifyConfig()
|
|
16
13
|
|
|
17
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
18
15
|
const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
@@ -190,9 +187,7 @@ onUnmounted(() => {
|
|
|
190
187
|
@click="keepRatio = !keepRatio"
|
|
191
188
|
>
|
|
192
189
|
<VIcon :icon="keepRatio ? `mdiSvg:${mdi.mdiLock}` : `mdiSvg:${mdi.mdiLockOpenVariant}`" />
|
|
193
|
-
<
|
|
194
|
-
{{ t('dialog.image.keep_ratio') }}
|
|
195
|
-
</VTooltip>
|
|
190
|
+
<Tooltip :label="t('dialog.image.keep_ratio')" />
|
|
196
191
|
</VBtn>
|
|
197
192
|
</div>
|
|
198
193
|
</div>
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
5
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
5
6
|
import LinkDialog from '@tiptapify/extensions/components/media/link/LinkDialog.vue'
|
|
6
|
-
import { TiptapifyEditor
|
|
7
|
-
import { computed, inject,
|
|
7
|
+
import { TiptapifyEditor } from '@tiptapify/types/editor'
|
|
8
|
+
import { computed, inject, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import
|
|
10
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
10
11
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
13
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
14
|
|
|
16
15
|
const editor = inject('tiptapifyEditor') as Ref<TiptapifyEditor>
|
|
17
16
|
|
|
@@ -28,13 +27,11 @@ const icon = computed(() => editor.value.isActive('tiptapifyLink') ? `mdiSvg:${m
|
|
|
28
27
|
size="32"
|
|
29
28
|
@click="editor.commands.showLink()"
|
|
30
29
|
>
|
|
31
|
-
<
|
|
32
|
-
{{ t('media.link') }}
|
|
33
|
-
</VTooltip>
|
|
30
|
+
<Tooltip :label="t('media.link')" />
|
|
34
31
|
<BtnIcon :icon="icon" />
|
|
35
32
|
</VBtn>
|
|
36
33
|
|
|
37
|
-
<LinkDialog
|
|
34
|
+
<LinkDialog />
|
|
38
35
|
</template>
|
|
39
36
|
|
|
40
37
|
<style lang="scss" scoped>
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
|
-
import
|
|
5
|
-
import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
|
|
4
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
6
5
|
import { isValidHref } from '@tiptapify/utils/validateHref'
|
|
7
6
|
|
|
8
|
-
import { computed, inject, onMounted, onUnmounted,
|
|
7
|
+
import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue'
|
|
9
8
|
|
|
10
9
|
import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
|
|
11
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
15
|
-
variantField: { type: String as PropType<variantFieldTypes>, default() { return 'outlined' } },
|
|
16
|
-
})
|
|
12
|
+
const { variantBtn, variantField } = useTiptapifyConfig()
|
|
17
13
|
|
|
18
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
19
15
|
const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
@@ -3,18 +3,16 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
7
|
import ColumnActions from '@tiptapify/extensions/components/media/table/ColumnActions.vue'
|
|
7
8
|
import RowActions from '@tiptapify/extensions/components/media/table/RowActions.vue'
|
|
8
9
|
import TableBuilder from '@tiptapify/extensions/components/media/table/TableBuilder.vue'
|
|
9
|
-
import {
|
|
10
|
-
import { inject,
|
|
10
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
11
|
+
import { inject, Ref } from 'vue'
|
|
11
12
|
|
|
12
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
13
13
|
import { ComposerTranslation } from 'vue-i18n'
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
17
|
-
})
|
|
15
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
18
16
|
|
|
19
17
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
20
18
|
|
|
@@ -48,9 +46,7 @@ const columnActionsDisabled = () => {
|
|
|
48
46
|
<VMenu :activator="`#tiptapify-table-button-${editor.instanceId}`" :close-on-content-click="false">
|
|
49
47
|
<VList density="compact">
|
|
50
48
|
<VListItem link>
|
|
51
|
-
<
|
|
52
|
-
{{ t('media.tables.insertTable') }}
|
|
53
|
-
</VTooltip>
|
|
49
|
+
<Tooltip :label="t('media.tables.insertTable')" />
|
|
54
50
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
55
51
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTablePlus}`" />
|
|
56
52
|
</VListItemTitle>
|
|
@@ -68,18 +64,14 @@ const columnActionsDisabled = () => {
|
|
|
68
64
|
</VListItem>
|
|
69
65
|
|
|
70
66
|
<VListItem link :disabled="!editor.can().chain().focus().deleteTable().run()" @click="editor.chain().focus().deleteTable().run()">
|
|
71
|
-
<
|
|
72
|
-
{{ t('media.tables.deleteTable') }}
|
|
73
|
-
</VTooltip>
|
|
67
|
+
<Tooltip :label="t('media.tables.deleteTable')" />
|
|
74
68
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
75
69
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableMinus}`" />
|
|
76
70
|
</VListItemTitle>
|
|
77
71
|
</VListItem>
|
|
78
72
|
|
|
79
73
|
<VListItem link :disabled="rowActionsDisabled()">
|
|
80
|
-
<
|
|
81
|
-
{{ t('media.tables.row') }}
|
|
82
|
-
</VTooltip>
|
|
74
|
+
<Tooltip :label="t('media.tables.row')" />
|
|
83
75
|
|
|
84
76
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
85
77
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableRow}`" />
|
|
@@ -89,9 +81,7 @@ const columnActionsDisabled = () => {
|
|
|
89
81
|
</VListItem>
|
|
90
82
|
|
|
91
83
|
<VListItem link :disabled="columnActionsDisabled()">
|
|
92
|
-
<
|
|
93
|
-
{{ t('media.tables.col') }}
|
|
94
|
-
</VTooltip>
|
|
84
|
+
<Tooltip :label="t('media.tables.col')" />
|
|
95
85
|
|
|
96
86
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
97
87
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumn}`" />
|
|
@@ -101,9 +91,7 @@ const columnActionsDisabled = () => {
|
|
|
101
91
|
</VListItem>
|
|
102
92
|
|
|
103
93
|
<VListItem link :disabled="!editor.can().chain().focus().mergeCells().run()" @click="editor.chain().focus().mergeCells().run()">
|
|
104
|
-
<
|
|
105
|
-
{{ t('media.tables.mergeCells') }}
|
|
106
|
-
</VTooltip>
|
|
94
|
+
<Tooltip :label="t('media.tables.mergeCells')" />
|
|
107
95
|
|
|
108
96
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
109
97
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableMergeCells}`" />
|
|
@@ -111,9 +99,7 @@ const columnActionsDisabled = () => {
|
|
|
111
99
|
</VListItem>
|
|
112
100
|
|
|
113
101
|
<VListItem link :disabled="!editor.can().chain().focus().splitCell().run()" @click="editor.chain().focus().splitCell().run()">
|
|
114
|
-
<
|
|
115
|
-
{{ t('media.tables.splitCell') }}
|
|
116
|
-
</VTooltip>
|
|
102
|
+
<Tooltip :label="t('media.tables.splitCell')" />
|
|
117
103
|
|
|
118
104
|
<VListItemTitle class="d-flex justify-center align-center">
|
|
119
105
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableSplitCell}`" />
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
7
|
import { inject, Ref } from 'vue'
|
|
7
8
|
import { ComposerTranslation } from 'vue-i18n'
|
|
8
9
|
|
|
@@ -27,21 +28,15 @@ const columnCanDelete = () => {
|
|
|
27
28
|
<VMenu submenu activator="parent" open-on-hover open-on-click>
|
|
28
29
|
<VList>
|
|
29
30
|
<VListItem link :disabled="!columnCanAddBefore()" @click="editor.chain().focus().addColumnBefore().run()">
|
|
30
|
-
<
|
|
31
|
-
{{ t('media.tables.insertColBefore') }}
|
|
32
|
-
</VTooltip>
|
|
31
|
+
<Tooltip :label="t('media.tables.insertColBefore')" />
|
|
33
32
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnPlusBefore}`" />
|
|
34
33
|
</VListItem>
|
|
35
34
|
<VListItem link :disabled="!columnCanAddAfter()" @click="editor.chain().focus().addColumnAfter().run()">
|
|
36
|
-
<
|
|
37
|
-
{{ t('media.tables.insertColAfter') }}
|
|
38
|
-
</VTooltip>
|
|
35
|
+
<Tooltip :label="t('media.tables.insertColAfter')" />
|
|
39
36
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnPlusAfter}`" />
|
|
40
37
|
</VListItem>
|
|
41
38
|
<VListItem link :disabled="!columnCanDelete()" @click="editor.chain().focus().deleteColumn().run()">
|
|
42
|
-
<
|
|
43
|
-
{{ t('media.tables.deleteCol') }}
|
|
44
|
-
</VTooltip>
|
|
39
|
+
<Tooltip :label="t('media.tables.deleteCol')" />
|
|
45
40
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnRemove}`" />
|
|
46
41
|
</VListItem>
|
|
47
42
|
</VList>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
7
|
import { inject, Ref } from 'vue'
|
|
7
8
|
import { ComposerTranslation } from 'vue-i18n'
|
|
8
9
|
|
|
@@ -27,21 +28,15 @@ const rowCanDelete = () => {
|
|
|
27
28
|
<VMenu submenu activator="parent" open-on-hover open-on-click>
|
|
28
29
|
<VList>
|
|
29
30
|
<VListItem link :disabled="!rowCanAddBefore()" @click="editor.chain().focus().addRowBefore().run()">
|
|
30
|
-
<
|
|
31
|
-
{{ t('media.tables.insertRowBefore') }}
|
|
32
|
-
</VTooltip>
|
|
31
|
+
<Tooltip :label="t('media.tables.insertRowBefore')" />
|
|
33
32
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowPlusBefore}`" />
|
|
34
33
|
</VListItem>
|
|
35
34
|
<VListItem link :disabled="!rowCanAddAfter()" @click="editor.chain().focus().addRowAfter().run()">
|
|
36
|
-
<
|
|
37
|
-
{{ t('media.tables.insertRowAfter') }}
|
|
38
|
-
</VTooltip>
|
|
35
|
+
<Tooltip :label="t('media.tables.insertRowAfter')" />
|
|
39
36
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowPlusAfter}`" />
|
|
40
37
|
</VListItem>
|
|
41
38
|
<VListItem link :disabled="!rowCanDelete()" @click="editor.chain().focus().deleteRow().run()">
|
|
42
|
-
<
|
|
43
|
-
{{ t('media.tables.deleteRow') }}
|
|
44
|
-
</VTooltip>
|
|
39
|
+
<Tooltip :label="t('media.tables.deleteRow')" />
|
|
45
40
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowRemove}`" />
|
|
46
41
|
</VListItem>
|
|
47
42
|
</VList>
|
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
4
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
5
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
5
6
|
import VideoDialog from '@tiptapify/extensions/components/media/video/VideoDialog.vue'
|
|
6
|
-
import {
|
|
7
|
-
import { inject,
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -27,13 +25,11 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" vie
|
|
|
27
25
|
size="32"
|
|
28
26
|
@click="editor.commands.showTiptapifyVideo()"
|
|
29
27
|
>
|
|
30
|
-
<
|
|
31
|
-
{{ t('media.video') }}
|
|
32
|
-
</VTooltip>
|
|
28
|
+
<Tooltip :label="t('media.video')" />
|
|
33
29
|
<BtnIcon :icon="icon" />
|
|
34
30
|
</VBtn>
|
|
35
31
|
|
|
36
|
-
<VideoDialog
|
|
32
|
+
<VideoDialog />
|
|
37
33
|
</template>
|
|
38
34
|
|
|
39
35
|
<style lang="scss" scoped>
|
|
@@ -2,16 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
4
|
import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
|
|
5
|
-
import
|
|
6
|
-
import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
|
|
5
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
7
6
|
|
|
8
|
-
import { computed, inject, onMounted, onUnmounted,
|
|
7
|
+
import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef } from 'vue'
|
|
9
8
|
import { ComposerTranslation } from 'vue-i18n'
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
13
|
-
variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
|
|
14
|
-
})
|
|
10
|
+
const { variantBtn, variantField } = useTiptapifyConfig()
|
|
15
11
|
|
|
16
12
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
13
|
const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -21,9 +19,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
|
21
19
|
|
|
22
20
|
<template>
|
|
23
21
|
<VBtn size="32" :variant="variantBtn" @click="editor.chain().focus().setHardBreak().run()">
|
|
24
|
-
<
|
|
25
|
-
{{ t('format.break') }}
|
|
26
|
-
</VTooltip>
|
|
22
|
+
<Tooltip :label="t('format.break')" hotkey="Mod-Enter" />
|
|
27
23
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiFormatPageBreak}`" />
|
|
28
24
|
</VBtn>
|
|
29
25
|
</template>
|
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -27,9 +25,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
|
27
25
|
color=""
|
|
28
26
|
@click="editor.chain().focus().unsetAllMarks().clearNodes().run()"
|
|
29
27
|
>
|
|
30
|
-
<
|
|
31
|
-
{{ t('format.formatClear') }}
|
|
32
|
-
</VTooltip>
|
|
28
|
+
<Tooltip :label="t('format.formatClear')" />
|
|
33
29
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiFormatClear}`" />
|
|
34
30
|
</VBtn>
|
|
35
31
|
</template>
|
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, nextTick, ref, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -50,9 +48,7 @@ async function changeEditorContainer(source: string, target: string) {
|
|
|
50
48
|
:variant="variantBtn"
|
|
51
49
|
@click="showDialog ? dialogClose() : dialogOpen()"
|
|
52
50
|
>
|
|
53
|
-
<
|
|
54
|
-
{{ t('misc.fullscreen') }}
|
|
55
|
-
</VTooltip>
|
|
51
|
+
<Tooltip :label="t('misc.fullscreen')" />
|
|
56
52
|
<BtnIcon :icon="showDialog ? `mdiSvg:${mdi.mdiFullscreenExit}` : `mdiSvg:${mdi.mdiFullscreen}`" />
|
|
57
53
|
</VBtn>
|
|
58
54
|
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { Editor } from '@tiptap/vue-3'
|
|
4
4
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
5
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
7
|
+
import { inject, Ref } from 'vue'
|
|
7
8
|
|
|
8
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
9
9
|
import { ComposerTranslation } from 'vue-i18n'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
13
|
-
})
|
|
11
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
14
12
|
|
|
15
13
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
16
14
|
|
|
@@ -27,9 +25,7 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><pat
|
|
|
27
25
|
size="32"
|
|
28
26
|
@click="editor.commands.toggleInvisibleCharacters()"
|
|
29
27
|
>
|
|
30
|
-
<
|
|
31
|
-
{{ t('misc.toggleInvisibleCharacters') }}
|
|
32
|
-
</VTooltip>
|
|
28
|
+
<Tooltip :label="t('misc.toggleInvisibleCharacters')" />
|
|
33
29
|
<BtnIcon :icon="icon" />
|
|
34
30
|
</VBtn>
|
|
35
31
|
</template>
|
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, Ref } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
17
15
|
|
|
@@ -26,9 +24,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
|
26
24
|
:variant="variantBtn"
|
|
27
25
|
@click="editor.chain().focus().setHorizontalRule().run()"
|
|
28
26
|
>
|
|
29
|
-
<
|
|
30
|
-
{{ t('format.line') }}
|
|
31
|
-
</VTooltip>
|
|
27
|
+
<Tooltip :label="t('format.line')" />
|
|
32
28
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiMinus}`" />
|
|
33
29
|
</VBtn>
|
|
34
30
|
</template>
|
|
@@ -3,16 +3,14 @@
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import { Editor } from '@tiptap/vue-3'
|
|
5
5
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
6
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
6
7
|
import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
|
|
7
|
-
import {
|
|
8
|
-
import { inject,
|
|
8
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
9
|
+
import { inject, ref, Ref, useTemplateRef } from 'vue'
|
|
9
10
|
|
|
10
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
11
11
|
import { ComposerTranslation } from 'vue-i18n'
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
15
|
-
})
|
|
13
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
16
14
|
|
|
17
15
|
const editor = inject('tiptapifyEditor') as Ref<Editor>
|
|
18
16
|
|
|
@@ -24,9 +22,7 @@ const dialog = useTemplateRef('dialog')
|
|
|
24
22
|
|
|
25
23
|
<template>
|
|
26
24
|
<VBtn size="32" color="" :variant="variantBtn" @click="dialog.open()">
|
|
27
|
-
<
|
|
28
|
-
{{ t('misc.preview') }}
|
|
29
|
-
</VTooltip>
|
|
25
|
+
<Tooltip :label="t('misc.preview')" />
|
|
30
26
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiFileEyeOutline}`" />
|
|
31
27
|
</VBtn>
|
|
32
28
|
|
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import * as mdi from '@mdi/js'
|
|
4
4
|
import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
|
|
5
|
+
import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
|
|
5
6
|
import ShowSourceDialog from '@tiptapify/extensions/components/misc/source/ShowSourceDialog.vue'
|
|
6
|
-
import {
|
|
7
|
-
import { inject,
|
|
7
|
+
import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
|
|
8
|
+
import { inject, ref, useTemplateRef } from 'vue'
|
|
8
9
|
|
|
9
|
-
import defaults from '@tiptapify/constants/defaults'
|
|
10
10
|
import { ComposerTranslation } from 'vue-i18n'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
|
|
14
|
-
})
|
|
12
|
+
const { variantBtn } = useTiptapifyConfig()
|
|
15
13
|
|
|
16
14
|
const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
|
|
17
15
|
|
|
@@ -25,13 +23,11 @@ function showDialog() {
|
|
|
25
23
|
|
|
26
24
|
<template>
|
|
27
25
|
<VBtn size="32" color="" :variant="variantBtn" @click="showDialog()">
|
|
28
|
-
<
|
|
29
|
-
{{ t('misc.source') }}
|
|
30
|
-
</VTooltip>
|
|
26
|
+
<Tooltip :label="t('misc.source')" />
|
|
31
27
|
<BtnIcon :icon="`mdiSvg:${mdi.mdiCodeTags}`" />
|
|
32
28
|
</VBtn>
|
|
33
29
|
|
|
34
|
-
<ShowSourceDialog ref="dialog"
|
|
30
|
+
<ShowSourceDialog ref="dialog" />
|
|
35
31
|
</template>
|
|
36
32
|
|
|
37
33
|
<style lang="scss" scoped>
|