ListBox

ListBox は、リスト内の項目から 1 つ以上の値を選択するために使用されます。


import { ListBox } from 'primereact/listbox';
         

ListBox は、options コレクションとともに、valueonChange プロパティを持つ制御コンポーネントとして使用されます。オプションのラベルと値は、それぞれ optionLabeloptionValue で定義します。プロパティで定義します。optionLabel のデフォルトのプロパティ名は label で、optionValue のデフォルトは value です。optionValue が省略され、オブジェクトに value プロパティがない場合、オブジェクト自体がオプションの値になります。オプションが文字列配列のような単純なプリミティブ値の場合、optionLabeloptionValue は必要ないことに注意してください。

  • ニューヨーク
  • ローマ
  • ロンドン
  • イスタンブール
  • パリ

<ListBox value={selectedCity} onChange={(e) => setSelectedCity(e.value)} options={cities} optionLabel="name" className="w-full md:w-14rem" />
         

ListBox はデフォルトで 1 つの項目を選択できます。複数選択する場合は multiple プロパティを有効にします。オプションの metaKeySelection が存在する場合、新しい項目を選択するにはメタキーが必要になるように動作が変更されます。

  • ニューヨーク
  • ローマ
  • ロンドン
  • イスタンブール
  • パリ

<ListBox multiple value={selectedCities} onChange={(e) => setSelectedCities(e.value)} options={cities} optionLabel="name" className="w-full md:w-14rem" />
         

ネストされたデータ構造が提供されている場合、オプションをグループ化できます。グループのラベルを定義するには、optionGroupLabel プロパティが必要であり、グループの子を参照するプロパティを定義するには optionGroupChildren も必要です。

  • ドイツ
  • ベルリン
  • フランクフルト
  • ハンブルク
  • ミュンヘン
  • アメリカ
  • シカゴ
  • ロサンゼルス
  • ニューヨーク
  • サンフランシスコ
  • 日本
  • 京都
  • 大阪
  • 東京
  • 横浜

<ListBox value={selectedCity} onChange={(e) => setSelectedCity(e.value)} options={groupedCities} optionLabel="label" 
    optionGroupLabel="label" optionGroupChildren="items" optionGroupTemplate={groupTemplate} className="w-full md:w-14rem" listStyle={{ maxHeight: '250px' }} />
         

ListBox は filter プロパティを追加することで有効になる組み込みのフィルタリングを提供します。

  • ニューヨーク
  • ローマ
  • ロンドン
  • イスタンブール
  • パリ

<ListBox filter value={selectedCity} onChange={(e) => setSelectedCity(e.value)} options={cities} optionLabel="name" className="w-full md:w-14rem" />
         

オプションのカスタムコンテンツは、オプションをパラメーターとして受け取る itemTemplate プロパティを使用して表示されます。追加で利用可能なテンプレートセクションは、filterTemplateoptionGroupTemplate です。

  • Australia
    オーストラリア
  • Brazil
    ブラジル
  • China
    中国
  • Egypt
    エジプト
  • France
    フランス
  • Germany
    ドイツ
  • India
    インド
  • Japan
    日本
  • Spain
    スペイン
  • United States
    アメリカ合衆国

<ListBox value={selectedCountry} onChange={(e) => setSelectedCountry(e.value)} options={countries} optionLabel="name" 
    itemTemplate={countryTemplate} className="w-full md:w-14rem" listStyle={{ maxHeight: '250px' }} />
         

VirtualScroller は、このデモのように 10 万件のレコードのような長いオプションリストを効率的にレンダリングするために使用されます。構成は virtualScrollerOptions プロパティで行います。ListBox で内部的に使用されているため、利用可能なオプションの詳細については、 VirtualScroller を参照してください。

    
    <ListBox value={selectedItem} onChange={(e) => setSelectedItem(e.value)} options={items} 
        virtualScrollerOptions={{ itemSize: 38 }} className="w-full md:w-14rem" listStyle={{ height: '250px' }} />
             

    無効状態は、検証に失敗したことを示すために invalid プロパティを使用して表示されます。フォーム検証ライブラリと統合する場合は、このスタイルを使用できます。

    • ニューヨーク
    • ローマ
    • ロンドン
    • イスタンブール
    • パリ
    
    <ListBox invalid value={selectedCity} onChange={(e) => setSelectedCity(e.value)} options={cities} optionLabel="name" 
        className="w-full md:w-14rem" />
             

    disabled が存在する場合、要素は編集およびフォーカスできません。

    • ニューヨーク
    • ローマ
    • ロンドン
    • イスタンブール
    • パリ
    
    <ListBox disabled options={cities} optionLabel="name" className="w-full md:w-14rem" />
             

    スクリーンリーダー

    コンポーネントを説明する値は、aria-labelledby または aria-label プロパティで提供できます。リスト要素には listbox ロールがあり、複数選択が有効な場合は aria-multiselectable 属性が true に設定されます。各リスト項目には option ロールがあり、aria-selectedaria-disabled が属性として設定されます。

    フィルタリングが有効になっている場合、入力要素に aria-* プロパティを与えるように filterInputProps を定義できます。あるいは、filterPlaceholder も通常はスクリーンリーダーによって利用されます。

    
    <span id="lb">Options</span>
    <ListBox aria-labelledby="lb" />
    
    <ListBox aria-label="City" />
         

    キーボードサポート

    キー機能
    tabフォーカスは、選択されている最初のオプションに移動します。選択されていない場合は、最初のオプションにフォーカスが移動します。
    上矢印フォーカスは前のオプションに移動します。
    下矢印フォーカスは次のオプションに移動します。
    enterフォーカスされたオプションの選択状態を切り替えます。
    spaceフォーカスされたオプションの選択状態を切り替えます。
    homeフォーカスは最初のオプションに移動します。
    endフォーカスは最後のオプションに移動します。
    shift + 下矢印フォーカスを次のオプションに移動し、選択状態を切り替えます。
    shift + 上矢印フォーカスを前のオプションに移動し、選択状態を切り替えます。
    shift + space最後に選択したオプションとフォーカスしたオプションの間の項目を選択します。
    control + shift + homeフォーカスしたオプションと最初のオプションまでのすべてのオプションを選択します。
    control + shift + endフォーカスされているオプションと、最後のオプションまですべてのオプションを選択します。
    control + aすべてのオプションを選択します。