From 80cce772db2a70209b59b79c6e4226637bdd9461 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 May 2026 16:59:21 -0300 Subject: [PATCH] templates/editor: layout 3-col + tabs cabecalho/corpo/rodape MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatora DocumentTemplateEditor em 3 colunas seguindo padrao MelissaAgendaConfig: - COL 1 (esquerda, 240-280px): form de metadados — nome, tipo, descricao (Textarea com autoResize), URL do logo - COL 2 (centro, flex 1): sub-tabs Cabecalho/Corpo/Rodape, 1 editor visivel por vez. Cada editor com minHeight: 450px (era 120/350/120). Tab ativa destacada com border-bottom primary + background sutil. - COL 3 (direita, 220-260px): variaveis agrupadas por categoria, hint dinamico mostrando qual sub-tab esta ativa ("Clique para inserir no Cabecalho/Corpo/Rodape"). Botoes com {{ }} braces em monospace + cor primary. Scroll interno: - .dte-page flex column, gap 12, min-height 0, padding 12 - Cada coluna eh card (border + radius) com header sticky + body scrollable interno (overflow-y: auto, scrollbar-width: thin) - Variaveis com max-height proprio + scroll interno Mobile (<1024px): - 3-col vira 1-col stacked - Container do .dte-cols ganha overflow-y auto (scroll da pagina inteira em vez de scroll interno em cada coluna) - Variaveis ganha max-height 320px pra nao ocupar a tela toda Preview (toggle no topo): - Documento A4-like centralizado (max-width 794px ≈ 96dpi) - Padding 48/56px, shadow sutil - Mobile: padding reduzido pra max width disponivel Co-Authored-By: Claude Opus 4.7 (1M context) --- .../components/DocumentTemplateEditor.vue | 558 ++++++++++++++---- 1 file changed, 451 insertions(+), 107 deletions(-) diff --git a/src/features/documents/components/DocumentTemplateEditor.vue b/src/features/documents/components/DocumentTemplateEditor.vue index 6490b1e..39bb771 100644 --- a/src/features/documents/components/DocumentTemplateEditor.vue +++ b/src/features/documents/components/DocumentTemplateEditor.vue @@ -23,6 +23,8 @@ const emit = defineEmits(['update:modelValue', 'save', 'cancel']) const { TIPOS_TEMPLATE, TEMPLATE_VARIABLES, variablesGrouped, previewHtml } = useDocumentTemplates() const activeTab = ref('editor') // editor | preview +// Sub-tab do editor (centro do layout 3-col): qual seção renderiza +const editorTab = ref('corpo') // cabecalho | corpo | rodape // ── Form reativo synced com modelValue ────────────────────── @@ -89,127 +91,469 @@ function onSave() { } + +