init
This commit is contained in:
79
src/sections/user/utils.ts
Normal file
79
src/sections/user/utils.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import type { UserProps } from './user-table-row';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
export const visuallyHidden = {
|
||||
border: 0,
|
||||
margin: -1,
|
||||
padding: 0,
|
||||
width: '1px',
|
||||
height: '1px',
|
||||
overflow: 'hidden',
|
||||
position: 'absolute',
|
||||
whiteSpace: 'nowrap',
|
||||
clip: 'rect(0 0 0 0)',
|
||||
} as const;
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
export function emptyRows(page: number, rowsPerPage: number, arrayLength: number) {
|
||||
return page ? Math.max(0, (1 + page) * rowsPerPage - arrayLength) : 0;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function descendingComparator<T>(a: T, b: T, orderBy: keyof T) {
|
||||
if (b[orderBy] < a[orderBy]) {
|
||||
return -1;
|
||||
}
|
||||
if (b[orderBy] > a[orderBy]) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
export function getComparator<Key extends keyof any>(
|
||||
order: 'asc' | 'desc',
|
||||
orderBy: Key
|
||||
): (
|
||||
a: {
|
||||
[key in Key]: number | string;
|
||||
},
|
||||
b: {
|
||||
[key in Key]: number | string;
|
||||
}
|
||||
) => number {
|
||||
return order === 'desc'
|
||||
? (a, b) => descendingComparator(a, b, orderBy)
|
||||
: (a, b) => -descendingComparator(a, b, orderBy);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
type ApplyFilterProps = {
|
||||
inputData: UserProps[];
|
||||
filterName: string;
|
||||
comparator: (a: any, b: any) => number;
|
||||
};
|
||||
|
||||
export function applyFilter({ inputData, comparator, filterName }: ApplyFilterProps) {
|
||||
const stabilizedThis = inputData.map((el, index) => [el, index] as const);
|
||||
|
||||
stabilizedThis.sort((a, b) => {
|
||||
const order = comparator(a[0], b[0]);
|
||||
if (order !== 0) return order;
|
||||
return a[1] - b[1];
|
||||
});
|
||||
|
||||
inputData = stabilizedThis.map((el) => el[0]);
|
||||
|
||||
if (filterName) {
|
||||
inputData = inputData.filter(
|
||||
(user) => user.name.toLowerCase().indexOf(filterName.toLowerCase()) !== -1
|
||||
);
|
||||
}
|
||||
|
||||
return inputData;
|
||||
}
|
||||
Reference in New Issue
Block a user