feat: add configurable data table filtering and update API endpoints for the example module

This commit is contained in:
Firman Ramdhani
2026-07-23 13:24:08 +07:00
parent ddf11741e9
commit fa119deec2
7 changed files with 227 additions and 16 deletions
@@ -39,13 +39,15 @@ import { RowActionMenu } from './components/row-actions';
import { BulkActionMenu } from './components/bulk-actions';
import { ActionConfirmationModal, ACTION_TRANSLATION_MAP } from '../action-confirmation-modal';
import { BulkActionConfirmationModal } from '../bulk-action-confirmation';
import { TableFilterDrawer } from './components/table-filter-drawer';
import { TableFilterDrawer, TableFilterConfig } from './components/table-filter-drawer';
import { TableSettingDrawer } from './components/table-setting-drawer';
import { EntityId } from '../../../../../../core-api/src/data-services/types';
export * from 'ag-grid-community';
export * from 'ag-grid-react';
export type { TableFilterConfig };
// ---------------------------------------------------------------------------
// Types & Interfaces
// ---------------------------------------------------------------------------
@@ -119,6 +121,11 @@ export interface EnterpriseDataTableProps<E extends BaseEntity> extends Omit<AgG
onBulkClickCancel?: (data: E[]) => void;
onBulkClickRollback?: (data: E[]) => void;
onBulkClickHold?: (data: E[]) => void;
/**
* Configuration for the Filter Drawer
*/
filterConfig?: TableFilterConfig<any>;
}
// ---------------------------------------------------------------------------
@@ -158,6 +165,7 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
cancelModalConfig,
rollbackModalConfig,
holdModalConfig,
filterConfig,
// Bulk action props
customBulkActions,
@@ -178,7 +186,7 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
// ---------------------------------------------------------------------------
const { t } = useEnterpriseModuleTranslationContext();
const { dataServices } = useEnterpriseModuleDataServiceContext<E>();
const { selectedRows, setSelectedRows, metaData, setMetaData } = useEnterpriseModuleSelectionContext<E>();
const { selectedRows, setSelectedRows, metaData, setMetaData, filterData, setFilterData } = useEnterpriseModuleSelectionContext<E>();
const navigation = useEnterpriseModuleNavigationContext();
const { config } = useEnterpriseModuleConfigContext();
@@ -789,6 +797,11 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
opened={openedFilter}
onClose={closeFilter}
title={t('common:filterTitle', { module: moduleTitle })}
config={filterConfig}
currentFilterData={filterData}
onFilter={(data) => {
console.log('Filter applied:', data);
}}
/>
<TableSettingDrawer