updates on the bookings page and updated ai and more thngs
This commit is contained in:
@@ -42,6 +42,7 @@ export function DataTable({
|
||||
/* Selection — pass `selectedIds` to enable */
|
||||
selectedIds,
|
||||
onSelectionChange,
|
||||
selectAllPages = true,
|
||||
|
||||
/* Pagination — pass `pageSize` to enable */
|
||||
pageSize: initialPageSize,
|
||||
@@ -138,15 +139,22 @@ export function DataTable({
|
||||
/* ── Selection ───────────────────────────────────────────────────────── */
|
||||
const selectable = selectedIds !== undefined;
|
||||
const selected = React.useMemo(() => new Set(selectedIds || []), [selectedIds]);
|
||||
|
||||
const allRowIds = React.useMemo(
|
||||
() => sortedRows.map((row, i) => getRowId(row, i)),
|
||||
[sortedRows, getRowId]
|
||||
);
|
||||
const pageIds = visibleRows.map((row, i) => getRowId(row, i));
|
||||
const allOnPageSelected = pageIds.length > 0 && pageIds.every((id) => selected.has(id));
|
||||
const someOnPageSelected = pageIds.some((id) => selected.has(id));
|
||||
|
||||
const targetIds = selectAllPages && !serverPaginated ? allRowIds : pageIds;
|
||||
const allTargetSelected = targetIds.length > 0 && targetIds.every((id) => selected.has(id));
|
||||
const someTargetSelected = targetIds.some((id) => selected.has(id));
|
||||
|
||||
const toggleAll = () => {
|
||||
if (allOnPageSelected) {
|
||||
onSelectionChange?.(selectedIds.filter((id) => !pageIds.includes(id)));
|
||||
if (allTargetSelected) {
|
||||
onSelectionChange?.(selectedIds.filter((id) => !targetIds.includes(id)));
|
||||
} else {
|
||||
onSelectionChange?.([...new Set([...selectedIds, ...pageIds])]);
|
||||
onSelectionChange?.([...new Set([...selectedIds, ...targetIds])]);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -202,9 +210,13 @@ export function DataTable({
|
||||
{selectable && (
|
||||
<th scope="col" className={cn('w-10 px-4', cellPad)}>
|
||||
<Checkbox
|
||||
checked={allOnPageSelected ? true : someOnPageSelected ? 'indeterminate' : false}
|
||||
checked={allTargetSelected ? true : someTargetSelected ? 'indeterminate' : false}
|
||||
onCheckedChange={toggleAll}
|
||||
aria-label="Select all rows on this page"
|
||||
aria-label={
|
||||
selectAllPages && !serverPaginated
|
||||
? 'Select all rows'
|
||||
: 'Select all rows on this page'
|
||||
}
|
||||
/>
|
||||
</th>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user