import { useMap } from 'react-leaflet' import { useNavigate } from 'react-router-dom' import { useSetSelectPosition } from '#components/Map/hooks/useSelectPosition' import useWindowDimensions from '#components/Map/hooks/useWindowDimension' import { StartEndView, TextView } from '#components/Map/Subcomponents/ItemPopupComponents' import { HeaderView } from '#components/Map/Subcomponents/ItemPopupComponents/HeaderView' import { DateUserInfo } from './DateUserInfo' import type { Item } from '#types/Item' export const ItemCard = ({ i, loading, url, deleteCallback, }: { i: Item loading: boolean url: string deleteCallback: (item: Item) => void }) => { const navigate = useNavigate() const windowDimensions = useWindowDimensions() const map = useMap() const setSelectPosition = useSetSelectPosition() return (
{ // We could have an onClick callback instead const params = new URLSearchParams(window.location.search) if (windowDimensions.width < 786 && i.position) navigate('/' + i.id + `${params.size > 0 ? `?${params.toString()}` : ''}`) else navigate(url + i.id + `${params.size > 0 ? `?${params.toString()}` : ''}`) }} > navigate('/edit-item/' + i.id)} setPositionCallback={() => { map.closePopup() setSelectPosition(i) navigate('/') }} deleteCallback={() => deleteCallback(i)} >
{i.layer?.itemType.show_start_end && } {i.layer?.itemType.show_text && }
) }