Links

Dropdown

Son listas de opciones donde se puede seleccionar una o varias de ellas. Una opción seleccionada puede representar un valor en un formulario, o puede utilizarse como una acción para filtrar contenido.

Racional de aplicación

Los Dropdowns pueden utilizarse en formularios de páginas completas, en modales o en paneles laterales. El componente Dropdown se utiliza para seleccionar, filtrar u ordenar contenidos en una página.
No utilizamos un Dropdown para selecciones binarias, ya que para ese caso consideramos mejor opción los Radio Button.
No anidamos los Dropdown ni los utilizamos para mostrar información demasiado compleja. Se debe mantener la selección de opciones lo más sencilla posible.
Consideramos la posibilidad de utilizar un menú desplegable de selección si la mayor parte de la experiencia se basa en formularios o se utiliza con frecuencia en plataformas móviles. La selección nativa funciona mejor con un formulario nativo cuando se envían datos y también es más fácil de usar en una plataforma móvil.

Buenas prácticas

Uso correcto
Uso incorrecto
Acompañamos al selector de entrada con una etiqueta que informe del contexto de la selección.
Un selector de entrada sin etiqueta aporta poca información.
Procuramos que los nombres de las opciones del selector sean cortas.
Los nombres largos en las opciones pueden exceder el ancho del selector y producir comportamientos no deseados
Puede ser mejor opción para una selección binaria un grupo de radio buttons.
Para selecciones de dos elementos y según el contexto, el Dropdown puede no ser la mejor opción.

Interacción

Este componente ha sido validado para cumplir con las pautas de accesibilidad WCAG 2.1 AA, sin embargo los cambios realizados por el propietario del contenido pueden afectar el cumplimiento de la accesibilidad. Hay que asegurarse de revisar y seguir las instrucciones de esta sección cuando se actualice o se agregue contenido nuevo a este componente.
Dispositivo
Interacción
Ratón
Se puede activar un Dropdown haciendo clic en cualquier lugar dentro del contenedor del Dropdown.
Teclado
Se puede activar un Dropdown presionando Intro o Espacio mientras el Dropdown está enfocado.

Anatomía y variabilidad

Anatomía del componente

Letra
Elemento
Descripción
A
Etiqueta
Se aconseja que los Dropdown vayan acompañados de una etiqueta.
B
Texto de ayuda
Brinda un contexto adicional o instrucciones sobre el selector que se va a utilizar.
C
Selector de entrada
Muestra un texto de contexto (Placeholder) o la última opción seleccionada.
D
Opción
Elemento disponible para ser seleccionado.
E
Opción seleccionada
Opción que ha sido seleccionada y se reflejará en el selector de entrada.

Variabilidad de estados

Letra
Estado
Descripción
A
Default
Estado por defecto, el selector está disponible para elegir una opción.
B
Hover
Visible al posicionar el cursor del ratón encima del selector.
C
Active
Activado por ratón con click o tabulador para actuar sobre el mismo.
D
Filled
Estado resultante de seleccionar una de las opciones disponibles.
E
Disabled
Selector no disponible, normalmente atenuado visualmente.

Instalación

npm i --save @plural-wc/dropdown
// or
yarn add @plural-wc/dropdown
import { PluralDropdown } from '@plural-wc/dropdown';
// or
import '@plural-wc/dropdown/plural-dropdown.js';

Uso

Default

export const defaultPreview = () => html`<plural-dropdown name="dropdown" label="Label">
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
<plural-option .choiceValue=${'red'}>Red</plural-option>
<plural-option .choiceValue=${'hotpink'}>Hotpink</plural-option>
<plural-option .choiceValue=${'blue'}>Blue</plural-option>
</plural-dropdown>`;

Help-text

export const helpText = () => html`<plural-dropdown name="dropdown" label="Label">
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
<plural-option .choiceValue=${'red'}>Red</plural-option>
<plural-option .choiceValue=${'hotpink'}>Hotpink</plural-option>
<plural-option .choiceValue=${'blue'}>Blue</plural-option>
<p slot="help-text">Help-text</p>
</plural-dropdown>`;

Disabled

export const disabled = () => html`<plural-dropdown name="dropdown" label="Label" disabled>
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
</plural-dropdown>`;

Disabled & Feedback

export const disabledFeedback = () => html`<plural-dropdown name="dropdown" label="Label" disabled>
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
<p slot="feedback">Feedback</p>
</plural-dropdown>`;

Feedback

export const feedback = () => html`<plural-dropdown name="dropdown" label="Label">
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
<plural-option .choiceValue=${'red'}>Red</plural-option>
<plural-option .choiceValue=${'hotpink'}>Hotpink</plural-option>
<plural-option .choiceValue=${'blue'}>Blue</plural-option>
<p slot="feedback">Feedback</p>
</plural-dropdown>`;

Intercept the checked item index or the value when selected item is changed

export const intercept = () => html`<plural-dropdown
name="dropdown"
label="Label"
@model-value-changed=${({ target }) => {
console.log(`updated value: ${target.modelValue}`);
console.log(`checked index: ${target.checkedIndex}`);
}}
>
<plural-option .choiceValue=${''} hidden>Placeholder</plural-option>
<plural-option .choiceValue=${'red'}>Red</plural-option>
<plural-option .choiceValue=${'hotpink'} checked>Hotpink</plural-option>
<plural-option .choiceValue=${'blue'}>Blue</plural-option>
</plural-dropdown>`;
Última actualización 1yr ago