Ignite UI for Blazor が提供するツリーグリッドコンポーネント、IgbTreeGrid には、下図のように、各行の展開状態を示す「展開インジケーター」がアイコン表示されています。

この展開インジケーターに表示される要素は、以下のように JavaScript プログラムを組み合わせることでカスタマイズできます。

まずは以下の例のような JavaScript プログラムを記述し、ファイル (.js) に保存、その JavaScript ファイルを、wwwroot/index.html などのフォールバックページから script 要素で読み込んでおきます。

(() => {
    // アイコン表示要素を組み立てて返す関数です。
    // 引数に、アイコン名を取ります。
    const createIconElement = (iconName) => {
        const div = document.createElement("igx-icon");
        div.classList.add("material-icons");
        div.classList.add("igx-icon");
        div.textContent = iconName;
        div.style.pointerEvents = "none";
        return div;
    }

    // 折り畳まれている行に表示するアイコン要素を返す関数を、
    // "rowCollapsedIndicator" という名前で Ignite UI for Blazor に登録します。
    igRegisterScript("rowCollapsedIndicator", 
        () => createIconElement("add_circle"), false);

    // 展開されている行に表示するアイコン要素を返す関数を、
    // "rowExpandedIndicator" という名前で Ignite UI for Blazor に登録します。
    igRegisterScript("rowExpandedIndicator", 
        () => createIconElement("do_not_disturb_on"), false);
})();

その上で、上記 JavaScript で登録しておいた展開インジケーター表示要素を返す各スクリプトのスクリプト名を、IgbTreeGrid の RowCollapsedIndicatorTemplateScript および RowExpandedIndicatorTemplateScript パラメーターに指定します (下記はその例)。

...
<IgbTreeGrid ...
  RowCollapsedIndicatorTemplateScript="rowCollapsedIndicator"
  RowExpandedIndicatorTemplateScript="rowExpandedIndicator">
  ...
</IgbTreeGrid>

以上の実装を施すことで、展開インジケーターを描画する際には、こうして登録しておいた JavaScript プログラムが呼び出され、その JavaScript プログラムによって構築・返された要素が展開インジケーターとして表示されるようになります (下図は上記実装例を実行した様子)。

なお、登録したスクリプトでは、上記例にあるような igx-icon 要素に限らず、要件にあわせて任意の要素を構築して返すことができます。ただし、展開インジケーターのクリックによる開閉動作を阻止しないよう、このカスタマイズ用のスクリプトから返す要素では、pointer-events CSS プロパティを “none” に設定する必要があります。

実際の動作サンプルはこちらで確認できます。

Tagged:

製品について

Ignite UI for Blazor