TaskList

タスクの完了チェックと、担当・期日を並べます。

チェックリスト完了1/3
  • 公開前の確認

担当と期限:行の末尾にアバターと期限のバッジ
読書会の準備完了1/4
  • 健
  • 遥期限切れ 9月20日
  • 美大明日まで
全部終えた一覧:円が緑に塗られ、チェックが付く
引っ越しの手続き完了3/3
見出しのない一覧:行だけを並べる
長い題名と狭い場所:題名は折り返し、末尾のバッジは次の行へ
確認すること完了1/2
  • レビュー中
  • 健
まだ項目がない一覧:追加する欄だけ
来月の準備完了0/0

使いどころ

  • やることを並べ、終えた項目にチェックを付けていく時に使います。担当や期日を行の終わりに添えられます。
  • 設定の選択肢を複数選ぶ時は、Field と CheckboxGroup を使います。
  • 状態ごとの列でタスクを移動して管理する時は Board を使います。

使い方

items の各行を標準のcheckboxで描き、label を題名、detail を題名の後ろの補足、end を題名の後ろの末尾に置きます。end には担当の Avatar や期日の Badge を置けます。行はBasecamp 2のTo-doと同じく枠で囲まず、罫線も引かずに詰めて並べ、OSの標準のチェックボックスの隣に題名を13pxの黒の通常の太さで書きます。detail は題名のすぐ後ろに、担当者・期日と同じ灰色のピル(#eeeeeeの地に灰色の11pxの文字)で続けます。押せる行にホバーすると、行を淡い黄色で塗ります。完了した行はBasecamp 2の完了したTo-doと同じく、取り消し線を引かずに題名を一段小さい灰色の文字(12px)にし、detail もピルを外して同じ灰色で続けます。

各行の name と value は、囲むフォームで送る名前と値になります。完了の保存は、フォームの送信か、change を受ける利用側のcontrollerで行います。標準のcheckboxと同じく、チェックの無い行は送られません。

title を渡すと、行の一覧の先頭に一覧の名前を見出し(h3)で置きます。

heading を渡すと、一覧を開閉できる details(最初は開いた状態)で包み、見出しに完了した割合だけ緑で塗る小さな円グラフと「完了数/全体」を添えます。TaskListController を task-list として登録すると、チェックに合わせて数え直し、全て完了すると円グラフを緑で塗りきって白いチェックを表示し、数を緑にします。この時、渡した data-controller と data-action は task-list のものに追加して付けます。

add を渡すと、最後の行に項目を追加する入力欄を、追加のアイコンと青緑のプレースホルダーの文字で置きます(Basecamp 2の「Add a to-do」)。入力している間は、行を淡い青緑の面にし、アイコンを青緑の丸にします。入力欄は name で文字を送るだけで、行を増やす処理は利用側のフォームと応答で行います。一覧の外にあるフォームへ送る時は、form にそのフォームのidを渡します。

JavaScriptが無い時も、checkboxとフォームの送信は働きます。見出しの数と円グラフは描画時の値のままです。

アクセシビリティ

  • 行の一覧は label を読み上げ名にします。各行は label 要素で題名と結んだ標準のcheckboxです。
  • 見出しの数は「完了 1/3」のように読み、割合の円グラフは読み上げから外します。
  • 追加の入力欄は placeholder の文を読み上げ名にします。
  • end に置く Avatar や Badge は、それぞれの名前と文言で担当や期日を伝えます。

API

TaskList

TaskListのprops
名前型既定値説明
titlestring行の一覧の上に書く、この一覧の名前。
label必須string行の一覧(ul)の読み上げ名。
headingstring一覧の外側の見出し。開閉でき、終えた数と進み具合を添える。
add{ name: string; placeholder: string; form?: string; }最後の行に置く、項目を追加する欄。送信と追加は利用側のフォームで扱う。
items必須readonly { name: string; label: string; checked?: boolean; disabled?: boolean; detail?: Child; value?: string; end?: Child; }[]行の一覧。各行は標準のcheckbox。

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

登録するcontroller:task-list(TaskListController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/list-frame.css、components/field.css、components/icon.css、components/task-list.css

addの項目

addの項目
名前型既定値説明
name必須string追加した文を送る名前。
placeholder必須string欄のプレースホルダー。欄の読み上げ名にも使う。
formstring一覧の外にあるフォームのid。欄をそのフォームで送る。

itemsの項目

itemsの項目
名前型既定値説明
name必須stringcheckboxをフォームで送る名前。
label必須string項目の題名。checkboxのラベルになる。
checkedboolean終えた項目。チェックを付け、題名と補足を一段小さい灰色の文字にする。
disabledboolean操作できない項目。
detailChild題名の後ろに灰色のピルで添える補足(担当・期日など)。
valuestringcheckboxの値。省くと標準どおりonを送る。
endChild行の末尾に置く要素(AvatarやBadgeなど)。

コード

HTML
Hono JSX