並び替えSortButtonExperimental
ソート順を切り替えるボタンです。
プレビュー
状態とバリエーション
未指定
クリックすると昇順、降順、未指定の順に切り替わります。
昇順
現在の並び替え方向をアイコンとラベルで示します。
無効化
並び替えできない理由はツールチップで伝えます。
プロパティ
表は横にスクロールできます
| プロパティ | 型 | 初期値 | 説明 |
|---|---|---|---|
| value | "asc" | "desc" | "none" | "none" | 現在の並び替え方向です。 |
| onSortChange | (value: "asc" | "desc" | "none") => void | - | 並び替え方向が変わった時に呼ばれます。 |
| label | string | "Sort" | ボタンに表示するラベルです。 |
| disabled | boolean | false | 並び替えできない状態にします。理由はツールチップで補足します。 |
使い方
import * as React from "react";
import { SortButton, type SortButtonVariantKey } from "@gunjo/ui";
export function DateJoinedSortButton() {
const [sort, setSort] = React.useState<SortButtonVariantKey>("none");
return (
<SortButton
value={sort}
onSortChange={setSort}
label="登録日"
className="flex-row"
/>
);
}設計の判断
- 押すたびに3つの状態を回す。昇順・降順・並べ替えなし、を1つのボタンで回します。資料は「1つのボタンに1つの動詞」を求めていますが、並べ替えは切り替えなので、ボタンを3つ並べるより1つを回すほうが場所を取りません。いまの状態は3種類のアイコンで出しています。
- いまの状態を読み上げに伝えるところは、まだ書いていません。
aria-pressedもaria-sortも付いていないので、画面を見ていない人にはラベルの「並べ替え」までしか届きません。表の見出しで使うときは、aria-sortを持つDataTableの見出しを使ってください。この部品を単体で直すか、表の見出し専用にするかは、まだ決めていません。 - 既定は控えめな見た目にした。
variantの既定はghost、sizeはsmです。資料は「Primary は1画面に1つまで」を挙げています。並べ替えは画面の主役ではないので、ツールバーの中で目立たない側に置きました。ラベルはlabelで差し替えられます。
一般のボタンの設計は UIXHERO の「ボタン」にあります。
使用コンポーネント
関連コンポーネント
いつ・なぜ使うか(UIXHERO)
「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。