MelissaLayout: sidebar global de configs em qualquer rota de config
Antes cada pagina nativa de config tinha seu proprio chrome 2-col, e quando o usuario navegava entre Perfil/Plano/Negocio/Seguranca/Agenda Config/Bloqueios/Agendador/Pagamento, perdia o contexto do menu. Agora: - Catalogo unico em composables/melissaConfigGrupos.js (MELISSA_CONFIG_ GRUPOS + isMelissaConfigSlug helper) - MelissaConfigSidebar.vue componente standalone com accordion + navegacao via router.push + destaque do item ativo - MelissaLayout renderiza `<MelissaConfigSidebar>` em qualquer slug que esteja em MELISSA_CONFIG_GRUPOS (computed showConfigSidebar) - CSS var --m-config-aside-left no .win11-root: 296px quando sidebar visivel, 6px caso contrario - Todas as 9 paginas nativas (Perfil, Plano, AlterarPlano, Negocio, Seguranca, Bloqueios, AgendaConfig, Agendador, Pagamento) + MelissaConfiguracoes ajustam left do inset usando a var Sidebar tem entrada animada (lift + slide) e usa o pattern do .mcfg- accordion (head com icone primary + label + desc 2-linhas + badge; items com hover/active color-mix primary 12-16%). Proximo passo: limpar o aside redundante interno do MelissaConfiguracoes + ajustar MelissaSeguranca pra considerar o aside no min-width 1000. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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) {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="win11-root" :class="{ 'win11-has-photo': !!bgUrl }" :style="defaultBgStyle">
|
||||
<div class="win11-root" :class="{ 'win11-has-photo': !!bgUrl }" :style="[defaultBgStyle, configAsideLeftStyle]">
|
||||
<!-- Camada da foto custom (acima do gradiente, abaixo do dim).
|
||||
Opacidade controlada pelo slider — permite blend com o gradiente
|
||||
default que vive no .win11-root. -->
|
||||
@@ -2228,6 +2241,19 @@ function onKeydown(e) {
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════ -->
|
||||
<!-- SIDEBAR DE CONFIGURACOES — fixo a esquerda em qualquer
|
||||
rota de config (perfil, plano, agenda-config, pagamento, etc) -->
|
||||
<!-- ═══════════════════════════════════════════════════════ -->
|
||||
<Transition name="lift">
|
||||
<div
|
||||
v-if="layoutReady && showConfigSidebar"
|
||||
class="melissa-config-aside-host"
|
||||
>
|
||||
<MelissaConfigSidebar />
|
||||
</div>
|
||||
</Transition>
|
||||
|
||||
<MelissaPerfil
|
||||
v-if="layoutReady && secaoAberta === 'perfil'"
|
||||
@close="fecharSecao"
|
||||
@@ -2444,6 +2470,26 @@ function onKeydown(e) {
|
||||
transition: background-color 200ms ease;
|
||||
}
|
||||
|
||||
/* ─── Sidebar global de configuracoes ──────────────────────────
|
||||
Renderizado em qualquer rota de config (qualquer slug em
|
||||
MELISSA_CONFIG_GRUPOS). Fica na lateral esquerda; as paginas
|
||||
nativas usam var(--m-config-aside-left) no left do inset pra
|
||||
abrir espaco automatico. */
|
||||
.melissa-config-aside-host {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
bottom: calc(var(--m-dock-h, 76px) + 6px);
|
||||
left: 6px;
|
||||
width: 280px;
|
||||
z-index: 41;
|
||||
pointer-events: auto;
|
||||
animation: mcs-aside-enter 240ms cubic-bezier(0.2, 0.7, 0.3, 1);
|
||||
}
|
||||
@keyframes mcs-aside-enter {
|
||||
from { opacity: 0; transform: translateX(-8px); }
|
||||
to { opacity: 1; transform: translateX(0); }
|
||||
}
|
||||
|
||||
/* ─── Plano de trás (resumo) ───────────────────────────────── */
|
||||
.win11-summary {
|
||||
position: relative;
|
||||
|
||||
Reference in New Issue
Block a user