From 56065c381b539642391e495caac0c54d85998369 Mon Sep 17 00:00:00 2001 From: BOHA Date: Mon, 23 Mar 2026 10:53:26 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20align=20useTableSort=20with=20PHP=20vers?= =?UTF-8?q?ion=20=E2=80=94=20userClicked=20ref,=20nullable=20activeSort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- src/admin/components/SortIcon.tsx | 2 +- src/admin/hooks/useTableSort.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/admin/components/SortIcon.tsx b/src/admin/components/SortIcon.tsx index b0817e2..8cc2ae8 100644 --- a/src/admin/components/SortIcon.tsx +++ b/src/admin/components/SortIcon.tsx @@ -1,6 +1,6 @@ interface SortIconProps { column: string - sort: string + sort: string | null order: string } diff --git a/src/admin/hooks/useTableSort.ts b/src/admin/hooks/useTableSort.ts index ec9d01c..9dbbac3 100644 --- a/src/admin/hooks/useTableSort.ts +++ b/src/admin/hooks/useTableSort.ts @@ -1,19 +1,23 @@ -import { useState, useCallback } from 'react' +import { useState, useCallback, useRef } from 'react' -export default function useTableSort(defaultSort = 'id') { +export default function useTableSort(defaultSort = 'id', defaultOrder: 'asc' | 'desc' = 'desc') { const [sort, setSort] = useState(defaultSort) - const [order, setOrder] = useState<'asc' | 'desc'>('desc') + const [order, setOrder] = useState<'asc' | 'desc'>(defaultOrder) + const userClicked = useRef(false) const handleSort = useCallback((column: string) => { + userClicked.current = true setSort(prev => { if (prev === column) { setOrder(o => (o === 'asc' ? 'desc' : 'asc')) - return column + return prev } setOrder('desc') return column }) }, []) - return { sort, order, handleSort, activeSort: sort } + const activeSort = userClicked.current ? sort : null + + return { sort, order, handleSort, activeSort } }