Feat: Edición y Manejo de Titulares, entre otros.
This commit is contained in:
@@ -9,14 +9,16 @@ import { DndContext, closestCenter, PointerSensor, useSensor, useSensors, type D
|
||||
import { arrayMove, SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
||||
import { CSS } from '@dnd-kit/utilities';
|
||||
import type { Titular } from '../types';
|
||||
import EditIcon from '@mui/icons-material/Edit';
|
||||
|
||||
// La prop `onDelete` se añade para comunicar el evento al componente padre
|
||||
interface SortableRowProps {
|
||||
titular: Titular;
|
||||
onDelete: (id: number) => void;
|
||||
onEdit: (titular: Titular) => void;
|
||||
}
|
||||
|
||||
const SortableRow = ({ titular, onDelete }: SortableRowProps) => {
|
||||
const SortableRow = ({ titular, onDelete, onEdit }: SortableRowProps) => {
|
||||
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: titular.id });
|
||||
|
||||
const style = {
|
||||
@@ -42,7 +44,9 @@ const SortableRow = ({ titular, onDelete }: SortableRowProps) => {
|
||||
</TableCell>
|
||||
<TableCell>{titular.fuente}</TableCell>
|
||||
<TableCell>
|
||||
{/* Usamos un stopPropagation para que el clic no active el arrastre */}
|
||||
<IconButton size="small" onClick={(e) => { e.stopPropagation(); onEdit(titular); }}>
|
||||
<EditIcon fontSize="small" />
|
||||
</IconButton>
|
||||
<IconButton size="small" onClick={(e) => { e.stopPropagation(); onDelete(titular.id); }}>
|
||||
<DeleteIcon />
|
||||
</IconButton>
|
||||
@@ -55,9 +59,10 @@ interface TablaTitularesProps {
|
||||
titulares: Titular[];
|
||||
onReorder: (titulares: Titular[]) => void;
|
||||
onDelete: (id: number) => void;
|
||||
onEdit: (titular: Titular) => void;
|
||||
}
|
||||
|
||||
const TablaTitulares = ({ titulares, onReorder, onDelete }: TablaTitularesProps) => {
|
||||
const TablaTitulares = ({ titulares, onReorder, onDelete, onEdit }: TablaTitularesProps) => {
|
||||
const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } })); // Evita activar el drag con un simple clic
|
||||
|
||||
const handleDragEnd = (event: DragEndEvent) => {
|
||||
@@ -95,7 +100,7 @@ const TablaTitulares = ({ titulares, onReorder, onDelete }: TablaTitularesProps)
|
||||
</TableHead>
|
||||
<TableBody>
|
||||
{titulares.map((titular) => (
|
||||
<SortableRow key={titular.id} titular={titular} onDelete={onDelete} />
|
||||
<SortableRow key={titular.id} titular={titular} onDelete={onDelete} onEdit={onEdit} />
|
||||
))}
|
||||
</TableBody>
|
||||
</Table>
|
||||
|
||||
Reference in New Issue
Block a user