SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(InputMan)(AD)

JavaScript入力コントロール「InputManJS」に待望のリッチテキストエディタが登場! Webフォームで差を付けよう

軽量で多機能なJavaScript入力コントロール「InputManJS」の紹介

  • このエントリーをはてなブックマークに追加

リッチテキストエディタをカスタマイズしよう

 InputManJSのリッチテキストエディタでは、オプション設定(リスト2(3)の部分)にさまざまなオプションを記述して、表示や動作をカスタマイズできます。以下では一例として、メニューバーとツールバー、コンテキストツールバーのカスタマイズを紹介します。

メニューバーのカスタマイズ

 リッチテキストエディタの最上部に表示されるメニューバーの表示内容を増やすほか、独自のメニューを配置する方法を、図2のサンプルで説明します。

図2 メニューバーをカスタマイズするサンプル(p002-menubar)
図2 メニューバーをカスタマイズするサンプル(p002-menubar)

 図2のメニューバーを表示するオプション設定は、リスト3の通りです。

[リスト3]図2のメニューバーを表示するオプション設定(p002-menubar/index.js)
{
  menubar: [ // メニューバーの指定 ...(1)
    GC.InputMan.GcRichTextEditorMenuBarItem.File,       // ファイル
    GC.InputMan.GcRichTextEditorMenuBarItem.Edit,       // 編集
(略)
    GC.InputMan.GcRichTextEditorMenuBarItem.Tools,      // ツール
    'custom' // 「カスタム」メニュー ...(1a)
  ],
  menu: { // メニューの指定 ...(2)
    custom: { // 「カスタム」メニューの定義 ...(2a)
      title: 'カスタム',
      items: [
        GC.InputMan.GcRichTextEditorMenuItem.Align,     // 配置
        GC.InputMan.GcRichTextEditorMenuItem.BackColor  // 背景色
      ]
    }
  },
  plugins: [ // プラグインの指定 ...(3)
    GC.InputMan.GcRichTextEditorPluginItem.Preview,   // 「表示」-「プレビュー」
    GC.InputMan.GcRichTextEditorPluginItem.Table,     // 「表」配下のメニュー
    GC.InputMan.GcRichTextEditorPluginItem.WordCount  // 「ツール」-「文字カウント」
  ]
}

 (1)のmenubarで、表示するメニューバーを指定します。InputManJSでは定義済みの定数のほか、カスタムメニュー(1a)も指定できます。カスタムメニューの内容を指定するのはmenu(2)で、(2a)でタイトル(title)とメニュー項目(items)を指定します。

 なお、リッチテキストエディタではいくつかの機能がプラグインで提供されており、メニュー内の機能がプラグインで有効にされていない場合はメニュー自体が表示されないため、plugins(3)にメニュー内の機能に対応するプラグインを指定して有効にします。

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

 メニューバーの下には、アイコンボタンが並ぶツールバーが表示されます。この表示内容をカスタマイズする方法を、図3のサンプルで説明します。

図3 ツールバーをカスタマイズするサンプル(p003-toolbar)
図3 ツールバーをカスタマイズするサンプル(p003-toolbar)

 図3のツールバーを表示するオプション設定は、リスト4の通りです。

[リスト4]図3のツールバーを表示するオプション設定(p003-toolbar/index.js)
{
  // 表示するツールバー項目 ...(1)
  toolbar: [
    GC.InputMan.GcRichTextEditorToolbarItem.FontFamily,    // フォント
    GC.InputMan.GcRichTextEditorToolbarItem.FontSize,      // フォントサイズ
(略)
    GC.InputMan.GcRichTextEditorToolbarItem.SeparateLine,  // 区切り線
    GC.InputMan.GcRichTextEditorToolbarItem.ForeColor,     // テキスト色
    GC.InputMan.GcRichTextEditorToolbarItem.BackColor,     // 背景色
    GC.InputMan.GcRichTextEditorToolbarItem.SeparateLine,  // 区切り線
(略)
  ],
  // 幅からあふれたツールバー項目の表示方法 ...(2)
  toolbarMode: GC.InputMan.GcRichTextEditorToolbarMode.Floating,
  // ツールバー項目を有効化するため、すべてのプラグインを有効化 ...(3)
  plugins: [GC.InputMan.GcRichTextEditorPluginItem.All]
}

 (1)のtoolbarで、表示するツールバー項目を指定します。「フォント」や「テキスト色」といった項目のほか、項目の間に区切り線を入れることもできます。toolbarMode(2)は、幅からあふれたツールバー項目の表示方法で、表1の値が指定可能です。

表1:toolbarModeに指定できる項目
No. 設定値 挙動
1 Floating

「...」ボタンを押すと、あふれたツールバーボタンがフローティング表示される

2 Sliding 「...」ボタンを押すと、ツールバー全体が縦にスライドして大きくなる
3 Scrolling ツールバーを左右にスクロールして表示する
4 Wrap あふれたツールバーボタンを2行目以降に折り返して表示する

 なお、メニューバーと同様に、プラグインで機能を有効にしないと対応するツールバー項目が表示されないため、(3)ですべてのプラグインを有効にしています。

コンテキストツールバーのカスタマイズ

 コンテキストツールバーとは、リッチテキストエディタのテキスト内に表示されるツールバーです。設定方法を図4のサンプルで説明します。

図4 コンテキストツールバーをカスタマイズするサンプル(p004-context-toolbar)
図4 コンテキストツールバーをカスタマイズするサンプル(p004-context-toolbar)

 図4のコンテキストツールバーを表示するオプション設定は、リスト5の通りです。

[リスト5]図4のコンテキストツールバーを表示するオプション設定(p004-context-toolbar/index.js)
{
  setup: (editor) => {
    // コンテキストツールバーを設定 ...(1)
    editor.addContextToolbar('textSelection', {
      // 選択時にツールバーを表示する指定 ...(2)
      predicate: (node) => editor.getSelection(),
      items: [ // ツールバーに表示する項目 ...(3)
        GC.InputMan.GcRichTextEditorToolbarItem.Bold,   // 太字
        GC.InputMan.GcRichTextEditorToolbarItem.Italic  // 斜体
      ],
      position: 'selection' // ツールバーの表示位置 ...(4)
    });
  }
}

 リッチテキストエディタのsetupコールバック内において、addContextToolbarメソッド(1)でコンテキストツールバーを設定します。(2)のpredicateはツールバーを表示するかどうかを指定するプロパティで、editor.getSelection()メソッドの戻り値を指定することで、選択時にツールバーを表示するようにしています。(3)はツールバーに表示する項目の指定です。(4)はツールバーの表示位置で、表2の設定値が指定できます。

表2:positionに指定できる項目
No. 設定値 挙動
1 selection

選択範囲の上下または中央に表示

2 line 選択範囲の左右に表示
3 node ノード(テーブルや画像など)の上下に表示

次のページ
リッチテキストエディタに機能を追加するさまざまなプラグイン

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(InputMan)連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:グレープシティ株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18233 2023/09/27 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング