Blazor Stepper (ステッパー) の概要
Blazor ステッパー コンポーネントは、ウィザードのようなワークフローを提供し、番号付きのステップの進行状況を示すために使用されます。これにより、開発者は長いコンテンツを一連の論理的なステップに分割できるため、エンド ユーザーはプロセス全体をより簡単にナビゲートできます。Blazor ステッパーは、垂直または水平な線で表示されます。Blazor ステッパーには、ステップの検証、スタイル設定、向き、キーボード ナビゲーションなどの複数の機能があります。
Blazor ステッパーの例
次の Ignite UI for Blazor ステッパーの例は、動作中のコンポーネントを示しています。これは、エンドユーザーが注文の詳細を構成するために通過しなければならないプロセスを、いくつかの連続したステップに従って視覚化します。
Blazor ステッパーを使用した作業の開始
// in Program.cs file
builder.Services.AddIgniteUIBlazor(
    typeof(IgbStepperModule)
);
また、追加の CSS ファイルをリンクして、スタイルを IgbStepper コンポーネントに適用する必要があります。以下は、Blazor WebAssembly プロジェクトの wwwroot/index.html ファイルまたは Blazor Server プロジェクトの Pages/_Host.cshtml ファイルに配置する必要があります:
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
これで、Blazor IgbStepper とそのパネルの基本構成から始めることができます。
Blazor ステッパーの使用方法
IgbStep は、IgbStepper に属するすべてのステップの表現です。ステップは Invalid、Active、Optional、Disabled、Complete プロパティを提供し、ビジネス要件に応じてステップの状態を構成できます。
Blazor ステッパーの宣言
ステップは、以下の方法のいずれかを使用して宣言できます。
- データセットの繰り返し
 
<IgbStepper>
    @foreach (var item in this.StepsData)
    {
        <IgbStep Disabled="@item.Disabled">
          <p slot="title">@item.Title</p>
        </IgbStep>
    }
</IgbStepper>
- 静的ステップの作成
 
<IgbStepper>
    <IgbStep>
       <p slot="title">Step 1</p>
    </IgbStep>
     <IgbStep>
       <p slot="title">Step 2</p>
    </IgbStep>
</IgbStepper>
各ステップで、Indicator、Title、および Subtitle スロットを使用してインジケーター、タイトル、およびサブタイトルを構成できます。
[!Note]
DefaultのIgbStepスロットは、ステップのコンテンツを描画します。
<IgbStepper>
    <IgbStep>
       <IgbIcon slot="indicator" IconName="home" Collection="material" />
       <p slot="title">Home</p>
       <p slot="subtitle">Home Sub Title</p>
       <div>
          Step Content
          ...
       </div>
    </IgbStep>
</IgbStepper>
Blazor ステッパーの向きの変更
公開された Orientation プロパティでステッパーの向きをカスタマイズできます。horizontal (デフォルト値) また vertical に設定できます。
水平方向の Blazor ステッパー
IgbStepper の orientation プロパティのデフォルト値は horizontal です。
Blazor ステッパーが水平方向の場合、ステップのコンテンツをステップのヘッダーの上または下に表示するかどうかを決定できます。これは、IgbStepper の ContentTop ブール型プロパティを設定することで実現できます。デフォルト値は false です。有効な場合、ステップのコンテンツはステップのヘッダーの上に表示されます。
垂直方向の Blazor ステッパー
水平レイアウトから垂直レイアウトに簡単に切り替えることができます。デフォルトの方向を変更するには、Orientation プロパティを vertical に設定します。
以下のサンプルは、実行時にステッパーの向きとタイトルの位置を変更する方法を示しています。
ステップ状態
Blazor IgbStepper は 5 つのステップ状態をサポートし、それぞれがデフォルトで異なるスタイルを適用します。
- active - ステップが現在表示されているかどうかを決定します。設計上、ユーザーが明示的にステップの active 属性を true に設定しない場合、最初の有効なステップがアクティブになります。
 - disabled - ステップが操作可能かどうかを決定します。デフォルトでは、ステップの disabled 属性は false に設定されています。
 - invalid - ステップが有効かどうかを決定します。その値に基づいて、ユーザーがリニア ステッパー モードで前に進むことができるかどうかが決定されます。デフォルト値は false です。
 - optional - デフォルトで、ステップの optional 属性は false に設定されます。リニア ステッパーのステップの有効性が必要ない場合、オプションの属性を有効にして、ステップの有効性とは関係なく前進できます。
 - complete - デフォルトでは、ステップの complete 属性は false を返します。ユーザーは、complete 属性を必要に応じて設定することにより、このデフォルトの complete 動作をオーバーライドできます。ステップが complete (完了済み) としてマークされると、ステップ ヘッダーのスタイルがデフォルトで変更されるだけでなく、完了したステップと次のステップの間の進捗線のスタイルも変更されます。
 
リニア Blazor ステッパー
Blazor IgbStepper は、Linear プロパティを使用してステップ フローを設定できます。デフォルトで、linear は false に設定され、ユーザーは IgbStepper で無効にされていないステップを選択できます。
<IgbStepper Linear="true">
    <IgbStep>
       <p slot="title">Step 1</p>
    </IgbStep>
     <IgbStep>
       <p slot="title">Step 2</p>
    </IgbStep>
</IgbStepper>
linear プロパティが true に設定されている場合、ステッパーは次のステップに進む前に現在のオプションではないステップを有効にする必要があります。
現在のオプションではないステップが有効でない場合、現在のステップを検証するまで次のステップに進むことができません。
[!Note] オプションのステップの有効性は考慮されません。
ステップ操作
IgbStepper は、ステップ操作に以下の API メソッドを提供します。
- navigateTo – 指定したインデックスでステップをアクティブ化します。
 - next - 次の無効化されていないステップをアクティブ化します。
 - prev – 前の無効化されていないステップをアクティブ化します。
 - reset – ステッパーを初期状態にリセットします。
 
[!Note] reset メソッドは、ステッパーを初期状態にリセットします。つまり、最初のステップをアクティブにします。reset メソッドはステップの内容をクリアしません。これは手動で行う必要があります。
ステップのカスタマイズ
Ignite UI for Blazor ステッパーでは、タイトル、インジケーターなどのさまざまなオプションを構成できます。
これは、IgbStepper の StepType プロパティで実現できます。プロパティは以下の値を含みます:
- Full (フル、デフォルト値)
 - Indicator (インジケーター)
 - Title (タイトル)
 
Full (フル)
タイトルとサブタイトルが定義されている場合、この設定ではインジケーターとタイトルの両方が描画されます。
また、ユーザーはステップのタイトルの位置を定義できるため、ステップ インジケーターの前、後、上、または下に配置できます。
ユーザーは TitlePosition プロパティを使用してタイトル位置を構成できます。プロパティは以下の値を含みます:
- undefined (デフォルト値)
 - end
 - start
 - bottom
 - top
 
Blazor IgbStepper が水平方向で、タイトルの位置が定義されていない場合、タイトルはインジケーターの下に表示されます。
向きが垂直に設定され、タイトルの位置が定義されていない場合、タイトルはインジケーターの後に表示されます。
[!Note] titlePosition プロパティは、ステッパーの stepType プロパティが full に設定されている場合にのみ適用できます。
Indicator (インジケーター)
ステップのインジケーターのみを表示する場合は、stepType オプションを indicator に設定します。
ステップ インジケーターはすべてのコンテンツをサポートしますが、サイズが常に 24 ピクセルになるという制限があります。この点に注意して、ステップ インジケーターとして IgbIcon または IgbAvatar を使用することをお勧めします。
Title (タイトル)
ステップのタイトルのみを表示する場合は、stepType オプションを title に設定します。
このように、サブタイトルが定義されている場合、それらもステップ タイトルの下に描画されます。
[!Note] このコンテナーは、サイズ制限なしで要件に応じて再テンプレート化できます。たとえば、サイズが 24 ピクセルより大きいインジケーターを中に追加できます。
以下のサンプルは公開されたすべてのステップ タイプと変更方法を示しています。
Stepper のアニメーション
Blazor の IgbStepper のアニメーションにより、エンドユーザーは、定義されたステップを操作しているときに美しいユーザー操作体験を得ることができます。使用可能なアニメーション オプションは、ステッパーの向きによって異なります。
ステッパーが水平方向の場合、デフォルトでは slide アニメーションを使用するように設定されています。その他に fade アニメーションもサポートされます。アニメーションは、HorizontalAnimation 入力を介して構成されます。
垂直方向のレイアウトでは、アニメーション タイプは VerticalAnimation プロパティを使用して定義できます。デフォルトでは、その値は grow に設定されており、ユーザーはそれを fade に設定することもできます。
両方のアニメーション タイプ入力に none を設定すると、ステッパー アニメーションが無効になります。
IgbStepper コンポーネントを使用すると、ステップ間の遷移にかかる時間を設定することもできます。これは、数値を受け取る animationDuration プロパティで設定でき、いずれのレイアウト方向でも共通の設定です。デフォルト値は 320ms に設定されています。
キーボード ナビゲーション
Ignite UI for Blazor ステッパーは、さまざまなキーボード操作をエンドユーザーに提供します。この機能はデフォルトで有効になっており、エンドユーザーは簡単にステップを移動できます。
Blazor IgbStepper ナビゲーションは W3 アクセシビリティ標準に準拠しており、便利に使用できます。
キーの組み合わせ
- TAB - 次の移動可能な要素にフォーカスを移動します。
 - SHIFT + TAB - 前移動可能な要素にフォーカスを移動します。
 - ↓ - ステッパーが垂直方向の場合、次のアクセス可能なステップのヘッダーにフォーカスを移動します。
 - ↑ - ステッパーが垂直方向の場合、前のアクセス可能なステップのヘッダーにフォーカスを移動します。
 - ← - 両方の方向で前のアクセス可能なステップのヘッダーにフォーカスを移動します。
 - → - 両方の方向で次にアクセス可能なステップのヘッダーにフォーカスを移動します。
 - HOME - ステッパーの最初の有効なステップのヘッダーにフォーカスを移動します。
 - END - ステッパーの最後の有効なステップのヘッダーにフォーカスを移動します。
 - ENTER / SPACE - 現在フォーカスされているステップをアクティブ化します。
 
スタイル設定
以下にリストされている公開された CSS パーツのいくつかを使用して、IgbStep の外観を変更できます:
| パーツ名 | 説明 | 
|---|---|
header-container | 
ステップのヘッダーとそのセパレーターのラッパー。 | 
disabled | 
使用不可な状態を示します。ヘッダー コンテナーに適用されます。 | 
complete-start | 
現在のステップの完了状態を示します。ヘッダー コンテナーに適用されます。 | 
complete-end | 
前のステップの完了状態を示します。ヘッダー コンテナーに適用されます。 | 
optional | 
オプションの状態を示します。ヘッダー コンテナーに適用されます。 | 
invalid | 
オプションの状態を示します。ヘッダー コンテナーに適用されます。 | 
top | 
タイトルがインジケーターの上にあることを示します。ヘッダー コンテナーに適用されます。 | 
bottom | 
タイトルがインジケーターの下にあることを示します。ヘッダー コンテナーに適用されます。 | 
start | 
タイトルがインジケーターの前にあることを示します。ヘッダー コンテナーに適用されます。 | 
end | 
タイトルがインジケーターの後にあることを示します。ヘッダー コンテナーに適用されます。 | 
header | 
ステップのインジケーターとテキストのラッパー。 | 
indicator | 
Tステップのインジケーター。 | 
text | 
ステップのタイトルとサブタイトルのラッパー。 | 
empty | 
ステップにタイトルとサブタイトルが提供されていないことを示します。テキストに適用されます。 | 
title | 
ステップのタイトル。 | 
subtitle | 
ステップのサブタイトル。 | 
body | 
ステップのコンテンツのラッパー。 | 
content | 
ステップのコンテンツ。 | 
これらの CSS パーツを使用して、次のように IgbStepper コンポーネントの外観をカスタマイズできます:
igc-step::part(title) {
  color: var(--ig-primary-500);
}
igc-step[active]::part(indicator) {
  background-color: var(--ig-primary-500);
}
igc-step::part(indicator) {
  background-color: var(--ig-surface-500);
}