Adicionado-novas-tabelas

This commit is contained in:
Caio Miguel Lima Nunes 2025-11-05 21:27:13 -03:00
parent d8e63f8abe
commit e007c167e7
2 changed files with 553 additions and 311 deletions

View File

@ -23,7 +23,7 @@ import { Search } from 'lucide-react';
const Agendamento = ({setDictInfo}) => { const Agendamento = ({ setDictInfo }) => {
const navigate = useNavigate(); const navigate = useNavigate();
const [listaTodosAgendamentos, setListaTodosAgendamentos] = useState([]) const [listaTodosAgendamentos, setListaTodosAgendamentos] = useState([])
@ -35,8 +35,8 @@ const Agendamento = ({setDictInfo}) => {
const [PageNovaConsulta, setPageConsulta] = useState(false); const [PageNovaConsulta, setPageConsulta] = useState(false);
const [searchTerm, setSearchTerm] = useState(''); const [searchTerm, setSearchTerm] = useState('');
const [agendamentos, setAgendamentos] = useState() const [agendamentos, setAgendamentos] = useState()
const {getAuthorizationHeader} = useAuth() const { getAuthorizationHeader } = useAuth()
const [DictAgendamentosOrganizados, setAgendamentosOrganizados ] = useState({}) const [DictAgendamentosOrganizados, setAgendamentosOrganizados] = useState({})
const [showDeleteModal, setShowDeleteModal] = useState(false) const [showDeleteModal, setShowDeleteModal] = useState(false)
const [AgendamentoFiltrado, setAgendamentoFiltrado] = useState() const [AgendamentoFiltrado, setAgendamentoFiltrado] = useState()
@ -45,7 +45,7 @@ const Agendamento = ({setDictInfo}) => {
const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([]) const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([])
const [searchTermDoctor, setSearchTermDoctor] = useState(''); const [searchTermDoctor, setSearchTermDoctor] = useState('');
const [MedicoFiltrado, setMedicoFiltrado] = useState({id:"vazio"}) const [MedicoFiltrado, setMedicoFiltrado] = useState({ id: "vazio" })
const [cacheAgendamentos, setCacheAgendamentos] = useState([]) const [cacheAgendamentos, setCacheAgendamentos] = useState([])
@ -57,20 +57,24 @@ const Agendamento = ({setDictInfo}) => {
const [corModal, setCorModal] = useState("") const [corModal, setCorModal] = useState("")
const [listaConsultasID, setListaConsultaID] = useState([]) const [listaConsultasID, setListaConsultaID] = useState([])
const [coresConsultas,setCoresConsultas] = useState([]) const [coresConsultas, setCoresConsultas] = useState([])
// Estados para a tabela da fila de espera
const [searchTermFila, setSearchTermFila] = useState('');
const [filtroMedicoFila, setFiltroMedicoFila] = useState('Todos');
const [paginaAtualFila, setPaginaAtualFila] = useState(1);
const [itensPorPaginaFila, setItensPorPaginaFila] = useState(10);
let authHeader = getAuthorizationHeader() let authHeader = getAuthorizationHeader()
const cacheMedicos = {}; const cacheMedicos = {};
const cachePacientes = {}; const cachePacientes = {};
useMemo(() => { useMemo(() => {
if (!listaTodosAgendamentos.length) return { agendamentosOrganizados: {}, filaEsperaData: [] }; if (!listaTodosAgendamentos.length) return { agendamentosOrganizados: {}, filaEsperaData: [] };
console.log("recarregando") console.log("recarregando")
const DictAgendamentosOrganizados = {}; const DictAgendamentosOrganizados = {};
const ListaFilaDeEspera = []; const ListaFilaDeEspera = [];
@ -128,7 +132,7 @@ console.log("recarregando")
fetchDados(); fetchDados();
return { agendamentosOrganizados: DictAgendamentosOrganizados, filaEsperaData: ListaFilaDeEspera }; return { agendamentosOrganizados: DictAgendamentosOrganizados, filaEsperaData: ListaFilaDeEspera };
}, [listaTodosAgendamentos]); // 👉 só recalcula quando a lista muda }, [listaTodosAgendamentos]); // 👉 só recalcula quando a lista muda
useEffect(() => { useEffect(() => {
@ -144,15 +148,16 @@ console.log("recarregando")
fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?select&doctor_id&patient_id&status&scheduled_at&order&limit&offset", requestOptions) fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?select&doctor_id&patient_id&status&scheduled_at&order&limit&offset", requestOptions)
.then(response => response.json()) .then(response => response.json())
.then(result => {setListaTodosAgendamentos(result);console.log(result)}) .then(result => { setListaTodosAgendamentos(result); console.log(result) })
.catch(error => console.log('error', error)); .catch(error => console.log('error', error));
const PegarTodosOsMedicos = async () => { const PegarTodosOsMedicos = async () => {
let lista = [] let lista = []
const TodosOsMedicos = await GetAllDoctors(authHeader) const TodosOsMedicos = await GetAllDoctors(authHeader)
for(let d = 0; TodosOsMedicos.length > d; d++){ for (let d = 0; TodosOsMedicos.length > d; d++) {
lista.push({nomeMedico: TodosOsMedicos[d].full_name, idMedico: TodosOsMedicos[d].id })} lista.push({ nomeMedico: TodosOsMedicos[d].full_name, idMedico: TodosOsMedicos[d].id })
}
setListaDeMedicos(lista) setListaDeMedicos(lista)
} }
PegarTodosOsMedicos() PegarTodosOsMedicos()
@ -160,14 +165,15 @@ console.log("recarregando")
}, []) }, [])
const deleteConsulta = (selectedPatientId) => { const deleteConsulta = (selectedPatientId) => {
var myHeaders = new Headers(); var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json"); myHeaders.append("Content-Type", "application/json");
myHeaders.append('apikey', API_KEY) myHeaders.append('apikey', API_KEY)
myHeaders.append("authorization", authHeader) myHeaders.append("authorization", authHeader)
var raw = JSON.stringify({ "status":"cancelled", var raw = JSON.stringify({
"status": "cancelled",
"cancellation_reason": motivoCancelamento "cancellation_reason": motivoCancelamento
}); });
@ -180,19 +186,20 @@ const deleteConsulta = (selectedPatientId) => {
}; };
fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions) fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
.then(response => {if(response.status !== 200)(console.log(response))}) .then(response => { if (response.status !== 200) (console.log(response)) })
.then(result => console.log(result)) .then(result => console.log(result))
.catch(error => console.log('error', error)); .catch(error => console.log('error', error));
} }
const confirmConsulta = (selectedPatientId) => { const confirmConsulta = (selectedPatientId) => {
var myHeaders = new Headers(); var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json"); myHeaders.append("Content-Type", "application/json");
myHeaders.append('apikey', API_KEY) myHeaders.append('apikey', API_KEY)
myHeaders.append("authorization", authHeader) myHeaders.append("authorization", authHeader)
var raw = JSON.stringify({ "status":"confirmed" var raw = JSON.stringify({
"status": "confirmed"
}); });
@ -204,11 +211,11 @@ const confirmConsulta = (selectedPatientId) => {
}; };
fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions) fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
.then(response => {if(response.status !== 200)(console.log(response))}) .then(response => { if (response.status !== 200) (console.log(response)) })
.then(result => console.log(result)) .then(result => console.log(result))
.catch(error => console.log('error', error)); .catch(error => console.log('error', error));
} }
@ -247,7 +254,7 @@ const confirmConsulta = (selectedPatientId) => {
default: break default: break
} }
} }
let ListaDiasDatas = {segundas:segundas,tercas:tercas,quartas: quartas,quintas: quintas,sextas: sextas} let ListaDiasDatas = { segundas: segundas, tercas: tercas, quartas: quartas, quintas: quintas, sextas: sextas }
return ListaDiasDatas return ListaDiasDatas
} }
@ -255,12 +262,12 @@ const confirmConsulta = (selectedPatientId) => {
const handleClickAgendamento = (agendamento) => { const handleClickAgendamento = (agendamento) => {
if (agendamento.status !== 'vazio') return if (agendamento.status !== 'vazio') return
else setPageConsulta(true) else setPageConsulta(true)
}; };
useEffect(() => { useEffect(() => {
console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos); console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos);
if (MedicoFiltrado.id != "vazio" ) { if (MedicoFiltrado.id != "vazio") {
const unicoMedico = MedicoFiltrado; const unicoMedico = MedicoFiltrado;
console.log(unicoMedico) console.log(unicoMedico)
const idMedicoFiltrado = unicoMedico.idMedico; const idMedicoFiltrado = unicoMedico.idMedico;
@ -280,7 +287,7 @@ const confirmConsulta = (selectedPatientId) => {
} }
}, [FiltredTodosMedicos, MedicoFiltrado]); }, [FiltredTodosMedicos, MedicoFiltrado]);
const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => { const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
setCacheAgendamentos(DictAgendamentosOrganizados); setCacheAgendamentos(DictAgendamentosOrganizados);
const todasAsListasDeAgendamentos = Object.values(dictAgendamentos); const todasAsListasDeAgendamentos = Object.values(dictAgendamentos);
@ -291,12 +298,12 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
); );
return agendamentosFiltrados; return agendamentosFiltrados;
}; };
const handleSearchMedicos = (term) => { const handleSearchMedicos = (term) => {
setSearchTermDoctor(term); setSearchTermDoctor(term);
if (term.trim() === '') { if (term.trim() === '') {
if(MedicoFiltrado.id !== "vazio"){ if (MedicoFiltrado.id !== "vazio") {
console.log("Medico escolhido, mas vai ser apagado") console.log("Medico escolhido, mas vai ser apagado")
console.log(cacheAgendamentos, "cache ") console.log(cacheAgendamentos, "cache ")
@ -304,20 +311,20 @@ const handleSearchMedicos = (term) => {
setFiltredTodosMedicos([]); setFiltredTodosMedicos([]);
setMedicoFiltrado({id:"vazio"}) setMedicoFiltrado({ id: "vazio" })
//2 FiltrarAgendamentos() //2 FiltrarAgendamentos()
return; return;
} }
if (FiltredTodosMedicos.length === 1){ if (FiltredTodosMedicos.length === 1) {
setMedicoFiltrado({...FiltredTodosMedicos[0]}) setMedicoFiltrado({ ...FiltredTodosMedicos[0] })
} }
const filtered = ListaDeMedicos.filter(medico => const filtered = ListaDeMedicos.filter(medico =>
medico.nomeMedico.toLowerCase().includes(term.toLowerCase()) medico.nomeMedico.toLowerCase().includes(term.toLowerCase())
); );
setFiltredTodosMedicos(filtered); setFiltredTodosMedicos(filtered);
}; };
return ( return (
@ -437,68 +444,282 @@ const handleSearchMedicos = (term) => {
{/* Componentes de Tabela - Adicionado props de delete da main */} {/* Componentes de Tabela - Adicionado props de delete da main */}
{tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />} {tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />}
{tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>} {tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />}
{tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>} {tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />}
</div> </div>
</div> </div>
) )
: :
( (
<div className="fila-container"> <div className="page-content table-paciente-container">
<div className="fila-header"> <section className="row">
<div className="col-12">
<div className="card table-paciente-card">
<div className="card-header">
<h4 className="card-title mb-0">Fila de Espera</h4>
</div>
<div className="card-body">
{/* Filtros */}
<div className="card p-3 mb-3 table-paciente-filters">
<h5 className="mb-3">
<i className="bi bi-funnel-fill me-2 text-primary"></i> Filtros
</h5>
<div className="mb-3">
<input <input
type="text" type="text"
placeholder="Pesquisar na fila de espera..." className="form-control"
className="busca-fila-espera" placeholder="Buscar por nome do paciente ou CPF..."
value={searchTerm} value={searchTermFila}
onChange={(e) => setSearchTerm(e.target.value)} onChange={(e) => setSearchTermFila(e.target.value)}
/> />
<h2 className="fila-titulo">Fila de Espera</h2> <small className="text-muted">
Digite o nome completo ou número do CPF
</small>
</div> </div>
<table className="fila-tabela">
<div className="mb-3">
<input
type="text"
className="form-control"
placeholder="Filtrar por nome do médico..."
value={filtroMedicoFila === 'Todos' ? '' : filtroMedicoFila}
onChange={(e) => setFiltroMedicoFila(e.target.value || 'Todos')}
/>
<small className="text-muted">
Digite o nome do médico para filtrar
</small>
</div>
<div className="d-flex justify-content-end">
<button
className="btn btn-outline-secondary btn-sm"
onClick={() => {
setSearchTermFila('');
setFiltroMedicoFila('Todos');
setPaginaAtualFila(1);
}}
>
<i className="bi bi-arrow-clockwise me-1"></i> Limpar Filtros
</button>
</div>
<div className="mt-3">
<div className="contador-pacientes">
{(() => {
const filtrados = filaEsperaData.filter((item) => {
const buscaNome = item.Infos?.paciente_nome?.toLowerCase().includes(searchTermFila.toLowerCase());
const buscaCPF = item.Infos?.paciente_cpf?.toLowerCase().includes(searchTermFila.toLowerCase());
const passaBusca = searchTermFila === "" || buscaNome || buscaCPF;
const passaMedico = filtroMedicoFila === "Todos" || item.Infos?.nome_medico?.toLowerCase().includes(filtroMedicoFila.toLowerCase());
return passaBusca && passaMedico;
});
return filtrados.length;
})()} DE {filaEsperaData.length} SOLICITAÇÕES ENCONTRADAS
</div>
</div>
</div>
{/* Filtros Ativos */}
{(searchTermFila || filtroMedicoFila !== "Todos") && (
<div className="alert alert-info mb-3 filters-active">
<strong>Filtros ativos:</strong>
<div className="mt-1">
{searchTermFila && <span className="badge bg-primary me-2">Busca: "{searchTermFila}"</span>}
{filtroMedicoFila !== "Todos" && <span className="badge bg-primary me-2">Médico: {filtroMedicoFila}</span>}
</div>
</div>
)}
{/* Tabela */}
<div className="table-responsive">
<table className="table table-striped table-hover table-paciente-table">
<thead> <thead>
<tr> <tr>
<th>Nome do Paciente</th> {/* Ajustado o cabeçalho */} <th>Nome do Paciente</th>
<th>CPF</th> {/* Ajustado o cabeçalho */} <th>CPF</th>
<th>Médico Solicitado</th> {/* Ajustado o cabeçalho */} <th>Médico Solicitado</th>
<th>Data da Solicitação</th> {/* Ajustado o cabeçalho */} <th>Data da Solicitação</th>
<th>Ações</th> <th>Ações</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{filaEsperaData.map((item, index) => ( {(() => {
<tr key={index}> // Filtrar dados
<td> <p>{item.Infos?.paciente_nome} </p> </td> const filaFiltrada = filaEsperaData.filter((item) => {
<td><p>{item.Infos?.paciente_cpf} </p></td> const buscaNome = item.Infos?.paciente_nome?.toLowerCase().includes(searchTermFila.toLowerCase());
<td><p>{item.Infos?.nome_medico} </p></td> const buscaCPF = item.Infos?.paciente_cpf?.toLowerCase().includes(searchTermFila.toLowerCase());
<td>{dayjs(item.agendamento.created_at).format('DD/MM/YYYY HH:mm')}</td> const passaBusca = searchTermFila === "" || buscaNome || buscaCPF;
<td> <div className="d-flex gap-2"> const passaMedico = filtroMedicoFila === "Todos" || item.Infos?.nome_medico?.toLowerCase().includes(filtroMedicoFila.toLowerCase());
return passaBusca && passaMedico;
});
<button className="btn btn-sm btn-edit" // Paginação
const totalPaginasFila = Math.ceil(filaFiltrada.length / itensPorPaginaFila);
const indiceInicial = (paginaAtualFila - 1) * itensPorPaginaFila;
const indiceFinal = indiceInicial + itensPorPaginaFila;
const filaPaginada = filaFiltrada.slice(indiceInicial, indiceFinal);
if (filaPaginada.length > 0) {
return filaPaginada.map((item, index) => (
<tr key={index}>
<td>
<div className="d-flex align-items-center">
{item.Infos?.paciente_nome}
</div>
</td>
<td>{item.Infos?.paciente_cpf}</td>
<td>
<span className="badge insurance-badge">
{item.Infos?.nome_medico || 'Não informado'}
</span>
</td>
<td>{dayjs(item.agendamento.created_at).format('DD/MM/YYYY HH:mm')}</td>
<td>
<div className="d-flex gap-2">
<button
className="btn btn-sm btn-edit"
onClick={() => { onClick={() => {
console.log(item, 'item') console.log(item, 'item');
navigate(`${2}/edit`) navigate(`${2}/edit`);
setDictInfo(item) setDictInfo(item);
}} }}
> >
<i className="bi bi-pencil me-1"></i> Editar <i className="bi bi-pencil me-1"></i> Editar
</button> </button>
<button <button
className="btn btn-sm btn-delete" className="btn btn-sm btn-delete"
onClick={() => { onClick={() => {
setSelectedId(item.agendamento.id) setSelectedId(item.agendamento.id);
setShowDeleteModal(true); setShowDeleteModal(true);
}} }}
> >
<i className="bi bi-trash me-1"></i> Excluir <i className="bi bi-trash me-1"></i> Excluir
</button> </button>
</div></td> </div>
</td>
</tr> </tr>
))} ));
} else {
return (
<tr>
<td colSpan="5" className="text-center py-4">
<div className="text-muted">
<i className="bi bi-search display-4"></i>
<p className="mt-2">Nenhuma solicitação encontrada com os filtros aplicados.</p>
{(searchTermFila || filtroMedicoFila !== "Todos") && (
<button
className="btn btn-outline-primary btn-sm mt-2"
onClick={() => {
setSearchTermFila('');
setFiltroMedicoFila('Todos');
setPaginaAtualFila(1);
}}
>
Limpar filtros
</button>
)}
</div>
</td>
</tr>
);
}
})()}
</tbody> </tbody>
</table> </table>
{/* Paginação */}
{(() => {
const filaFiltrada = filaEsperaData.filter((item) => {
const buscaNome = item.Infos?.paciente_nome?.toLowerCase().includes(searchTermFila.toLowerCase());
const buscaCPF = item.Infos?.paciente_cpf?.toLowerCase().includes(searchTermFila.toLowerCase());
const passaBusca = searchTermFila === "" || buscaNome || buscaCPF;
const passaMedico = filtroMedicoFila === "Todos" || item.Infos?.nome_medico?.toLowerCase().includes(filtroMedicoFila.toLowerCase());
return passaBusca && passaMedico;
});
const totalPaginasFila = Math.ceil(filaFiltrada.length / itensPorPaginaFila);
const indiceInicial = (paginaAtualFila - 1) * itensPorPaginaFila;
const indiceFinal = indiceInicial + itensPorPaginaFila;
if (filaFiltrada.length > 0) {
return (
<div className="d-flex justify-content-between align-items-center mt-3">
<div className="d-flex align-items-center">
<span className="me-2 text-muted">Itens por página:</span>
<select
className="form-select form-select-sm w-auto"
value={itensPorPaginaFila}
onChange={(e) => {
setItensPorPaginaFila(Number(e.target.value));
setPaginaAtualFila(1);
}}
>
<option value={5}>5</option>
<option value={10}>10</option>
<option value={25}>25</option>
<option value={50}>50</option>
</select>
</div>
<div className="d-flex align-items-center">
<span className="me-3 text-muted">
Página {paginaAtualFila} de {totalPaginasFila}
Mostrando {indiceInicial + 1}-{Math.min(indiceFinal, filaFiltrada.length)} de {filaFiltrada.length} solicitações
</span>
<nav>
<ul className="pagination pagination-sm mb-0">
<li className={`page-item ${paginaAtualFila === 1 ? 'disabled' : ''}`}>
<button
className="page-link"
onClick={() => setPaginaAtualFila(paginaAtualFila - 1)}
>
<i className="bi bi-chevron-left"></i>
</button>
</li>
{Array.from({ length: Math.min(5, totalPaginasFila) }, (_, i) => {
const startPage = Math.max(1, paginaAtualFila - 2);
const pageNum = startPage + i;
if (pageNum <= totalPaginasFila) {
return (
<li key={pageNum} className={`page-item ${pageNum === paginaAtualFila ? 'active' : ''}`}>
<button
className="page-link"
onClick={() => setPaginaAtualFila(pageNum)}
>
{pageNum}
</button>
</li>
);
}
return null;
})}
<li className={`page-item ${paginaAtualFila === totalPaginasFila ? 'disabled' : ''}`}>
<button
className="page-link"
onClick={() => setPaginaAtualFila(paginaAtualFila + 1)}
>
<i className="bi bi-chevron-right"></i>
</button>
</li>
</ul>
</nav>
</div>
</div>
);
}
return null;
})()}
</div>
</div>
</div>
</div>
</section>
</div> </div>
) )
} }
@ -550,7 +771,8 @@ const handleSearchMedicos = (term) => {
<button <button
type="button" type="button"
className="btn btn-primary" className="btn btn-primary"
onClick={() => {setShowDeleteModal(false); onClick={() => {
setShowDeleteModal(false);
}} }}
> >
@ -561,7 +783,8 @@ const handleSearchMedicos = (term) => {
<button <button
type="button" type="button"
className="btn btn-danger" className="btn btn-danger"
onClick={() => {deleteConsulta(selectedID); onClick={() => {
deleteConsulta(selectedID);
setShowDeleteModal(false) setShowDeleteModal(false)
let lista_cores = coresConsultas let lista_cores = coresConsultas
@ -590,7 +813,7 @@ const handleSearchMedicos = (term) => {
{showConfirmModal &&( {showConfirmModal && (
<div <div
className="modal fade show" className="modal fade show"
style={{ style={{
@ -623,7 +846,7 @@ const handleSearchMedicos = (term) => {
<button <button
type="button" type="button"
className="btn btn-primary" className="btn btn-primary"
onClick={() => {setShowConfirmModal(false); setSelectedId("")}} onClick={() => { setShowConfirmModal(false); setSelectedId("") }}
> >
Cancelar Cancelar
</button> </button>
@ -632,7 +855,8 @@ const handleSearchMedicos = (term) => {
<button <button
type="button" type="button"
className="btn btn-success" className="btn btn-success"
onClick={() => {confirmConsulta(selectedID);setShowConfirmModal(false) onClick={() => {
confirmConsulta(selectedID); setShowConfirmModal(false)
let lista_cores = coresConsultas let lista_cores = coresConsultas
let lista = listaConsultasID let lista = listaConsultasID

View File

@ -433,3 +433,21 @@ html[data-bs-theme="dark"] {
width: 80%; width: 80%;
} }
/* Estilo para o botão Excluir nos modais de Agendamento - vermelho escuro */
.modal-footer .btn-danger,
button.btn.btn-danger {
background-color: #c82333 !important;
border-color: #bd2130 !important;
color: #ffffff !important;
}
.modal-footer .btn-danger:hover,
.modal-footer .btn-danger:focus,
.modal-footer .btn-danger:active,
button.btn.btn-danger:hover,
button.btn.btn-danger:focus,
button.btn.btn-danger:active {
background-color: #a71d2a !important;
border-color: #9c1c28 !important;
color: #ffffff !important;
}