Estoy usando el complemento jquery mmenu con el complemento de la barra lateral ( https://mmenujs.com/docs/addons/sidebar.html ). Desafortunadamente, tengo problemas para que el estado inicial funcione correctamente.
const menu = new Mmenu( "#menu", { counters: { add: true, }, iconPanels: { add: true, visible: "first", }, navbar: { title: "...", }, navbars: [ { position: "top", content: ["searchfield"], }, { position: "top", }, ], setSelected: { hover: true, parent: true, }, sidebar: { collapsed: { use: 768, }, expanded: { use: 1440, initial: "closed", }, }, theme: "white", }, { offCanvas: { page: { selector: "#page", }, }, searchfield: { cancel: true, clear: true, }, } );Problema: si abro el archivo html por primera vez (ventana de visualización> 1440 px), el menú se cierra (¡genial!). Pero si cambio a otra pestaña en mi navegador o minimizo la ventana y vuelvo a entrar, se abre el menú. Parece estar relacionado con el evento "cambio de visibilidad". Puede probarlo, si descarga el mmenu master ( https://github.com/FrDH/mmenu-js/archive/master.zip ) con las demostraciones y abre el archivo advanced.html
Como una pequeña solución, puedo cerrar el menú con el evento de cambio de visibilidad, pero si el usuario abre el menú, cambia la pestaña y luego regresa, ¡no quiero que se cierre el menú!
const api = menu.API; document.addEventListener("visibilitychange", function() { setTimeout(function() { api.close(); }, 50); });¿Algunas ideas?
Esta es la parte del código que estás buscando:
sidebar: { collapsed: { use: "(min-width: 768px)", }, expanded: { use: "(min-width: 1024px)", initial: "closed", }, },Establece el estado del menú. Si la ventana gráfica >= 1024px, el estado inicial se cerrará, pero abrirá el menú después de 50 ms. Si la ventana gráfica es más pequeña, el estado permanecerá cerrado.
Solo cámbialo a:
sidebar: { collapsed: { use: "(min-width: 768px)", }, expanded: { use: false, initial: "closed", }, },Entonces no habrá un estado expandido inicial y el menú simplemente se cerrará.
Puede configurar collapsed en (min-width: 0px) o falso para asegurarse de que tampoco se colapse automáticamente.