项目

tiptap 浮动菜单

版本 下载量

此扩展程序将在空行中显示一个菜单。

安装

npm install @tiptap/extension-floating-menu

配置选项

element

包含你的菜单的 DOM 元素。

类型:HTMLElement

默认值:null

tippyOptions

在内部,FloatingMenu 使用了 tippy.js。你可以直接传递选项给它。

类型:Object

默认值:{}

pluginKey

底层 ProseMirror 插件的键。如果你添加多个实例,请确保使用不同的键。

类型:string | PluginKey

默认值:'floatingMenu'

shouldShow

一个回调函数,用于控制是否显示菜单。

类型:(props) => boolean

源代码

packages/extension-floating-menu/

使用原生 JavaScript

import { Editor } from "@tiptap/core";
import FloatingMenu from "@tiptap/extension-floating-menu";

new Editor({
  extensions: [
    FloatingMenu.configure({
      element: document.querySelector(".menu"),
    }),
  ],
});

使用框架

查看在线演示:https://embed.tiptap.dev/preview/Extensions/FloatingMenu

自定义逻辑

使用 shouldShow 选项自定义显示菜单的逻辑。对于组件,shouldShow 可以作为 prop 传递。

FloatingMenu.configure({
  shouldShow: ({ editor, view, state, oldState }) => {
    // 在任何段落中显示浮动菜单
    return editor.isActive("paragraph");
  },
});

多个菜单

通过设置唯一的 pluginKey 来使用多个菜单。

import { Editor } from "@tiptap/core";
import FloatingMenu from "@tiptap/extension-floating-menu";

new Editor({
  extensions: [
    FloatingMenu.configure({
      pluginKey: "floatingMenuOne",
      element: document.querySelector(".menu-one"),
    }),
    FloatingMenu.configure({
      pluginKey: "floatingMenuTwo",
      element: document.querySelector(".menu-two"),
    }),
  ],
});

或者,你可以传递一个 ProseMirror 的 PluginKey

import { Editor } from "@tiptap/core";
import FloatingMenu from "@tiptap/extension-floating-menu";
import { PluginKey } from "@tiptap/pm/state";

new Editor({
  extensions: [
    FloatingMenu.configure({
      pluginKey: new PluginKey("floatingMenuOne"),
      element: document.querySelector(".menu-one"),
    }),
    FloatingMenu.configure({
      pluginKey: new PluginKey("floatingMenuTwo"),
      element: document.querySelector(".menu-two"),
    }),
  ],
});
在本文档中