From b821db643886ae0f90ac6c75211863114ed23f05 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 May 2026 16:47:00 -0300 Subject: [PATCH] melissa/templates: fix parse error em variaveis do preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erro: \"Unexpected token, expected }\" em \`{{ array.map(v => \`{{...${v}}}...\`) }}\`. Vue parser confunde os \`{{\` da template string aninhada com os delimitadores de interpolacao Vue, abortando parse. Fix: extrai pra helper externo formatVarsPreview(vars, max) que monta as chaves via concatenacao de strings (open + open + v + close + close) — sem template literal com \`{{\` literal. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/layout/melissa/MelissaDocumentosTemplates.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/layout/melissa/MelissaDocumentosTemplates.vue b/src/layout/melissa/MelissaDocumentosTemplates.vue index bb22fd5..17a1af5 100644 --- a/src/layout/melissa/MelissaDocumentosTemplates.vue +++ b/src/layout/melissa/MelissaDocumentosTemplates.vue @@ -173,6 +173,15 @@ function tipoLabel(tipo) { return TIPOS_TEMPLATE.find((t) => t.value === tipo)?.label || tipo; } +// Formata as variáveis do template como string "{{nome}}, {{outra}}…" +// (helper externo — evita conflito de {{ }} aninhado no template Vue) +function formatVarsPreview(vars, max = 5) { + if (!Array.isArray(vars) || !vars.length) return ''; + const open = '{'; + const close = '}'; + return vars.slice(0, max).map((v) => `${open}${open}${v}${close}${close}`).join(', '); +} + // ── Card menu (templates do tenant) ───────────────────── function getCardMenuItems(tpl) { const items = [ @@ -383,7 +392,7 @@ onMounted(() => { Este template usa {{ previewTemplate.variaveis.length }} variável(eis): - {{ previewTemplate.variaveis.slice(0, 5).map(v => `{{${v}}}`).join(', ') }} + {{ formatVarsPreview(previewTemplate.variaveis, 5) }} e +{{ previewTemplate.variaveis.length - 5 }}