/* eslint-disable @typescript-eslint/no-unnecessary-condition */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ /* eslint-disable @typescript-eslint/no-misused-promises */ /* eslint-disable @typescript-eslint/require-await */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable @typescript-eslint/restrict-plus-operands */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { useAppState } from '#components/AppShell/hooks/useAppState' import { useHasUserPermission } from '#components/Map/hooks/usePermissions' import DialogModal from '#components/Templates/DialogModal' import { getValue } from '#utils/GetValue' import type { Item } from '#types/Item' import type { ItemsApi } from '#types/ItemsApi' export function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallback, itemNameField, itemSubnameField, itemAvatarField, loading, hideMenu = false, big = false, truncateSubname = true, hideSubname = false, showAddress = false, }: { item: Item api?: ItemsApi editCallback?: any deleteCallback?: any setPositionCallback?: any itemNameField?: string itemAvatarField?: string itemSubnameField?: string loading?: boolean hideMenu?: boolean big?: boolean hideSubname?: boolean truncateSubname?: boolean showAddress?: boolean }) { const [modalOpen, setModalOpen] = useState(false) const hasUserPermission = useHasUserPermission() const navigate = useNavigate() const appState = useAppState() const avatar = itemAvatarField && getValue(item, itemAvatarField) ? appState.assetsApi.url + getValue(item, itemAvatarField) + `${big ? '?width=160&heigth=160' : '?width=80&heigth=80'}` : item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField) && appState.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) const subtitle = itemSubnameField ? getValue(item, itemSubnameField) : item.layer?.itemSubnameField && item && getValue(item, item.layer.itemSubnameField) const [address] = useState('') const params = new URLSearchParams(window.location.search) const openDeleteModal = async (event: React.MouseEvent) => { setModalOpen(true) event.stopPropagation() } return ( <>
{avatar && (
{item.name
)}
{title}
{showAddress && address && !hideSubname && (
{address}
)} {subtitle && !hideSubname && (
{subtitle}
)}
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 && (
)}
setModalOpen(false)} >
e.stopPropagation()}> Do you want to delete {item.name}?
) }