2024-12-13 13:55:26 +03:00
|
|
|
'use no memo';
|
|
|
|
|
2023-09-10 20:17:18 +03:00
|
|
|
import { Table } from '@tanstack/react-table';
|
|
|
|
|
2025-02-10 01:32:55 +03:00
|
|
|
import { CheckboxTristate } from '../Input';
|
2023-09-10 20:17:18 +03:00
|
|
|
|
|
|
|
interface SelectAllProps<TData> {
|
2023-12-28 14:04:44 +03:00
|
|
|
table: Table<TData>;
|
2024-11-21 00:26:16 +03:00
|
|
|
resetLastSelected: () => void;
|
2023-09-10 20:17:18 +03:00
|
|
|
}
|
|
|
|
|
2025-02-19 23:30:35 +03:00
|
|
|
export function SelectAll<TData>({ table, resetLastSelected }: SelectAllProps<TData>) {
|
2024-03-25 23:10:29 +03:00
|
|
|
function handleChange(value: boolean | null) {
|
2024-11-21 00:26:16 +03:00
|
|
|
resetLastSelected();
|
2024-03-25 23:10:29 +03:00
|
|
|
table.toggleAllPageRowsSelected(value !== false);
|
|
|
|
}
|
|
|
|
|
2023-09-10 20:17:18 +03:00
|
|
|
return (
|
2024-01-04 19:30:10 +03:00
|
|
|
<CheckboxTristate
|
2023-12-28 14:04:44 +03:00
|
|
|
tabIndex={-1}
|
|
|
|
title='Выделить все'
|
|
|
|
value={
|
|
|
|
!table.getIsAllPageRowsSelected() && table.getIsSomePageRowsSelected() ? null : table.getIsAllPageRowsSelected()
|
|
|
|
}
|
2025-02-04 20:35:55 +03:00
|
|
|
onChange={handleChange}
|
2023-12-28 14:04:44 +03:00
|
|
|
/>
|
|
|
|
);
|
2023-09-10 20:17:18 +03:00
|
|
|
}
|