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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user