coryd.dev/app/Utils/paginator.php

43 lines
1.6 KiB
PHP

<?php
if (! function_exists('renderPaginator')) {
function renderPaginator(array $pagination, int $totalPages): void
{
if (! $pagination || $totalPages <= 1) {
return;
}
?>
<script type="module" src="/assets/scripts/components/select-pagination.js" defer></script>
<nav aria-label="Pagination" class="pagination">
<?php if (! empty($pagination['href']['previous'])) { ?>
<a href="<?= $pagination['href']['previous'] ?>" aria-label="Previous page">
<?= getTablerIcon('arrow-left') ?>
</a>
<?php } else { ?>
<span><?= getTablerIcon('arrow-left') ?></span>
<?php } ?>
<select-pagination data-base-index="1">
<select class="client-side" aria-label="Page selection">
<?php foreach ($pagination['pages'] as $i) { ?>
<option value="<?= $i ?>" <?= ($pagination['pageNumber'] === $i) ? 'selected' : '' ?>>
<?= $i ?> of <?= $totalPages ?>
</option>
<?php } ?>
</select>
<noscript>
<p><span aria-current="page"><?= $pagination['pageNumber'] ?></span> of <?= $totalPages ?></p>
</noscript>
</select-pagination>
<?php if (! empty($pagination['href']['next'])) { ?>
<a href="<?= $pagination['href']['next'] ?>" aria-label="Next page">
<?= getTablerIcon('arrow-right') ?>
</a>
<?php } else { ?>
<span><?= getTablerIcon('arrow-right') ?></span>
<?php } ?>
</nav>
<?php
}
}