melissa/templates: fix parse error em variaveis do preview

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) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-21 16:47:00 -03:00
parent 0fafc28581
commit b821db6438
@@ -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(() => {
<i class="pi pi-info-circle" />
<span>
Este template usa {{ previewTemplate.variaveis.length }} variável(eis):
<code>{{ previewTemplate.variaveis.slice(0, 5).map(v => `{{${v}}}`).join(', ') }}</code>
<code>{{ formatVarsPreview(previewTemplate.variaveis, 5) }}</code>
<span v-if="previewTemplate.variaveis.length > 5"> e +{{ previewTemplate.variaveis.length - 5 }}</span>
</span>
</div>