From ff3c4c7ac2d05e813003605ed3c008112b405e38 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Tue, 15 Apr 2025 11:27:32 +0300 Subject: [PATCH] Add `OffsetPagination::addLinkAttributes()` and `GridView::filterFormAttributes()`. Fix `sortableLinkAttributes` usage. --- src/Column/Base/GlobalContext.php | 4 ++-- src/GridView.php | 16 ++++++++++++++-- src/Pagination/OffsetPagination.php | 7 +++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Column/Base/GlobalContext.php b/src/Column/Base/GlobalContext.php index d599d0009..f726fc6d9 100644 --- a/src/Column/Base/GlobalContext.php +++ b/src/Column/Base/GlobalContext.php @@ -101,7 +101,7 @@ public function translate(string|Stringable $id): string * @param Cell $cell The header cell to prepare. * @param string $property The property name for sorting. * - * @psalm-return list{Cell,?A,string,string} + * @psalm-return list{Cell, ?A, string, string} * * @return array Array containing: * - Modified cell @@ -122,7 +122,7 @@ public function prepareSortable(Cell $cell, string $property): array return [$cell, null, '', '']; } - $linkAttributes = []; + $linkAttributes = $this->sortableLinkAttributes; $propertyOrder = $this->sort->getOrder()[$property] ?? null; if ($propertyOrder === null) { $cell = $cell->addClass($this->sortableHeaderClass); diff --git a/src/GridView.php b/src/GridView.php index 0615d617b..7d8f2d8fc 100644 --- a/src/GridView.php +++ b/src/GridView.php @@ -16,9 +16,9 @@ use Yiisoft\Translator\TranslatorInterface; use Yiisoft\Validator\Result as ValidationResult; use Yiisoft\Yii\DataView\Column\Base\Cell; +use Yiisoft\Yii\DataView\Column\Base\DataContext; use Yiisoft\Yii\DataView\Column\Base\FilterContext; use Yiisoft\Yii\DataView\Column\Base\GlobalContext; -use Yiisoft\Yii\DataView\Column\Base\DataContext; use Yiisoft\Yii\DataView\Column\Base\MakeFilterContext; use Yiisoft\Yii\DataView\Column\Base\RendererContainer; use Yiisoft\Yii\DataView\Column\ColumnInterface; @@ -207,6 +207,8 @@ final class GridView extends BaseListView */ private array $filterErrorsContainerAttributes = []; + private array $filterFormAttributes = []; + /** * @var RendererContainer Container for column renderers. */ @@ -289,6 +291,13 @@ public function filterErrorsContainerAttributes(array $attributes): self return $new; } + public function filterFormAttributes(array $attributes): self + { + $new = clone $this; + $new->filterFormAttributes = $attributes; + return $new; + } + /** * Whether to keep the current page when sorting is changed. * @@ -820,7 +829,10 @@ protected function renderItems( if (!empty($sort) && $this->urlConfig->getSortParameterType() === UrlParameterType::QUERY) { $content[] = Html::hiddenInput($this->urlConfig->getSortParameterName(), $sort); } - $filtersForm = Html::form($url, 'GET', ['id' => $filterContext->formId, 'style' => 'display:none']) + $formAttributes = $this->filterFormAttributes; + $formAttributes['id'] = $filterContext->formId; + Html::addCssStyle($formAttributes, 'display:none'); + $filtersForm = Html::form($url, 'GET', $formAttributes) ->content(...$content) ->render(); $filterRow = Html::tr()->cells(...$tags); diff --git a/src/Pagination/OffsetPagination.php b/src/Pagination/OffsetPagination.php index b7f74d9c9..0b6193f16 100644 --- a/src/Pagination/OffsetPagination.php +++ b/src/Pagination/OffsetPagination.php @@ -139,6 +139,13 @@ public function linkAttributes(array $attributes): self return $new; } + public function addLinkAttributes(array $attributes): self + { + $new = clone $this; + $new->linkAttributes = array_merge($new->linkAttributes, $attributes); + return $new; + } + /** * Set new link classes. *