"use client"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { MoreHorizontal } from "lucide-react"; import type IShortcode from "@/interfaces/IShortcode"; import ShortcodeDialog from "@/components/shortcode-dialogue"; import { useState } from "react"; import IUser from "@/interfaces/IUser"; import hasPermissions from "@/lib/hasPermissions"; import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@radix-ui/react-hover-card"; import Image from "next/image"; interface ShortcodeTableProps { user: IUser; shortcodes: IShortcode[]; onUpdate: (shortcode: IShortcode) => void; onDelete: (id: string) => void; onAdd: (shortcode: Omit) => void; } export function ShortcodeTable({ shortcodes, onUpdate, onDelete, onAdd, user, }: ShortcodeTableProps) { const permissions = hasPermissions(user.roles, { shortcodes: ["insert", "update", "delete"], } as const); const [shortcodeSelected, setUpdateDialog] = useState( null, ); const [addDialog, setAddDialog] = useState(false); return (
{permissions.shortcodes.insert && (
setAddDialog(false)} />
)}
ID Code Type Valeur Media ID Actions {shortcodes.map((shortcode) => ( {shortcode.id} {shortcode.code} {shortcode.type} {shortcode.value || "N/A"} {shortcode.media_id || "N/A"} {shortcode.media && ( )} {permissions.shortcodes.update && ( setUpdateDialog( shortcode, ) } > Mettre à jour )} {permissions.shortcodes.delete && ( onDelete(shortcode.code) } > Supprimer )} ))}
{shortcodeSelected && ( setUpdateDialog(null)} /> )}
); }