Ajustes gerais - Etapa 1 #52

Merged
deyvisonwanderley merged 30 commits from ajustes_gerais into master 2025-12-01 18:00:39 +00:00
14 changed files with 3380 additions and 967 deletions
Showing only changes of commit f059a0c688 - Show all commits

View File

@@ -52,37 +52,37 @@
// Atualizar posição quando o modal for aberto (quando registroQuery tiver dados)
$effect(() => {
if (registroQuery?.data) {
// Usar requestAnimationFrame para garantir que o DOM está completamente renderizado
const updatePosition = () => {
requestAnimationFrame(() => {
const pos = calcularPosicaoModal();
if (pos) {
modalPosition = pos;
// Usar requestAnimationFrame para garantir que o DOM está completamente renderizado
const updatePosition = () => {
requestAnimationFrame(() => {
const pos = calcularPosicaoModal();
if (pos) {
modalPosition = pos;
} else {
// Fallback para centralização
modalPosition = {
top: window.innerHeight / 2,
left: window.innerWidth / 2
};
}
});
};
}
});
};
// Aguardar um pouco para garantir que o DOM está atualizado
setTimeout(updatePosition, 50);
setTimeout(updatePosition, 50);
// Adicionar listener de scroll para atualizar posição
const handleScroll = () => {
updatePosition();
};
// Adicionar listener de scroll para atualizar posição
const handleScroll = () => {
updatePosition();
};
window.addEventListener('scroll', handleScroll, true);
window.addEventListener('resize', handleScroll);
window.addEventListener('scroll', handleScroll, true);
window.addEventListener('resize', handleScroll);
return () => {
window.removeEventListener('scroll', handleScroll, true);
window.removeEventListener('resize', handleScroll);
};
return () => {
window.removeEventListener('scroll', handleScroll, true);
window.removeEventListener('resize', handleScroll);
};
} else {
// Limpar posição quando o modal for fechado
modalPosition = null;

View File

@@ -1952,7 +1952,7 @@
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<div class="form-control md:col-span-2">
<FuncionarioSelect bind:value={atestadoMedico.funcionarioId} required={true} />
<FuncionarioSelect bind:value={atestadoMedico.funcionarioId} required={true} />
</div>
<div class="form-control">
@@ -2098,7 +2098,7 @@
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<div class="form-control md:col-span-2">
<FuncionarioSelect bind:value={declaracao.funcionarioId} required={true} />
<FuncionarioSelect bind:value={declaracao.funcionarioId} required={true} />
</div>
<div class="form-control">
@@ -2226,7 +2226,7 @@
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<div class="form-control md:col-span-2">
<FuncionarioSelect bind:value={licencaMaternidade.funcionarioId} required={true} />
<FuncionarioSelect bind:value={licencaMaternidade.funcionarioId} required={true} />
</div>
<div class="form-control">
@@ -2396,7 +2396,7 @@
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<div class="form-control md:col-span-2">
<FuncionarioSelect bind:value={licencaPaternidade.funcionarioId} required={true} />
<FuncionarioSelect bind:value={licencaPaternidade.funcionarioId} required={true} />
</div>
<div class="form-control">
@@ -2697,7 +2697,7 @@
</div>
</div>
{/if}
</main>
</main>
<!-- Modal de Erro -->
<ErrorModal

View File

@@ -90,14 +90,33 @@ export const listarTodas = query({
.first();
let time = null;
let gestor = null;
if (membroTime) {
time = await ctx.db.get(membroTime.timeId);
// Buscar gestor do time
if (time?.gestorId) {
const gestorUsuario = await ctx.db.get(time.gestorId);
if (gestorUsuario) {
// Buscar funcionário do gestor para obter o nome
const gestorFuncionario = await ctx.db
.query("funcionarios")
.withIndex("by_usuario", (q) => q.eq("usuarioId", time.gestorId))
.first();
if (gestorFuncionario) {
gestor = {
_id: gestorUsuario._id,
nome: gestorFuncionario.nome,
};
}
}
}
}
return {
...ferias,
funcionario,
time,
gestor,
};
})
);