BubbleMenu.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <editor-menu-bubble
  3. :editor="editor"
  4. :keep-in-bounds="keepInBounds"
  5. v-slot="{ commands, isActive, menu }">
  6. <div
  7. class="menububble"
  8. :class="{ 'is-active': menu.isActive }"
  9. :style="`left: ${menu.left}px; bottom: ${menu.bottom}px;`"
  10. >
  11. <button
  12. class="menububble__button"
  13. :class="{ 'is-active': isActive.heading({ level: 1}) }"
  14. @click="commands.heading({ level: 1})"
  15. >
  16. H1
  17. </button>
  18. <button
  19. class="menububble__button"
  20. :class="{ 'is-active': isActive.heading({ level: 2}) }"
  21. @click="commands.heading({ level: 2})"
  22. >
  23. H2
  24. </button>
  25. <button
  26. class="menububble__button"
  27. :class="{ 'is-active': isActive.heading({ level: 3}) }"
  28. @click="commands.heading({ level: 3})"
  29. >
  30. H3
  31. </button>
  32. </div>
  33. </editor-menu-bubble>
  34. </template>
  35. <script>
  36. import { EditorMenuBubble } from 'tiptap'
  37. export default {
  38. components: {
  39. EditorMenuBubble
  40. },
  41. props: {
  42. editor: {
  43. type: Object
  44. }
  45. },
  46. data() {
  47. return {
  48. keepInBounds: true
  49. }
  50. }
  51. }
  52. </script>