Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes

Rate this content
Bookmark

Nuestros sistemas de diseño comúnmente incluyen componentes que se muestran encima de otro contenido: tooltips, date pickers, menús y enseñanza de la interfaz de usuario, por nombrar solo algunos. Las actualizaciones propuestas para la plataforma web están a punto de hacer que construir estos sea mucho más fácil. Es posible que ni siquiera necesites JavaScript. En esta charla, aprenderás todo sobre el próximo atributo 'popover', la modalidad y la capa superior.

10 min
01 Jun, 2023

Video Summary and Transcription

La charla trata sobre el uso de diálogos y popovers en el desarrollo web. Los diálogos pueden ser modales o no modales y ahora son compatibles con la accesibilidad. Los popovers son versátiles y se pueden agregar a cualquier elemento sin JavaScript. Proporcionan sugerencias, selectores, enseñanza de la interfaz de usuario, listas y menús de acciones. Los diálogos y popovers modales y no modales tienen diferentes comportamientos y métodos de cierre. El soporte del navegador para estas características se está expandiendo, pero aún hay preguntas abiertas sobre posicionamiento, semántica y otros casos de uso.

Available in English

1. Introducción a los Diálogos y Popovers

Short description:

Quiero hablarles sobre los diálogos y los popovers. El elemento de diálogo y los atributos de popover son dos cosas que pueden ayudarte a colocar cosas encima de otras cosas en la web. Los diálogos ahora son compatibles con la accesibilidad y se pueden usar como diálogos modales o no modales. Los popovers son un nuevo conjunto de comportamientos que se pueden agregar a cualquier elemento para crear sugerencias de elementos de formulario, selectores de contenido, interfaces de enseñanza, listas desplegables y menús de acciones. Funcionan sin JavaScript y se pueden crear fácilmente agregando el atributo de popover a un elemento.

Quiero hablarles sobre los diálogos y los popovers. Ahora, todos sabemos que la web solía ser lineal, ¿verdad? Teníamos texto e imágenes. Cada vez más, nos gusta colocar cosas encima de otras cosas. Hoy les hablaré sobre dos cosas que realmente pueden ayudarte con eso, desde la especificación de HTML.

Uno es el elemento de diálogo que ha existido por un tiempo, y recientemente, también se ha vuelto compatible con la accessibility. Luego, en segundo lugar, los atributos de popover, que es un atributo completamente nuevo que llega a la web. Se ha agregado a Chrome la semana pasada y a Chrome estable. También se está desarrollando en todos los demás navegadores.

Un ejemplo de un popover es cuando tienes un poco de interfaz de usuario y quieres explicárselo a tus usuarios. En este caso, hay un artículo de The Economist. Tienen un reproductor de audio, y muestran al usuario, ya sabes, puedes hacer clic aquí para escuchar tu artículo. Puedes hacer todo tipo de cosas con los popovers, como el otro día cuando estaba en una reunión de negocios muy seria y Microsoft Teams me dijo que usara integraciones de Excel. Eso es algo que hacen. También me han dicho que sea yo mismo expresivo, mi yo expresivo, usando como un avatar. Puedes usar los popovers para todo tipo de cosas. Slack lo hace un poco mejor al decirte que te ves bien cuando pasas el cursor sobre ti mismo. Prefiero eso al anterior, para ser honesto.

Ahora veamos las diferencias entre los diálogos y los popovers, comenzando con el elemento de diálogo. Entonces, el diálogo es un elemento de HTML, así que no estoy hablando de cualquier diálogo que estés construyendo, sino del elemento real en HTML. Viene con el rol de diálogo, por lo que la semántica está incorporada, y tiene una configuración modal. La forma de usarlo es en el script, por lo que puedes encontrar el elemento en el DOM y luego simplemente llamar a showModal en él. Eso lo muestra como un diálogo modal. Y también puedes llamar a show, que hará un diálogo no modal.

Ahora, el popover es un nuevo conjunto de comportamientos que puedes agregar a cualquier elemento que desees. Es un atributo que agregas a un elemento para construir cosas como sugerencias de elementos de formulario, selectores de contenido, interfaces de enseñanza, listas desplegables y menús de acciones. Y lo genial del popover es que también funciona sin JavaScript. La forma de hacer un popover es básicamente agregando el atributo de popover a cualquier elemento que lo convierte en un popover. Luego le das un ID y luego puedes apuntar a ese ID desde un atributo de popover-targets en un botón. A partir de ese momento, ese botón se convierte en un interruptor para tu popover. Así que he hecho uno muy feo en esta captura de pantalla, pero básicamente tienes el botón, tienes tu div, y puedes poner lo que quieras ahí dentro.

2. Patrones de Popover y Modal vs No Modal

Short description:

Los popovers se pueden controlar sin JavaScript. Modal vs no modal: el modal bloquea la interacción del usuario, el no modal permite otras acciones en la página web. Los métodos de cierre incluyen cierre explícito y cierre ligero. El apilamiento con Z index controla la superposición de elementos. Los elementos de la capa superior tienen una capa separada y no se pueden posicionar en relación con otros elementos. Los fondos llaman la atención e indican el estado modal. Los elementos de la capa superior vienen con un fondo. Los atrapamientos de enfoque del teclado se pueden usar en modales.

Se convierte en un popover que se puede controlar sin JavaScript. Ahora, por supuesto, también puedes hacerlo en JavaScript. Entonces puedes llamar al método de mostrar popover en tu elemento, y eso también lo mostrará. Luego puedes usar eso si quieres hacer popovers temporizados, como lo estaba haciendo Microsoft Teams conmigo, que aparecía y desaparecía en ciertos momentos.

Ahora, trabajando en popovers y diálogos y aprendiendo cómo funcionan, me surgió esta pregunta, ¿cómo son realmente diferentes estos patrones? Parecen bastante similares. Así que quiero llevarte a través de un par de ejes diferentes en los que realmente son diferentes.

Uno es modal versus no modal. Ahora, modal significa que un elemento, si es modal, es lo único con lo que el usuario puede interactuar. Todo lo demás está bloqueado, por lo que no puedes seleccionar texto, no puedes hacer clic, no puedes desplazarte, idealmente. Por lo tanto, cualquier otra cosa es imposible, solo puedes hacer las partes modales. Eso es útil cuando has decidido rastrear a tus usuarios, y según la ley europea, necesitas pedir consentimiento. Entonces, si haces eso, probablemente quieras usar un modal, porque no puedes colocar ninguna cookie antes de haber pedido permiso, y tampoco quieres que tus usuarios naveguen por tu sitio web sin rastrearlos, supongo, porque ese es tu objetivo allí.

Los diálogos no modales son cosas como menús en tus aplicaciones, como este, donde estás editando una imagen, y obtienes algunas opciones para esa imagen, o widgets de chat que pueden aparecer sobre tu contenido. Ahora, deben poder cerrarse fácilmente, y es importante que puedas hacer otras cosas en la página web, como en este caso, puedo imaginar que las personas solo quieren continuar reservando su viaje, y no quieren hablar contigo o chatear, por lo que quieres que sea fácil de cerrar. Hablando de cerrar, hay diferentes formas de cerrar. Una es el cierre explícito, que es lo que sucede cuando tienes un botón y necesitas hacer clic en él, o cuando un script lo elimina realmente, y hay un cierre ligero, que es una especie de cierre automático. Entonces, cuando estás eligiendo una fuente en Google Docs, obtienes esta lista de fuentes, pero cuando comienzas a desplazarte o haces clic fuera de ella, simplemente desaparece. No necesitas hacer nada especial para que desaparezca.

Luego, el apilamiento. Probablemente todos estemos familiarizados con el índice Z en CSS. Te permite apilar elementos uno encima del otro y controlar el orden en que eso sucede. Entonces, si le asignas un índice Z de uno a un elemento y un índice Z de dos al otro, el dos estará por encima del uno porque es un número más alto, y probablemente todos hayamos visto números muy altos en nuestras bases de código. Ahora, lo genial de la capa superior es que ocurre por encima de todo. Por lo tanto, el apilamiento Z ocurre en tu cuerpo, y puedes ver esto como una capa separada de cualquier otra cosa en tu cuerpo. También significa que no puedes posicionar nada en relación con cosas que no están en la capa superior.

Luego, los fondos, a veces pueden ser útiles para llamar la atención sobre ciertos elementos, y para elementos modales también ayuda a mostrar que son modales y que las otras cosas no están disponibles actualmente. Los elementos de la capa superior vienen con un fondo de forma gratuita en el navegador, y puedes darle estilo con ::backdrop en tu CSS, y luego puedes hacer cosas como cambiar el color o agregar un poco de desenfoque o hacer todo tipo de otras cosas que CSS te permite hacer. Por lo tanto, eso es muy útil y solo ocurre con elementos de la capa superior específicamente.

Y por último, hay trampas de enfoque del teclado. Entonces, cuando estás construyendo un modal, a veces quieres atrapar a las personas dentro de ese modal.

3. Diálogos Modales y No Modales y Popovers

Short description:

Los diálogos modales y no modales y los popovers tienen diferentes comportamientos y métodos de cierre. Los popovers y los diálogos modales ayudan con la superposición y los fondos. Los atrapamientos de enfoque del teclado están disponibles con los diálogos modales. El soporte del navegador para los popovers y los diálogos se está expandiendo. Quedan preguntas abiertas sobre posicionamiento, semántica y otros casos de uso.

Con los modales, eso es bastante común. Hay otros elementos como widgets de calendario si son realmente complejos. A veces también quieres evitar que las personas se desplacen accidentalmente fuera. Siempre es temporal. Entonces, todos estos ejes, ¿cómo se relacionan con nuestros diálogos y nuestros popovers? Bueno, el primero, modal, un diálogo mostraría modal o un diálogo modal es obviamente modal, y luego un diálogo que muestra no modal y el popover también lo es.

Hablando de cierre, un popover en el modo automático que es el valor predeterminado se cerrará mientras que un popover en el modo manual deberá cerrarse explícitamente. Y lo mismo ocurre con cualquier diálogo que tengas. Ahora hablando de índices Z, popovers, y diálogos modales, ambos van a la capa superior mientras que todo lo demás necesitará lidiar con índices Z si quieres ponerlo encima de otras cosas. Y eso puede volverse fácilmente bastante complicado si tienes muchos componentes en una página y no sabes de antemano cuáles estarán allí. Digamos que tienes un tooltip abierto pero también tienes una superposición modal que le dice al usuario que está a punto de agotarse el tiempo. No quieres que ese tooltip esté encima de tu superposición modal. Así que hay todo tipo de consideraciones en las que los popovers y los diálogos modales te ayudan.

Luego, los fondos, vienen de forma gratuita como mencioné con elementos de la capa superior. Entonces, nuevamente, eso viene con el popover y con los diálogos modales. Pero si los estás agregando a los popovers, tal vez realmente quieras construir un diálogo modal porque si no vas a hacer que todo lo demás esté no disponible, ¿por qué ocultarlo con un fondo? Ahora, algo en qué pensar, hay casos de uso pero no son muy comunes. Por último, los atrapamientos de enfoque del teclado. Los obtienes de forma gratuita con los diálogos modales. Entonces, si tienes un elemento de diálogo que abres con, mostrar modal.

Ahora hay dos, o un artículo que quería compartir específicamente sobre popovers y diálogos, que entra en toda esa historia de la capa superior por Adrian Roselli. Recomiendo leer eso. También quiero mencionar brevemente el soporte del navegador. Como mencioné, el popover acaba de ser lanzado en Chrome estable. También llegará a Edge porque se basa en Chromium 2 y luego llegará a Safari porque ya está en vista previa técnica y Firefox está trabajando en implementarlo también junto con Daigalia. El diálogo es compatible prácticamente en todas partes. Tengo algunas comparaciones aquí en mis diapositivas, pero te remitiré a las diapositivas que pondré a disposición más adelante. Quiero dejarte con algunas preguntas abiertas que todavía tenemos y en las que todavía estamos trabajando en Open UI para el popover. Posicionamiento, ahora puedes usar una biblioteca de JS y el posicionamiento de anclaje en el futuro. Semántica, hice una publicación de blog específicamente sobre eso y otros casos de uso como consejos y una variante asíncrona. Eso es todo por mi parte. Soy HTV Everywhere, y compartiré estas diapositivas en mis redes sociales más tarde. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2021React Advanced Conference 2021
47 min
Design Systems: Walking the Line Between Flexibility and Consistency
Top Content
Design systems aim to bring consistency to a brand's design and make the UI development productive. Component libraries with well-thought API can make this a breeze. But, sometimes an API choice can accidentally overstep and slow the team down! There's a balance there... somewhere. Let's explore some of the problems and possible creative solutions.
TestJS Summit 2021TestJS Summit 2021
30 min
Configuring Axe Accessibility Tests
Top Content
Axe-core is a popular accessibility testing engine that is used Google, Microsoft, and hundreds of other companies to ensure that their websites are accessible. Axe-core can even integrate into many popular testing frameworks, tools, and IDEs. In this advanced session, we'll be learning how to configure axe and its integrations to fine tune how it runs and checks your pages and code for accessibility violations.
React Summit 2022React Summit 2022
27 min
Walking the Line Between Flexibility and Consistency in Component Libraries
Design systems aim to bring consistency to a brand's design and make the UI development productive. Component libraries with well thought API can make this a breeze. But, sometimes an API choice can accidentally overstep and slow the team down! There's a balance there... somewhere. Let's explore some of the problems and possible creative solutions.
React Summit 2022React Summit 2022
20 min
Find Out If Your Design System Is Better Than Nothing
Building a design system is not enough. Your dev team has to prefer it over one-off components and third-party libraries. Otherwise, the whole effort is a waste of time. Learn how to use static code analysis to measure if your design system wins over the internal competition and data-driven ways to improve your position.

Workshops on related topic

React Summit 2023React Summit 2023
109 min
Web Accessibility for Ninjas: A Practical Approach for Creating Accessible Web Applications
Workshop
In this hands-on workshop, we’ll equip you with the tools and techniques you need to create accessible web applications. We’ll explore the principles of inclusive design and learn how to test our websites using assistive technology to ensure that they work for everyone.
We’ll cover topics such as semantic markup, ARIA roles, accessible forms, and navigation, and then dive into coding exercises where you’ll get to apply what you’ve learned. We’ll use automated testing tools to validate our work and ensure that we meet accessibility standards.
By the end of this workshop, you’ll be equipped with the knowledge and skills to create accessible websites that work for everyone, and you’ll have hands-on experience using the latest techniques and tools for inclusive design and testing. Join us for this awesome coding workshop and become a ninja in web accessibility and inclusive design!
TestJS Summit 2021TestJS Summit 2021
85 min
Automated accessibility testing with jest-axe and Lighthouse CI
Workshop
Do your automated tests include a11y checks? This workshop will cover how to get started with jest-axe to detect code-based accessibility violations, and Lighthouse CI to validate the accessibility of fully rendered pages. No amount of automated tests can replace manual accessibility testing, but these checks will make sure that your manual testers aren't doing more work than they need to.
React Summit 2022React Summit 2022
161 min
Web Accessibility in JavaScript Apps
Workshop
Often we see JavaScript damaging the accessibility of a website. In this workshop, you’ll learn how to avoid common mistakes and how to use JS in your favor to actually enhance the accessibility of your web apps!
In this workshop we’ll explore multiple real-world examples with accessibility no-nos, and you'll learn how to make them work for people using a mouse or a keyboard. You’ll also learn how screen readers are used, and I'll show you that there's no reason to be afraid of using one!
Join me and let me show you how accessibility doesn't limit your solutions or skills. On the contrary, it will make them more inclusive!
By the end, you will:- Understand WCAG principles and how they're organized- Know common cases where JavaScript is essential to accessibility- Create inclusive links, buttons and toggleble elements- Use live regions for errors and loading states- Integrate accessibility into your team workflow right away- Realize that creating accessible websites isn’t as hard as it sounds ;)
React Advanced Conference 2022React Advanced Conference 2022
118 min
Rapid UI Development in React: Harnessing Custom Component Libraries & Design Systems
Workshop
In this workshop, we'll take a tour through the most effective approaches to building out scalable UI components that enhance developer productivity and happiness :-) This will involve a mix of hands-on exercises and presentations, covering the more advanced aspects of the popular styled-components library, including theming and implementing styled-system utilities via style props for rapid UI development, and culminating in how you can build up your own scalable custom component library.
We will focus on both the ideal scenario---where you work on a greenfield project---along with tactics to incrementally adopt a design system and modern approaches to styling in an existing legacy codebase with some tech debt (often the case!). By the end of the workshop, you should feel that you have an understanding of the tradeoffs between different approaches and feel confident to start implementing the options available to move towards using a design system based component library in the codebase you work on.
Prerequisites: - Familiarity with and experience working on large react codebases- A good understanding of common approaches to styling in React
React Summit Remote Edition 2021React Summit Remote Edition 2021
91 min
Creating Accessible React Native Apps
Workshop
React Native is a framework used to create native iOS and Android apps in a way web developers may already be familiar with. But how do you ensure your React Native apps are inclusive and usable everyone? Scott will share tips on how to test and build React Native apps with accessibility baked-in!