import React from 'react'; import PropTypes from 'prop-types'; import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'; import { arrayMove, SortableContext, sortableKeyboardCoordinates, rectSortingStrategy } from '@dnd-kit/sortable'; import ImageGalleryCard from './ImageGalleryCard'; import './Css/ImageGallery.css'; const ImageGallery = ({ items, onApprove, onViewImages, onDelete, isPending, showActions, mode, title, emptyMessage = 'Keine Elemente vorhanden', enableReordering = false, onReorder = null, isEditMode = false, onEditMode = null, imageDescriptions = {}, onDescriptionChange = null }) => { // Sensors for drag and drop (touch-friendly) const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { distance: 8, // Require 8px movement before drag starts }, }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates, }) ); const handleDragEnd = (event) => { const { active, over } = event; if (active.id !== over?.id && onReorder) { const oldIndex = items.findIndex(item => (item.id || item.groupId) === active.id ); const newIndex = items.findIndex(item => (item.id || item.groupId) === over.id ); if (oldIndex !== -1 && newIndex !== -1) { const reorderedItems = arrayMove(items, oldIndex, newIndex); onReorder(reorderedItems, oldIndex, newIndex); } } }; if (!items || items.length === 0) { return (
{emptyMessage}