import { useState, useMemo } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { ChevronDown, ChevronUp } from "lucide-react"; export default function DialogMediaSosial({ isOpen, onClose, }: { isOpen: boolean; onClose: () => void; }) { const mediaPlatforms = ["X", "Instagram", "Facebook", "Youtube", "TikTok"]; const mediaPerPlatform: Record = { X: ["X Mabes", "X Polda Jawa Timur", "X Polda Jawa Barat"], Instagram: [ "Instagram Mabes", "Instagram Polda Jawa Timur", "Instagram Polda Jawa Barat", ], Facebook: [ "Facebook Mabes", "Facebook Polda Jawa Timur", "Facebook Polda Jawa Barat", ], Youtube: [ "Youtube Mabes", "Youtube Polda Jawa Timur", "Youtube Polda Jawa Barat", ], TikTok: [ "TikTok Mabes", "TikTok Polda Jawa Timur", "TikTok Polda Jawa Barat", ], }; const [selectedMediaSosial, setSelectedMediaSosial] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [expanded, setExpanded] = useState>({}); const [selectedPlatforms, setSelectedPlatforms] = useState([ "X", "Instagram", "Facebook", "Youtube", "TikTok", ]); // Filter berdasarkan pencarian const filteredPlatforms = useMemo(() => { return mediaPlatforms.filter((p) => p.toLowerCase().includes(searchTerm.toLowerCase()) ); }, [searchTerm]); // Toggle platform (misalnya centang Instagram) const togglePlatform = (platform: string) => { if (selectedPlatforms.includes(platform)) { setSelectedPlatforms(selectedPlatforms.filter((p) => p !== platform)); // hapus semua media sosial di dalam platform tsb setSelectedMediaSosial((prev) => prev.filter((m) => !mediaPerPlatform[platform].includes(m)) ); } else { setSelectedPlatforms([...selectedPlatforms, platform]); setSelectedMediaSosial((prev) => [ ...prev, ...mediaPerPlatform[platform], ]); } }; // Toggle semua platform const toggleSelectAll = () => { if (selectedPlatforms.length === mediaPlatforms.length) { setSelectedPlatforms([]); setSelectedMediaSosial([]); } else { setSelectedPlatforms([...mediaPlatforms]); setSelectedMediaSosial(Object.values(mediaPerPlatform).flat()); } }; // Expand/collapse per platform const toggleExpand = (platform: string) => { setExpanded((prev) => ({ ...prev, [platform]: !prev[platform] })); }; // Toggle media per item const toggleMedia = (media: string) => { setSelectedMediaSosial((prev) => prev.includes(media) ? prev.filter((m) => m !== media) : [...prev, media] ); }; return ( Pilih Media Sosial {/* Input Pencarian */}
setSearchTerm(e.target.value)} className="w-full pl-10 pr-4 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" />
{/* Checkbox utama */}
{filteredPlatforms.map((platform) => ( ))}
{/* Expand per platform */}
{filteredPlatforms.map((platform) => (
{expanded[platform] && (
{mediaPerPlatform[platform].map((media) => ( ))}
)}
))}
{/* Tag media sosial dipilih */} {selectedMediaSosial.length > 0 && (

{selectedMediaSosial.length} Media Sosial dipilih

{selectedMediaSosial.map((m) => (
{m}
))}
)} {/* Tombol Footer */}
); }