Blazor Navigation Drawer (ナビゲーション ドロワー) の概要
Blazor Navigation Drawer は、コンテンツ内で展開または縮小されることができるサイド ナビゲーションを提供します。ミニ バージョンが閉じている場合もナビゲーションへのクイック アクセスを提供します。そのコンテンツは完全にカスタマイズ可能であると同時に、デフォルトのメニュー項目のスタイルも提供します。
Blazor Navigation Drawer の例
このサンプルは、IgbNavDrawer
コンポーネントを作成する方法を示しています。
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbNavDrawerModule),
typeof (IgbNavDrawerHeaderItemModule),
typeof (IgbIconModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<style >
igc-icon -button ::part (base):hover {
background-color : lightgray;
}
.container {
padding : 16px ;
}
</style >
<div class ="container vertical" >
<IgbIconButton @ref ="MenuIconButton" @onclick ="ToggleNavDrawer" IconName ="menu" Collection ="material" Variant ="@ IconButtonVariant.Flat " />
<IgbNavDrawer Open ="true" @ref ="NavDrawerRef" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem @ref ="HomeItemRef" @onclick ="(args) => NavDrawerItemClick(args, HomeItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="home" Collection ="material" > </IgbIcon >
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchItemRef" @onclick ="(args) => NavDrawerItemClick(args, SearchItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="search" Collection ="material" > </IgbIcon >
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
</div >
@code {
public IgbIconButton MenuIconButton { get ; set ; }
public IgbIcon IconRef { get ; set ; }
public IgbNavDrawer NavDrawerRef { get ; set ; }
public IgbNavDrawerItem HomeItemRef { get ; set ; }
public IgbNavDrawerItem SearchItemRef { get ; set ; }
public List <IgbNavDrawerItem > NavDrawerItemRefs { get ; set ; }
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .MenuIconButton != null )
{
await this .MenuIconButton.EnsureReady();
await this .MenuIconButton.RegisterIconAsync("menu" , "https://unpkg.com/material-design-icons@3.0.1/navigation/svg/production/ic_menu_24px.svg" , "material" );
}
if (firstRender && this .IconRef != null )
{
await this .IconRef.EnsureReady();
await this .IconRef.RegisterIconAsync("home" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_home_24px.svg" , "material" );
await this .IconRef.RegisterIconAsync("search" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_search_24px.svg" , "material" );
}
if (firstRender)
{
NavDrawerItemRefs = new List<IgbNavDrawerItem>();
await this .HomeItemRef.EnsureReady();
NavDrawerItemRefs.Add(HomeItemRef);
await this .SearchItemRef.EnsureReady();
NavDrawerItemRefs.Add(SearchItemRef);
}
}
public void ToggleNavDrawer (MouseEventArgs args )
{
NavDrawerRef.Toggle();
}
public void NavDrawerItemClick (MouseEventArgs args, IgbNavDrawerItem item )
{
item.Active = true ;
foreach (IgbNavDrawerItem i in NavDrawerItemRefs)
{
if (i != item)
{
i.Active = false ;
}
}
}
}
razor コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Blazorツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
使用方法
IgbNavDrawer
を使用する前に、次のように登録する必要があります。
// in Program.cs file
builder.Services.AddIgniteUIBlazor(
typeof(IgbNavDrawerModule),
typeof(IgbNavDrawerHeaderItemModule)
);
razor
また、追加の CSS ファイルをリンクして、スタイルを IgbNavDrawer
コンポーネントに適用する必要があります。以下は、Blazor Web Assembly プロジェクトの wwwroot/index.html ファイルまたは Blazor Server プロジェクトの Pages/_Host.cshtml ファイルに配置する必要があります:
<link href ="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel ="stylesheet" />
razor
Ignite UI for Blazor の完全な概要については、作業の開始 トピックを参照してください。
Navigation Drawer 項目の追加
IgbNavDrawer
の使用を開始する最も簡単な方法は次のとおりです:
<IgbNavDrawer Open ="true" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem >
<IgbIcon @ref ="@ HomeIcon " slot ="icon" IconName ="home" Collection ="material" > </IgbIcon >
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem >
<IgbIcon @ref ="@ SearchIcon " slot ="icon" IconName ="search" Collection ="material" > </IgbIcon >
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
razor
以下は結果です:
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbNavDrawerModule),
typeof (IgbNavDrawerHeaderItemModule),
typeof (IgbIconModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<style >
igc-icon -button ::part (base):hover {
background-color : lightgray;
}
.container {
padding : 16px ;
}
</style >
<div class ="container vertical" >
<IgbIconButton @ref ="MenuIconButton" @onclick ="ToggleNavDrawer" IconName ="menu" Collection ="material" Variant ="@ IconButtonVariant.Flat " />
<IgbNavDrawer Open ="true" @ref ="NavDrawerRef" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem @ref ="HomeItemRef" @onclick ="(args) => NavDrawerItemClick(args, HomeItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="home" Collection ="material" > </IgbIcon >
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchItemRef" @onclick ="(args) => NavDrawerItemClick(args, SearchItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="search" Collection ="material" > </IgbIcon >
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
</div >
@code {
public IgbIconButton MenuIconButton { get ; set ; }
public IgbIcon IconRef { get ; set ; }
public IgbNavDrawer NavDrawerRef { get ; set ; }
public IgbNavDrawerItem HomeItemRef { get ; set ; }
public IgbNavDrawerItem SearchItemRef { get ; set ; }
public List <IgbNavDrawerItem > NavDrawerItemRefs { get ; set ; }
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .MenuIconButton != null )
{
await this .MenuIconButton.EnsureReady();
await this .MenuIconButton.RegisterIconAsync("menu" , "https://unpkg.com/material-design-icons@3.0.1/navigation/svg/production/ic_menu_24px.svg" , "material" );
}
if (firstRender && this .IconRef != null )
{
await this .IconRef.EnsureReady();
await this .IconRef.RegisterIconAsync("home" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_home_24px.svg" , "material" );
await this .IconRef.RegisterIconAsync("search" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_search_24px.svg" , "material" );
}
if (firstRender)
{
NavDrawerItemRefs = new List<IgbNavDrawerItem>();
await this .HomeItemRef.EnsureReady();
NavDrawerItemRefs.Add(HomeItemRef);
await this .SearchItemRef.EnsureReady();
NavDrawerItemRefs.Add(SearchItemRef);
}
}
public void ToggleNavDrawer (MouseEventArgs args )
{
NavDrawerRef.Toggle();
}
public void NavDrawerItemClick (MouseEventArgs args, IgbNavDrawerItem item )
{
item.Active = true ;
foreach (IgbNavDrawerItem i in NavDrawerItemRefs)
{
if (i != item)
{
i.Active = false ;
}
}
}
}
razor コピー
Navbar の統合
ドロワーには任意のコンテンツを提供できますが、IgbNavDrawerItem
が定義済みのスタイル設定を項目に適用します。
コンポーネントを少し強化するために、IgbNavbar
と組み合わせて使用できます。このようにして、より完成された外観を実現し、ドロワーの方法を使用できます。次の例でこれを見てみましょう:
<IgbNavbar >
<IgbIcon slot ="start" IconName ="menu" Collection ="material" />
<h2 > Home</h2 >
</IgbNavbar >
<IgbNavDrawer @ref ="NavDrawerRef" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem >
<IgbIcon slot ="icon" IconName ="home" Collection ="material" />
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem >
<IgbIcon slot ="icon" IconName ="search" Collection ="material" @onclick ="OnMenuIconClick" />
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
razor
また、すべての position
の値を表示するためにいくつかのラジオ ボタンを追加しましょう。このように、1 つが選択されるたびに、ドロワーの位置を変更します。
<IgbRadioGroup id ="radio-group" Alignment ="RadioGroupAlignment.Horizontal" >
<IgbRadio Value ="Start" LabelPosition ="RadioLabelPosition.After" Checked ="true" Change ="OnRadioOptionClick" > Start</IgbRadio >
<IgbRadio Value ="End" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > End</IgbRadio >
<IgbRadio Value ="Top" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > Top</IgbRadio >
<IgbRadio Value ="Bottom" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > Bottom</IgbRadio >
</IgbRadioGroup >
@code {
public IgbNavDrawer NavDrawerRef { get ; set ; }
public void OnRadioOptionClick (IgbComponentBoolValueChangedEventArgs args )
{
IgbRadio radio = args.Parent as IgbRadio;
if (this .NavDrawerRef != null )
{
switch (radio.Value)
{
case "Start" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Start;
break ;
}
case "End" :
{
this .NavDrawerRef.Position = NavDrawerPosition.End;
break ;
}
case "Top" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Top;
break ;
}
case "Bottom" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Bottom;
break ;
}
}
}
}
}
razor
そして最後に、Navigation Drawer を開閉する方法が必要です。これを実現するにはいくつかの方法がありますが、この例のために、次のことを行います:
public void OnMenuIconClick()
{
if (this.NavDrawerRef != null)
{
this.NavDrawerRef.Show();
}
}
razor
すべてがうまくいけば、コンポーネントは次のようになります:
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbNavbarModule),
typeof (IgbNavDrawerModule),
typeof (IgbNavDrawerHeaderItemModule),
typeof (IgbNavDrawerItemModule),
typeof (IgbIconModule),
typeof (IgbRadioGroupModule),
typeof (IgbRadioModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<div class ="container vertical" >
<IgbNavDrawer @ref ="@ NavDrawerRef " style ="position: relative" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem @ref ="HomeItemRef" @onclick ="(args) => NavDrawerItemClick(args, HomeItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="home" Collection ="material" />
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchItemRef" @onclick ="(args) => NavDrawerItemClick(args, SearchItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" IconName ="search" Collection ="material" />
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
<div id ="content" style ="width: 100%" >
<IgbRadioGroup id ="radio-group" Alignment ="RadioGroupAlignment.Horizontal" >
<IgbRadio name ="position" Value ="Start" LabelPosition ="RadioLabelPosition.After" Checked ="true" Change ="OnRadioOptionClick" > Start</IgbRadio >
<IgbRadio name ="position" Value ="End" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > End</IgbRadio >
<IgbRadio name ="position" Value ="Top" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > Top</IgbRadio >
<IgbRadio name ="position" Value ="Bottom" LabelPosition ="RadioLabelPosition.After" Change ="OnRadioOptionClick" > Bottom</IgbRadio >
</IgbRadioGroup >
<IgbNavbar >
<IgbIcon @ref ="@ IconRef " slot ="start" IconName ="menu" Collection ="material" @onclick ="OnMenuIconClick" />
<h2 > @ Title </h2 >
</IgbNavbar >
</div >
</div >
@code {
public IgbIcon IconRef { get ; set ; }
public IgbNavDrawer NavDrawerRef { get ; set ; }
public IgbNavDrawerItem HomeItemRef { get ; set ; }
public IgbNavDrawerItem SearchItemRef { get ; set ; }
public Dictionary <string, IgbNavDrawerItem > NavDrawerTitlesItemRefs { get ; set ; }
public string Title { get ; set ; } = "Home" ;
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .IconRef != null )
{
await this .IconRef.EnsureReady();
await this .IconRef.RegisterIconAsync("menu" , "https://unpkg.com/material-design-icons@3.0.1/navigation/svg/production/ic_menu_24px.svg" , "material" );
await this .IconRef.RegisterIconAsync("home" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_home_24px.svg" , "material" );
await this .IconRef.RegisterIconAsync("search" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_search_24px.svg" , "material" );
}
if (firstRender)
{
NavDrawerTitlesItemRefs = new Dictionary<string , IgbNavDrawerItem>();
await this .HomeItemRef.EnsureReady();
NavDrawerTitlesItemRefs.Add("Home" , HomeItemRef);
HomeItemRef.Active = true ;
await this .SearchItemRef.EnsureReady();
NavDrawerTitlesItemRefs.Add("Search" , SearchItemRef);
}
}
public void OnRadioOptionClick (IgbRadioChangeEventArgs args )
{
IgbRadio radio = args.Parent as IgbRadio;
if (this .NavDrawerRef != null )
{
switch (radio.Value)
{
case "Start" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Start;
break ;
}
case "End" :
{
this .NavDrawerRef.Position = NavDrawerPosition.End;
break ;
}
case "Top" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Top;
break ;
}
case "Bottom" :
{
this .NavDrawerRef.Position = NavDrawerPosition.Bottom;
break ;
}
}
}
}
public void OnMenuIconClick ( )
{
if (this .NavDrawerRef != null )
{
this .NavDrawerRef.Show();
}
}
public void NavDrawerItemClick (MouseEventArgs args, IgbNavDrawerItem item )
{
item.Active = true ;
Title = NavDrawerTitlesItemRefs.Where(pair => pair.Value == item).Select(pair => pair.Key).ToList()[0 ];
foreach (IgbNavDrawerItem i in NavDrawerTitlesItemRefs.Values)
{
if (i != item)
{
i.Active = false ;
}
}
}
}
razor コピー
ミニ バリアント
ミニ バリアントを使用する場合、Navigation Drawer を閉じる代わりに幅を変更します。アイコンだけを残して、いつでも利用できるクイック ナビゲーションを維持するために使用されます。これを実現するには、ドロワーの mini
スロットを設定するだけです。
<IgbNavDrawer @ref ="@ NavDrawerRef " Open ="true" style ="position: relative" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem >
<IgbIcon @ref ="@ HomeIcon " slot ="icon" Collection ="material" IconName ="home" />
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem >
<IgbIcon @ref ="@ SearchIcon " slot ="icon" Collection ="material" IconName ="search" />
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
<div slot ="mini" >
<IgbNavDrawerItem >
<IgbIcon slot ="icon" Collection ="material" IconName ="home" />
</IgbNavDrawerItem >
<IgbNavDrawerItem >
<IgbIcon slot ="icon" Collection ="material" IconName ="search" />
</IgbNavDrawerItem >
</div >
</IgbNavDrawer >
razor
以下は結果です:
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbNavDrawerModule),
typeof (IgbNavDrawerHeaderItemModule),
typeof (IgbNavDrawerItemModule),
typeof (IgbIconModule),
typeof (IgbButtonModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<style >
.container {
padding : 16px ;
}
</style >
<div class ="container vertical" >
<div id ="nav-drawer-container" style ="display: flex;" >
<IgbNavDrawer @ref ="@ NavDrawerRef " Open ="true" style ="position: relative" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem @ref ="HomeItemRef" @onclick ='(args) => NavDrawerItemClick(args, "home")' >
<IgbIcon @ref ="@ IconRef " slot ="icon" Collection ="material" IconName ="home" />
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchItemRef" @onclick ='(args) => NavDrawerItemClick(args, "search")' >
<IgbIcon @ref ="@ IconRef " slot ="icon" Collection ="material" IconName ="search" />
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
<div slot ="mini" >
<IgbNavDrawerItem @ref ="HomeMiniRef" @onclick ='(args) => NavDrawerItemClick(args, "home")' >
<IgbIcon slot ="icon" Collection ="material" IconName ="home" />
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchMiniRef" @onclick ='(args) => NavDrawerItemClick(args, "search")' >
<IgbIcon slot ="icon" Collection ="material" IconName ="search" />
</IgbNavDrawerItem >
</div >
</IgbNavDrawer >
<div id ="content" style ="width: 100%" >
<IgbButton id ="toggleBtn" style ="margin-left: 50px;" @onclick ="OnButtonClick" > Toggle</IgbButton >
</div >
</div >
</div >
@code {
public IgbIcon IconRef { get ; set ; }
public IgbNavDrawer NavDrawerRef { get ; set ; }
public IgbNavDrawerItem HomeItemRef { get ; set ; }
public IgbNavDrawerItem HomeMiniRef { get ; set ; }
public IgbNavDrawerItem SearchItemRef { get ; set ; }
public IgbNavDrawerItem SearchMiniRef { get ; set ; }
public Dictionary <IgbNavDrawerItem, string > NavDrawerItemsIcons { get ; set ; }
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .IconRef != null )
{
await this .IconRef.EnsureReady();
await this .IconRef.RegisterIconAsync("home" ,
"https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_home_24px.svg" ,
"material" );
await this .IconRef.RegisterIconAsync("search" ,
"https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_search_24px.svg" ,
"material" );
}
if (firstRender)
{
NavDrawerItemsIcons = new Dictionary<IgbNavDrawerItem, string >();
await this .HomeItemRef.EnsureReady();
await this .HomeMiniRef.EnsureReady();
NavDrawerItemsIcons.Add(HomeItemRef, "home" );
NavDrawerItemsIcons.Add(HomeMiniRef, "home" );
await this .SearchItemRef.EnsureReady();
await this .SearchMiniRef.EnsureReady();
NavDrawerItemsIcons.Add(SearchItemRef, "search" );
NavDrawerItemsIcons.Add(SearchMiniRef, "search" );
}
}
public void OnButtonClick ( )
{
this .NavDrawerRef.Toggle();
}
public void NavDrawerItemClick (MouseEventArgs args, string icon )
{
IEnumerable<IgbNavDrawerItem> itemsToBeActive = NavDrawerItemsIcons
.Where(pair => pair.Value == icon)
.Select(pair => pair.Key);
foreach (IgbNavDrawerItem item in itemsToBeActive)
{
item.Active = true ;
}
IEnumerable<IgbNavDrawerItem> itemsToBeInactive = NavDrawerItemsIcons
.Where(pair => pair.Value != icon)
.Select(pair => pair.Key);
foreach (IgbNavDrawerItem item in itemsToBeInactive)
{
item.Active = false ;
}
}
}
razor コピー
スタイル設定
Navigation Drawer コンポーネントは、base
、main
、mini
など、いくつかの CSS パーツも公開し、スタイルを完全に制御できるようにします。
igc-nav -drawer::part (base) {
background : var(--ig-secondary-500 );
}
igc-nav -drawer-item::part (base) {
color : var(--ig-secondary-500 -contrast);
}
igc-nav -drawer-item::part (base):hover {
background-color : var(--ig-gray-800 );
}
igc-nav -drawer-item[active] ::part (base) {
background : var(--ig-warn-500 );
color : var(--ig-warn-500 -contrast);
}
igc-nav -drawer-header -item {
color : var(--ig-warn-500 );
}
scss
EXAMPLE
MODULES
RAZOR
drawer-styling.css
index.css
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbNavDrawerModule),
typeof (IgbNavDrawerItemModule),
typeof (IgbNavDrawerHeaderItemModule),
typeof (IgbIconModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<style >
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
}
</style >
<div class ="container vertical" >
<div id ="root" style ="display: flex;" >
<style >
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
}
igc-icon -button ::part (icon ) {
--size: 32px ;
color : #f3c03e
}
igc-icon -button ::part (base) {
background-color : #2c2c2c ;
}
igc-icon -button ::part (base):hover {
background-color : #3D4149 ;
}
.container {
padding : 16px ;
}
</style >
<IgbIconButton @ref ="MenuIconButton" @onclick ="ToggleNavDrawer" IconName ="menu" Collection ="material" Variant ="@ IconButtonVariant.Flat " />
<IgbNavDrawer @ref ="NavDrawerRef" id ="navDrawer" Open ="true" style ="position: relative" >
<IgbNavDrawerHeaderItem >
Sample Drawer
</IgbNavDrawerHeaderItem >
<IgbNavDrawerItem @ref ="HomeItemRef" @onclick ="(args) => NavDrawerItemClick(args, HomeItemRef)" >
<IgbIcon @ref ="@ IconRef " slot ="icon" Collection ="material" IconName ="home" />
<span slot ="content" > Home</span >
</IgbNavDrawerItem >
<IgbNavDrawerItem @ref ="SearchItemRef" @onclick ="(args) => NavDrawerItemClick(args, SearchItemRef)" >
<IgbIcon @ref ="IconRef" slot ="icon" Collection ="material" IconName ="search" />
<span slot ="content" > Search</span >
</IgbNavDrawerItem >
</IgbNavDrawer >
</div >
</div >
@code {
public IgbIconButton MenuIconButton { get ; set ; }
public IgbIcon IconRef { get ; set ; }
public IgbNavDrawer NavDrawerRef { get ; set ; }
public IgbNavDrawerItem HomeItemRef { get ; set ; }
public IgbNavDrawerItem SearchItemRef { get ; set ; }
public List <IgbNavDrawerItem > NavDrawerItemRefs { get ; set ; }
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .MenuIconButton != null )
{
await this .MenuIconButton.EnsureReady();
await this .MenuIconButton.RegisterIconAsync("menu" , "https://unpkg.com/material-design-icons@3.0.1/navigation/svg/production/ic_menu_24px.svg" , "material" );
}
if (firstRender && this .IconRef != null )
{
await this .IconRef.EnsureReady();
await this .IconRef.RegisterIconAsync("home" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_home_24px.svg" , "material" );
await this .IconRef.RegisterIconAsync("search" , "https://unpkg.com/material-design-icons@3.0.1/action/svg/production/ic_search_24px.svg" , "material" );
}
if (firstRender)
{
NavDrawerItemRefs = new List<IgbNavDrawerItem>();
await this .HomeItemRef.EnsureReady();
NavDrawerItemRefs.Add(HomeItemRef);
await this .SearchItemRef.EnsureReady();
NavDrawerItemRefs.Add(SearchItemRef);
}
}
public void ToggleNavDrawer (MouseEventArgs args )
{
NavDrawerRef.Toggle();
}
public void NavDrawerItemClick (MouseEventArgs args, IgbNavDrawerItem item )
{
item.Active = true ;
foreach (IgbNavDrawerItem i in NavDrawerItemRefs)
{
if (i != item)
{
i.Active = false ;
}
}
}
}
razor コピー 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
}
css コピー
API リファレンス
その他のリソース