From d33ebd3f76066e90356c7299485086d082ce8a1b Mon Sep 17 00:00:00 2001 From: VPS 4 Builder Date: Tue, 7 Jul 2026 17:16:50 +0200 Subject: [PATCH] =?UTF-8?q?feat(comunicacao-interna):=20entrada=20na=20Ges?= =?UTF-8?q?t=C3=A3o=20de=20Equipe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Botão "Comunicação interna" em cada membro (gestores) abre o mesmo modal full-screen para preencher/editar o perfil de contato daquele usuário (usuarioId = m.id). Co-Authored-By: Claude Opus 4.8 --- frontend/views/GestaoEquipeView.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/views/GestaoEquipeView.tsx b/frontend/views/GestaoEquipeView.tsx index db932ec..f70cf0b 100644 --- a/frontend/views/GestaoEquipeView.tsx +++ b/frontend/views/GestaoEquipeView.tsx @@ -1,10 +1,11 @@ import React, { useState, useEffect, useCallback } from 'react'; -import { Users, Building, Briefcase, Plus, Trash2, Edit2, X, Check, UserPlus, Shield, ChevronDown, Copy, KeyRound } from 'lucide-react'; +import { Users, Building, Briefcase, Plus, Trash2, Edit2, X, Check, UserPlus, Shield, ChevronDown, Copy, KeyRound, MessageSquare } from 'lucide-react'; import { HybridBackend } from '../services/backend.ts'; import { useToast } from '../contexts/ToastContext.tsx'; import { useConfirm } from '../contexts/ConfirmContext.tsx'; import { PageHeader } from '../components/PageHeader.tsx'; import { GoogleConnectButton } from '../components/GoogleConnectButton.tsx'; +import { ComunicacaoInternaModal } from '../components/ComunicacaoInternaModal.tsx'; type Tab = 'usuarios' | 'setores' | 'funcoes'; @@ -128,6 +129,7 @@ const UsuariosTab: React.FC<{ clinicaId: string; isOwner: boolean; myNivel: numb const [loading, setLoading] = useState(true); const [showAdd, setShowAdd] = useState(false); const [editing, setEditing] = useState(null); + const [comMembro, setComMembro] = useState(null); // perfil de comunicação interna // Add form const [email, setEmail] = useState(''); @@ -264,6 +266,10 @@ const UsuariosTab: React.FC<{ clinicaId: string; isOwner: boolean; myNivel: numb {podeGerenciar(m) && (
+
)} + + {comMembro && ( + setComMembro(null)} onSaved={() => setComMembro(null)} /> + )} ); };