chore: adjust ProjectFlockKandangTable styling

This commit is contained in:
ValdiANS
2026-02-03 09:40:34 +07:00
parent 68f3c95b81
commit dc5bd6b329
@@ -2,6 +2,7 @@
import Badge from '@/components/Badge'; import Badge from '@/components/Badge';
import Card from '@/components/Card'; import Card from '@/components/Card';
import StatusBadge from '@/components/helper/StatusBadge';
import CheckboxInput from '@/components/input/CheckboxInput'; import CheckboxInput from '@/components/input/CheckboxInput';
import PillBadge from '@/components/PillBadge'; import PillBadge from '@/components/PillBadge';
import Table from '@/components/Table'; import Table from '@/components/Table';
@@ -32,6 +33,14 @@ const ProjectFlockKandangTable = ({
initialValues?: ProjectFlock; initialValues?: ProjectFlock;
formType: 'add' | 'edit' | 'detail'; formType: 'add' | 'edit' | 'detail';
}) => { }) => {
const availableKandang = listKandang.filter(
(kandang) => kandang.status == 'NON_ACTIVE'
).length;
const unavailableKandang = listKandang.filter(
(kandang) => kandang.status != 'NON_ACTIVE'
).length;
// Fungsi untuk menangani perubahan checkbox // Fungsi untuk menangani perubahan checkbox
const handleCheckboxChange = (kandang: Kandang, isChecked: boolean) => { const handleCheckboxChange = (kandang: Kandang, isChecked: boolean) => {
// Hanya izinkan perubahan jika tidak dalam mode 'detail' // Hanya izinkan perubahan jika tidak dalam mode 'detail'
@@ -57,48 +66,30 @@ const ProjectFlockKandangTable = ({
{listKandang.length > 0 ? ( {listKandang.length > 0 ? (
<> <>
{/* ... Bagian Badge Status ... */} {/* ... Bagian Badge Status ... */}
<div className='flex flex-row mb-4'> <div className='w-fit flex flex-row items-stretch gap-3 mb-3'>
<Badge <StatusBadge
variant='soft' color='info'
color='primary' text={`Tersedia (${availableKandang})`}
className={{ className={{ badge: 'text-nowrap' }}
badge: 'rounded-lg px-2', />
}}
> <div className='w-px border-none bg-base-content/10' />
<Icon icon='mdi:circle' width={12} height={12} />
Tersedia ( <StatusBadge
{
listKandang.filter((kandang) => kandang.status == 'NON_ACTIVE')
.length
}
)
</Badge>
<div className='divider divider-horizontal mx-1'></div>
<Badge
variant='soft'
color='neutral' color='neutral'
className={{ text={`Tidak Tersedia (${unavailableKandang})`}
badge: 'rounded-lg px-2', className={{ badge: 'text-nowrap' }}
}} />
>
<Icon icon='mdi:circle' width={12} height={12} />
Tidak Tersedia (
{
listKandang.filter((kandang) => kandang.status != 'NON_ACTIVE')
.length
}
)
</Badge>
</div> </div>
{/* --- */} {/* --- */}
<Card <Card
variant='bordered' variant='bordered'
className={{ className={{
wrapper: 'w-full rounded-lg', wrapper: 'w-full rounded-xl border border-base-content/5',
body: 'p-4', body: 'p-0',
}} }}
> >
<div className='flex flex-col gap-4 w-full'> <div className='flex flex-col w-full'>
{listKandang.map((kandang, index) => { {listKandang.map((kandang, index) => {
const kandangIdString = const kandangIdString =
kandang.id?.toString() ?? `temp-${index}`; kandang.id?.toString() ?? `temp-${index}`;
@@ -112,28 +103,36 @@ const ProjectFlockKandangTable = ({
formType == 'detail' || kandang.status != 'NON_ACTIVE'; formType == 'detail' || kandang.status != 'NON_ACTIVE';
return ( return (
<div key={index} className='flex flex-row justify-between'> <div
key={index}
className='w-full p-3 flex flex-row items-center justify-between'
>
<CheckboxInput <CheckboxInput
name={`kandang-${kandang.id}`} // Nama unik untuk setiap checkbox name={`kandang-${kandang.id}`} // Nama unik untuk setiap checkbox
label={kandang.name} label={kandang.name}
checked={isSelected} checked={isSelected}
disabled={isDisabled} disabled={isDisabled}
size='md'
onChange={(e) => onChange={(e) =>
handleCheckboxChange(kandang, e.currentTarget.checked) handleCheckboxChange(kandang, e.currentTarget.checked)
} }
/> classNames={{
<Badge inputWrapper: cn('gap-3 text-base-content/50', {
variant='soft' 'text-base-content/20': isDisabled,
color={ }),
kandang.status == 'NON_ACTIVE' ? 'primary' : 'neutral' label: 'cursor-pointer',
} checkbox: cn({
className={{ 'bg-base-200 border border-base-content/10 opacity-100':
badge: 'rounded-lg px-2', isDisabled,
}),
}} }}
> />
<Icon icon='mdi:circle' width={12} height={12} />
{kandang.status != 'NON_ACTIVE' && 'Tidak'} Tersedia <StatusBadge
</Badge> color={!isDisabled ? 'info' : 'neutral'}
text={!isDisabled ? 'Tersedia' : 'Tidak Tersedia'}
className={{ badge: 'w-fit' }}
/>
</div> </div>
); );
})} })}