Skip to content

Dropdown

Description

The Dropdown component is a fully custom-made component. This allows us to change it's form based on context (small screens, touch devices etc.)

When to use it:

When you need to provide a considerable amount of options to the user and do not have the space to do so. Other reasons may be because the hidden options may clutter the interface and need only be displayed after the user specifically requests it.

  • when space is an issue (not enough)
  • when you wish to reduce visual clutter
  • when it is intuitive for the user to request the hidden content

When not to use it:

NB: This pattern can be constructed in a number of ways to achieve a similar effect - from using the HTML 'select' element to custom building with divs, spans and javascript.

Menu Button

The Dropdown component can easily be used as a so called menu button by setting the prop more_menu="true" which shows then the more icon, appears as dots. You also could use prevent_selection="true" together with an empty title title="" and aria-label="Choose an item".

Custom size

Changing the width of the Dropdown component by CSS is easy done by doing:

.dnb-dropdown {
--dropdown-width: 20rem; /* custom width */
}

You can also set the width directly, but then it has to be defined like so (including min-width):

/** Because of the included label/status etc. we target the "__shell" */
.dnb-dropdown__shell {
width: 10rem;
}
/** In order to change only the drawer-list width */
.dnb-dropdown .dnb-drawer-list__root {
width: 10rem;
}
/** If more_menu="true" is used */
.dnb-dropdown--is-popup .dnb-drawer-list__root {
width: 10rem;
}

Demos

Default dropdown, with long list to make it scrollable and searchable

Default dropdown - no value is defined, but a title is given.

Default dropdown, icon on left side

As Popup Menu - no lasting selection will be made

Disabled dropdown

Custom event and link on single item

Dropdown in different sizes

Four sizes are available: small, default, medium and large

Custom width

Dropdown with status and vertical label layout

Message to the user