"use client"; import { BreadcrumbItem, Breadcrumbs, Button, Image, Input, Pagination, } from "@heroui/react"; import { CalendarIcon, Calender, ChevronRightIcon, ClockIcon, EyeFilledIcon, SearchIcon, UserIcon, } from "../../icons"; import Link from "next/link"; import { useEffect, useRef, useState } from "react"; import { getListArticle } from "@/service/article"; import { formatMonthString, htmlToString, textEllipsis } from "@/utils/global"; import { useParams, usePathname, useRouter, useSearchParams, } from "next/navigation"; export default function ListNews() { const [article, setArticle] = useState([]); const [page, setPage] = useState(1); const router = useRouter(); const pathname = usePathname(); const [totalPage, setTotalPage] = useState(1); const topRef = useRef(null); const params = useParams(); const category = params?.name; const searchParams = useSearchParams(); const search = searchParams.get("search"); const [searchValue, setSearchValue] = useState(search || ""); useEffect(() => { getArticle(); }, [page, category]); async function getArticle() { // loading(); topRef.current?.scrollIntoView({ behavior: "smooth" }); const req = { page: page, search: searchValue || "", limit: "9", // isPublish: pathname.includes("polda") ? false : true, isPublish: true, sort: "desc", categorySlug: pathname.includes("polda") || pathname.includes("satker") ? String(category) : "", }; const response = await getListArticle(req); setArticle(response?.data?.data); setTotalPage(response?.data?.meta?.totalPage); // close(); } return (
Beranda

Berita

{ if (event.key === "Enter") { router.push(pathname + `?search=${searchValue}`); getArticle(); } }} labelPlacement="outside" placeholder="Search..." value={searchValue || ""} onValueChange={setSearchValue} endContent={ } type="search" />
{article?.map((news: any) => (
thumbnail
{news?.title}

{formatMonthString(news?.updatedAt)}

{`${new Date(news?.updatedAt) .getHours() .toString() .padStart(2, "0")}:${new Date(news?.updatedAt) .getMinutes() .toString() .padStart(2, "0")}`}

{news?.createdByName}

{textEllipsis(htmlToString(news?.description), 165)}
))}
); }