"use client" import { LayoutNavbarNew, WARNA } from '@/module/_global'; import { Box, Button, Divider, Flex, Group, Stack, Text } from '@mantine/core'; import React, { useState } from 'react'; import { FaCheck } from 'react-icons/fa'; interface GroupData { group: string; divisions: string[]; } const groupData: GroupData[] = [ { group: "Group 1", divisions: ["Division 1", "Division 2", "Division 3"] }, { group: "Group 2", divisions: ["Division 4", "Division 5"] } ]; interface CheckedState { [key: string]: string[]; } export default function CreateUsersAnnouncement() { const [checked, setChecked] = useState({}); const [selectAll, setSelectAll] = useState(false); const handleCheck = (group: string, division: string) => { const newChecked = { ...checked }; if (newChecked[group]) { if (newChecked[group].includes(division)) { newChecked[group] = newChecked[group].filter(item => item !== division); } else { newChecked[group].push(division); } } else { newChecked[group] = [division]; } setChecked(newChecked); console.log(newChecked) }; const handleGroupCheck = (group: string) => { const newChecked = { ...checked }; if (newChecked[group]) { delete newChecked[group]; } else { newChecked[group] = groupData.find(item => item.group === group)?.divisions || []; } setChecked(newChecked); console.log(newChecked) }; const handleSelectAll = () => { setSelectAll(!selectAll); if (!selectAll) { const newChecked: CheckedState = {}; groupData.forEach(item => { newChecked[item.group] = item.divisions; }); setChecked(newChecked); console.log(newChecked) } else { setChecked({}); } }; return (
} /> Pilih Semua {groupData.map((item) => ( handleGroupCheck(item.group)} justify='space-between' align='center'> {item.group} {checked[item.group] && checked[item.group].length === item.divisions.length ? : ""} {item.divisions.map((division) => ( handleCheck(item.group, division)} style={{ cursor: 'pointer', display: 'flex', alignItems: 'center', paddingLeft: 20, }} > {checked[item.group] && checked[item.group].includes(division) ? : ""} {division} ))} ))}
); }