@coinmeca/ui
Version:
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
29 lines • 1.11 kB
JavaScript
'use client';
import { useCallback, useState } from 'react';
import { sort as s } from '../lib/utils';
export default function useSort() {
const [sort, update] = useState();
const sortArrow = useCallback((key) => {
switch (typeof key) {
case 'string':
return key === sort?.key ? (sort?.direction ? 'sort-up' : 'sort-down') : 'sort';
case 'object':
return key?.key === sort?.key ? (sort?.direction ? 'sort-up' : 'sort-down') : 'sort';
default:
return 'sort';
}
}, [sort]);
const setSort = useCallback((sort) => {
update((state) => {
return {
...sort,
direction: state?.key === sort?.key ? !state?.direction : undefined,
};
});
}, []);
const sorting = useCallback((list) => {
return list ? (sort && sort?.key !== '' && sort?.key?.length > 0 ? s(list, sort?.key, sort?.type, sort?.direction) : list) : [];
}, [sort]);
return { sort, sorting, setSort, sortArrow };
}
//# sourceMappingURL=useSort.js.map