feat: add fields translations to common.json and enhance EnterpriseDataTable with status column and StatusBadge component

This commit is contained in:
Firman Ramdhani
2026-07-22 13:42:28 +07:00
parent f70aa9d29e
commit 9a1422ef28
3 changed files with 85 additions and 3 deletions
@@ -113,6 +113,41 @@
"system_menu": { "system_menu": {
"history": "History", "history": "History",
"bookmark": "Bookmark" "bookmark": "Bookmark"
},
"fields": {
"id": "ID",
"code": "Code",
"name": "Name",
"description": "Description",
"number": "Number",
"status": "Status",
"type": "Type",
"category": "Category",
"action": "Action",
"createdAt": "Created At",
"updatedAt": "Updated At",
"createdBy": "Created By",
"updatedBy": "Updated By",
"deletedAt": "Deleted At",
"date": "Date",
"amount": "Amount",
"price": "Price",
"quantity": "Quantity",
"total": "Total",
"balance": "Balance",
"address": "Address",
"phone": "Phone Number",
"email": "Email",
"user": "User",
"role": "Role",
"notes": "Notes",
"isActive": "Active",
"isDefault": "Default",
"isRequired": "Required",
"startDate": "Start Date",
"endDate": "End Date",
"attachment": "Attachment",
"reference": "Reference"
} }
} }
} }
@@ -113,6 +113,41 @@
"system_menu": { "system_menu": {
"history": "Riwayat", "history": "Riwayat",
"bookmark": "Bookmark" "bookmark": "Bookmark"
},
"fields": {
"id": "ID",
"code": "Kode",
"name": "Nama",
"description": "Deskripsi",
"number": "Nomor",
"status": "Status",
"type": "Tipe",
"category": "Kategori",
"action": "Aksi",
"createdAt": "Tanggal Dibuat",
"updatedAt": "Tanggal Diperbarui",
"createdBy": "Dibuat Oleh",
"updatedBy": "Diperbarui Oleh",
"deletedAt": "Tanggal Dihapus",
"date": "Tanggal",
"amount": "Nominal",
"price": "Harga",
"quantity": "Kuantitas",
"total": "Total",
"balance": "Saldo",
"address": "Alamat",
"phone": "No. Telepon",
"email": "Email",
"user": "Pengguna",
"role": "Peran",
"notes": "Catatan",
"isActive": "Aktif",
"isDefault": "Bawaan",
"isRequired": "Wajib",
"startDate": "Tanggal Mulai",
"endDate": "Tanggal Selesai",
"attachment": "Lampiran",
"reference": "Referensi"
} }
} }
} }
@@ -13,7 +13,7 @@ import {
} from 'ag-grid-community'; } from 'ag-grid-community';
import { Box } from '@mantine/core'; import { Box } from '@mantine/core';
import { DataGrid } from '../../../../components'; import { DataGrid, StatusBadge } from '../../../../components';
import { import {
useEnterpriseModuleDataServiceContext, useEnterpriseModuleDataServiceContext,
@@ -108,8 +108,20 @@ export function EnterpriseDataTable<E extends BaseEntity>(props: EnterpriseDataT
// Ensure column definitions are referentially stable // Ensure column definitions are referentially stable
const finalColumnDefs = useMemo<ColDef<E>[]>(() => { const finalColumnDefs = useMemo<ColDef<E>[]>(() => {
return columnDefs; const masterDetailColumn: ColDef<E> = { maxWidth: 50, sortable: false, cellRenderer: 'agGroupCellRenderer' };
}, [columnDefs]); const statusColumn: ColDef<E> = {
maxWidth: 130,
field: 'status' as any,
headerName: t('common:fields.status'),
cellRenderer: ({ value }: any) => <StatusBadge status={value} />,
};
const prefixColumn: ColDef<E>[] = [props.masterDetail ? masterDetailColumn : (null as any), statusColumn].filter(
Boolean,
);
return [...prefixColumn, ...columnDefs];
}, [columnDefs, props.masterDetail]);
// Default configuration applied to all columns in the grid // Default configuration applied to all columns in the grid
const defaultColDef = useMemo<ColDef>(() => ({ flex: 1, minWidth: 100, sortable: true, resizable: true }), []); const defaultColDef = useMemo<ColDef>(() => ({ flex: 1, minWidth: 100, sortable: true, resizable: true }), []);