import { useState } from 'react' import type { PackingState } from './usePackingListPanel' import { KategorieGruppe } from './PackingListPanelCategoryGroup' import EmptyState from '../shared/EmptyState' export function PackingList(S: PackingState) { const { items, gruppiert, t, tripId, allCategories, handleRenameCategory, handleDeleteCategory, handleDeleteItem, handleAddItemToCategory, categoryAssignees, tripMembers, handleSetAssignees, bagTrackingEnabled, bags, handleCreateBagByName, canEdit, reorderPackingItems, currentUserId, handleSetSharing, handleCloneItem, handleJoinItem, handleLeaveItem, sort, moveCategory, } = S // Which category is being dragged and which card it is over. Held here, above // the cards, because the drag starts in one card and ends in another. const [draggedCategory, setDraggedCategory] = useState(null) const [overCategory, setOverCategory] = useState(null) const endCategoryDrag = () => { setDraggedCategory(null); setOverCategory(null) } return (
{items.length === 0 ? ( ) : Object.keys(gruppiert).length === 0 ? (

{t('packing.emptyFiltered')}

) : (
{Object.entries(gruppiert).map(([kat, katItems]) => ( reorderPackingItems(tripId, orderedIds)} reorderable={sort === 'manual'} categoryDrag={canEdit ? { active: draggedCategory !== null, isDragging: draggedCategory === kat, isOver: overCategory === kat && draggedCategory !== null && draggedCategory !== kat, onStart: () => { setDraggedCategory(kat); setOverCategory(null) }, onOver: () => setOverCategory(kat), onEnd: endCategoryDrag, onDrop: () => { if (draggedCategory !== null) moveCategory(draggedCategory, kat) endCategoryDrag() }, } : undefined} currentUserId={currentUserId} onSetSharing={handleSetSharing} onClone={handleCloneItem} onJoin={handleJoinItem} onLeave={handleLeaveItem} /> ))}
)}
) }