diff --git a/src/ColumnSortable/SortableLink.php b/src/ColumnSortable/SortableLink.php index 986b0f2..22fb3b5 100644 --- a/src/ColumnSortable/SortableLink.php +++ b/src/ColumnSortable/SortableLink.php @@ -13,7 +13,7 @@ class SortableLink { - /** + /** * @param array $parameters * * @return string @@ -29,7 +29,7 @@ public static function render(array $parameters) request()->merge([$mergeTitleAs => $title]); } - list($icon, $direction) = self::determineDirection($sortColumn, $sortParameter); + list($icon, $direction) = self::determineDirection($sortColumn, $sortParameter, $queryParameters); $trailingTag = self::formTrailingTag($icon); @@ -122,10 +122,11 @@ private static function applyFormatting($title, $sortColumn) /** * @param $sortColumn * @param $sortParameter + * @param $queryParameters * * @return array */ - private static function determineDirection($sortColumn, $sortParameter) + private static function determineDirection($sortColumn, $sortParameter, $queryParameters) { $icon = self::selectIcon($sortColumn); @@ -137,7 +138,7 @@ private static function determineDirection($sortColumn, $sortParameter) return [$icon, $direction]; } else { $icon = config('columnsortable.sortable_icon'); - $direction = config('columnsortable.default_direction_unsorted', 'asc'); + $direction = $queryParameters['direction'] ?? config('columnsortable.default_direction_unsorted', 'asc'); return [$icon, $direction]; } diff --git a/tests/SortableLinkTest.php b/tests/SortableLinkTest.php index b30dfa1..8eaec86 100644 --- a/tests/SortableLinkTest.php +++ b/tests/SortableLinkTest.php @@ -114,6 +114,14 @@ public function testCustomHrefAttribute() $this->assertSame('ColumnTitle ', $link); } + + + public function testCustomHrefWithCustomSortDirectionAttribute() + { + $link = SortableLink::render(['column', 'ColumnTitle', ['a' => 'b', 'direction' => 'desc'], ['c' => 'd', 'href' => 'http://localhost/custom-path']]); + + $this->assertSame('ColumnTitle ', $link); + } public function testParseParameters()