/** * ========================================================================= * PLATEFORME ECO-PANNEAU.FR - VERSION 1.0.0 * Composant : Carte individuelle d'un panneau (Vue Client) * ========================================================================= */ const FallbackNull = () => null; const FallbackDataCard = ({children, className}) => (
{children}
); window.pano_ClientPanelCard = ({ panel: c, myClientData, localPinned, togglePin, unreadMap, setPreviewPanneau, openLocalModal, openLocalDialog, setManagingPanneau, setValidationErrors, setConfirmDialog, handleDeletePanelClick, isSuspended, hasNewsletterFeature, hasCollabFeature, hasMessagingFeature, refreshData, closeCurrentLayer }) => { // Récupération des icônes sécurisée const { BuildingIcon, QrCodeIcon, EyeIcon, MessageCircleIcon, MessageSquareIcon, MailIcon, LockIcon, EditIcon, Trash2Icon, ArchiveIcon } = window.pano_getIcons?.() || {}; const PinIcon = window.pano_PinIcon || FallbackNull; const IconBadge = window.pano_IconBadge || FallbackNull; const StatusBadge = window.pano_StatusBadge || (({status}) => {status}); const Button = window.pano_Button || FallbackNull; const NotificationBadge = window.pano_NotificationBadge || FallbackNull; const DataCard = window.pano_DataCard || FallbackDataCard; // Calcul des droits et de l'état const isOwner = c.client_uid === myClientData.id; const myCollab = !isOwner ? c.collaborators?.find(col => col.uid === myClientData.id) : null; const canEdit = isOwner || myCollab?.rights?.can_edit; const canChat = isOwner || (myCollab && ['read', 'rw'].includes(myCollab.rights?.chat_access)); const isPinned = localPinned.includes(c.id); const unreadRiverain = unreadMap[c.id]?.riverain || 0; const unreadGroup = unreadMap[c.id]?.group || 0; return (

{c.name || 'Brouillon'}

{c.location || 'Localisation non définie'}

{c.status === 'Actif' && c.draft_data && ( Modifié )}
{c.status === 'Actif' && ( )} {(c.draft_data || c.status !== 'Actif') && ( )} {c.status === 'Actif' && ( <> {canChat && hasMessagingFeature && ( )} {hasCollabFeature && ( )} {hasNewsletterFeature && ( )} {canEdit && ( )} )} {canEdit && !isSuspended && ( )} {canEdit && c.draft_data && !isSuspended && ( )} {isOwner && c.status !== 'Actif' && (
); }; /* EOF ========== [_react/_clients_panneaux_card.jsx] */