Files
my-links/inertia/components/admin/users/utils.ts
2024-11-10 00:00:20 +01:00

40 lines
869 B
TypeScript

import {
UsersWithCounts,
UserWithCounts,
} from '~/components/admin/users/users_table';
export function filterData(data: UsersWithCounts, search: string) {
const query = search.toLowerCase().trim();
return data.filter((item) =>
['email', 'name', 'nickName', 'fullname'].some((key) => {
const value = item[key as keyof UserWithCounts];
return typeof value === 'string' && value.toLowerCase().includes(query);
})
);
}
export function sortData(
data: UsersWithCounts,
payload: {
sortBy: keyof UserWithCounts | null;
reversed: boolean;
search: string;
}
) {
const { sortBy } = payload;
if (!sortBy) {
return filterData(data, payload.search);
}
return filterData(
[...data].sort((a, b) => {
if (payload.reversed) {
return b[sortBy] > a[sortBy] ? 1 : -1;
}
return a[sortBy] > b[sortBy] ? 1 : -1;
}),
payload.search
);
}