diff --git a/client/src/components/Packing/PackingListPanel.tsx b/client/src/components/Packing/PackingListPanel.tsx index ce856501..d5745476 100644 --- a/client/src/components/Packing/PackingListPanel.tsx +++ b/client/src/components/Packing/PackingListPanel.tsx @@ -467,6 +467,7 @@ function KategorieGruppe({ kategorie, items, tripId, allCategories, onRename, on const [showAddItem, setShowAddItem] = useState(false) const [newItemName, setNewItemName] = useState('') const addItemRef = useRef(null) + const menuBtnRef = useRef(null) const assigneeDropdownRef = useRef(null) const { togglePackingItem } = useTripStore() const toast = useToast() @@ -629,22 +630,27 @@ function KategorieGruppe({ kategorie, items, tripId, allCategories, onRename, on
- - {showMenu && ( -
setShowMenu(false)}> - {canEdit && } label={t('packing.menuRename')} onClick={() => { setEditingName(true); setShowMenu(false) }} />} - } label={t('packing.menuCheckAll')} onClick={() => { handleCheckAll(); setShowMenu(false) }} /> - } label={t('packing.menuUncheckAll')} onClick={() => { handleUncheckAll(); setShowMenu(false) }} /> - {canEdit && <> -
- } label={t('packing.menuDeleteCat')} danger onClick={handleDeleteAll} /> - } -
- )} + {showMenu && (() => { + const rect = menuBtnRef.current?.getBoundingClientRect(); + return ( + <> +
setShowMenu(false)} /> +
+ {canEdit && } label={t('packing.menuRename')} onClick={() => { setEditingName(true); setShowMenu(false) }} />} + } label={t('packing.menuCheckAll')} onClick={() => { handleCheckAll(); setShowMenu(false) }} /> + } label={t('packing.menuUncheckAll')} onClick={() => { handleUncheckAll(); setShowMenu(false) }} /> + {canEdit && <> +
+ } label={t('packing.menuDeleteCat')} danger onClick={handleDeleteAll} /> + } +
+ + ); + })()}