diff --git a/config/widgets-themes.php b/config/widgets-themes.php index ff7183fa2..a499f4fd4 100644 --- a/config/widgets-themes.php +++ b/config/widgets-themes.php @@ -63,7 +63,7 @@ 'listAttributes()' => [['class' => 'pagination']], 'itemTag()' => ['li'], 'itemAttributes()' => [['class' => 'page-item']], - 'linkAttributes()' => [['class' => 'page-link']], + 'linkClass()' => ['page-link'], 'currentItemClass()' => ['active'], 'disabledItemClass()' => ['disabled'], ], @@ -72,7 +72,7 @@ 'listAttributes()' => [['class' => 'pagination']], 'itemTag()' => ['li'], 'itemAttributes()' => [['class' => 'page-item']], - 'linkAttributes()' => [['class' => 'page-link']], + 'linkClass()' => ['page-link'], 'disabledItemClass()' => ['disabled'], ], InputPageSize::class => [ diff --git a/src/Pagination/KeysetPagination.php b/src/Pagination/KeysetPagination.php index 6b6219899..7b5e866fc 100644 --- a/src/Pagination/KeysetPagination.php +++ b/src/Pagination/KeysetPagination.php @@ -4,6 +4,7 @@ namespace Yiisoft\Yii\DataView\Pagination; +use BackedEnum; use InvalidArgumentException; use Stringable; use Yiisoft\Data\Paginator\KeysetPaginator; @@ -199,6 +200,39 @@ public function linkAttributes(array $attributes): self return $new; } + /** + * Set new link classes. + * + * Multiple classes can be set by passing them as separate arguments. `null` values are filtered out + * automatically. + * + * @param BackedEnum|string|null ...$class One or more CSS class names to use. Pass `null` to skip a class. + * @return self + */ + public function linkClass(BackedEnum|string|null ...$class): self + { + $new = clone $this; + $new->linkAttributes['class'] = []; + Html::addCssClass($new->linkAttributes, $class); + return $new; + } + + /** + * Adds one or more CSS classes to the existing link classes. + * + * Multiple classes can be added by passing them as separate arguments. `null` values are filtered out + * automatically. + * + * @param BackedEnum|string|null ...$class One or more CSS class names to add. Pass `null` to skip adding a class. + * @return self A new instance with the specified CSS classes added to existing ones. + */ + public function addLinkClass(BackedEnum|string|null ...$class): self + { + $new = clone $this; + Html::addCssClass($new->linkAttributes, $class); + return $new; + } + /** * Sets the CSS class for disabled link elements. * diff --git a/src/Pagination/OffsetPagination.php b/src/Pagination/OffsetPagination.php index c794b7af5..bd9a0e472 100644 --- a/src/Pagination/OffsetPagination.php +++ b/src/Pagination/OffsetPagination.php @@ -4,6 +4,7 @@ namespace Yiisoft\Yii\DataView\Pagination; +use BackedEnum; use InvalidArgumentException; use Stringable; use Yiisoft\Data\Paginator\PageToken; @@ -138,6 +139,39 @@ public function linkAttributes(array $attributes): self return $new; } + /** + * Set new link classes. + * + * Multiple classes can be set by passing them as separate arguments. `null` values are filtered out + * automatically. + * + * @param BackedEnum|string|null ...$class One or more CSS class names to use. Pass `null` to skip a class. + * @return self + */ + public function linkClass(BackedEnum|string|null ...$class): self + { + $new = clone $this; + $new->linkAttributes['class'] = []; + Html::addCssClass($new->linkAttributes, $class); + return $new; + } + + /** + * Adds one or more CSS classes to the existing link classes. + * + * Multiple classes can be added by passing them as separate arguments. `null` values are filtered out + * automatically. + * + * @param BackedEnum|string|null ...$class One or more CSS class names to add. Pass `null` to skip adding a class. + * @return self A new instance with the specified CSS classes added to existing ones. + */ + public function addLinkClass(BackedEnum|string|null ...$class): self + { + $new = clone $this; + Html::addCssClass($new->linkAttributes, $class); + return $new; + } + public function currentLinkClass(?string $class): self { $new = clone $this;