132 lines
8.3 KiB
PHP
132 lines
8.3 KiB
PHP
@if ($paginator->hasPages())
|
||
<nav role="navigation" aria-label="Navigazione pagine"
|
||
class="flex flex-col sm:flex-row items-center justify-between gap-4 py-2">
|
||
|
||
{{-- Info testo --}}
|
||
<p class="text-sm text-gray-500 order-2 sm:order-1 shrink-0">
|
||
@if ($paginator->firstItem())
|
||
Risultati <span class="font-semibold text-gray-700">{{ $paginator->firstItem() }}–{{ $paginator->lastItem() }}</span>
|
||
di <span class="font-semibold text-gray-700">{{ $paginator->total() }}</span>
|
||
@else
|
||
{{ $paginator->count() }} risultati
|
||
@endif
|
||
</p>
|
||
|
||
{{-- Controlli --}}
|
||
<div class="flex items-center gap-1.5 order-1 sm:order-2">
|
||
|
||
{{-- Prev --}}
|
||
@if ($paginator->onFirstPage())
|
||
<span class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-300 cursor-default select-none">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"/></svg>
|
||
</span>
|
||
@else
|
||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev"
|
||
class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 bg-white text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="Pagina precedente">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"/></svg>
|
||
</a>
|
||
@endif
|
||
|
||
{{-- Numeri pagina (solo desktop) --}}
|
||
<div class="hidden sm:flex items-center gap-1.5">
|
||
@foreach ($elements as $element)
|
||
@if (is_string($element))
|
||
<span class="inline-flex items-center justify-center w-9 h-9 text-sm text-gray-400 select-none">…</span>
|
||
@endif
|
||
@if (is_array($element))
|
||
@foreach ($element as $page => $url)
|
||
@if ($page == $paginator->currentPage())
|
||
<span aria-current="page"
|
||
class="inline-flex items-center justify-center w-9 h-9 rounded-lg text-sm font-semibold text-white select-none"
|
||
style="background:#4f46e5">{{ $page }}</span>
|
||
@else
|
||
<a href="{{ $url }}"
|
||
class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 bg-white text-sm font-medium text-gray-600 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="Vai a pagina {{ $page }}">{{ $page }}</a>
|
||
@endif
|
||
@endforeach
|
||
@endif
|
||
@endforeach
|
||
</div>
|
||
|
||
{{-- Indicatore pagina corrente (solo mobile) --}}
|
||
<span class="sm:hidden inline-flex items-center justify-center px-4 h-9 rounded-lg border border-gray-200 bg-white text-sm font-medium text-gray-600 select-none">
|
||
{{ $paginator->currentPage() }} / {{ $paginator->lastPage() }}
|
||
</span>
|
||
|
||
{{-- Next --}}
|
||
@if ($paginator->hasMorePages())
|
||
<a href="{{ $paginator->nextPageUrl() }}" rel="next"
|
||
class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 bg-white text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="Pagina successiva">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
|
||
</a>
|
||
@else
|
||
<span class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-300 cursor-default select-none">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
|
||
</span>
|
||
@endif
|
||
|
||
</div>
|
||
</nav>
|
||
@endif
|
||
|
||
|
||
{{-- Prev --}}
|
||
@if ($paginator->onFirstPage())
|
||
<span class="inline-flex items-center justify-center w-8 h-8 rounded-lg border border-gray-200 text-gray-300 cursor-default select-none">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"/></svg>
|
||
</span>
|
||
@else
|
||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev"
|
||
class="inline-flex items-center justify-center w-8 h-8 rounded-lg border border-gray-200 bg-white text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="{{ __('pagination.previous') }}">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"/></svg>
|
||
</a>
|
||
@endif
|
||
|
||
{{-- Numeri pagina: nascosti su mobile, visibili da sm in su --}}
|
||
<div class="hidden sm:flex items-center gap-1">
|
||
@foreach ($elements as $element)
|
||
@if (is_string($element))
|
||
<span class="inline-flex items-center justify-center w-8 h-8 text-xs text-gray-400 select-none">…</span>
|
||
@endif
|
||
@if (is_array($element))
|
||
@foreach ($element as $page => $url)
|
||
@if ($page == $paginator->currentPage())
|
||
<span aria-current="page"
|
||
class="inline-flex items-center justify-center w-8 h-8 rounded-lg text-xs font-semibold text-white select-none"
|
||
style="background:#4f46e5">{{ $page }}</span>
|
||
@else
|
||
<a href="{{ $url }}"
|
||
class="inline-flex items-center justify-center w-8 h-8 rounded-lg border border-gray-200 bg-white text-xs font-medium text-gray-600 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="{{ __('Go to page :page', ['page' => $page]) }}">{{ $page }}</a>
|
||
@endif
|
||
@endforeach
|
||
@endif
|
||
@endforeach
|
||
</div>
|
||
|
||
{{-- Indicatore pagina mobile --}}
|
||
<span class="sm:hidden inline-flex items-center justify-center px-3 h-8 rounded-lg border border-gray-200 bg-white text-xs font-medium text-gray-600 select-none">
|
||
{{ $paginator->currentPage() }} / {{ $paginator->lastPage() }}
|
||
</span>
|
||
|
||
{{-- Next --}}
|
||
@if ($paginator->hasMorePages())
|
||
<a href="{{ $paginator->nextPageUrl() }}" rel="next"
|
||
class="inline-flex items-center justify-center w-8 h-8 rounded-lg border border-gray-200 bg-white text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition"
|
||
aria-label="{{ __('pagination.next') }}">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
|
||
</a>
|
||
@else
|
||
<span class="inline-flex items-center justify-center w-8 h-8 rounded-lg border border-gray-200 text-gray-300 cursor-default select-none">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/></svg>
|
||
</span>
|
||
@endif
|
||
|
||
</div>
|
||
</nav>
|
||
@endif
|