React Navigation Drawer (ナビゲーション ドロワー) の概要
React Navigation Drawer は、コンテンツ内で展開または縮小されることができるサイド ナビゲーションを提供します。ミニ バージョンが閉じている場合もナビゲーションへのクイック アクセスを提供します。そのコンテンツは完全にカスタマイズ可能であると同時に、デフォルトのメニュー項目のスタイルも提供します。
React Navigation Drawer の例
このサンプルは、IgrNavDrawer
コンポーネントを作成する方法を示しています。
使用方法
まず、次のコマンドを実行して、対応する Ignite UI for React npm パッケージをインストールする必要があります:
npm install igniteui-react
次に、以下のように、IgrNavDrawer
とそれに必要な CSS をインポートし、そのモジュールを登録する必要があります:
import { IgrNavDrawerModule, IgrNavDrawer, IgrNavDrawerHeaderItem, IgrNavDrawerItem } from 'igniteui-react';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
IgrNavDrawerModule.register();
Ignite UI for React の完全な概要については、作業の開始トピックを参照してください。
Navigation Drawer 項目の追加
IgrNavDrawer
の使用を開始する最も簡単な方法は次のとおりです:
<IgrNavDrawer open={true}>
<IgrNavDrawerHeaderItem>
<span>Sample Drawer</span>
</IgrNavDrawerHeaderItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="home" collection="material" />
</div>
<span slot="content">Home</span>
</IgrNavDrawerItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="search" collection="material" />
</div>
<span slot="content">Search</span>
</IgrNavDrawerItem>
</IgrNavDrawer>
以下は結果です:
Navbar の統合
ドロワーには任意のコンテンツを提供できますが、IgrNavDrawerItem
が定義済みのスタイル設定を項目に適用します。
コンポーネントを少し強化するために、IgrNavbar
と組み合わせて使用できます。このようにして、より完成された外観を実現し、ドロワーの方法を使用できます。次の例でこれを見てみましょう:
<IgrNavbar>
<div slot="start">
<IgrIcon name="menu" collection="material"/>
</div>
<h2>Home</h2>
</IgrNavbar>
<IgrNavDrawer>
<IgrNavDrawerHeaderItem>
<span>Sample Drawer</span>
</IgrNavDrawerHeaderItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="home" collection="material" />
</div>
<span slot="content">Home</span>
</IgrNavDrawerItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="search" collection="material" />
</div>
<span slot="content">Search</span>
</IgrNavDrawerItem>
</IgrNavDrawer>
また、すべての position
の値を表示するためにいくつかのラジオ ボタンを追加しましょう。このように、1 つが選択されるたびに、ドロワーの位置を変更します。
<IgrRadioGroup alignment="horizontal">
<IgrRadio value="start" labelPosition="after" checked={true} change={this.onRadioChange}>
<span>Start</span>
</IgrRadio>
<IgrRadio value="end" labelPosition="after" change={this.onRadioChange}>
<span>End</span>
</IgrRadio>
<IgrRadio value="top" labelPosition="after" change={this.onRadioChange}>
<span>Top</span>
</IgrRadio>
<IgrRadio value="bottom" labelPosition="after" change={this.onRadioChange}>
<span>Bottom</span>
</IgrRadio>
</IgrRadioGroup>
<IgrNavDrawer position={this.state.drawerPosition} />
public onRadioChange(e: any) {
if (e.checked == true) {
this.setState({ drawerPosition: e.value });
}
}
そして最後に、Navigation Drawer を開閉する方法が必要です。これを実現するにはいくつかの方法がありますが、この例のために、次のことを行います:
public onMenuIconClick() {
if (this.navDrawerRef) {
this.navDrawerRef.show();
}
}
すべてがうまくいけば、コンポーネントは次のようになります:
ミニ バリアント
ミニ バリアントを使用する場合、Navigation Drawer を閉じる代わりに幅を変更します。アイコンだけを残して、いつでも利用できるクイック ナビゲーションを維持するために使用されます。これを実現するには、ドロワーの mini
スロットを設定するだけです。
<IgrNavDrawer>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="home" collection="material" />
</div>
<span slot="content">Home</span>
</IgrNavDrawerItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="search" collection="material"/>
</div>
<span slot="content">Search</span>
</IgrNavDrawerItem>
<div slot="mini">
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="home" collection="material"/>
</div>
</IgrNavDrawerItem>
<IgrNavDrawerItem>
<div slot="icon">
<IgrIcon name="search" collection="material" />
</div>
</IgrNavDrawerItem>
</div>
</IgrNavDrawer>
<IgrButton clicked={this.onButtonClick}>
<span>Toggle</span>
</IgrButton>
以下は結果です:
Navigation Drawer のスタイル設定
Navigation Drawer コンポーネントは、base
、main
、mini
など、いくつかの CSS パーツを公開します。Navigation Drawer Item コンポーネントは、base
、icon
、content
の 3 つの CSS パーツも公開し、スタイルを完全に制御できるようにします。
igc-nav-drawer::part(base) {
background: #2d313a;
}
igc-nav-drawer-item::part(base) {
color: #fff;
}
igc-nav-drawer-item::part(base):hover {
background-color: #3D4149;
}
igc-nav-drawer-item[active]::part(base) {
background: #f3c03e;
color: #2c2c2c
}
igc-nav-drawer-header-item {
color: #f3c03e
}
API リファレンス
IgrButton
IgrIcon
IgrNavDrawerHeaderItem
IgrNavDrawerItem
IgrNavDrawer
IgrNavbar
IgrRadioGroup
IgrRadio