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
-