refactor(FE): Only render kandang table when selected

This commit is contained in:
rstubryan
2026-01-19 00:17:11 +07:00
parent d03414f7ab
commit f8ae023c45
3 changed files with 72 additions and 61 deletions
@@ -19,6 +19,7 @@ import { isResponseSuccess } from '@/lib/api-helper';
interface ExpenseKandangsTableProps { interface ExpenseKandangsTableProps {
locationId?: number; locationId?: number;
type: 'add' | 'edit' | 'detail'; type: 'add' | 'edit' | 'detail';
formType?: 'request' | 'realization';
selectedKandangs: { selectedKandangs: {
id?: number; id?: number;
name?: string; name?: string;
@@ -31,6 +32,7 @@ interface ExpenseKandangsTableProps {
const ExpenseKandangsTable = ({ const ExpenseKandangsTable = ({
type, type,
formType = 'request',
locationId, locationId,
selectedKandangs, selectedKandangs,
onChange, onChange,
@@ -173,6 +175,8 @@ const ExpenseKandangsTable = ({
}, [sorting, updateSortingFilter]); }, [sorting, updateSortingFilter]);
return ( return (
<>
{selectedKandangs.length > 0 && selectedKandangs.some((k) => k.id) && (
<Card <Card
className={{ className={{
wrapper: className?.wrapper, wrapper: className?.wrapper,
@@ -184,7 +188,11 @@ const ExpenseKandangsTable = ({
onOpenChange={setOpen} onOpenChange={setOpen}
title={ title={
<div className='card-actions p-4 justify-between items-center w-full'> <div className='card-actions p-4 justify-between items-center w-full'>
<div className='card-title'>Pilih Kandang</div> <div className='card-title'>
{formType === 'realization'
? 'Kandang yang Direalisasikan'
: 'Pilih Kandang'}
</div>
<Icon <Icon
icon='material-symbols:keyboard-arrow-down' icon='material-symbols:keyboard-arrow-down'
@@ -235,6 +243,8 @@ const ExpenseKandangsTable = ({
/> />
</Collapse> </Collapse>
</Card> </Card>
)}
</>
); );
}; };
@@ -130,7 +130,7 @@ export const getExpenseRealizationFormInitialValues = (
? formatDate(initialValues?.realization_date, 'YYYY-MM-DD') ? formatDate(initialValues?.realization_date, 'YYYY-MM-DD')
: undefined, : undefined,
kandangs: initialValues?.kandangs.map((kandang) => ({ kandangs: initialValues?.kandangs.map((kandang) => ({
id: kandang.kandang_id, id: kandang.id,
name: kandang.name, name: kandang.name,
})), })),
supplier: initialValues?.supplier supplier: initialValues?.supplier
@@ -297,6 +297,7 @@ const ExpenseRealizationForm = ({
<ExpenseKandangsTable <ExpenseKandangsTable
type='detail' type='detail'
formType='realization'
locationId={formik.values.location?.value} locationId={formik.values.location?.value}
selectedKandangs={formik.values.kandangs ?? []} selectedKandangs={formik.values.kandangs ?? []}
onChange={kandangsChangeHandler} onChange={kandangsChangeHandler}