Pagination
Pagination — переключатель страниц длинного списка: стрелка назад, номера страниц и стрелка вперёд.
Компонент цельный, а не составной: разметку ряда он собирает сам, снаружи приходят только размер списка (count) и размер страницы (pageSize). Сколько всего страниц, какие номера показать и где поставить многоточие — считает Ark Pagination; крайние стрелки на первой и последней странице гаснут сами.
Состояние ведётся контролируемо (пара page / onPageChange) или неконтролируемо (defaultPage) — во втором случае снаружи о текущей странице знать не нужно вовсе.
Клавиатура и доступность — на стороне Ark: элементы ряда — обычные кнопки в табуляции, текущая помечена aria-current="page", подписи для скринридера русские.
Использует: Ripple
Анатомия
Примеры
Контролируемая страница
Пара page / onPageChange отдаёт текущую страницу наружу — по ней запрашивают срез данных с бэка и её же кладут в адрес страницы. Колбэк получает { page, pageSize }.
Если снаружи страница не нужна, хватит defaultPage — пагинация ведёт её сама.
Соседние и крайние страницы
Сколько номеров помещается в ряд, задают два пропа: siblingCount — страницы по обе стороны от текущей, boundaryCount — страницы по краям списка. Всё, что не влезло между ними, схлопывается в многоточие.
siblingCount={0} даёт самый узкий ряд — для боковых панелей и мобильной ширины.
Вариант
Смысловой вариант — задаёт цвет текущей страницы и наведения: primary — акцент (по умолчанию), secondary — второстепенный, success / warning / danger — семантические статусы, default — нейтральный.
Внешний вид
Внешний вид кнопок ряда: solid — сплошная заливка, outline — обводка без заливки, dashed — та же обводка пунктиром, ghost — прозрачные кнопки с приглушённой подложкой (по умолчанию). Текущая страница подсвечена насыщеннее наведённой при любой подаче.
Размер
Размер управляет высотой кнопок, кеглем номеров и размером стрелок. Ступень ставится на ряд целиком и наследуется всеми его элементами. xs — для плотных панелей, sm — базовый, md и выше — для списков на всю страницу.
Скругление
Скругление углов кнопок — от прямых none до circle (круглые кнопки). На прозрачных кнопках разница видна только у текущей страницы, поэтому проп имеет смысл вместе с solid, outline или dashed.
Кастомный цвет
color — цвет вне стандартного набора вариантов, принимает любое CSS-значение и перекрывает цвет из variant. Цвет текста при сплошной заливке подбирается автоматически: на светлом фоне — чёрный, на тёмном — белый.
API
| Prop | Type | Default |
|---|---|---|
count*Всего элементов в списке — вместе с pageSize задаёт число страниц | number | - |
pageSizeСколько элементов помещается на страницу | ArkPaginationRootProps["pageSize"] | 10 |
pageТекущая страница (контролируемая модель). Пара с onPageChange | ArkPaginationRootProps["page"] | - |
defaultPageНачальная страница для неконтролируемой пагинации — когда вести состояние вручную не нужно | ArkPaginationRootProps["defaultPage"] | 1 |
onPageChangeКолбэк смены страницы: получает { page, pageSize } | ArkPaginationRootProps["onPageChange"] | - |
siblingCountСколько страниц показывать по обе стороны от текущей | ArkPaginationRootProps["siblingCount"] | 1 |
boundaryCountСколько страниц показывать по краям — в начале и в конце списка | ArkPaginationRootProps["boundaryCount"] | 1 |
variantСмысловой вариант — задаёт цвет | Variant | "primary" |
appearanceВнешний вид: сплошная заливка, обводка (сплошная или пунктирная) или приглушённая подложка | Appearance | "ghost" |
sizeРазмер компонента | Size | - |
radiusСкругление углов: circle — «таблетка» | Radius | - |
colorКастомный цвет — для случаев вне стандартного набора вариантов. Принимает любое CSS-значение, имеет приоритет над цветом из variant | string | - |
Наследуется от Pick<VisualProps, K>, Omit<ArkPaginationRootProps, "children">