Novi UI
コンポーネント一覧

Pagination

一覧は 1 画面で読み切れる件数で切る。無限スクロールは読み終わりが分からず、業務の一覧では戻れないことが嫌われる。

デモ

使い分け

こうする

  • 1 ページを読み切れる件数(20〜50 件)で切る
  • 現在のページを URL に載せる。戻る・共有ができる

こうしない

  • 無限スクロールと併用しない。読み終わりが分からなくなる
  • 総ページ数が 1 のときに表示しない

Props

Pagination の props 一覧
名前型説明
size'sm' | 'md' | 'lg'
radius'none' | 'sm' | 'md' | 'lg' | 'full'
total *number総ページ数
pagenumber現在のページ(1 始まり)。制御したい場合に使う
defaultPagenumber
onChange(page: number) => void
siblingCountnumber現在ページの両隣に出す数。既定は 1
boundaryCountnumber先頭と末尾に必ず出す数。既定は 1
isDisabledboolean
aria-labelstring`nav` の名前。1 ページに複数置くときに区別する。既定は「ページ送り」
classNamesClassNames<typeof paginationSlots>

Slot

構成部位に data-slot が出力されます。 CSS の上書きやテストはこれを狙ってください。

  • root必須
  • list必須
  • item必須
  • prev必須
  • next必須
  • ellipsis

アクセシビリティ

キーボード操作
キー動作
Tabボタンを順に移動
Enter / Spaceそのページへ
  • 根要素は `nav` で名前を持つ(既定「ページ送り」)。現在ページは `aria-current="page"`。 前へ / 次へは端で無効になる。省略記号は読み上げの対象にしない。 各ボタンは Tab で辿れ、Enter / Space で押せる
  • キーボードだけで操作できます。フォーカスリングはコントラスト比 3:1 以上です。
  • 本文のコントラスト比は light / dark とも 4.5:1 以上を検査で保証しています。
  • prefers-reduced-motion が有効なときはアニメーションを行いません。