diff --git a/src/layout/melissa/MelissaAgendaConfig.vue b/src/layout/melissa/MelissaAgendaConfig.vue index 014e83f..b1be047 100644 --- a/src/layout/melissa/MelissaAgendaConfig.vue +++ b/src/layout/melissa/MelissaAgendaConfig.vue @@ -1431,7 +1431,7 @@ onBeforeUnmount(() => { /* ═══════ Page chrome ═══════ */ .mac-page { position: absolute; - inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) 6px; + inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) var(--m-config-aside-left, 6px); z-index: 40; display: flex; flex-direction: column; diff --git a/src/layout/melissa/MelissaAgendador.vue b/src/layout/melissa/MelissaAgendador.vue index 17875f7..b1a3693 100644 --- a/src/layout/melissa/MelissaAgendador.vue +++ b/src/layout/melissa/MelissaAgendador.vue @@ -1381,7 +1381,7 @@ const summaryItems = computed(() => [ /* ═══════ Page chrome ═══════ */ .mag-page { position: absolute; - inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) 6px; + inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) var(--m-config-aside-left, 6px); z-index: 40; display: flex; flex-direction: column; diff --git a/src/layout/melissa/MelissaAlterarPlano.vue b/src/layout/melissa/MelissaAlterarPlano.vue index 853d12b..f145628 100644 --- a/src/layout/melissa/MelissaAlterarPlano.vue +++ b/src/layout/melissa/MelissaAlterarPlano.vue @@ -542,7 +542,7 @@ onMounted(async () => { /* ═══════ Page chrome ═══════ */ .map-page { position: absolute; - inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) 6px; + inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) var(--m-config-aside-left, 6px); z-index: 40; display: flex; flex-direction: column; diff --git a/src/layout/melissa/MelissaBloqueios.vue b/src/layout/melissa/MelissaBloqueios.vue index 582f741..d12b39f 100644 --- a/src/layout/melissa/MelissaBloqueios.vue +++ b/src/layout/melissa/MelissaBloqueios.vue @@ -837,7 +837,7 @@ onBeforeUnmount(() => { /* ═══════ Page chrome ═══════ */ .mbq-page { position: absolute; - inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) 6px; + inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) var(--m-config-aside-left, 6px); z-index: 40; display: flex; flex-direction: column; diff --git a/src/layout/melissa/MelissaConfigSidebar.vue b/src/layout/melissa/MelissaConfigSidebar.vue new file mode 100644 index 0000000..ba0709c --- /dev/null +++ b/src/layout/melissa/MelissaConfigSidebar.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/src/layout/melissa/MelissaConfiguracoes.vue b/src/layout/melissa/MelissaConfiguracoes.vue index ee2ac2d..11724fd 100644 --- a/src/layout/melissa/MelissaConfiguracoes.vue +++ b/src/layout/melissa/MelissaConfiguracoes.vue @@ -593,7 +593,7 @@ function resetCores() { /* ═════ Container ═════ */ .mcfg-page { position: absolute; - inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) 6px; + inset: 6px 6px calc(var(--m-dock-h, 76px) + 6px) var(--m-config-aside-left, 6px); z-index: 40; display: flex; flex-direction: column; diff --git a/src/layout/melissa/MelissaLayout.vue b/src/layout/melissa/MelissaLayout.vue index 9a1c537..6c5ebf0 100644 --- a/src/layout/melissa/MelissaLayout.vue +++ b/src/layout/melissa/MelissaLayout.vue @@ -42,6 +42,8 @@ import MelissaBloqueios from './MelissaBloqueios.vue'; import MelissaAgendador from './MelissaAgendador.vue'; import MelissaAgendaConfig from './MelissaAgendaConfig.vue'; import MelissaPagamento from './MelissaPagamento.vue'; +import MelissaConfigSidebar from './MelissaConfigSidebar.vue'; +import { isMelissaConfigSlug } from './composables/melissaConfigGrupos.js'; import MelissaEmbed from './MelissaEmbed.vue'; import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue'; import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue'; @@ -248,6 +250,17 @@ const secaoAberta = computed(() => { return null; }); +// Mostra o sidebar lateral de configuracoes (MelissaConfigSidebar) +// quando a rota atual e um slug do catalogo de configs (any item em +// MELISSA_CONFIG_GRUPOS). +const showConfigSidebar = computed(() => isMelissaConfigSlug(secaoAberta.value)); + +// CSS var pras paginas nativas saberem que precisam abrir espaco a +// esquerda pro sidebar (296px = 280 width + 16 gap). +const configAsideLeftStyle = computed(() => ({ + '--m-config-aside-left': showConfigSidebar.value ? '296px' : '6px' +})); + // Quando o usuário fecha a seção e volta pro resumo, garante que os // dados estão prontos (caso o idle callback ainda não tenha disparado // no fluxo deep-link). fetchCached é idempotente: cache hit → instant, @@ -1388,7 +1401,7 @@ function onKeydown(e) {