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 } }