import Icons from "@/icons"; import PropTypes from "prop-types"; import IfRole from "../auth/IfRole"; import { CONSTANTS } from "@/constants"; import AnimatedDropdown from "../util/AnimatedDropdown"; import FileUpload from '@/components/inputs/FileUpload'; import { useState } from "react"; const Mod = ({ mod, isNew, fileRef, onCreate, onUpdate, onDelete, onSelectFiles, onCancel, onClearError }) => { const isActive = mod?.status === 1; const [editMode, setEditMode] = useState(isNew); const [modData, setModData] = useState({ name: mod?.name || "Mod nuevo", url: mod?.url || "no", status: mod?.status ?? 1, }); const createMode = isNew; const handleChange = (K, V) => { setModData((prev) => ({ ...prev, [K]: V })) } const handleDelete = () => typeof onDelete === "function" && onDelete(mod.mod_id); const handleSave = () => { const data = { ...mod, ...modData }; if (createMode && onCreate) onCreate(data); else if (onUpdate) onUpdate(data, mod.mod_id); } const handleEdit = () => { if (onClearError) onClearError(); setEditMode(true); }; const handleCancel = () => { if (onClearError) onClearError(); if (createMode && typeof onCancel === 'function') return onCancel(); setEditMode(false); }; if (editMode) { return (
handleChange("name", e.target.value)} />
{/* Solo se muestra cuando editas un mod existente */} {!createMode && ( handleChange("url", e.target.value)} /> )} {createMode && }
); } // Modo visual normal return (
  • {isActive ? Icons.FilePlus : Icons.Trash} {mod.name}
    {mod.url !== "no" && isActive && ( {Icons.Download} )} {Icons.Dots} } className="end-0" > {({ closeDropdown }) => ( <>
    { handleEdit(); closeDropdown(); }}> {Icons.Edit} Editar

    { handleDelete(); closeDropdown(); }}> {Icons.Trash} Eliminar
    )}
  • ); }; Mod.propTypes = { mod: PropTypes.object, isNew: PropTypes.bool, fileRef: PropTypes.object, onCreate: PropTypes.func, onUpdate: PropTypes.func, onDelete: PropTypes.func, onSelectFiles: PropTypes.func, onCancel: PropTypes.func, onClearError: PropTypes.func, }; export default Mod;