Chip コンポーネント
Ignite UI for Angular Chip は、タグ、フィルター、人物を表すコンパクトな要素で、ユーザーが選択または削除できます。
Chip は、選択可能、削除可能、またはその両方にすることができ、ラベルの前後にアイコンやその他のコンテンツを表示できます。
ライブ デモ
構造
Angular Chip は、ラベルとオプションのアイコンを 1 行に収めるコンテナーです。
igx-chip[role="option"] // host; aria-selected reflects `selected`
└─ div.igx-chip__item // chip wrapper; drag and drop target
├─ div.igx-chip__start
│ ├─ div.igx-chip__select // select icon, shown while selected
│ └─ [igxPrefix] // content before the label
├─ div.igx-chip__content // label (projected content)
└─ div.igx-chip__end
├─ [igxSuffix] // content after the label
└─ div.igx-chip__remove // remove control, rendered when removable
作業の開始
Angular Chip をアプリケーションに追加する前に、作業の開始トピックの説明に従って、Ignite UI for Angular をインストールし、テーマを構成します。
IGX_CHIPS_DIRECTIVES をコンポーネントにインポートします。これには、Chip、Chips エリア、igxPrefix ディレクティブ、igxSuffix ディレクティブが含まれます。
import { Component } from '@angular/core';
import { IGX_CHIPS_DIRECTIVES } from 'igniteui-angular/chips';
@Component({
selector: 'app-chip-sample',
imports: [IGX_CHIPS_DIRECTIVES],
template: `<igx-chip>Design</igx-chip>`,
})
export class ChipSampleComponent {}
前提条件とバージョンの互換性
Angular Chip の一部の機能は、アプリケーションが使用するパッケージのバージョンに依存します。
igniteui-angular パッケージを使用します。outlined 入力は 22.2.0 以降で使用できます。
使用方法
Angular Chip にラベルを追加し、レイアウトに応じてアイコン、タイプ、サイズ、選択または削除を追加します。
レイアウト
Angular Chip は、ラベルの周囲のコンテンツのテンプレート化をサポートします。コンテンツに igxPrefix ディレクティブと igxSuffix ディレクティブを指定することで、テキストや アイコンなどをラベルの前後に表示できます。Chip 内のアイコンは Chip のサイズに従うため、大、中、小の 3 つのサイズがあります。
ラベルを Chip 内に配置します。selectIcon 入力と removeIcon 入力にテンプレートを設定して、デフォルトの選択アイコンと削除アイコンを置き換えます。
<igx-chip selectable removable [selectIcon]="selectIcon" [removeIcon]="removeIcon">
<igx-icon igxPrefix>person</igx-icon>
Ana Zane
<igx-icon igxSuffix>mail</igx-icon>
</igx-chip>
<ng-template #selectIcon>
<igx-icon>check_circle</igx-icon>
</ng-template>
<ng-template #removeIcon>
<igx-icon>delete</igx-icon>
</ng-template>
カスタムの selectIcon テンプレートと removeIcon テンプレートは、アクセシブルなラベルを含め、デフォルトのアイコンを置き換えるため、アイコンにアクセシブルなラベルを付けてください。
タイプ
Angular Chip には、デフォルトとプライマリの 2 つのタイプがあります。
デフォルト タイプにするには variant を未設定のままにし、プライマリ タイプにするには primary に設定します。バリアントは、ステータス カラーとして info、success、warning、danger も受け入れます。
<igx-chip>Default</igx-chip>
<igx-chip variant="primary">Primary</igx-chip>
アウトライン
outlined を設定すると、Chip がボーダーとアウトライン背景でレンダリングされます。任意のバリアントと組み合わせることができます。
<igx-chip outlined variant="info">Draft</igx-chip>
サイズ
Angular Chip には 3 つのサイズがあります:
- 大: アクション トリガーなどのインタラクティブなシナリオに適しています。
- 中: メール作成の受信者フィールドなど、短い領域に適しています。
- 小: グリッド セルの値など、データ密度の高いシナリオに適しています。
--ig-size を var(--ig-size-small)、var(--ig-size-medium)、または var(--ig-size-large) に設定して、Chip のサイズを変更します。Chip に設定するか、コンテナーに設定して内部のすべての Chip のサイズを変更します。
.filter-chips {
--ig-size: var(--ig-size-small);
}
インタラクション状態
Angular Chip は、有効または無効にできます。
disabled を設定すると、操作できなくなります。無効な Chip はフォーカスを受け取ることも選択することもできず、removable が設定されていても削除アイコンはレンダリングされません。
<igx-chip disabled>Archived</igx-chip>
状態
ユーザーが Angular Chip を操作すると、デフォルトのアイドル状態から、ホバー、フォーカス、選択済みの状態に変化します。
選択済み状態にするには、選択を有効にする必要があります。selectable を設定すると、ユーザーは Chip をクリックするか Space を押して選択を切り替えることができます。切り替えるたびに selected が更新され、新しい状態とともに選択イベントが発生します。初期状態を定義するには selected を設定します。
キャンセル可能な selectedChanging イベントは selected に新しい状態を報告し、状態の変更後に selectedChanged が続きます。[(selected)] をバインドして、コンポーネント内で状態を保持します。選択アイコンは、selected が true の場合は常に表示されます。
<igx-chip selectable [(selected)]="isBold" (selectedChanging)="onSelectedChanging($event)">Bold</igx-chip>
import { IChipSelectEventArgs } from 'igniteui-angular/chips';
public isBold = true;
public onSelectedChanging(event: IChipSelectEventArgs) {
console.log(event.selected); // the new selected state
}
Chip の削除
削除可能な Angular Chip は、末尾に削除アイコンを表示し、ユーザーはこれを操作して Chip の削除を要求します。
removable を設定すると、アイコンが表示されます。アイコンを操作すると削除イベントが発生しますが、Chip はページ上に残ります。イベント ハンドラーで Chip、またはそれが表す項目を削除してください。
@for (chip of chips; track chip.id) {
<igx-chip [id]="chip.id" removable (remove)="onRemove($event)">{{ chip.text }}</igx-chip>
}
import { IBaseChipEventArgs } from 'igniteui-angular/chips';
public chips = [
{ id: 'angular', text: 'Angular' },
{ id: 'react', text: 'React' },
{ id: 'blazor', text: 'Blazor' },
];
public onRemove(event: IBaseChipEventArgs) {
this.chips = this.chips.filter((chip) => chip.id !== event.owner.id);
}
Chips エリア
ChipsArea コンポーネントを使用して、Chip のコレクションを整理します。
Chips エリア内では、矢印キーで Chip 間のフォーカスを移動します。ユーザーが draggable な Chip を別の Chip の上にドラッグするか、Shift と矢印キーを押すと、Chips エリアは新しい順序とともに reorder を発生させます。また、選択された Chip とともに selectionChange も発生させます。Chips エリア自体は Chip を並べ替えないため、reorder ハンドラーで新しい順序をデータに適用してください。
<igx-chips-area (reorder)="onReorder($event)">
@for (chip of chips; track chip.id) {
<igx-chip [id]="chip.id" [draggable]="true">{{ chip.text }}</igx-chip>
}
</igx-chips-area>
import { IChipsAreaReorderEventArgs } from 'igniteui-angular/chips';
public onReorder(event: IChipsAreaReorderEventArgs) {
this.chips = event.chipsArray.map((chip) => this.chips.find((item) => item.id === chip.id)!);
}
ローカライズ
Chip は、グローバル ローカライズ API で設定された言語に従います。詳細はローカライズを参照してください。単一の Chip でデフォルトの選択アイコンと削除アイコンのアクセシブルなラベルを上書きするには、resourceStrings を設定します。
<igx-chip removable [resourceStrings]="{ igx_chip_remove: 'Remove tag' }">Design</igx-chip>
推奨 / 非推奨
Chip を使用すると、長円形がコンテンツに合わせて自動的にサイズ調整されるため、インスタンスのサイズを適宜調整するだけで済みます。Chip を関連コンテンツのアクション トリガーとして使用する場合は、使用可能なアクションが 1 つしかないシナリオや、選択可能なオプションが 1 つしかない構成での使用は避けてください。
推奨グループ化されたアクションや、関連する少数のオプションに Chip を使用します。
非推奨単一のアクションや単一の選択肢に Chip を使用することは避けてください。プロパティ
Angular Chip は、選択、削除、状態、外観に関するプロパティを公開します。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
animateOnRelease |
boolean |
true |
ドラッグした Chip を離したときに、元の位置にアニメーションで戻します。 |
color |
string |
n/a | Chip の背景色を設定します。 |
data |
any |
n/a | Chip に関連するデータを格納します。 |
disabled |
boolean |
false |
Chip を無効にし、削除アイコンを非表示にします。 |
draggable |
boolean |
false |
ユーザーが Chip をドラッグできるようにします。 |
hideBaseOnDrag |
boolean |
true |
コピーをドラッグしている間、元の Chip を非表示にします。 |
id |
string |
generated | Chip の id を設定します。設定されていない場合は一意の値が生成されます。 |
outlined |
boolean |
false |
Chip をアウトライン スタイルでレンダリングします。 |
removable |
boolean |
false |
削除アイコンを表示します。 |
removeIcon |
TemplateRef |
n/a | デフォルトの削除アイコンを置き換えます。 |
resourceStrings |
IChipResourceStrings |
n/a | 組み込みラベルのカスタム文字列を設定します。 |
selectable |
boolean |
false |
ユーザーが選択状態を切り替えられるようにします。 |
selected |
boolean |
false |
選択状態を設定します。双方向バインディングをサポートします。 |
selectIcon |
TemplateRef |
n/a | デフォルトの選択アイコンを置き換えます。 |
tabIndex |
number |
0 |
Chip の tabindex を設定します。無効な Chip はフォーカスできません。 |
variant |
"primary" | "info" | "success" | "warning" | "danger" |
n/a | 事前定義されたカラー バリアントを設定します。 |
ChipsArea は、サイズに関するプロパティを公開します。
イベント
Angular Chip は、ユーザーが選択または削除するとイベントを発生させます。
| 名前 | 説明 |
|---|---|
selectedChanging |
選択状態が変更される前に発生します。現在の状態を維持するには cancel を設定します。selected は新しい状態です。 |
selectedChanged |
選択状態が変更された後に発生します。 |
remove |
ユーザーが削除アイコンを操作するか、Chip で Delete を押したときに発生します。 |
chipClick |
Chip がクリックされたときに発生します。選択の変更を防ぐには cancel を設定します。 |
keyDown |
Chip でキーが押されたときに発生します。デフォルトのキーボード処理をスキップするには cancel を設定します。 |
moveStart |
ユーザーが Chip のドラッグを開始したときに発生します。 |
moveEnd |
ドラッグした Chip が離され、戻りアニメーションが終了したときに発生します。 |
dragEnter |
ドラッグした Chip がこの Chip に入ったときに発生します。 |
dragLeave |
ドラッグした Chip がこの Chip から出たときに発生します。 |
dragOver |
ドラッグした Chip がこの Chip の上にある間に発生します。 |
dragDrop |
ドラッグした Chip がこの Chip にドロップされたときに発生します。 |
ChipsArea は、内部の Chip に対するイベントを発生させます。
| 名前 | 説明 |
|---|---|
reorder |
Chip を新しい位置に移動する必要があるときに、chipsArray に新しい順序を格納して発生します。 |
selectionChange |
Chip が選択または選択解除されたときに、newSelection に選択された Chip を格納して発生します。 |
moveStart |
ユーザーがエリア内の Chip のドラッグを開始したときに発生します。 |
moveEnd |
ユーザーがエリア内の Chip のドラッグを終了したときに発生します。 |
スタイル設定
トークン レベルの変更には Angular Chip の CSS 変数を使用し、特定の要素を対象にする場合は CSS クラスを使用してスタイルを設定します。
| 変数 | 変更内容 |
|---|---|
--ig-chip-background |
デフォルト (アウトラインでない) Chip の背景。 |
--ig-chip-text-color |
デフォルト Chip のテキスト色。 |
--ig-chip-outlined-background |
アウトライン Chip の背景。 |
--ig-chip-outlined-text-color |
アウトライン Chip のテキスト色。 |
--ig-chip-border-color |
アウトライン Chip のボーダー色。 |
--ig-chip-border-radius |
Chip の角の半径。 |
--ig-chip-hover-background |
ホバー時のデフォルト Chip の背景。 |
--ig-chip-focus-background |
フォーカス時のデフォルト Chip の背景。 |
--ig-chip-focus-shadow-color |
Bootstrap テーマと Indigo テーマのフォーカス シャドウの色。 |
--ig-chip-selected-background |
選択された Chip の背景。 |
--ig-chip-selected-text-color |
選択された Chip のテキスト色。 |
--ig-chip-disabled-background |
無効な Chip の背景。 |
--ig-chip-disabled-text-color |
無効な Chip のテキスト色。 |
--ig-chip-remove-icon-color |
削除アイコンの色。 |
--ig-chip-remove-icon-color-focus |
フォーカス時の削除アイコンの色。 |
--ig-chip-size |
Chip の高さ。 |
--ig-size |
Chip のサイズを導出するために使用される共有コンポーネント サイズ トークン。 |
| セレクター | 説明 |
|---|---|
igx-chip |
Chip のホスト要素。 |
.igx-chip--outlined |
outlined が設定されている場合に適用されます。 |
.igx-chip--disabled |
disabled が設定されている場合に適用されます。 |
.igx-chip--primary |
variant が primary の場合に適用されます。info、success、warning、danger バリアントは、対応する修飾子を使用します。 |
.igx-chip__item |
Chip のラッパー。 |
.igx-chip__item--selected |
Chip が選択されている間、ラッパーに適用されます。 |
.igx-chip__start |
選択アイコンとプレフィックス コンテンツのコンテナー。 |
.igx-chip__content |
ラベルのコンテナー。 |
.igx-chip__end |
サフィックス コンテンツと削除コントロールのコンテナー。 |
.igx-chip__remove |
削除コントロール。 |
Sass テーマ
アプリケーションが Sass を通じて Ignite UI テーマをカスタマイズする場合は、chip-theme 関数を使用します。$background (アウトライン Chip の場合は $outlined-background) を設定すると、テーマはそこからテキスト、ホバー、フォーカス、選択状態の色を導出します。特定の値が必要な場合は、他のパラメーターを上書きします。
@use "igniteui-angular/theming" as *;
$custom-chip-theme: chip-theme(
$background: #011627,
$remove-icon-color: #fecc47
);
:root {
@include tokens($custom-chip-theme);
}
CSS 変数
Sass ビルド手順なしでローカルにスタイルを設定する必要がある場合は、Chip の CSS 変数を直接設定します。Chip に設定するか、コンテナーに設定して内部のすべての Chip にスタイルを設定します。
.filter-chips {
--ig-chip-background: var(--ig-primary-500);
--ig-chip-text-color: var(--ig-primary-500-contrast);
--ig-chip-remove-icon-color: var(--ig-primary-500-contrast);
}
Chip の単一の要素にスタイルを設定するには、その CSS クラスを対象にします。
igx-chip .igx-chip__end {
color: var(--ig-gray-400);
}
Tailwind によるスタイル設定
Tailwind ユーティリティ クラスを使用して Angular Chip のスタイルを設定でき、[--ig-chip-background:var(--ig-primary-600)] のような任意のプロパティを通じて CSS 変数を設定できます。まず、Tailwind クラスの説明に従って Tailwind をセットアップしてください。
アクセシビリティ
Angular Chip は、キーボード操作をサポートし、その状態を支援技術に公開します。
キーボード操作
キーボード ユーザーは Tab で各 Chip に移動し、Chip が削除可能な場合は続けてその削除コントロールに移動します。無効な Chip はスキップされます。
| キー | アクション |
|---|---|
| Space | Chip で、selectable が設定されている場合に selected を切り替えます。 |
| Space / Enter | 削除コントロールで、remove を発生させます。 |
| Delete | 削除可能な Chip で、remove を発生させます。 |
| Arrow Left / Arrow Right | igx-chips-area 内で、前または次の Chip にフォーカスを移動します。 |
| Shift + Arrow Left / Arrow Right | igx-chips-area 内で、フォーカスされた Chip を 1 つ移動した reorder を発生させます。 |
スクリーン リーダー / ARIA
Angular Chip は、ネイティブ セマンティクスと ARIA 属性を通じて状態を公開します。また、アクセシブルな名前はそのコンテンツから取得されます。
- Chip ホストには
role="option"があり、aria-selectedがselected状態を反映します。 igx-chips-area要素にはrole="listbox"とaria-label“chip area” があります。- デフォルトの選択アイコンと削除アイコンには、アクセシブルなラベルがあります。
- 無効な Chip はタブ順序から除外されますが、無効状態を公開する ARIA 属性はありません。
デフォルト アイコンのラベルは、ローカライズで示すように変更できます。
アクセシビリティ コンプライアンス
インフラジスティックスは、Section 508 と WCAG 2.1 のガイドライン領域に対する Ignite UI for Angular のアクセシビリティ サポートを、アクセシビリティ コンプライアンストピックで文書化しています。
| 基準 | コンポーネントの準拠方法 |
|---|---|
| 1.4.1 色の使用 | 選択された Chip は、選択中の色に加えて、選択アイコンを表示します。 |
| 2.1.1 キーボード | 選択、削除、および Chips エリア内での並べ替えは、キーボードから操作できます。 |
| 2.1.2 キーボード トラップなし | Chip は独自のキーを処理しますが、Tab を横取りすることはないため、フォーカスは常に Chip から離れることができます。 |
| 2.4.3 フォーカス順序 | Chips エリア内では、矢印キーが視覚的な順序で Chip 間のフォーカスを移動します。 |
| 2.4.7 フォーカスの可視化 | フォーカスされた Chip は、フォーカス背景を表示します。Bootstrap テーマと Indigo テーマではフォーカス シャドウも表示します。 |
| 4.1.2 名前、役割、値 | Chip は option ロールと選択状態を公開し、Chips エリアは listbox ロールを公開します。 |
ユーザー側の責務:
-
すべての Chip に、それが表す項目を識別するテキスト ラベルを付けてください。
-
削除イベント ハンドラーで Chip を削除した後は、次の Chip など、論理的な場所にフォーカスを移動してください。
-
テーマの色を上書きする場合は、Chip の背景とそのテキストおよびアイコンとの間に十分なコントラストを保ってください。
-
Chip のスタイルを変更する場合は、表示されるフォーカス インジケーターを維持してください。
-
小サイズやカスタムの
--ig-chip-sizeを使用する場合は、Chip とその削除コントロールをタップできる十分な大きさに保ってください。 -
ユーザーが選択する Chip は、
optionロールにlistboxの親が存在するように、igx-chips-area内に配置してください。 -
カスタムの選択アイコンと削除アイコンのテンプレートには、レイアウトで説明されているとおりラベルを付けてください。
既知の例外:
- 削除コントロールはフォーカス可能でラベル付きのアイコンを含みますが、
buttonロールを公開しません。 - 無効状態は ARIA で公開されないため、スクリーン リーダーは無効な Chip を無効として読み上げません。ユーザーがその状態を知る必要がある場合は、近くのテキストで説明してください。
トラブルシューティング
変更やアップグレードの後に Chip が期待どおりに動作しない、または表示されない場合は、このセクションを参照してください。
削除アイコンをクリックしても Chip がページに残るのはなぜですか?
削除イベントはアプリケーションに通知するだけです。Chip の削除に示すように、イベント ハンドラーで Chip を削除してください。
フォーカス アウトライン変数が適用されなくなったのはなぜですか?
igniteui-angular 22.2.0 では、chip-theme の $focus-outline-color パラメーターと $focus-selected-outline-color パラメーターが $focus-shadow-color と $focus-selected-shadow-color に置き換えられました。スタイル内のパラメーター、および対応する --ig-chip-* 変数の名前を変更してください。
API リファレンス
Chip の API 全体については、次の API リファレンスを参照してください。
Chip
Icon
ChipsArea
依存関係
Angular Chip は、Chip に含まれる Icon コンポーネントを使用して、デフォルトの選択アイコンと削除アイコンをレンダリングします。
<igx-icon>person</igx-icon> のように Material Icons の名前を使用するアイコンには、Material Icons フォントが必要です。index.html に <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> を追加してください。Sass によるスタイル設定ワークフローでは、chip-theme 関数と icon-theme 関数を使用します。
その他のリソース
サポートと関連する Ignite UI for Angular ドキュメントについては、次のリソースを参照してください。
関連コンポーネント
Chip がインタラクションに最適でない場合は、次の関連コンポーネントを使用してください。
- Button - フォームの送信やダイアログを開くなど、コマンドを実行するコントロール。
- Checkbox - オン/オフの選択、または独立した選択肢のセットのためのフォーム コントロール。
- Badge - ステータス、カウント、通知を示す、小さな非インタラクティブなインジケーター。
FAQ
Ignite UI for Angular Chip は、タグ、フィルター、受信者など、ユーザーが選択または削除できる項目を表します。Button は単一のコマンドを実行するため、ユーザーが項目を選択または解除するのではなくアクションをトリガーする場合に選択してください。
グループ内の各 Ignite UI for Angular Chip の選択イベントを処理します。Chip が選択されたら、他の Chip の selected を false に設定します。
はい。Ignite UI for Angular Chip の removeIcon 入力にテンプレートを渡します。ラベル付きのデフォルト アイコンを置き換えるため、その中のアイコンにアクセシブルなラベルを付けてください。
はい。ユーザーは igx-chips-area 内で、draggable な Chip をドラッグするか、Shift と矢印キーを押して並べ替えることができます。Ignite UI for Angular Chips エリアは新しい順序を報告し、アプリケーションがそれを適用します。
共有サイズ トークン var(--ig-size-small)、var(--ig-size-medium)、または var(--ig-size-large) のいずれかを、Ignite UI for Angular Chip の --ig-size CSS 変数に割り当てます。