Utilisation de base
Liaison du contenu
Utilisez v-model pour garder le contenu synchronisé :
vue
<script setup lang="ts">
import { ref } from 'vue'
const content = ref('<p>Hello, <strong>world</strong>!</p>')
</script>
<template>
<Tiptapify
v-model="content"
placeholder="Write something..."
:bubble-menu="true"
:floating-menu="false"
:slash-commands="true"
/>
</template>Réagir aux modifications
Utilisez l'événement content-changed pour réagir aux modifications de l'éditeur :
vue
<script setup lang="ts">
import { ref } from 'vue'
const wordCount = ref(0)
const onContentChanged = ({ html, json }) => {
const text = html.replace(/<[^>]*>/g, ' ')
wordCount.value = text.trim().split(/\s+/).filter(Boolean).length
}
</script>
<template>
<div>
<Tiptapify
:content="'<p>Start writing...</p>'"
placeholder="Write something..."
:bubble-menu="true"
:floating-menu="false"
:slash-commands="true"
@content-changed="onContentChanged"
/>
<p>Words: {{ wordCount }}</p>
</div>
</template>Callback de disponibilité de l'éditeur
Accédez à l'instance brute de l'éditeur Tiptap :
vue
<script setup lang="ts">
const onEditorReady = (options) => {
const { editor, getHTML, getJSON } = options
// Focus the editor programmatically
editor.commands.focus()
// Set content programmatically
editor.commands.setContent('<p>New content</p>')
// Check editor state
console.log('Is focused:', editor.isFocused)
console.log('HTML:', getHTML())
console.log('JSON:', getJSON())
}
</script>
<template>
<Tiptapify
placeholder="Editor with ready callback..."
:bubble-menu="true"
:floating-menu="false"
:slash-commands="true"
@editor-ready="onEditorReady"
/>
</template>Éditeur à hauteur fixe
Définissez une hauteur minimale pour la zone de l'éditeur :
vue
<template>
<Tiptapify
:content="'<p>Content area with fixed height...</p>'"
:height="400"
placeholder="This editor has a fixed height of 400px..."
:bubble-menu="true"
:floating-menu="false"
:slash-commands="true"
/>
</template>Sans barre d'outils
Masquez complètement la barre d'outils et utilisez uniquement le menu flottant :
vue
<template>
<Tiptapify
:toolbar="false"
:bubble-menu="true"
placeholder="Toolbar hidden, use bubble menu..."
:floating-menu="false"
:slash-commands="true"
/>
</template>Mode lecture seule
Contrôlez l'éditabilité via l'instance de l'éditeur :
vue
<script setup lang="ts">
import { ref } from 'vue'
const isReadOnly = ref(false)
const onEditorReady = (options) => {
// Set read-only after editor is ready
options.editor.setEditable(false)
}
</script>
<template>
<div>
<v-btn @click="isReadOnly = !isReadOnly">
Toggle Read-Only
</v-btn>
<Tiptapify
:content="'<p>Try editing this content...</p>'"
:toolbar="false"
:bubble-menu="true"
:floating-menu="false"
:slash-commands="true"
@editor-ready="onEditorReady"
/>
</div>
</template>