feat(extension-requests): add manager queue with quick decisions
This commit is contained in:
@@ -45,6 +45,7 @@ export interface DataTableAction<TData> {
|
||||
onClick: (item: TData) => void;
|
||||
permission?: PermissionInput;
|
||||
disabled?: (item: TData) => boolean;
|
||||
hidden?: (item: TData) => boolean;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
@@ -156,6 +157,8 @@ function DataTableContent<TData, TValue>({
|
||||
return (
|
||||
<div className="flex justify-start gap-2">
|
||||
{actions.map((action) => {
|
||||
if (action.hidden?.(item)) return null;
|
||||
|
||||
const label =
|
||||
typeof action.label === 'function'
|
||||
? action.label(item)
|
||||
@@ -212,37 +215,41 @@ function DataTableContent<TData, TValue>({
|
||||
manualSorting: isManualSorting,
|
||||
pageCount: pagination
|
||||
? Math.ceil((pagination.totalItems ?? data.length) / pagination.limit)
|
||||
: -1,
|
||||
: undefined,
|
||||
state: {
|
||||
rowSelection,
|
||||
columnVisibility,
|
||||
columnPinning,
|
||||
columnSizing,
|
||||
sorting,
|
||||
pagination: pagination
|
||||
...(pagination
|
||||
? {
|
||||
pagination: {
|
||||
pageIndex: Math.floor(pagination.skip / pagination.limit),
|
||||
pageSize: pagination.limit,
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
},
|
||||
onPaginationChange: pagination
|
||||
? (updater) => {
|
||||
const currentState = {
|
||||
pageIndex: Math.floor(pagination.skip / pagination.limit),
|
||||
pageSize: pagination.limit,
|
||||
};
|
||||
const newState =
|
||||
typeof updater === 'function' ? updater(currentState) : updater;
|
||||
const pageSizeChanged = newState.pageSize !== pagination.limit;
|
||||
|
||||
if (pageSizeChanged) {
|
||||
pagination.onLimitChange(newState.pageSize);
|
||||
pagination.onPageChange(0);
|
||||
return;
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
onPaginationChange: (updater) => {
|
||||
if (typeof updater === 'function' && pagination) {
|
||||
const newState = updater({
|
||||
pageIndex: Math.floor(pagination.skip / pagination.limit),
|
||||
pageSize: pagination.limit,
|
||||
});
|
||||
const pageSizeChanged = newState.pageSize !== pagination.limit;
|
||||
|
||||
if (pageSizeChanged) {
|
||||
pagination.onLimitChange(newState.pageSize);
|
||||
pagination.onPageChange(0);
|
||||
return;
|
||||
pagination.onPageChange(newState.pageIndex * newState.pageSize);
|
||||
}
|
||||
|
||||
pagination.onPageChange(newState.pageIndex * newState.pageSize);
|
||||
}
|
||||
},
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user