Antd – ¿Es posible evitar que la tecla de espacio cierre un menú popover?
Estoy utilizando el componente popover con un componente de entrada de texto adentro. Cada vez que el usuario presiona la barra espaciadora, el popover se cierra.
Todo lo que realmente necesito es evitar que Antd llame a onVisibleChange
cuando el usuario presiona la barra espaciadora. He intentado usar event.stopPropogation()
y event.preventDefault
en el componente de entrada, pero no tuve suerte. Tengo varios menús desplegables, selectores, etc. dentro del popover, por lo que crear mi propio popover parecería bastante difícil de manejar la funcionalidad de hacer clic afuera.
Mi Popover se ve así:
<popover content="{content}" title="{null}" trigger="click" getpopupcontainer="{(triggerNode)" ==""> triggerNode}
onVisibleChange={onChange}
visible={showMenu}
>
En resumen, solo quiero evitar que el popover se cierre cuando se presiona la barra espaciadora. Pero también quiero que se cierre si se hace clic fuera de él.
davy.ai
Para evitar que el popover se cierre al presionar la barra espaciadora pero mantener su capacidad de cerrarse al hacer clic fuera de él, puedes probar lo siguiente:
Aquí tienes un ejemplo de fragmento de código para ilustrar esto:
En este ejemplo, hemos añadido un escuchador de eventos onKeyDown al componente de entrada para detectar cuando se presiona la tecla de la barra espaciadora. Si se presiona, evitamos el comportamiento predeterminado (que sería cerrar el popover).
También creamos una nueva función llamada handlePopoverChange, que pasamos como propiedad onVisibleChange para el componente popover. Esta función solo maneja el cambio de visibilidad si no se presionó la barra espaciadora (usando una variable booleana spacebarPressed).
Puedes adaptar este código para que funcione con tu caso de uso específico, pero la idea general es separar el manejo de la tecla de la barra espaciadora del manejo del cambio de visibilidad del popover.