Close
Angular React Web Components Blazor Angular
Open Source

Chip コンポーネント

Ignite UI for Angular Chip は、タグ、フィルター、人物を表すコンパクトな要素で、ユーザーが選択または削除できます。

Chip は、選択可能、削除可能、またはその両方にすることができ、ラベルの前後にアイコンやその他のコンテンツを表示できます。

ライブ デモ

構造

Angular Chip は、ラベルとオプションのアイコンを 1 行に収めるコンテナーです。

Angular Chip anatomy: container, selection icon, left icon, label, right icon, and remove icon
1. コンテナー: すべての Chip 要素を保持し、視覚的な境界を定義します2. 選択アイコン: Chip が選択されていることを示します3. 左アイコン (オプション): ラベルの左側に表示されます
4. ラベル: Chip の値を識別または説明するテキストです5. 右アイコン (オプション): ラベルの右側に表示されます6. 削除アイコン: キャンセル アイコンは、Chip を削除できることを示します
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 つしかない構成での使用は避けてください。

関連するオプションのセットとして一緒に提供される、青、グレー、緑の 3 つの Chip推奨グループ化されたアクションや、関連する少数のオプションに Chip を使用します。
唯一のオプションとして提供される単一の青い 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 は、サイズに関するプロパティを公開します。

名前 型 デフォルト 説明
width number n/a Chips エリアの幅を設定します。
height number n/a Chips エリアの高さを設定します。

イベント

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

Button の代わりに Chip を使用するのはどのような場合ですか?

Ignite UI for Angular Chip は、タグ、フィルター、受信者など、ユーザーが選択または削除できる項目を表します。Button は単一のコマンドを実行するため、ユーザーが項目を選択または解除するのではなくアクションをトリガーする場合に選択してください。

一度に 1 つの Chip だけを選択できるようにするにはどうすればよいですか?

グループ内の各 Ignite UI for Angular Chip の選択イベントを処理します。Chip が選択されたら、他の Chip の selected を false に設定します。

Chip の削除アイコンを置き換えることはできますか?

はい。Ignite UI for Angular Chip の removeIcon 入力にテンプレートを渡します。ラベル付きのデフォルト アイコンを置き換えるため、その中のアイコンにアクセシブルなラベルを付けてください。

ユーザーは Chip を並べ替えることができますか?

はい。ユーザーは igx-chips-area 内で、draggable な Chip をドラッグするか、Shift と矢印キーを押して並べ替えることができます。Ignite UI for Angular Chips エリアは新しい順序を報告し、アプリケーションがそれを適用します。

Chip のサイズを変更するにはどうすればよいですか?

共有サイズ トークン var(--ig-size-small)、var(--ig-size-medium)、または var(--ig-size-large) のいずれかを、Ignite UI for Angular Chip の --ig-size CSS 変数に割り当てます。