Skip to content

SPagination

Постраничная навигация.

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. Принимает атрибуты ровно в том формате, в котором его отдает пагинатор Laravel, что позволяет сразу пробросить исходный пагинатор без дополнительных прописываний атрибутов через v-bind.

Базовый пример

Показаны: 16 - 30 из 72
<!-- inertia('User/Index', ['users' => Users::paginate()]) -->
<SPagination v-bind="users" />

Laravel-пагинатор на выходе формирует объект с ключами {current_page, from, last_page, links, per_page, to, total}. SPaginator использует ровно то же именование входных атрибутов, поэтому пробрасываем их как есть через v-bind.

Выбор кол-ва результатов на странице

Чтобы также выводить выпадающий список в кол-вом результатов на странице, можно добавить атрибут per-page-options:

По 15
Показаны: 16 - 30 из 72
<SPagination v-bind="users" :per-page-options="[15, 25, 50]" />

Изменение кол-ва вариантов на странице меняет query-параметр perpage, сбрасывает query-параметр page и сохраняет все остальные query-параметры нетронутыми.

Интерфейс компонента

Свойства (Props)

НазваниеТипПо умолчаниюОписание
linksPaginationLink[][]Массив ссылок [{ url, label, active }]. Обычно генерируется бекэндом Laravel.
perPageOptionsnumber[] | string[] \ RecordundefinedОпции для выпадающего списка кол-ва элементов на странице (например, [10, 20, 50]).
urlstringlocation.pathnameБазовый URL, используемый при смене кол-ва элементов на странице.
preserveScrollbooleantrueПробрасывается в зарегистрированный Link (Inertia). Сохраняет позицию скролла.
preserveStatebooleanfalseПробрасывается в зарегистрированный Link (Inertia). Сохраняет локальный стейт страницы.
per_pagenumberundefinedВыбранное кол-во элементов на странице.
fromnumberundefinedНачальный индекс (для надписи «Показано X-Y из Z»).
tonumberundefinedКонечный индекс.
totalnumberundefinedОбщее количество записей.

Слоты (Slots)

НазваниеОписание
defaultПо умолчанию слоты отсутствуют, пагинация генерируется автоматически по пропсам.