From 6860628087c79343ec7b0ddd6b14ca8f560d8a3b Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 May 2026 17:25:41 -0300 Subject: [PATCH] templates/editor: fix trava do drawer ao inserir variavel no mobile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .../components/DocumentTemplateEditor.vue | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/features/documents/components/DocumentTemplateEditor.vue b/src/features/documents/components/DocumentTemplateEditor.vue index 589ec15..1678a01 100644 --- a/src/features/documents/components/DocumentTemplateEditor.vue +++ b/src/features/documents/components/DocumentTemplateEditor.vue @@ -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 ────────────────────────────────────────────────────