'use client' import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Title, TextInput } from '@mantine/core'; import { useDebouncedValue, useShallowEffect } from '@mantine/hooks'; import { IconPlus, IconSearch, IconEdit, IconTrash } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import umkmState from '../../../_state/ekonomi/umkm/umkm'; import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus'; function DataUmkm() { const router = useRouter(); const [search, setSearch] = useState(""); const state = useProxy(umkmState.umkm.findMany); const [debouncedSearch] = useDebouncedValue(search, 1000); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); useShallowEffect(() => { state.load(state.page, 10, debouncedSearch); }, [state.page, debouncedSearch]); const handleHapus = async () => { if (selectedId) { const success = await umkmState.umkm.del.submit(selectedId); if (success) { setModalHapus(false); setSelectedId(null); } } }; return ( Data UMKM } value={search} onChange={(e) => setSearch(e.currentTarget.value)} mb="md" /> {state.loading ? ( ) : ( Nama UMKM Pemilik Kategori Kontak Aksi {state.data.map((item) => ( {item.nama} {item.pemilik} {item.kategori?.nama || '-'} {item.kontak || '-'} ))}
)}
state.load(p, 10, debouncedSearch)} />
setModalHapus(false)} onConfirm={handleHapus} text="Apakah Anda yakin ingin menghapus UMKM ini? Menghapus UMKM juga akan berdampak pada produk dan penjualan yang terkait." />
); } export default DataUmkm;