Pagination
すべてのボタンを定位置に保つページナビゲーションです。現在のページへ滑らかに移動し、省略記号から任意のページへジャンプできます。
Showing 1–10 of 248 results
pnpm dlx shadcn@latest add https://hextaui.com/r/pagination.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/pagination.tsx components/ui/button.tsx lib/motion.ts インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
Pagination に count を渡すと、バー全体が構築されます。常に同じ数のスロットを表示するため、ページを順にクリックしている間も、Previous、Next、番号がカーソルの下でずれることはありません。パーツを自分で組み立てるには count を省略します。
ページへジャンプ
省略記号をクリックしてページ番号を入力します。Enter でジャンプし、範囲外の番号ならフィールドが揺れ、Esc で省略記号に戻ります。jump={false} でオフにできます。
コンパクト
バーがコンテナーに収まらないときは、Previous、「Page 4 of 24」、Next に切り替わり、余裕ができると元に戻ります。ラベルはジャンプ用フィールドでもあります。compact でどちらかのレイアウトに固定できます。
リンク
getPageHref を指定すると、すべてのページが実際のリンクになるため、新しいタブで開けます。通常のクリックでは引き続き onPageChange が呼ばれます。
コンポーザブル
count がない場合は、shadcn/ui と同様にパーツからバーを組み立てます。ルーターのリンクを使うには render を渡します。
右から左
usePagination は、カスタムレイアウト向けにページと省略記号の項目を返します。シェブロンは右から左のテキストで反転します。
| キー | アクション |
|---|---|
| Tab | バーの中へ、またバーの外へ移動します。Previous と Next は両端でもフォーカス可能なままです。 |
| ←→ | Previous、各ページ、Next の間を移動します。右から左のレイアウトでは向きが反転します。 |
| HomeEnd | 最初または最後の項目に移動します。 |
| Enter | フォーカスされているページまたはページ入力フィールドを開きます。フィールド内では、そのページへジャンプしてフォーカスします。 |
| Esc | ページ入力フィールドを閉じ、省略記号にフォーカスを戻します。 |
- ルートは「Pagination」というラベルの
<nav>で、現在のページにはaria-current="page"が付きます。 - 最初と最後のページでは、Previous と Next は
disabledの代わりにaria-disabledを使うため、端に着いてもフォーカスが失われません。 - 視差効果の軽減が有効な場合、スライドするインジケーターはフェードになります。
| プロパティ | 型 | デフォルト |
|---|---|---|
count総ページ数。指定するとバーが自動で構築されます。パーツを組み立てる場合は省略します。 | number | – |
page | number | – |
defaultPage | number | 1 |
onPageChange | (page: number) => void | – |
getPageHrefページをボタンではなくリンクとして描画します。 | (page: number) => string | – |
siblings現在のページの両側に表示されるページ。 | number | 1 |
boundaries先頭と末尾に常に表示されるページ。 | number | 1 |
compactauto は、バーが収まらないときに Previous、「Page x of y」、Next に切り替えます。 | boolean | "auto" | "auto" |
jump省略記号でページ入力フィールドを開けるようにします。 | boolean | true |
| 属性 | 説明 |
|---|---|
data-slot="pagination" | nav。 |
data-slot="pagination-indicator" | 現在のページへ滑るように移動する背景。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
isActivearia-current="page" で現在のページを示します。 | boolean | false |
disabledaria-disabled を設定し、クリックを無視します。 | boolean | false |
render | ReactElement | (props, state) => ReactElement | <a> |
| 属性 | 説明 |
|---|---|
data-slot="pagination-link" | CSS でページリンクを指定します。 |
data-active | 現在のページに付きます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
textアイコンのみのボタンにするには null を渡します。 | ReactNode | "Previous" / "Next" |
disabled | boolean | false |
| プロパティ | 型 | デフォルト |
|---|---|---|
onJump省略記号をページ入力フィールドにします。指定しない場合、省略記号は装飾です。 | (page: number) => void | – |
countフィールドが受け付ける最大のページ。 | number | – |
| プロパティ | 型 | デフォルト |
|---|---|---|
page | number | – |
count | number | – |
siblings | number | 1 |
boundaries | number | 1 |
items、範囲内に収められた page と count、hasPrevious と hasNext を返します。独自のページャーを作るにはusePagination ガイドを参照してください。
- Buttonすべてのバリアントとサイズのボタンです。読み込み、成功、エラーのフローを内蔵し、高速なリクエストではスピナーを省略します。
- Motionすべてのコンポーネントがアニメーションに使うイージングカーブ、継続時間、モーション軽減のチェックと、サイズのモーフィングやスライドするハイライト用のフックです。
- usePaginationページとページ数から、描画するページと省略記号のリストを生成し、ページが動いても長さを一定に保ちます。
- Breadcrumb現在のページまでのリンクをたどる経路です。安全に折り返し、右から左へのレイアウトでは反転し、折りたたまれた区間をその場で展開できます。
- Navigation menuドロップダウンつきのサイトナビゲーションです。または、メニュー間でコンテンツがスライドする間も開いたままになる、全幅の1つのパネルにもできます。
- Sidebarアイコンのみ、またはオフキャンバスに折りたたまれ、ヘッダーの下に固定され、スマートフォンではスワイプできるシートになるアプリのサイドバーです。