Timeline

出来事を時系列で表示します。

変更履歴

  1. 今日
  2. 美

    森 美咲公開の日を9月28日に決めました

  3. 遥

    田中 遥案内文を更新しました

    利用時間とキャンセル条件を追記しました。

  4. 9月14日(月)
  5. 誠

    佐藤 誠添付資料を確認しました

    資料を開く

公開までの節目

  1. 完了:原稿を作成

  2. 進行中:内容を確認

  3. 予定:公開する

システムの出来事と何もなかった期間

  1. 遥

    田中 遥説明を書き直しました

  2. 78日間、出来事はありません

  3. 佐藤 健が「完了」へ移しました

短い変更履歴

  1. 本文を更新

  2. 添付資料を差し替え

使いどころ

  • 変更の履歴や対応の記録など、起きた出来事を時系列で読ませる時に使います。
  • 計画の節目の、終えた・今・これからを示す時は variant="milestones" にします。
  • 入力の手順と今の段階を示す時は Steps、人と人のやり取りを読ませる時は Message を使います。
  • 日付の枠に沿って予定を見渡す時は Calendar を使います。

使い方

items を渡した順に上から並べます。時系列の順序は利用側でそろえます。各出来事に表示用の time と機械可読の datetime を付け、題名の下に content で本文や添付を置きます。

出来事はBasecamp 2のProgressと同じく、暖かい灰色(#dcd9d2)の2pxの縦の線に沿って並べ、白い小さな丸に線と同じ色の2pxの輪を付けたマーカーで示します。時刻は茶色の11pxの文字、題名は12pxの黒い太字です。avatar を渡すと、マーカーの代わりに起こした人のアバターを線の上に置きます。actor を渡すと、題名の前に名前を太字で書き、題名は普通の太さにします。

day を渡すと、その出来事の前に日の区切りを置きます。Basecamp 2のProgressのプロジェクトの見出しと同じく、黒い太字の名前(13px)の下に、縦の線から横へ伸びる同じ色の帯を引きます。

kind="system" は移動や自動で閉じたなどのシステムの出来事で、マーカーと縦の線を置かずに、角の無い淡い灰色の平らな帯の中央に、時刻と題名を通常の太さで書きます。kind="gap" は何もなかった期間で、線を破線にし、時刻を出さずに灰色の小さな題名だけを書きます。

variant="milestones" は節目の一覧で、state を描き分けます。complete は緑の丸に白いチェックのマーカー、current はBasecamp ClassicのMilestonesの「Today」と同じ橙がかった茶色で塗った丸のマーカーにし、時刻を黒い太字にして Calendar の今日と同じ黄色のハイライトを角の無い面で敷きます。upcoming はマーカーを白い丸に淡い灰色の輪にし、そこから先の線を破線にします。

variant="compact" は行の間を詰め、題名を普通の太さにします。

幅が28rem以上ある時は時刻を左の列に、狭い時は題名の上に置きます。JavaScriptは使いません。

アクセシビリティ

  • 一覧は ol で、label を読み上げ名にします。時刻は time 要素で datetime を持ちます。
  • state を渡すと、題名の前に「完了:」「進行中:」「予定:」を読み上げ用に添えます。variant に関わらず添えます。
  • 点のマーカーは読み上げから外します。avatar のアバターは、Avatar の名前で読み上げます。
  • 日の区切りも一覧の行の一つで、その日の出来事の前に日の名前を読み上げます。

API

Timeline

Timelineのprops
名前型既定値説明
label必須string一覧(ol)の読み上げ名。
variant"activity" | "milestones" | "compact""activity"activityは出来事の記録。milestonesは節目で、stateの違いをマーカーと線で描き分ける。 compactは行の間を詰め、題名を普通の太さにする。
items必須readonly { datetime: string; time: string; title: string; content?: Child; state?: "complete" | "current" | "upcoming"; avatar?: Child; actor?: string; day?: string; kind?: "event" | "system" | "gap"; }[]出来事。渡した順に並べるので、時系列の順は利用側でそろえる。

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

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/timeline.css、components/divider.css

itemsの項目

itemsの項目
名前型既定値説明
datetime必須string機械可読の日時。time要素のdatetimeに入れる。
time必須string表示する時刻や日付の文。
title必須string題名。
contentChild題名の下に置く中身(本文・添付など)。
state"complete" | "current" | "upcoming"節目の状態。completeは終えたもの、currentは今のもの、upcomingはこれから。読み上げでは題名の前に「完了:」「進行中:」「予定:」を添え、マーカーと線の描き分けはmilestonesの時だけ行う。
avatarChild出来事を起こした人。線の上のマーカーの代わりにアバターを置く。
actorstring起こした人の名前。題名の前に太字で置き、題名は普通の太さにする。
daystringこの出来事から始まる日の名前(「今日」「9月14日(月)」など)。黒い太字の名前と、縦の線から横へ伸びる帯で日を区切る(中身はDivider)。
kind"event" | "system" | "gap"出来事の種類。eventは人の出来事。systemは移動・自動で閉じたなどのシステムの出来事で、淡い灰色の帯の中央に書く。 gapは何もなかった期間で、線を破線にし、時刻を出さずに淡い文だけを置く(「60日間、出来事はありません」)。

コード

HTML
Hono JSX