BubbleMenu.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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.bold() }"
  14. @click="commands.bold()"
  15. >
  16. bold
  17. </button>
  18. <button
  19. class="menububble__button"
  20. :class="{ 'is-active': isActive.italic() }"
  21. @click="commands.italic()"
  22. >
  23. italic
  24. </button>
  25. <button
  26. class="menububble__button"
  27. :class="{ 'is-active': isActive.code() }"
  28. @click="commands.code()"
  29. >
  30. code
  31. </button>
  32. <button
  33. class="menububble__button"
  34. :class="{ 'is-active': isActive.strike() }"
  35. @click="commands.strike()"
  36. >
  37. strike
  38. </button>
  39. <button
  40. class="menububble__button"
  41. :class="{ 'is-active': isActive.underline() }"
  42. @click="commands.underline()"
  43. >
  44. underline
  45. </button>
  46. <button
  47. class="menububble__button"
  48. :class="{ 'is-active': isActive.heading({ level: 1}) }"
  49. @click="commands.heading({ level: 1})"
  50. >
  51. H1
  52. </button>
  53. <button
  54. class="menububble__button"
  55. :class="{ 'is-active': isActive.heading({ level: 2}) }"
  56. @click="commands.heading({ level: 2})"
  57. >
  58. H2
  59. </button>
  60. <button
  61. class="menububble__button"
  62. :class="{ 'is-active': isActive.heading({ level: 3}) }"
  63. @click="commands.heading({ level: 3})"
  64. >
  65. H3
  66. </button>
  67. </div>
  68. </editor-menu-bubble>
  69. </template>
  70. <script>
  71. import { EditorMenuBubble } from 'tiptap'
  72. export default {
  73. components: {
  74. EditorMenuBubble
  75. },
  76. props: {
  77. editor: {
  78. type: Object
  79. }
  80. },
  81. data() {
  82. return {
  83. keepInBounds: true
  84. }
  85. }
  86. }
  87. </script>