diff --git a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx index 62322e27..bb3fd6d3 100644 --- a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx +++ b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx @@ -9,7 +9,7 @@ import { useEffect } from "react"; -export function HeaderView({ item, api, editCallback, deleteCallback, itemNameField, itemAvatarField, loading, hideMenu = false }: { +export function HeaderView({ item, api, editCallback, deleteCallback, itemNameField, itemAvatarField, loading, hideMenu = false, big = false }: { item: Item, api?: ItemsApi, editCallback?: any, @@ -17,7 +17,8 @@ export function HeaderView({ item, api, editCallback, deleteCallback, itemNameFi itemNameField?: string, itemAvatarField?: string, loading?: boolean, - hideMenu?: boolean + hideMenu?: boolean, + big?: boolean }) { @@ -30,7 +31,7 @@ export function HeaderView({ item, api, editCallback, deleteCallback, itemNameFi const assetsApi = useAssetApi(); - const avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && assetsApi.url + getValue(item, item.layer?.itemAvatarField); + const avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) + `${big ? "?width=160&heigth=160": "?width=80&heigth=80"}` : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && assetsApi.url + getValue(item, item.layer?.itemAvatarField) + `${big ? "?width=160&heigth=160": "?width=80&heigth=80"}`; const title = itemNameField ? getValue(item, itemNameField) : item.layer?.itemNameField && item && getValue(item, item.layer?.itemNameField); @@ -43,21 +44,15 @@ export function HeaderView({ item, api, editCallback, deleteCallback, itemNameFi return ( <> -
-
-
{ - avatar ? -
- -
- : - "" - } - {title ? title : item.name} +
+
+
+ {avatar && + } + {title&& title} -
-
-
e.stopPropagation()}> +
+
e.stopPropagation()} className={`${big ? "tw-mt-5":"tw-mt-1"}`}> {(api?.deleteItem || item.layer?.api?.updateItem) && (hasUserPermission(api?.collectionName!, "delete", item) || hasUserPermission(api?.collectionName!, "update", item)) && !hideMenu && @@ -88,6 +83,7 @@ export function HeaderView({ item, api, editCallback, deleteCallback, itemNameFi
}
+
(setModalOpen(false))} >
e.stopPropagation()} > diff --git a/src/Components/Profile/OverlayItemProfile.tsx b/src/Components/Profile/OverlayItemProfile.tsx index 5cf5e61d..b3020345 100644 --- a/src/Components/Profile/OverlayItemProfile.tsx +++ b/src/Components/Profile/OverlayItemProfile.tsx @@ -1,5 +1,5 @@ import { MapOverlayPage } from '../Templates' -import { useAddItem, useItems, useUpdateItem } from '../Map/hooks/useItems' +import { useAddItem, useItems, useRemoveItem, useUpdateItem } from '../Map/hooks/useItems' import { useLocation, useNavigate } from 'react-router-dom' import { useEffect, useRef, useState } from 'react'; import { Item } from '../../types'; @@ -19,6 +19,7 @@ import { useAuth } from '../Auth'; import { useLayers } from '../Map/hooks/useLayers'; import { ActionButton } from './ActionsButton'; import { LinkedItemsHeaderView } from './LinkedItemsHeaderView'; +import { HeaderView } from '../Map/Subcomponents/ItemPopupComponents/HeaderView'; export function OverlayItemProfile() { @@ -33,6 +34,7 @@ export function OverlayItemProfile() { const layers = useLayers(); + const removeItem = useRemoveItem(); const tags = useTags(); @@ -196,22 +198,34 @@ export function OverlayItemProfile() { } + const handleDelete = async (event: React.MouseEvent) => { + event.stopPropagation(); + setLoading(true); + let success = false; + try { + await item.layer?.api?.deleteItem!(item.id) + success = true; + } catch (error) { + toast.error(error.toString()); + } + if (success) { + removeItem(item); + toast.success("Item deleted"); + } + setLoading(false); + map.closePopup(); + let params = new URLSearchParams(window.location.search); + window.history.pushState({}, "", "/" + `${params ? `?${params}` : ""}`); + navigate("/"); + } + + + return ( {item && <> -
-
-

{item.layer?.itemAvatarField && getValue(item, item.layer.itemAvatarField) && } {item.layer?.itemNameField && getValue(item, item.layer.itemNameField)}

-
- {(item.layer?.api?.updateItem && hasUserPermission(item.layer.api?.collectionName!, "update", item)) ? - navigate("/edit-item/" + item.id)}> - - - - : "" - } -
+ navigate("/edit-item/"+item.id)} big/>