feat: enhance full page functionality with updated translations, improved pagination handling, and new bulk action components
This commit is contained in:
@@ -7,7 +7,6 @@ import {
|
||||
IServerSideDatasource,
|
||||
IServerSideGetRowsParams,
|
||||
SelectionChangedEvent,
|
||||
GetContextMenuItemsParams,
|
||||
MenuItemDef,
|
||||
DefaultMenuItem,
|
||||
StatusBar,
|
||||
@@ -86,7 +85,7 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
|
||||
// ---------------------------------------------------------------------------
|
||||
const { t } = useEnterpriseModuleTranslationContext();
|
||||
const { dataServices } = useEnterpriseModuleDataServiceContext<E>();
|
||||
const { setSelectedRows, setFilterData, metaData, setMetaData } = useEnterpriseModuleSelectionContext<E>();
|
||||
const { setSelectedRows, metaData, setMetaData } = useEnterpriseModuleSelectionContext<E>();
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Local UI State
|
||||
@@ -100,6 +99,7 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
|
||||
// ---------------------------------------------------------------------------
|
||||
// Determine the number of rows per page based on metadata, defaulting to 10
|
||||
const perPage = useMemo(() => {
|
||||
console.log({ metaData });
|
||||
return metaData?.limit ?? 10;
|
||||
}, [metaData]);
|
||||
|
||||
@@ -186,35 +186,45 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
|
||||
);
|
||||
|
||||
// Configures the context menu items available when right-clicking a cell
|
||||
const getContextMenuItems = useCallback(
|
||||
(
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
params: GetContextMenuItemsParams,
|
||||
): (DefaultMenuItem | MenuItemDef)[] | Promise<(DefaultMenuItem | MenuItemDef)[]> => {
|
||||
return ['copy', 'copyWithHeaders'];
|
||||
},
|
||||
[],
|
||||
);
|
||||
const getContextMenuItems = useCallback(():
|
||||
| (DefaultMenuItem | MenuItemDef)[]
|
||||
| Promise<(DefaultMenuItem | MenuItemDef)[]> => {
|
||||
return ['copy', 'copyWithHeaders'];
|
||||
}, []);
|
||||
|
||||
const statusBar = useMemo<StatusBar | undefined>(() => {
|
||||
if (!showStatusbar) return undefined;
|
||||
return { statusPanels: [{ statusPanel: 'agSelectedRowCountComponent', align: 'left' }] };
|
||||
}, [showStatusbar]);
|
||||
|
||||
const domLayout = useMemo(() => {
|
||||
const meta = { total: metaData?.total ?? 0, limit: metaData?.limit ?? 0 };
|
||||
if (!isPaginated) {
|
||||
return meta?.total < meta?.limit ? 'autoHeight' : 'normal';
|
||||
}
|
||||
return 'autoHeight';
|
||||
}, [metaData, isPaginated]);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Render
|
||||
// ---------------------------------------------------------------------------
|
||||
return (
|
||||
<Box>
|
||||
{/* GRID CONTAINER */}
|
||||
<Box style={{ height: gridHeight, width: '100%' }} className="erp-data-grid-container">
|
||||
<Box
|
||||
className="erp-data-grid-container"
|
||||
style={{
|
||||
width: '100%',
|
||||
height: domLayout === 'autoHeight' || restAgGridProps.domLayout === 'autoHeight' ? '100%' : gridHeight,
|
||||
}}
|
||||
>
|
||||
<DataGrid<E>
|
||||
rowModelType="serverSide"
|
||||
getRowId={(v) => v.data.id as string}
|
||||
cacheBlockSize={perPage}
|
||||
pagination={isPaginated}
|
||||
paginationPageSize={isPaginated ? perPage : undefined}
|
||||
paginationPageSizeSelector={isPaginated ? [10, 20, 50] : undefined}
|
||||
paginationPageSizeSelector={isPaginated ? [10, 15, 20, 50] : undefined}
|
||||
columnDefs={finalColumnDefs}
|
||||
defaultColDef={defaultColDef}
|
||||
animateRows={true}
|
||||
@@ -224,6 +234,7 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
|
||||
onGridReady={onGridReady}
|
||||
getContextMenuItems={getContextMenuItems}
|
||||
statusBar={statusBar}
|
||||
domLayout={domLayout}
|
||||
overlayLoadingTemplate={`<span style="padding:10px">${loadingMessage}</span>`}
|
||||
overlayNoRowsTemplate={`<span style="padding:10px;color:var(--ag-foreground-color,#868e96)">${noRowsMessage}</span>`}
|
||||
{...restAgGridProps}
|
||||
|
||||
Reference in New Issue
Block a user