templates/editor: fix trava do drawer ao inserir variavel no mobile

Bug: ao clicar numa variavel no drawer mobile, a variavel era
inserida mas o drawer travava/bugava. Causa: editor.insertHTML(tag)
do Jodit tenta resolver selection/cursor — no mobile, foco esta nos
botoes do drawer, nao no editor, entao Jodit fica em loop tentando
encontrar posicao.

Fix:
- Detecta isMobile e usa append direto via v-model
  (form.value[field] += tag) em vez de editor.insertHTML
- Fecha o drawer ANTES da insercao pra Jodit reconciliar com
  v-model na proxima tick
- No desktop, comportamento original (insertHTML mantem posicao
  do cursor) permanece

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-21 17:25:41 -03:00
parent 134f562a1f
commit 6860628087
@@ -72,7 +72,16 @@ function insertVariable(varKey) {
rodape_html: editorRodape
}
const editorRef = editorMap[cursorField.value]
if (editorRef?.value?.insertHTML) {
// No mobile: drawer está aberto, foco está nos botões do drawer.
// Tentar editor.insertHTML enquanto o cursor está fora do Jodit faz
// ele travar tentando resolver selection. Usamos o fallback (append
// direto no form via v-model) e fechamos o drawer ANTES — Jodit
// sincroniza com v-model na próxima tick.
if (isMobile.value) {
drawerOpen.value = false;
form.value[cursorField.value] = (form.value[cursorField.value] || '') + tag
} else if (editorRef?.value?.insertHTML) {
editorRef.value.insertHTML(tag)
} else {
form.value[cursorField.value] = (form.value[cursorField.value] || '') + tag
@@ -82,9 +91,6 @@ function insertVariable(varKey) {
if (!form.value.variaveis.includes(varKey)) {
form.value.variaveis = [...form.value.variaveis, varKey]
}
// No mobile, fecha o drawer pra liberar a tela do editor
if (isMobile.value) drawerOpen.value = false;
}
// ── Save ────────────────────────────────────────────────────