mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 15:55:48 +00:00
chore: adjust ProjectFlockKandangTable styling
This commit is contained in:
@@ -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>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
Reference in New Issue
Block a user