"use client"; import { CreateIconIon, DeleteIcon, DotsYIcon, EyeIconMdi } from "@/components/icons"; import { error, success, } from "@/config/swal"; import { deleteArticle, getListArticle } from "@/service/article"; import { Article } from "@/types/globals"; import { Button } from "@nextui-org/button"; import { Chip, ChipProps, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Spinner, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from "@nextui-org/react"; import Link from "next/link"; import { Key, useCallback, useEffect, useState } from "react"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; type UserObject = { id: number; user: string; status: string; projectName: string; avatar: string; }; const statusColorMap = { active: "success", paused: "danger", vacation: "warning", }; export default function ArticleTable() { const MySwal = withReactContent(Swal); const [article, setArticle] = useState([]); useEffect(() => { async function initState() { const res = await getListArticle(); setArticle(res.data?.data); console.log("List Article", res.data.data); } initState(); }, []); type TableRow = (typeof usersTable)[0]; const columns = [ { name: "No", uid: "no" }, { name: "Judul", uid: "title" }, { name: "Kategori", uid: "categoryName" }, { name: "Tanggal Unggah", uid: "createdAt" }, { name: "Kreator", uid: "createdByName" }, // { name: "Sumber", uid: "source" }, // { name: "Users", uid: "users" }, // { name: "Status", uid: "status" }, { name: "Aksi", uid: "actions" }, ]; async function doDelete(id: any) { // loading(); const resDelete = await deleteArticle(id); if (resDelete?.error) { error(resDelete.message); return false; } close(); success("Success Deleted"); } const handleDelete = (id: any) => { MySwal.fire({ title: "Hapus Data", icon: "warning", showCancelButton: true, cancelButtonColor: "#3085d6", confirmButtonColor: "#d33", confirmButtonText: "Hapus", }).then((result) => { if (result.isConfirmed) { doDelete(id); } }); }; function successSubmit() { MySwal.fire({ title: "Sukses", icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", }).then((result) => { if (result.isConfirmed) { // initStete(); } }); } // const statusOptions = [ // { name: "Active", uid: "active" }, // { name: "Paused", uid: "paused" }, // { name: "Vacation", uid: "vacation" }, // ]; const usersTable = [ { id: 1, user: "Olivia Rhya", status: "active", projectName: "Xtreme admin", avatar: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSa8Luglga9J2R3Bxt_PsWZISUHQWODD6_ZTAJ5mIQgxYCAE-YbkY81faTqp-hSA_jVPTs&usqp=CAU", }, { id: 2, user: "Barbara Steele", status: "cancel", projectName: "Adminpro admin", avatar: "https://cdn.icon-icons.com/icons2/2859/PNG/512/avatar_face_man_boy_male_profile_smiley_happy_people_icon_181661.png", }, { id: 3, user: "Leonardo Gordon", status: "pending", projectName: "Monster admin", avatar: "https://cdn.icon-icons.com/icons2/2859/PNG/512/avatar_face_man_boy_male_profile_smiley_happy_people_icon_181657.png", }, { id: 4, user: "Evelyn Pope", status: "cancel", projectName: "Materialpro admin", avatar: "https://cdn.icon-icons.com/icons2/3708/PNG/512/man_person_people_avatar_icon_230017.png", }, { id: 5, user: "Tommy Garza", status: "cancel", projectName: "Elegant admin", avatar: "https://cdn.icon-icons.com/icons2/1736/PNG/512/4043275-avatar-man-person-punk_113271.png", }, ]; const renderCell = useCallback( (article: Article, columnKey: Key) => { const cellValue = article[columnKey as keyof Article]; const statusColorMap: Record = { active: "primary", cancel: "danger", pending: "success", }; switch (columnKey) { case "no": return (
{article.id}
) case "status": return (
{cellValue}
); case "actions": return (
Detail Edit handleDelete(article.id)} > Delete
); default: return cellValue; } }, []); return ( <>
{(column) => ( {column.name} )} } > {(item) => ( {(columnKey) => ( {renderCell(item, columnKey)} )} )}
); }