Commaaa2
This commit is contained in:
@@ -8,13 +8,14 @@ use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Traits\ForwardsCalls;
|
||||
use Illuminate\Support\Traits\Tappable;
|
||||
|
||||
/**
|
||||
* @mixin \Illuminate\Support\Collection
|
||||
*/
|
||||
abstract class AbstractPaginator implements Htmlable
|
||||
{
|
||||
use ForwardsCalls;
|
||||
use ForwardsCalls, Tappable;
|
||||
|
||||
/**
|
||||
* All of the items being paginated.
|
||||
@@ -112,14 +113,14 @@ abstract class AbstractPaginator implements Htmlable
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $defaultView = 'pagination::bootstrap-4';
|
||||
public static $defaultView = 'pagination::tailwind';
|
||||
|
||||
/**
|
||||
* The default "simple" pagination view.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $defaultSimpleView = 'pagination::simple-bootstrap-4';
|
||||
public static $defaultSimpleView = 'pagination::simple-tailwind';
|
||||
|
||||
/**
|
||||
* Determine if the given value is a valid page number.
|
||||
@@ -335,6 +336,19 @@ abstract class AbstractPaginator implements Htmlable
|
||||
return count($this->items) > 0 ? $this->firstItem() + $this->count() - 1 : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform each item in the slice of items using a callback.
|
||||
*
|
||||
* @param callable $callback
|
||||
* @return $this
|
||||
*/
|
||||
public function through(callable $callback)
|
||||
{
|
||||
$this->items->transform($callback);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of items shown per page.
|
||||
*
|
||||
@@ -365,6 +379,16 @@ abstract class AbstractPaginator implements Htmlable
|
||||
return $this->currentPage() <= 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the paginator is on the last page.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function onLastPage()
|
||||
{
|
||||
return ! $this->hasMorePages();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current page.
|
||||
*
|
||||
@@ -498,6 +522,21 @@ abstract class AbstractPaginator implements Htmlable
|
||||
static::$currentPageResolver = $resolver;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the query string or return the default value.
|
||||
*
|
||||
* @param string|array|null $default
|
||||
* @return string
|
||||
*/
|
||||
public static function resolveQueryString($default = null)
|
||||
{
|
||||
if (isset(static::$queryStringResolver)) {
|
||||
return (static::$queryStringResolver)();
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set with query string resolver callback.
|
||||
*
|
||||
@@ -563,6 +602,17 @@ abstract class AbstractPaginator implements Htmlable
|
||||
static::defaultSimpleView('pagination::simple-tailwind');
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate that Bootstrap 4 styling should be used for generated links.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function useBootstrap()
|
||||
{
|
||||
static::defaultView('pagination::bootstrap-4');
|
||||
static::defaultSimpleView('pagination::simple-bootstrap-4');
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate that Bootstrap 3 styling should be used for generated links.
|
||||
*
|
||||
@@ -579,6 +629,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
*
|
||||
* @return \ArrayIterator
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function getIterator()
|
||||
{
|
||||
return $this->items->getIterator();
|
||||
@@ -609,6 +660,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function count()
|
||||
{
|
||||
return $this->items->count();
|
||||
@@ -653,6 +705,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
* @param mixed $key
|
||||
* @return bool
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetExists($key)
|
||||
{
|
||||
return $this->items->has($key);
|
||||
@@ -664,6 +717,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
* @param mixed $key
|
||||
* @return mixed
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($key)
|
||||
{
|
||||
return $this->items->get($key);
|
||||
@@ -676,6 +730,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
* @param mixed $value
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetSet($key, $value)
|
||||
{
|
||||
$this->items->put($key, $value);
|
||||
@@ -687,6 +742,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
* @param mixed $key
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetUnset($key)
|
||||
{
|
||||
$this->items->forget($key);
|
||||
@@ -715,7 +771,7 @@ abstract class AbstractPaginator implements Htmlable
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the contents of the paginator when casting to string.
|
||||
* Render the contents of the paginator when casting to a string.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
||||
@@ -94,6 +94,36 @@ class LengthAwarePaginator extends AbstractPaginator implements Arrayable, Array
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the paginator links as a collection (for JSON responses).
|
||||
*
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public function linkCollection()
|
||||
{
|
||||
return collect($this->elements())->flatMap(function ($item) {
|
||||
if (! is_array($item)) {
|
||||
return [['url' => null, 'label' => '...', 'active' => false]];
|
||||
}
|
||||
|
||||
return collect($item)->map(function ($url, $page) {
|
||||
return [
|
||||
'url' => $url,
|
||||
'label' => (string) $page,
|
||||
'active' => $this->currentPage() === $page,
|
||||
];
|
||||
});
|
||||
})->prepend([
|
||||
'url' => $this->previousPageUrl(),
|
||||
'label' => function_exists('__') ? __('pagination.previous') : 'Previous',
|
||||
'active' => false,
|
||||
])->push([
|
||||
'url' => $this->nextPageUrl(),
|
||||
'label' => function_exists('__') ? __('pagination.next') : 'Next',
|
||||
'active' => false,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array of elements to pass to the view.
|
||||
*
|
||||
@@ -168,6 +198,7 @@ class LengthAwarePaginator extends AbstractPaginator implements Arrayable, Array
|
||||
'from' => $this->firstItem(),
|
||||
'last_page' => $this->lastPage(),
|
||||
'last_page_url' => $this->url($this->lastPage()),
|
||||
'links' => $this->linkCollection()->toArray(),
|
||||
'next_page_url' => $this->nextPageUrl(),
|
||||
'path' => $this->path(),
|
||||
'per_page' => $this->perPage(),
|
||||
@@ -182,6 +213,7 @@ class LengthAwarePaginator extends AbstractPaginator implements Arrayable, Array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->toArray();
|
||||
|
||||
22
vendor/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php
vendored
Normal file → Executable file
22
vendor/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php
vendored
Normal file → Executable file
@@ -29,26 +29,6 @@ class PaginationServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
Paginator::viewFactoryResolver(function () {
|
||||
return $this->app['view'];
|
||||
});
|
||||
|
||||
Paginator::currentPathResolver(function () {
|
||||
return $this->app['request']->url();
|
||||
});
|
||||
|
||||
Paginator::currentPageResolver(function ($pageName = 'page') {
|
||||
$page = $this->app['request']->input($pageName);
|
||||
|
||||
if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) {
|
||||
return (int) $page;
|
||||
}
|
||||
|
||||
return 1;
|
||||
});
|
||||
|
||||
Paginator::queryStringResolver(function () {
|
||||
return $this->app['request']->query();
|
||||
});
|
||||
PaginationState::resolveUsing($this->app);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,6 +158,7 @@ class Paginator extends AbstractPaginator implements Arrayable, ArrayAccess, Cou
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->toArray();
|
||||
|
||||
@@ -59,9 +59,9 @@ class UrlWindow
|
||||
protected function getSmallSlider()
|
||||
{
|
||||
return [
|
||||
'first' => $this->paginator->getUrlRange(1, $this->lastPage()),
|
||||
'first' => $this->paginator->getUrlRange(1, $this->lastPage()),
|
||||
'slider' => null,
|
||||
'last' => null,
|
||||
'last' => null,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -145,9 +145,9 @@ class UrlWindow
|
||||
protected function getFullSlider($onEachSide)
|
||||
{
|
||||
return [
|
||||
'first' => $this->getStart(),
|
||||
'first' => $this->getStart(),
|
||||
'slider' => $this->getAdjacentUrlRange($onEachSide),
|
||||
'last' => $this->getFinish(),
|
||||
'last' => $this->getFinish(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
9
vendor/laravel/framework/src/Illuminate/Pagination/composer.json
vendored
Normal file → Executable file
9
vendor/laravel/framework/src/Illuminate/Pagination/composer.json
vendored
Normal file → Executable file
@@ -14,10 +14,11 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.2.5|^8.0",
|
||||
"php": "^7.3|^8.0",
|
||||
"ext-json": "*",
|
||||
"illuminate/contracts": "^7.0",
|
||||
"illuminate/support": "^7.0"
|
||||
"illuminate/collections": "^8.0",
|
||||
"illuminate/contracts": "^8.0",
|
||||
"illuminate/support": "^8.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@@ -26,7 +27,7 @@
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "7.x-dev"
|
||||
"dev-master": "8.x-dev"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</a>
|
||||
@else
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
@if ($paginator->hasPages())
|
||||
<nav role="navigation" aria-label="Pagination Navigation" class="flex items-center justify-between">
|
||||
<nav role="navigation" aria-label="{{ __('Pagination Navigation') }}" class="flex items-center justify-between">
|
||||
<div class="flex justify-between flex-1 sm:hidden">
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md">
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
<a href="{{ $paginator->previousPageUrl() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
<a href="{{ $paginator->nextPageUrl() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</a>
|
||||
@else
|
||||
@@ -26,9 +26,13 @@
|
||||
<div>
|
||||
<p class="text-sm text-gray-700 leading-5">
|
||||
{!! __('Showing') !!}
|
||||
<span class="font-medium">{{ $paginator->firstItem() }}</span>
|
||||
{!! __('to') !!}
|
||||
<span class="font-medium">{{ $paginator->lastItem() }}</span>
|
||||
@if ($paginator->firstItem())
|
||||
<span class="font-medium">{{ $paginator->firstItem() }}</span>
|
||||
{!! __('to') !!}
|
||||
<span class="font-medium">{{ $paginator->lastItem() }}</span>
|
||||
@else
|
||||
{{ $paginator->count() }}
|
||||
@endif
|
||||
{!! __('of') !!}
|
||||
<span class="font-medium">{{ $paginator->total() }}</span>
|
||||
{!! __('results') !!}
|
||||
@@ -36,7 +40,7 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span class="relative z-0 inline-flex shadow-sm">
|
||||
<span class="relative z-0 inline-flex shadow-sm rounded-md">
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<span aria-disabled="true" aria-label="{{ __('pagination.previous') }}">
|
||||
@@ -47,7 +51,7 @@
|
||||
</span>
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.previous') }}">
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.previous') }}">
|
||||
<svg class="w-5 h-5" 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>
|
||||
@@ -71,7 +75,7 @@
|
||||
<span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5">{{ $page }}</span>
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $url }}" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
|
||||
<a href="{{ $url }}" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
|
||||
{{ $page }}
|
||||
</a>
|
||||
@endif
|
||||
@@ -81,7 +85,7 @@
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.next') }}">
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.next') }}">
|
||||
<svg class="w-5 h-5" 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>
|
||||
|
||||
Reference in New Issue
Block a user