Het openen en sluiten van de dropdown button moet worden ondersteund met muis-, touch- en toetsenbordbediening. De scripting zal zelf geΓ―mplementeerd moeten worden, waarbij het te programmeren gedrag op de diverse relevante toetsen gelijk moet zijn aan de native browser dropdown/select werkvorm (en het Web Component). Inspiratie: Bootstrap dropdown
event.code
ArrowUp
: omhoog, vorige βoptionβ, zelfde als tabevent.code
ArrowDown
: omlaag, volgende βoptionβ, zelfde als shift-tabevent.code
Escape
: sluit dropdown, geen keuze makenevent.code
Space
: maak keuze.dso-dropdown-menu
is de root van het component, dat bestaat uit een button
en het daadwerkelijke menu, de .dso-dropdown-options
;.dso-dropdown-options
heeft role="menu"
en verwijst met aria-labelledby
naar de button
;.dso-dropdown-options
wordt getoond wanneer .dso-dropdown-menu
de class dso-open
heeft;role="menuitemradio"
en het geselecteerde item aria-checked="true"
;button
heeft attribute aria-haspopup="menu"
om aan te duiden dat deze een menu bedient, en moet een id
hebben waarnaar verwezen wordt vanuit .dso-dropdown-options
met een aria-labelledby
-attribuut.dso-dropdown-menu
geen class dso-open
button
attribute aria-expanded="false"
<div class="dso-dropdown-menu">
<button type="button" aria-haspopup="true" aria-expanded="false" class="dso-tertiary">
<div class="dso-dropdown-options" ... > ...
</div>
div.dropdown
heeft class dso-open
button
attribute aria-expanded="true"
<div class="dso-dropdown-menu dso-open">
<button type="button" aria-haspopup="true" aria-expanded="true" class="dso-tertiary">
<div class="dso-dropdown-options" ... > ...
</div>
Note: de button
mag class dso-primary
, dso-secondary
of dso-tertiary
hebben, afhankelijk van de toepassing. Ook de oude bootstrap classes btn
, btn-default
, btn-link
worden nog ondersteund.
<!-- Dropdown Link -->
<div class="dso-dropdown-menu">
<button type="button" id="actie" aria-haspopup="menu" aria-expanded="false" class="dso-tertiary"><span>Actie</span></button>
</div>
<!-- Dropdown Link Open -->
<div class="dso-dropdown-menu dso-open">
<button type="button" id="dropdown-link-open" aria-haspopup="menu" aria-expanded="true" class="dso-tertiary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown-link-open">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Link Open Selectable -->
<div class="dso-dropdown-menu dso-open dso-checkable">
<button type="button" id="dropdown-link-open-selectable" aria-haspopup="menu" aria-expanded="true" class="dso-tertiary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown-link-open-selectable">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Default Button -->
<div class="dso-dropdown-menu">
<button type="button" id="dropdown_default_button" aria-haspopup="menu" aria-expanded="false" class="dso-secondary"><span>Actie</span></button>
</div>
<!-- Dropdown Default Button Open -->
<div class="dso-dropdown-menu dso-open">
<button type="button" id="dropdown_default_button_open" aria-haspopup="menu" aria-expanded="true" class="dso-secondary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_default_button_open">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Default Button Open Checkable -->
<div class="dso-dropdown-menu dso-open dso-checkable">
<button type="button" id="dropdown_default_button_open_checkable" aria-haspopup="menu" aria-expanded="true" class="dso-secondary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_default_button_open_checkable">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Primary Button -->
<div class="dso-dropdown-menu">
<button type="button" id="dropdown_primary_button" aria-haspopup="menu" aria-expanded="false" class="dso-primary"><span>Actie</span></button>
</div>
<!-- Dropdown Primary Button Open -->
<div class="dso-dropdown-menu dso-open">
<button type="button" id="dropdown_primary_button_open" aria-haspopup="menu" aria-expanded="true" class="dso-primary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_primary_button_open">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Primary Button Open Checkable -->
<div class="dso-dropdown-menu dso-open dso-checkable">
<button type="button" id="dropdown_primary_button_open_checkable" aria-haspopup="menu" aria-expanded="true" class="dso-primary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_primary_button_open_checkable">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Link Button Align Right -->
<div class="dso-dropdown-menu dso-open dso-dropdown-align-right dso-checkable">
<button type="button" id="dropdown_link_button_align_right" aria-haspopup="menu" aria-expanded="true" class="dso-tertiary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_link_button_align_right">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Default Button Align Right -->
<div class="dso-dropdown-menu dso-open dso-dropdown-align-right dso-checkable">
<button type="button" id="dropdown_default_button_align_right" aria-haspopup="menu" aria-expanded="true" class="dso-secondary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_default_button_align_right">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<!-- Dropdown Primary Button Align Right -->
<div class="dso-dropdown-menu dso-open dso-dropdown-align-right dso-checkable">
<button type="button" id="dropdown_primary_button_align_right" aria-haspopup="menu" aria-expanded="true" class="dso-primary"><span>Actie</span></button>
<div class="dso-dropdown-options" role="menu" aria-labelledby="dropdown_primary_button_align_right">
<h2 class="dso-group-label">Versies</h2>
<ul role="none">
<li role="none" class="dso-checked">
<a role="menuitemradio" href="#" aria-checked="true">10.6.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.5.0</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">10.4.0</a>
</li>
</ul>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">master</a>
</li>
</ul>
<h2 class="dso-group-label">Branch releases</h2>
<ul role="none">
<li role="none">
<a role="menuitemradio" href="#">#500-Margins-Testbuilds</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#611-Pager-component-uitbreiden</a>
</li>
<li role="none">
<a role="menuitemradio" href="#">#663-Dropdown-button-toegankelijk-maken</a>
</li>
</ul>
</div>
</div>
<div {{ className('dso-dropdown-menu', [open, 'dso-open'], [align, 'dso-dropdown-align-' + align], modifiers) }}>
{% render '@button', {type: 'button', modifier: modifier, label: label, id: id, icon: icon, iconAfter: iconAfter, ariaHasPopup: ariaHasPopup, ariaExpanded: not not open} %}
{% if open %}
<div class="dso-dropdown-options" role="menu" aria-labelledby="{{ id }}">
{% for group in groups %}
{% if group.label %}
<h2 class="dso-group-label">{{ group.label }}</h2>
{% endif %}
<ul role="none">
{% for item in group.items %}
<li role="none" {{ className([item.checked, 'dso-checked']) }}>
<a role="menuitemradio" href="#" {{ attributes([item.checked, 'aria-checked', 'true']) }}>{{ item.label }}</a>
</li>
{% endfor %}
</ul>
{% endfor %}
</div>
{% endif %}
</div>
/* Dropdown Link */
id: actie
modifier: dso-tertiary
ariaHasPopup: menu
open: false
label: Actie
/* Dropdown Link Open */
id: dropdown-link-open
modifier: dso-tertiary
ariaHasPopup: menu
open: true
label: Actie
groups:
- label: Versies
items:
- label: 10.6.0
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Link Open Selectable */
id: dropdown-link-open-selectable
modifier: dso-tertiary
ariaHasPopup: menu
open: true
label: Actie
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Default Button */
id: dropdown_default_button
modifier: dso-secondary
ariaHasPopup: menu
open: false
label: Actie
/* Dropdown Default Button Open */
id: dropdown_default_button_open
modifier: dso-secondary
ariaHasPopup: menu
open: true
label: Actie
groups:
- label: Versies
items:
- label: 10.6.0
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Default Button Open Checkable */
id: dropdown_default_button_open_checkable
modifier: dso-secondary
ariaHasPopup: menu
open: true
label: Actie
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Primary Button */
id: dropdown_primary_button
modifier: dso-primary
ariaHasPopup: menu
open: false
label: Actie
/* Dropdown Primary Button Open */
id: dropdown_primary_button_open
modifier: dso-primary
ariaHasPopup: menu
open: true
label: Actie
groups:
- label: Versies
items:
- label: 10.6.0
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Primary Button Open Checkable */
id: dropdown_primary_button_open_checkable
modifier: dso-primary
ariaHasPopup: menu
open: true
label: Actie
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Link Button Align Right */
id: dropdown_link_button_align_right
modifier: dso-tertiary
ariaHasPopup: menu
open: true
label: Actie
align: right
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Default Button Align Right */
id: dropdown_default_button_align_right
modifier: dso-secondary
ariaHasPopup: menu
open: true
label: Actie
align: right
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'
/* Dropdown Primary Button Align Right */
id: dropdown_primary_button_align_right
modifier: dso-primary
ariaHasPopup: menu
open: true
label: Actie
align: right
modifiers: dso-checkable
groups:
- label: Versies
items:
- label: 10.6.0
checked: true
- label: 10.5.0
- label: 10.4.0
- items:
- label: master
- label: Branch releases
items:
- label: '#500-Margins-Testbuilds'
- label: '#611-Pager-component-uitbreiden'
- label: '#663-Dropdown-button-toegankelijk-maken'