詳細ガイド
Angular Aria

グリッド

概要

グリッドを使用すると、ユーザーは方向矢印キー、Home、End、Page Up/Downを使用して2次元データやインタラクティブな要素をナビゲートできます。グリッドは、データテーブル、カレンダー、スプレッドシート、および関連するインタラクティブな要素をグループ化するレイアウトパターンで機能します。

使用法

グリッドは、ユーザーが複数の方向へのキーボードナビゲーションを必要とする、行と列で構成されたデータやインタラクティブな要素に適しています。

次の場合にグリッドを使用します:

  • 編集可能または選択可能なセルを持つインタラクティブなデータテーブルを構築する場合
  • カレンダーや日付ピッカーを作成する場合
  • スプレッドシートのようなインターフェースを実装する場合
  • ページのタブストップを減らすために、インタラクティブな要素(ボタン、チェックボックス)をグループ化する場合
  • 2次元のキーボードナビゲーションを必要とするインターフェースを構築する場合

次の場合にグリッドの使用を避けます:

  • 単純な読み取り専用のテーブルを表示する場合(代わりにセマンティックなHTMLの<table>を使用します)
  • 単一列のリストを表示する場合(代わりにListboxを使用します)
  • 階層データを表示する場合(代わりにTreeを使用します)
  • 表形式のレイアウトではないフォームを構築する場合(標準のフォームコントロールを使用します)

機能

  • 2次元ナビゲーション - 矢印キーですべての方向にセル間を移動
  • フォーカスモード - roving tabindexまたはactivedescendantのフォーカス戦略から選択
  • 選択のサポート - 単一または複数選択モードによるオプションのセル選択
  • 折り返し動作 - グリッドの端でナビゲーションがどのように折り返すかを設定 (continuous、loop、またはnowrap)
  • 範囲選択 - 修飾キーまたはドラッグで複数のセルを選択
  • 無効状態 - グリッド全体または個々のセルを無効化
  • RTLサポート - 右から左へ記述する言語の自動ナビゲーション

データテーブルグリッド

ユーザーが矢印キーを使ってセル間を移動する必要があるインタラクティブなテーブルには、グリッドを使用します。この例は、キーボードナビゲーションを備えた基本的なデータテーブルを示しています。

ngGridディレクティブをテーブル要素に、ngGridRowを各行に、ngGridCellを各セルに適用します。

カレンダーグリッド

カレンダーはグリッドの一般的なユースケースです。この例は、ユーザーが矢印キーを使って日付を移動する月表示を示しています。

ユーザーは、セルにフォーカスが当たっているときにEnterキーまたはSpaceキーを押すことで、日付をアクティブにできます。

レイアウトグリッド

レイアウトグリッドを使用して、インタラクティブな要素をグループ化し、タブストップを減らします。この例は、ピルボタンのグリッドを示しています。

各ボタンをタブで移動する代わりに、ユーザーは矢印キーで移動し、1つのボタンのみがタブフォーカスを受け取ります。

選択とフォーカスモード

[enableSelection]="true"で選択を有効にし、フォーカスと選択がどのように相互作用するかを設定します。

<table ngGrid       [enableSelection]="true"       [selectionMode]="'explicit'"       [multi]="true"       [focusMode]="'roving'">  <tr ngGridRow>    <td ngGridCell>Cell 1</td>    <td ngGridCell>Cell 2</td>  </tr></table>

選択モード:

  • follow: フォーカスされたセルが自動的に選択されます
  • explicit: ユーザーがSpaceキーまたはクリックでセルを選択します

フォーカスモード:

  • roving: tabindexを使用してフォーカスがセルに移動します(単純なグリッドに適しています)
  • activedescendant: フォーカスはグリッドコンテナに留まり、aria-activedescendantがアクティブなセルを示します(仮想スクロールに適しています)

API

Grid

行とセルのキーボードナビゲーションとフォーカス管理を提供するコンテナディレクティブです。

Inputs

プロパティ デフォルト 説明
enableSelection boolean false グリッドの選択が有効かどうか
disabled boolean false グリッド全体を無効にします
softDisabled boolean true trueの場合、無効化されたセルはフォーカス可能ですが、インタラクティブではありません
focusMode 'roving' | 'activedescendant' 'roving' グリッドで使用されるフォーカス戦略
rowWrap 'continuous' | 'loop' | 'nowrap' 'loop' 行に沿ったナビゲーションの折り返し動作
colWrap 'continuous' | 'loop' | 'nowrap' 'loop' 列に沿ったナビゲーションの折り返し動作
multi boolean false 複数のセルを選択できるかどうか
selectionMode 'follow' | 'explicit' 'follow' 選択がフォーカスに追従するか、明示的なアクションを必要とするか
enableRangeSelection boolean false 修飾キーまたはドラッグによる範囲選択を有効にします

GridRow

グリッド内の行を表し、グリッドセルのコンテナとして機能します。

Inputs

プロパティ デフォルト 説明
rowIndex number auto グリッド内でのこの行のインデックス

GridCell

グリッド行内の個々のセルを表します。

Inputs

プロパティ デフォルト 説明
id string auto セルの一意の識別子
role string 'gridcell' セルのロール: gridcellcolumnheader、またはrowheader
disabled boolean false このセルを無効にします
selected boolean false セルが選択されているかどうか (双方向バインディングをサポート)
selectable boolean true セルが選択可能かどうか
rowSpan number セルがまたがる行の数
colSpan number セルがまたがる列の数
rowIndex number セルの行インデックス
colIndex number セルの列インデックス
orientation 'vertical' | 'horizontal' 'horizontal' セル内のウィジェットの方向
wrap boolean true ウィジェットのナビゲーションがセル内で折り返すかどうか

シグナル

プロパティ 説明
active Signal<boolean> セルが現在フォーカスを持っているかどうか