DataList

主な情報・補足・状態を行ごとに並べて比較します。

記事の一覧(状態と操作)
アイコン付きの一覧
狭い場所で折り返す
右から左に読む場合

使いどころ

  • 人・記事・資料などを一件ずつ、題名・補足・状態で見比べる時に使います。
  • 行の末尾に状態や操作を置けます。操作を持たない作業へのリンクを並べる時は ActionList、列ごとに値を比べる時は Table を使います。
  • 差出人・件名・時刻を並べる受信の一覧は MessageList を使います。

使い方

items に一行ずつ title と、必要なら description・meta を渡します。start には Avatar や塗りつぶしの Icon を、end には Badge・Button・日付や件数を置きます。題名は本文の大きさ(13px)の黒い太字です。description は題名と同じ大きさの灰色(#666)の抜粋で、「 - 」に続けて題名と同じ行に続けます。meta は投稿者や日付を書く茶色の小さな文字(11px)で、題名の下に置きます。end に置いた日付などの文字は、題名と同じ大きさの茶色になります。start の Avatar は30pxの大きさで行の上端にそろえ、題名の列はその右10pxから始めます。

href を渡した行は題名が青緑の太字に1pxの下線のリンク(ホバーで赤)になり、押せる範囲を行全体に広げます。ホバーすると行を淡い黄色で塗り、押している間は黄色のハイライト(#ffffcc)にします。end の操作はリンクの上に重ねて押せます。href の無い行は押せない行として表示します。

current の行は、今開いている行として黄色のハイライト(#ffffcc)で示します。面は角を丸めず、行の幅いっぱいに塗ります。

行の間には、行の幅いっぱいに1px #ececec の罫線を引いて区切ります。行の左右に余白はありません。配置先の幅が28rem以上なら end を右の列に置き、狭ければ説明の下に並べます。長い題名やURLも省略せずに折り返します。

JavaScriptは使いません。

アクセシビリティ

  • ルートは ul、各行は li です。一覧の名前は aria-label などで利用側が付けます。
  • current の行のリンクには aria-current="true" を付けます。リンクの無い行では背景色だけで示すので、必要なら文言を添えます。
  • 行ごとのフォーカス先は題名のリンクです。end に置いた操作は、それぞれ別のフォーカス先になります。

API

DataList

DataListのprops
名前型既定値説明
items必須readonly DataListItem[]並べる行。順序はそのまま表示する。

ほかに、<ul>へ標準のHTML属性を渡せます。

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/data-list.css

DataListItem

一覧の一行。

DataListItem
名前型既定値説明
title必須string行の題名。本文の大きさの太字で書く。
descriptionstring題名に「 - 」で続けて同じ行に添える、灰色の抜粋。
hrefstring渡すと題名をリンクにし、行全体を押せる範囲にする。渡さなければ押せない行になる。
startChild行の先頭に置くアイコンやAvatar。行の上端にそろえる。
metaChild題名の下に茶色の小さな文字で添える補足(担当者や更新日など)。
endChild行の末尾に置く状態や操作(Badge・Button・数など)。リンクの行でも上に重ねて押せる。広い幅では右の列、狭い幅では説明の下に積む。0も表示する。
currentboolean今開いている行。黄色のハイライトで示し、リンクにaria-current="true"を付ける。

コード

HTML
Hono JSX