# Ejemplo de código de Desplegable. DESY. Sistema de diseño del Gobierno de Aragón.
## Componentes Índice de páginas
Componentes
# Desplegable
Mostrar y ocultar
Es un componente que nos permite desplegar un contenedor de contenido para realizar otras acciones.
# Dropdown
Mostrar parámetros
## Parámetros Nunjucks del componente: "Dropdown"
```yaml
params:
- name: text
type: string
required: true
description: If `html` is set, this is not required. Text for the dropdown. If `html` is provided, the `text` argument will be ignored.
- name: html
type: string
required: true
description: If `text` is set, this is not required. HTML for the dropdown. If `html` is provided, the `text` argument will be ignored.
- name: hiddenText
type: string
required: false
description: Text for screenreaders only after the dropdown element.
- name: classesContainer
type: string
required: false
description: Classes to add to the container div of dropdown and tooltip elements.
- name: classesTooltip
type: string
required: false
description: Classes to add to the tooltip content.
- name: classes
type: string
required: false
description: Classes to add to the dropdown element.
- name: attributes
type: object
required: false
description: HTML attributes (for example data attributes) to add to the dropdown element.
- name: caller
type: nunjucks-block
required: false
description: Not strictly a parameter but [Nunjucks code convention](https://mozilla.github.io/nunjucks/templating.html#call). Using a `call` block enables you to call a macro with all the text inside the tag. This is helpful if you want to pass a lot of content into a macro. To use it, you will need to wrap the entire dropdown component in a `call` block.
```
### Por defecto [#](#por-defecto)
Mostrar códigodel ejemplo: Por defecto
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Por defecto"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Con estado activo [#](#con-estado-activo)
Simula activar la pseudo-clase de CSS `:active`. En realidad sólo se usa para documentar estos ejemplos.
Mostrar códigodel ejemplo: Con estado activo
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Activo",
"classes": "ds-active"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Con estado hover [#](#con-estado-hover)
Simula activar la pseudo-clase de CSS `:hover`. En realidad sólo se usa para documentar estos ejemplos.
Mostrar códigodel ejemplo: Con estado hover
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Hover",
"classes": "ds-hover"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Con estado focus [#](#con-estado-focus)
Simula activar la pseudo-clase de CSS `:focus`. En realidad sólo se usa para documentar estos ejemplos.
Mostrar códigodel ejemplo: Con estado focus
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Focus",
"classes": "ds-focus"
}) %}
```
### Con estilos de cabecera [#](#con-estilos-de-cabecera)
Mostrar códigodel ejemplo: Con estilos de cabecera
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Header",
"classes": "c-dropdown--header"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Grande [#](#grande)
Mostrar códigodel ejemplo: Grande
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Grande",
"classes": "c-dropdown--lg"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Peque [#](#peque)
Mostrar códigodel ejemplo: Peque
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Botón pequeño con texto muy largo",
"classes": "c-dropdown--sm"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Peque tiene selección [#](#peque-tiene-seleccin)
Un botón con una selección aplicada se muestra con color.
Mostrar códigodel ejemplo: Peque tiene selección
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Botón pequeño con texto muy largo",
"classes": "c-dropdown--has-selection c-dropdown--sm"
}) %}
```
### Con clases de css aplicadas al container [#](#con-clases-de-css-aplicadas-al-container)
Tanto el botón como los elementos del tooltip están rodeados de un div contenedor al que se le pueden aplicar estilos de CSS.
Mostrar códigodel ejemplo: Con clases de css aplicadas al container
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Clases en container",
"classesContainer": "inline-block p-base bg-primary-light"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Clases aplicadas al contenido del tooltip [#](#clases-aplicadas-al-contenido-del-tooltip)
El contenido del tooltip puede tener clases adicionales aplicadas. En este ejemplo se le ha aplicado una altura máxima y scroll vertical si el contenido se desborda.
Mostrar códigodel ejemplo: Clases aplicadas al contenido del tooltip
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Clases al contenido del tooltip",
"classesTooltip": "max-h-64 overflow-y-auto"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Clases aplicadas a varios elementos [#](#clases-aplicadas-a-varios-elementos)
En este ejemplo, usando clases de CSS, la anchura del contenido establece la anchura del tooltip.
Mostrar códigodel ejemplo: Clases aplicadas a varios elementos
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Dropdown anchura completa",
"classes": "w-full justify-between",
"classesTooltip": "w-max max-h-40 overflow-y-auto"
}) %}
{% endcall %}
```
##### HTML
```html
```
### Con role dialog [#](#con-role-dialog)
Usa los atributos `data-aria-haspopup="dialog" data-role="dialog" data-aria-modal="false" data-aria-label="Información adicional"` para abrir un desplegable que no contenga un menú, por ejemplo un panel informativo.
Mostrar códigodel ejemplo: Con role dialog
#### Contenido
Nunjucks macro HTML
##### Nunjucks macro
```js
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% call componentDropdown({
"text": "Marta Pérez",
"attributes": {
"data-aria-haspopup": "dialog",
"data-role": "dialog",
"data-aria-modal": "false",
"data-aria-label": "Información adicional"
}
}) %}