BlockNoteを使ってますか?
Notionみたいに書けて、ユーザーフレンドリーで素晴らしいOSSですよね。
これを使って機能提供したいけど、スモールスタートしたくて、ファイルアップロード系のMenuを消したなぁと思ったので、無理矢理やってみました
Sample
import { BlockNoteEditor, filterSuggestionItems } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import { BlockNoteView } from "@blocknote/mantine";
import "@blocknote/mantine/style.css";
import {
DefaultReactSuggestionItem,
getDefaultReactSlashMenuItems,
SuggestionMenuController,
useCreateBlockNote,
} from "@blocknote/react";
// defaultのSlashMenuItemsからMedia Groupに所属するものを排除します
const getCustomSlashMenuItems = (
editor: BlockNoteEditor,
): DefaultReactSuggestionItem[] =>
getDefaultReactSlashMenuItems(editor).filter(
(item) => item.group !== "Media",
);
export const Sample = () => {
const editor = useCreateBlockNote();
return (
<BlockNoteView editor={editor} theme="light" slashMenu={false}>
<SuggestionMenuController
triggerCharacter={"/"}
getItems={async (query) =>
filterSuggestionItems(getCustomSlashMenuItems(editor), query)
}
/>
</BlockNoteView>
)
};
デフォルトのItemsからMedia Groupを抜き、カスタマイズの設定しています。
他にいいやり方もなかったので、このような方法を無理矢理とっています。