ページネーション
paginate はページネーションコンポーネントを生成する関数です。クエリとオプションを引数として受け取ります。
---import { paginate } from "accel-web";import { Account } from "src/models";
const url = new URL(Astro.request.url);const page = Number(url.searchParams.get("p")) || 1;
const { Nav, PageEntriesInfo } = paginate(Account.order("id", "desc"), { page, per: 10, window: 1 });---
<!-- nav --><Nav />
<!-- info --><PageEntriesInfo />上記のコードは次のようなHTMLを出力します:
<!-- nav --><nav>  <ul class="pagination">    <li class="page-item first">      <a href="/?p=1" class="page-link">« First</a>    </li>    <li class="page-item prev">      <a rel="prev" href="/?p=2" class="page-link">‹ Prev</a>    </li>    <li class="page-item disabled gap">      <span class="page-link">…</span>    </li>    <li class="page-item page">      <a href="/?p=2" class="page-link"> 2 </a>    </li>    <li class="page-item page active">      <span class="page-link">3</span>    </li>    <li class="page-item page">      <a href="/?p=4" class="page-link"> 4 </a>    </li>    <li class="page-item disabled gap">      <span class="page-link">…</span>    </li>    <li class="page-item next">      <a rel="next" href="/?p=4" class="page-link">Next ›</a>    </li>    <li class="page-item last">      <a href="/?p=6" class="page-link">Last »</a>    </li>  </ul></nav>
<!-- info --><div class="page-entries-info">Displaying <b>21 - 30</b> of <b>55</b> in total</div>以下のスタイルは、Bootstrap 5を使用した場合に適用されます。独自のCSSを追加することで、スタイルを上書きすることができます。
国際化
ページネーションの機能で出力される各テキストにも国際化(I18n)を適用することができます。
| キー | デフォルト値 | 表示例 | 
|---|---|---|
| views.pagination.first | « First | « First | 
| views.pagination.last | Last » | Last » | 
| views.pagination.previous | ‹ Prev | ‹ Prev | 
| views.pagination.next | Next › | Next › | 
| views.pagination.truncate | … | … | 
| helpers.pageEntriesInfo.onePage.displayEntries_zero | No entries found | No entries found | 
| helpers.pageEntriesInfo.onePage.displayEntries_other | Displaying all {total} entries | Displaying all 5 entries | 
| helpers.pageEntriesInfo.morePages.displayEntries | Displaying {first} - {last} of {total} in total | Displaying 1-10 of 55 in total | 
日本語での設定例:
ja:  translation:    views.pagination:      first: "« 最初"      last: "最後 »"      previous: "‹ 前"      next: "次 ›"      truncate: "…"    helpers.pageEntriesInfo:      onePage:        displayEntries_zero: "レコードが見つかりませんでした"        displayEntries_other: "<b>全{{total}}</b>件表示中"      morePages:        displayEntries: "<b>{{first}}-{{last}}</b>件 / {{total}}件中"