Appearance
ツールバーのカスタマイズ
ここでは、以下の3つのカスタマイズ方法について説明します。
- アイテム(ボタンやドロップダウンリスト)の配置の変更
- アイテム毎のオプションの変更
- 新しいアイテムの追加
アイテムの配置の変更 (options.toolbar)
デフォルトで利用可能なアイテム
以下のアイテムがデフォルトで利用可能です。オプションを指定できるアイテムについては、オプションの内容も記載しています。
bold太字italic斜体underline下線strike取り消し線blockquote引用bulletList箇条書きorderedList番号付き箇条書きhorizontalRule水平罫線linkリンク- defaultTarget :
"_self" | "_blank" - リンクターゲットの既定値
- defaultTarget :
unlinkリンクを解除insertHtmlHTMLの挿入fileアセットの挿入image画像の挿入table表sourceHTML編集モードへの切り替えundo元に戻すredoやり直すforegroundColorテキストの色- presetColors :
string[] - カラーパレットに表示する色の配列 (例:
["#000000", "#ffffff", "#ff0000"])
- presetColors :
backgroundColorハイライトの色- presetColors :
string[] - カラーパレットに表示する色の配列 (例:
["#000000", "#ffffff", "#ff0000"])
- presetColors :
removeFormat書式をクリアalignLeft左揃えalignCenter中央揃えalignRight右揃えindentインデントを増やすoutdentインデントを減らすblock段落スタイルfullScreenフルスクリーンstructureHTML構造編集モードへの切り替え
エディタのオプションでの指定方法
アイテム名を、以下の構造を持つ4次元の配列で指定します。
- 行
- 左右の配置
- 最初の要素を左に配置、2番目の要素を右に配置
- グループ
- グループ毎に区切られて配置
- アイテム名
typescript
MTRichTextEditor.on("create", (options) => {
options.toolbar = [
[ // 1行目
[ // 左に配置
[ 'bold', 'italic', 'underline' ], // グループ1
[ 'strike' ], // グループ2
],
[ // 右に配置
[ 'undo', 'redo' ],
],
],
[ // 2行目
[
[ 'link', 'unlink' ],
[ 'insertHtml' ],
],
[
[ 'source' ],
],
],
];
});具体的な指定方法は以下のサンプルプラグインを参照してください。
アイテム毎のオプションの変更 (options.toolbarOptions)
エディタのオプションでの指定方法
アイテム名をキーとして、アイテム毎のオプションを指定します。
typescript
const colors = [
"#000000",
"#ffffff",
"#ff0000",
"#00ff00",
"#0000ff",
"#ffff00",
"#00ffff",
"#ff00ff",
];
MTRichTextEditor.on("create", (options) => {
options.toolbarOptions = {
link: {
defaultTarget: "_blank",
},
foregroundColor: {
presetColors: colors,
},
backgroundColor: {
presetColors: colors,
},
};
});false を指定するとアイテムを無効化することができます。
typescript
MTRichTextEditor.on("create", (options) => {
options.toolbarOptions = {
image: false,
};
});新しいアイテムの追加
ToolbarItemElementを拡張したクラスをカスタム要素として登録することで、ツールバーのアイテムとして指定できるようになります。
以下が簡単な実装例です。mt-rich-text-editor-toolbar-item-${itemName} という名前でカスタム要素を登録することで、itemName をアイテム名としてツールバーに指定できるようになります。
typescript
customElements.define(
"mt-rich-text-editor-toolbar-item-myitem",
class extends ToolbarItemElement {
constructor() {
super();
const button = document.createElement("button");
button.title = "My Item";
button.textContent = "My Item";
this.shadowRoot.appendChild(button);
}
connectedCallback() {
super.connectedCallback();
this.addEventListener("click", () => {
this.tiptap?.commands.insertContent("<p>Hello</p>");
});
}
}
);より実践的な実装例は以下のサンプルプラグインを参照してください。