@@ -21,9 +21,9 @@ public static function render(array $parameters): string
2121 request ()->merge ([$ mergeTitleAs => $ title ]);
2222 }
2323
24- list ($ icon , $ direction ) = self ::determineDirection ($ sortColumn , $ sortParameter );
24+ list ($ icon , $ direction ) = self ::getDirectionAndIcon ($ sortColumn , $ sortParameter );
2525
26- $ trailingTag = self ::formTrailingTag ($ icon );
26+ $ trailingTag = self ::getTrailingTag ($ icon );
2727
2828 $ anchorClass = self ::getAnchorClass ($ sortParameter , $ anchorAttributes );
2929
@@ -100,31 +100,34 @@ private static function applyFormatting($title, string $sortColumn)
100100 return $ title ;
101101 }
102102
103- private static function determineDirection ($ sortColumn , $ sortParameter ): array
103+ private static function getDirectionAndIcon ($ sortColumn , $ sortParameter ): array
104104 {
105105 $ icon = self ::selectIcon ($ sortColumn );
106106
107- if ((request ()->get ('sort ' ) == $ sortParameter ) && in_array (request ()->get ('direction ' ), ['asc ' , 'desc ' ])) {
108- $ icon .= (request ()->get ('direction ' ) === 'asc ' )
109- ? config ('sortable.asc_suffix ' )
110- : config ('sortable.desc_suffix ' );
107+ $ sort = request ()->get ('sort ' );
108+ $ dir = request ()->get ('direction ' );
111109
112- $ direction = request ()->get ('direction ' ) === 'desc ' ? 'asc ' : 'desc ' ;
110+ if (($ sort == $ sortParameter ) && in_array ($ dir , ['asc ' , 'desc ' ])) {
111+ $ icon .= ($ dir === 'asc ' )
112+ ? config ('sortable.icons.asc_suffix ' )
113+ : config ('sortable.icons.desc_suffix ' );
113114
114- return [ $ icon , $ direction ] ;
115+ $ direction = ( $ dir === ' desc ' ) ? ' asc ' : ' desc ' ;
115116 } else {
116117 $ icon = config ('sortable.icons.sortable ' );
117118 $ direction = config ('sortable.default_direction_unsorted ' );
118-
119- return [$ icon , $ direction ];
120119 }
120+
121+ $ icon = static ::getIconHtml ($ icon );
122+
123+ return [$ icon , $ direction ];
121124 }
122125
123126 private static function selectIcon ($ sortColumn ): string
124127 {
125128 $ icon = config ('sortable.icons.default ' );
126129
127- foreach (config ('sortable.types ' , [] ) as $ value ) {
130+ foreach (config ('sortable.types ' ) as $ value ) {
128131 if (in_array ($ sortColumn , $ value ['fields ' ])) {
129132 $ icon = $ value ['icon ' ];
130133 }
@@ -136,22 +139,17 @@ private static function selectIcon($sortColumn): string
136139 /**
137140 * @param string|null $icon
138141 */
139- private static function formTrailingTag ($ icon ): string
142+ private static function getTrailingTag ($ icon ): string
140143 {
141144 if (! config ('sortable.icons.enabled ' )) {
142145 return '</a> ' ;
143146 }
144147
145- $ clickableIcon = config ('sortable.icons.clickable ' );
146- $ trailingTag = static ::getIconHtml ($ icon ) . '</a> ' ;
147-
148- if ($ clickableIcon === false ) {
149- $ trailingTag = '</a> ' . static ::getIconHtml ($ icon );
150-
151- return $ trailingTag ;
148+ if (config ('sortable.icons.clickable ' ) === true ) {
149+ return $ icon . '</a> ' ;
152150 }
153151
154- return $ trailingTag ;
152+ return ' </a> ' . $ icon ;
155153 }
156154
157155 /**
@@ -167,12 +165,12 @@ private static function getAnchorClass(string $sortColumn, array &$anchorAttribu
167165 }
168166
169167 $ activeClass = config ('sortable.active_anchor_class ' );
170- if ($ activeClass !== null && self ::shouldShowActive ($ sortColumn )) {
168+ if (( $ activeClass !== null ) && self ::shouldShowActive ($ sortColumn )) {
171169 $ class [] = $ activeClass ;
172170 }
173171
174172 $ directionClassPrefix = config ('sortable.direction_anchor_class_prefix ' );
175- if ($ directionClassPrefix !== null && self ::shouldShowActive ($ sortColumn )) {
173+ if (( $ directionClassPrefix !== null ) && self ::shouldShowActive ($ sortColumn )) {
176174 $ class [] = $ directionClassPrefix . (request ()->get ('direction ' ) === 'asc ' )
177175 ? config ('sortable.asc_suffix ' , '-asc ' )
178176 : config ('sortable.desc_suffix ' , '-desc ' );
@@ -230,11 +228,13 @@ private static function buildUrl(string $queryString, array $anchorAttributes):
230228 return url ($ path . "? " . $ queryString );
231229 }
232230
233- public static function getIconHtml ($ icon = null ): string
231+ /**
232+ * @param string|null $icon
233+ */
234+ public static function getIconHtml ($ icon ): string
234235 {
235236 $ prefix = config ('sortable.icons.prefix ' );
236237 $ suffix = config ('sortable.icons.suffix ' );
237- $ icon = $ icon ?: config ('sortable.icons.default ' );
238238 $ wrapper = config ('sortable.icons.wrapper ' );
239239
240240 return $ prefix . str_replace ('{icon} ' , $ icon , $ wrapper ) . $ suffix ;
0 commit comments