Commit Graph

4 Commits

Author SHA1 Message Date
Leonardo bad828cab3 Melissa pages: esconde page-title-icon em mobile
No mobile o botao "Menu Lancamentos/Notificacoes/etc" ja indica a sessao,
entao o pi-list/pi-bell ao lado do contador era redundante. Adiciona
.<prefix>-page__title-icon { display: none; } no @media max-width: 1023px.
Em MelissaConversas usa > i:first-child (icone nao tem classe dedicada).

Pages: FinanceiroLancamentos, Compromissos, Documentos, CadastrosRecebidos,
Conversas, AgendamentosRecebidos, Financeiro, Grupos, Notificacoes, Tags,
Medicos, Relatorios, Recorrencias.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 13:54:28 -03:00
Leonardo 02af119dc6 Melissa drawers: footer colado no bottom (pattern AppMenu)
Refator do mobile drawer em todas as Melissa Pages com sidebar:
scroll move pra dentro de .xx-side__scroll (flex: 1 + min-height: 0)
e o __footer vira flex-shrink: 0 last child de flex column. Espelha
o pattern do AppMenu/layout-sidebar Rail. Substitui o sticky/margin:auto
que falhava quando o conteudo era pequeno (deixava espaco vazio sob
o "Limpar filtros").

Pages: Compromissos, Conversas, Documentos, FinanceiroLancamentos,
Grupos, Medicos, Notificacoes, Pacientes, Recorrencias, Relatorios, Tags.

Pacientes (caso especial): mp-quick fixo no topo (max-height: 50%)
+ mp-side flex: 1 com scroll/footer interno.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 11:30:52 -03:00
Leonardo 48bf2726a5 Drawer mobile + footer colado + Menu nomeado + tenant ensureLoaded
Tres ajustes globais nas Melissa Pages com sidebar:

1) FOOTER "Limpar filtros" colado no bottom do drawer mobile

   Problema: o sticky bottom precisa que algum container parent
   tenha altura definida e overflow. No drawer, o `.xx-side` tinha
   `height: auto` — entao o footer ficava no fluxo natural (logo
   apos os cards) mesmo com pouco conteudo, em vez de empurrado pro
   bottom do drawer.

   Fix: `.xx-mobile-drawer__scroll .xx-side` ganha
   `flex: 1; min-height: 0; display: flex; flex-direction: column`
   pra ocupar altura disponivel; o `.xx-side__footer` ganha
   `margin: auto -12px -24px` (margin-top: auto empurra pro fim).
   Sticky bottom continua pro caso de scroll com muito conteudo.

   Aplicado em: Compromissos, Grupos, Tags, Medicos, Conversas,
   Recorrencias, Pacientes (caso especial — separa .mp-side de
   .mp-quick), Cadastros Recebidos, FinanceiroLancamentos.

2) DRAWER MOBILE adicionado em Notificacoes, Documentos e
   Relatorios (estavam com sidebar virando topo via max-height
   50vh — faltava o pattern oficial das demais Melissa Pages).

   Pattern aplicado:
   - Aside host com id="<prefix>-mobile-drawer-target" + Transition
     backdrop com fade
   - Botao "Menu <Secao>" no header (esquerda do titulo)
   - <Teleport :disabled="!isMobile"> envolvendo a sidebar
   - Script: drawerOpen + isMobile + matchMedia listener registrado
     no onMounted, removido no onBeforeUnmount
   - CSS completo: .xx-mobile-drawer (fixed, transform translateX),
     __scroll (overflow + padding), __backdrop (rgba 0.45 + blur),
     overrides quando teleportada (sidebar perde bg/border-right,
     footer vira sticky bottom com margin-top auto)

3) Botao "Menu" passa a ter sufixo da pagina:
   - "Menu Lancamentos" (FinanceiroLancamentos)
   - "Menu Notificacoes" (Notificacoes)
   - "Menu Documentos" (Documentos)
   - "Menu Relatorios" (Relatorios)
   - "Menu Agendamentos" (AgendamentosRecebidos — corrigido tambem)

4) Bug de "lista vazia ao carregar via URL direto":

   FinanceiroLancamentos e Relatorios usam composables que dependem
   de tenantStore.activeTenantId. Quando aberta direto via URL
   (sem navegar pelo menu), o tenantStore pode nao estar inicializado
   ainda — entao fetchRecords() / loadSessions() retornam vazio.

   Fix: adicionar `await tenantStore.ensureLoaded()` no onMounted
   antes do fetch. Ja era pattern usado em outras Melissa Pages
   (Compromissos, etc).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 10:40:07 -03:00
Leonardo 532204708e Documentos + Templates + Relatorios nativas (so resta online-scheduling)
Promove '/melissa/documentos', '/melissa/documentos-templates' e
'/melissa/relatorios' do embed pra paginas nativas Melissa.

MelissaDocumentos (~700L):
- Sidebar com stats (Total / Tamanho / Tipos / Pendentes amber) +
  filtro Tipo (Select com TIPOS_DOCUMENTO 11 opcoes) + filtro Tag
  (Select dinamico com usedTags) + footer fixo Limpar filtros
- Main: toolbar busca + lista de DocumentCard (componente reusado)
- Modo "todos os pacientes" — patientId null. Upload/Gerar exigem
  abrir paciente especifico no prontuario (botoes nao aparecem).
- Dialogs reusados: PreviewDialog + SignatureDialog + ShareDialog +
  ConfirmDialog (delete).

MelissaDocumentosTemplates (~700L):
- Layout 1-col empilhado, 3 views: list / create / edit
- Header com botao "Novo template" (list) ou "Cancelar/Salvar"
  (create/edit) + back button
- 2 sections distintas: "Templates padrao do sistema" (info-blue,
  click duplica) e "Meus templates" (accent, click edita + menu de
  acoes Duplicar/Editar/Desativar)
- Cards em grid responsivo (auto-fill 280px), com badge "padrao"/
  "inativo" e count de variaveis
- DocumentTemplateEditor reusado pra create/edit
- ConfirmDialog reusado

MelissaRelatorios (~1100L):
- Sidebar com 6 stats (Total / Realizadas verde / Faltas red /
  Canceladas warn / Agendadas info / Taxa realizacao) + filtro
  Periodo (button list: semana/mes/3meses/6meses) + filtro Status
  (Realizadas/Faltas/Canceladas/Agendadas com cores) + footer
  Limpar filtros
- Main: card Grafico (Chart.js stacked bar agrupado por
  semana/mes) + card DataTable de sessoes filtradas (Data/Hora
  sortable / Paciente / Sessao / Modalidade / Status)
- Empty states distintos: sem sessoes no periodo / sem resultado
  do filtro

Logica preservada das paginas originais. Composables/services nao
foram tocados — apenas adaptacao do chrome pra blueprint Melissa.

DocumentsListPage / DocumentTemplatesPage / RelatoriosPage
continuam intactas no layout Rail (/therapist/*, /admin/*).

Wire-up MelissaLayout: imports + 3 render blocks + 'documentos',
'documentos-templates', 'relatorios' literais em NON_CONFIG_SLUGS;
removidos de MELISSA_EMBED_KEYS. Entries removidos do EMBED_MAP em
MelissaEmbed (resta apenas 'online-scheduling').

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 10:14:16 -03:00