'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core'; import { useDebouncedValue, useShallowEffect } from '@mantine/hooks'; import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import HeaderSearch from '../../../_com/header'; import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus'; import layananonlineDesa from '../../../_state/inovasi/layanan-online-desa'; function JenisPengaduan() { const [search, setSearch] = useState(""); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListJenisPengaduan({ search }: { search: string }) { const state = useProxy(layananonlineDesa.jenisPengaduan); const router = useRouter(); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); const [debouncedSearch] = useDebouncedValue(search, 1000); const { data, page, totalPages, loading, load } = state.findMany; useShallowEffect(() => { load(page, 10, debouncedSearch); }, [page, debouncedSearch]); const handleHapus = async () => { if (selectedId) { await state.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); } }; const filteredData = data || []; if (loading || !data) { return ( ); } return ( Daftar Jenis Pengaduan {/* Desktop Table */} Nama Jenis Pengaduan Edit Hapus {filteredData.length > 0 ? ( filteredData.map((item) => ( {item.nama} )) ) : (
Tidak ada jenis pengaduan yang cocok
)}
{/* Mobile Card View */} {filteredData.length > 0 ? ( filteredData.map((item) => ( Nama Jenis Pengaduan {item.nama} )) ) : (
Tidak ada jenis pengaduan yang cocok
)}
{ load(newPage, 10); window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} mt={{ base: 'sm', md: 'md' }} mb={{ base: 'sm', md: 'md' }} color="blue" radius="md" />
setModalHapus(false)} onConfirm={handleHapus} text="Apakah anda yakin ingin menghapus jenis pengaduan ini?" />
); } export default JenisPengaduan;