diff --git a/apps/web/src/routes/(dashboard)/perfil/+page.svelte b/apps/web/src/routes/(dashboard)/perfil/+page.svelte index 5c162ca..b7438ba 100644 --- a/apps/web/src/routes/(dashboard)/perfil/+page.svelte +++ b/apps/web/src/routes/(dashboard)/perfil/+page.svelte @@ -199,6 +199,13 @@ }); }); + const setoresQuery = $derived.by(() => { + if (!funcionarioIdParaQueries) return { data: [] }; + return useQuery(api.setores.getSetoresByFuncionario, { + funcionarioId: funcionarioIdParaQueries + }); + }); + $effect(() => { if (meuTimeQuery?.data && funcionarioIdParaQueries) { meuTimeEstavel = meuTimeQuery.data; @@ -1186,6 +1193,41 @@ +
+
+ +
+
+ Setores + {#if setoresQuery?.data && setoresQuery.data.length > 0} +
+ {#each setoresQuery.data as setor} +
+ {setor.nome} + {#if setor.sigla} + ({setor.sigla}) + {/if} +
+ {/each} +
+ {:else if setoresQuery?.isLoading} +

Carregando...

+ {:else} +

Nenhum setor atribuído

+ {/if} +
+
+
diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/+page.svelte index ca05422..c46f962 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/funcionarios/+page.svelte @@ -79,6 +79,42 @@ openMenuId = openMenuId === id ? null : id; } + function closeMenu() { + openMenuId = null; + } + + // Fechar menu ao clicar fora + $effect(() => { + if (!openMenuId) return; + + function handleClickOutside(event: MouseEvent) { + const target = event.target as HTMLElement; + // Verificar se o clique foi fora do dropdown (botão e menu) + const dropdown = target.closest('.dropdown'); + if (!dropdown) { + openMenuId = null; + } + } + + function handleEscape(event: KeyboardEvent) { + if (event.key === 'Escape') { + openMenuId = null; + } + } + + // Adicionar listeners no próximo tick para não interferir com o clique que abriu o menu + const timeoutId = setTimeout(() => { + document.addEventListener('click', handleClickOutside); + document.addEventListener('keydown', handleEscape); + }, 10); + + return () => { + clearTimeout(timeoutId); + document.removeEventListener('click', handleClickOutside); + document.removeEventListener('keydown', handleEscape); + }; + }); + async function openSetoresModal(funcionarioId: Id<'funcionarios'>, nome: string) { funcionarioParaSetores = { _id: funcionarioId, nome }; setoresSelecionados = []; @@ -382,30 +418,50 @@ class="dropdown-content menu bg-base-100 rounded-box border-base-300 z-20 w-52 border p-2 shadow-xl" >
  • - + Ver Detalhes
  • - + Editar
  • - + Ver Documentos
  • -