ツールバーのカスタマイズ

このサンプルでは、組み込みのツールバー項目のカスタマイズとカスタムツールバー項目の追加を設定しています。
また、カスタムツールバー項目として太字のテキストを挿入する処理を追加しています。追加ボタンのデフォルト状態は無効で、コピーボタンを押下すると有効にすることを確認できます。

リッチテキストエディタ(GcRichTextEditor)コントロールは、組み込みのツールバーをカスタマイズすることや、カスタム項目を追加することができます。 ツールバー項目の設定 ツールバーに設定するツールバー項目を設定することができます。 例えば、ツールバーの fontsize 項目のドロップダウンリストに表示する項目をカスタマイズすることができます。 カスタムツールバー registerToolbarItem メソッドを使用して、ビルドイン以外のカスタム項目をツールバー項目に設定することができます。 カスタムツールバーは以下のプロパティを使用してカスタム項目を構成します。 プロパティ 説明 text カスタムツールバーボタンのテキストを設定する tooltip ツールチップの内容を設定する enabled デフォルト状態(有効または無効)を設定する onSetup ツールバーが初期化されたときの動作を設定する onAction カスタムツールバーボタンを押下するときの動作を設定する 次のサンプルコードは、太字のテキストを挿入するボタンをカスタムツールバー項目に登録する方法を示します。
import "@mescius/inputman.richtexteditor/CSS/gc.inputman.richtexteditor.css"; import { InputMan } from "@mescius/inputman.richtexteditor"; InputMan.appearanceStyle = InputMan.AppearanceStyle.Modern; const gcRichTextEditor = new InputMan.GcRichTextEditor( document.getElementById("gcRichTextEditor"), { watermarkText: "ここに入力してください...", toolbar: [ "customButton", InputMan.GcRichTextEditorToolbarItem.Copy, InputMan.GcRichTextEditorToolbarItem.FontSize, InputMan.GcRichTextEditorToolbarItem.FontFamily, InputMan.GcRichTextEditorToolbarItem.BackColor, InputMan.GcRichTextEditorToolbarItem.ForeColor, InputMan.GcRichTextEditorToolbarItem.LineHeight, InputMan.GcRichTextEditorToolbarItem.Indent, InputMan.GcRichTextEditorToolbarItem.Outdent, ], fontSizeList: ["8px", "12px", "16px"], fontFamilyList: [ { name: "Impact", value: "impact", }, { name: "Trebuchet MS", value: "trebuchet ms", options: ["geneva", "impact"], }, ], colorList: [ { title: "Red", color: "#FF0000", }, { title: "Green", color: "#00FF00", }, { title: "Blue", color: "#0000FF", }, ], lineHeight: ["3", "5", "10", "15", "20", "30", "40"], indentation: "100px", baseUrl: '$IMDEMOROOT$/lib/purejs/node_modules/@mescius/inputman.richtexteditor/JS', } ); gcRichTextEditor.registerToolbarItem("customButton", { text: "カスタムボタン", tooltip: "コピーボタンを押下してカスタムボタンを有効にする", enabled: false, onSetup: (enableConfig) => { gcRichTextEditor.addEventListener("copy", () => { enableConfig.setEnabled(true); }); }, onAction: () => gcRichTextEditor.insertContent(`<strong>こんにちは!</strong>`), });
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>リッチテキストエディタコントロール - ツールバー - ツールバーのカスタマイズ</title> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> window.onload = function() { System.import('./src/app'); } </script> </head> <body> <textarea id="gcRichTextEditor"></textarea> </body> </html>
System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/inputman': 'npm:@mescius/inputman/index.js', '@mescius/inputman/CSS': 'npm:@mescius/inputman/CSS', '@mescius/inputman.richtexteditor': 'npm:@mescius/inputman.richtexteditor/index.js', '@mescius/inputman.richtexteditor/CSS': 'npm:@mescius/inputman.richtexteditor/CSS', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, } });