'use client' import { currentScroll, LayoutDrawer, LayoutModalViewFile, TEMA, WARNA } from '@/module/_global'; import LayoutModal from '@/module/_global/layout/layout_modal'; import { useHookstate } from '@hookstate/core'; import { ActionIcon, Anchor, Box, Flex, Group, Image, Paper, SimpleGrid, Stack, Text, TextInput } from '@mantine/core'; import { useParams, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { FaFile, FaPencil, FaTrash } from 'react-icons/fa6'; import { IDataBanner } from '../lib/type_banner'; import toast from 'react-hot-toast'; import { useShallowEffect } from '@mantine/hooks'; import { funDeleteBanner, funGetAllBanner, funGetOneBanner } from '../lib/api_banner'; import { HiMagnifyingGlass } from 'react-icons/hi2'; function ListBanner() { const [isList, setIsList] = useState (false) const tema = useHookstate(TEMA) const router = useRouter(); const param = useParams<{ id: string }>() const [isOpenModalView, setOpenModalView] = useState(false) const [isOpenModal, setOpenModal] = useState(false) const [openDrawer, setOpenDrawer] = useState(false); const [idDataStorage, setIdDataStorage] = useState('') const [isExtension, setExtension] = useState('') const [loading, setLoading] = useState(true) const [isData, setData] = useState([]) const [idData, setIdData] = useState('') const [isPage, setPage] = useState(1) const [searchQuerry, setSearchQuerry] = useState('') // const { value: containerRef } = useHookstate(currentScroll); const handleList = () => { setIsList(!isList) } const fetchData = async (loading: boolean) => { console.log('jallan') try { if (loading) setLoading(true) const response = await funGetAllBanner('?search=' + searchQuerry) if (response.success) { setData(response.data) } else { toast.error(response.message) } setLoading(false) } catch (error) { console.error(error) toast.error("Gagal mendapatkan banner, coba lagi nanti"); } finally { setLoading(false) } } function searchBanner(search: string) { setSearchQuerry(search) setPage(1) } useShallowEffect(() => { fetchData(true) }, [searchQuerry]) useShallowEffect(() => { fetchData(false) }, [isPage]) async function onDelete() { try { const res = await funDeleteBanner(idData); if (res.success) { toast.success(res.message) getOneData() setIdData("") setIdDataStorage("") setOpenDrawer(false) } else { toast.error(res.message); } } catch (error) { console.error(error); toast.error("Gagal menghapus banner, coba lagi nanti"); } } return ( } placeholder='pencarian' value={searchQuerry} onChange={(val) => { searchBanner(val.target.value)}} /> {isData.map((_, index) => ( { setOpenDrawer(true) } } style={{ width: '100%', maxWidth: 550, height: 85, backgroundColor: 'transparent', border: `1px solid ${tema.get().bgTotalKegiatan}` }}> Banner {index + 1} Banner ))} setOpenDrawer(false)}> router.push("/banner/edit/[id]")} direction="column" align="center" justify="center" pb={20}> Edit { setOpenModalView(true) }} direction={"column"} align={"center"} justify={"center"}> Lihat File { setOpenModal(true) }} direction={"column"} align={"center"} justify={"center"}> Hapus setOpenModal(false)} description='Apakah Anda yakin ingin menghapus banner?' onYes={(val) => { if (val) { onDelete() } setOpenModal(false) }} /> setOpenModalView(false)} file={idDataStorage} extension={isExtension} fitur='task' /> ); } export default ListBanner; function funGetBanner(arg0: string) { throw new Error('Function not implemented.'); } function getOneData() { throw new Error('Function not implemented.'); } // useEffect(() => { // const handleScroll = async () => { // if (containerRef && containerRef.current) { // const scrollTop = containerRef.current.scrollTop; // const containerHeight = containerRef.current.clientHeight; // const scrollHeight = containerRef.current.scrollHeight; // if (scrollTop + containerHeight + 1 >= scrollHeight) { // setPage(isPage + 1) // } // } // }; // const container = containerRef?.current; // container?.addEventListener("scroll", handleScroll); // return () => { // container?.removeEventListener("scroll", handleScroll); // }; // }, [containerRef, isPage]);