diff --git a/src/layout/melissa/MelissaDocumentosTemplates.vue b/src/layout/melissa/MelissaDocumentosTemplates.vue index 245a09d..cb17b7a 100644 --- a/src/layout/melissa/MelissaDocumentosTemplates.vue +++ b/src/layout/melissa/MelissaDocumentosTemplates.vue @@ -9,7 +9,7 @@ * Lógica idêntica à DocumentTemplatesPage (composable * useDocumentTemplates + DocumentTemplateEditor reusado). */ -import { ref, computed, onMounted } from 'vue'; +import { ref, computed, onMounted, onBeforeUnmount } from 'vue'; import { useToast } from 'primevue/usetoast'; import { useConfirm } from 'primevue/useconfirm'; @@ -67,6 +67,8 @@ function openEdit(tpl) { function openPreview(tpl) { previewTemplate.value = tpl; view.value = 'preview'; + // No mobile, fecha o drawer pra dar espaço ao preview + if (isMobile.value) drawerOpen.value = false; } // Monta HTML completo do template (cabeçalho + corpo + rodapé) com @@ -198,16 +200,68 @@ function getCardMenuItems(tpl) { return items; } +// ── Mobile drawer (espelha padrão MelissaBloqueios) ───── +const drawerOpen = ref(false); +const isMobile = ref(false); +let _mqMobile = null; +function _onMqMobileChange(e) { + isMobile.value = e.matches; + if (!e.matches) drawerOpen.value = false; +} +function toggleDrawer() { drawerOpen.value = !drawerOpen.value; } +function fecharDrawer() { drawerOpen.value = false; } + onMounted(() => { fetchTemplates(true); + if (typeof window !== 'undefined' && window.matchMedia) { + _mqMobile = window.matchMedia('(max-width: 1023px)'); + isMobile.value = _mqMobile.matches; + try { _mqMobile.addEventListener('change', _onMqMobileChange); } + catch { _mqMobile.addListener(_onMqMobileChange); } + } +}); + +onBeforeUnmount(() => { + if (_mqMobile) { + try { _mqMobile.removeEventListener('change', _onMqMobileChange); } + catch { _mqMobile.removeListener(_onMqMobileChange); } + } });