'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { useProxy } from 'valtio/utils'; import { useShallowEffect } from '@mantine/hooks'; import { Box, Button, Center, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, } from '@mantine/core'; import { IconDeviceImac, IconSearch } from '@tabler/icons-react'; import HeaderSearch from '../../../_com/header'; import indeksKepuasanState from '../../../_state/landing-page/indeks-kepuasan'; function Responden() { const [search, setSearch] = useState(''); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } interface ListRespondenProps { search: string; } function ListResponden({ search }: ListRespondenProps) { const state = useProxy(indeksKepuasanState.responden); const router = useRouter(); const { data, page, totalPages, loading, load } = state.findMany; useShallowEffect(() => { load(page, 10); }, [page]); const filteredData = (data || []).filter((item) => { const keyword = search.toLowerCase(); return item.name.toLowerCase().includes(keyword); }); if (loading || !data) { return ( ); } if (data.length === 0) { return ( Data Responden Belum ada data responden yang tersedia ); } return ( Daftar Responden No Nama Tanggal Jenis Kelamin Aksi {filteredData.length === 0 ? ( Tidak ditemukan data dengan kata kunci pencarian ) : ( filteredData.map((item, index) => ( {index + 1} {item.name} {item.tanggal ? new Date(item.tanggal).toLocaleDateString('id-ID', { day: '2-digit', month: 'long', year: 'numeric', }) : '-'} {item.jenisKelamin.name} )) )}
{ load(newPage, 10); window.scrollTo({ top: 0, behavior: 'smooth' }); }} size="md" radius="md" mt="md" />
); } export default Responden;