Skip to content

Properties

You may check out the DrawerList Properties down below as well as the Data structure examples.

PropertiesDescription
title(optional) give a title to let the users know what they have to do. Defaults to Valgmeny.
variant(optional) defines the kind of dropdown. Possible values are primary, secondary, tertiary and signal. Defaults to secondary.
icon(optional) icon to be included in the dropdown.
icon_size(optional) change the size of the icon pragmatically.
icon_position(optional) position of the icon inside the dropdown. Set to left or right. Defaults to right.
triangle_position(optional) position of arrow / triangle of the drawer. Set to left or right. Defaults to right.
size(optional) define the height of the Dropdown. Can be set to small, default, medium and large. Defaults to default.
opened(optional) if set to true, the Dropdown will be rendered initially with a visible and accessible data list / options.
open_on_focus(optional) if set to true, the Dropdown will be opened when the users enter the trigger button with a focus action.
prevent_selection(optional) if set to true, no permanent selection will be made. Defaults to false.
action_menu(optional) same as prevent_selection, but the DrawerList will be opened from the bottom of the page for mobile devices. Defaults to false.
more_menu(optional) same as prevent_selection, but the "selection area" (given title) will not be visible and the icon more (three dots) is used. Defaults to false.
align_dropdown(optional) use right to change the options alignment direction. Makes only sense to use in combination with prevent_selection or more_menu. Defaults to left.
independent_width(optional) If set to true, the Dropdown will handle it's width independent to the content width. Defaults to false.
skip_portal(optional) set to true to disable the React Portal behavior. Defaults to false.
stretch(optional) if set to true, then the dropdown will be 100% in available width.
status(optional) text with a status message. The style defaults to an error message. You can use true to only get the status color, without a message.
status_state(optional) defines the state of the status. Currently, there are two statuses [error, info]. Defaults to error.
status_props(optional) use an object to define additional FormStatus properties.
global_status_id(optional) the status_id used for the target GlobalStatus.
label(optional) prepends the Form Label component. If no ID is provided, a random ID is created.
label_direction(optional) use label_direction="vertical" to change the label layout direction. Defaults to horizontal.
label_sr_only(optional) use true to make the label only readable by screen readers.
suffix(optional) text describing the content of the Dropdown more than the label. You can also send in a React component, so it gets wrapped inside the Dropdown component.
trigger_element(optional) lets you provide a custom React element as the trigger HTML element.
skeleton(optional) if set to true, an overlaying skeleton with animation will be shown.
DrawerList(optional) all DrawerList properties.
Space(optional) spacing properties like top or bottom are supported.

DrawerList Properties

PropertiesDescription
data or children(required) the data we want to fill the list with. Provide the data as a JSON string, array or object in these data structure.
If you don't have to define a value, you can also send in a function which will be called once the user opens the DrawerList.
value(optional) should either be an index (integer) of the data array or a key (NB: should not start with a number) – defined by selected_key inside an array item. If data is an object, use the object key (string) as the value to define the selected item. Can be a string or integer. Defaults to null and the title property will be shown.
NB: In case the DrawerList will be re-rendered, this value will be used again. Use default_value instead.
default_value(optional) if you want to define only a startup value (integer) or have to handle a re-render without handling the state during the re-render by yourself, then using default_value is a good choice. Defaults to null.
triangle_position(optional) position of arrow icon/triangle inside the drawer-list. Set to left or right. Defaults to left if not set.
direction(optional) defines the direction of how the drawer-list shows the options list. Can be bottom or top. Defaults to auto.
prevent_selection(optional) If set to true, the DrawerList will then not make any permanent selection. Defaults to false.
focusable(optional) If set to true, the element is then focusable by assertive technologies.
prevent_close(optional) If set to true, the DrawerList will not close on any events. Defaults to false.
keep_open(optional) If set to true, the DrawerList will close on outside clicks, but not on selection. Defaults to false.
independent_width(optional) If set to true, the DrawerList will handle it's width and position handling independent to the parent/mother element. Defaults to false.
fixed_position(optional) If set to true, the DrawerList will be fixed in it's scroll position by using CSS position: fixed;. Defaults to false.
enable_body_lock(optional) If set to true, the HTML body will get locked from scrolling when the Dropdown is open. Defaults to false.
skip_keysearch(optional) If set to true, search items by the first key will be ignored. Defaults to false.
ignore_events(optional) If set to true, all keyboard and mouse events will be ignored. Defaults to false.
align_drawer(optional) use right to change the options alignment direction. Makes only sense to use in combination with prevent_selection or more_menu - or if a independent width is used. Defaults to left.
list_class(optional) define a HTML class that will be set on the list, beside dnb-drawer-list__list.
portal_class(optional) define a HTML class that will be set on the DOM portal beside dnb-drawer-list__portal__style. Can be useful to handle e.g. a custom z-index in relation to a header.
scrollable(optional) defines if the options list should be scrollable (the max-height is set by default to 50vh). Defaults to true.
no_scroll_animation(optional) to disable scrolling animation. Defaults to false.
no_animation(optional) to disable appear/disappear (show/hide) animation. Defaults to false.
skip_portal(optional) to disable the React Portal behavior. Defaults to false.
min_height(optional) defines if the minimum height (in rem) of the options list. Defaults to 10rem.
max_height(optional) defines if the maximum height (in rem) of the options list. Defaults to null, as this is set automatically by default.
page_offset(optional) defines if the available scrollable height. If scrolling not should change the height of the drawer-list, then set it to 0 (useful if the DrawerList is used in fixed positions on contrast to a scrollable page content). Defaults to window.pageYOffset.
observer_element(optional) set a HTML element, either as a selector or a DOM element. Can be used to send in an element which will be used to make the direction calculation on.
cache_hash(optional) set a cache_hash as a string to enable internal memorizing of the list to enhance rerendering performance. Components like Autocomplete is using this because of the huge data changes due to search and reorder. Defaults to null.
wrapper_element(optional) has to be a HTML Element, ideal a mother element, used to calculate sizes and distances. Also used for the "click outside" detection. Clicking on the wrapper_element will not be anymore triggered as an outside click.
options_render(optional) has to be a function, returning the items again. See example. This can be used to add additional options above the actual rendered list.
Space(optional) spacing properties like top or bottom are supported.

Data structure

// 1. as array
const data = [
// Every data item can, beside "content" - contain what ever
{
// (optional) can be what ever
selected_key: 'key_0',
// (optional) is show instead of "content", once selected
selected_value: 'Item 1 Value',
suffix_value: 'Addition 1',
// Item content as a string or array
content: 'Item 1 Content',
},
// more items ...
{
selected_key: 'key_1',
content: ['Item 2 Value', 'Item 2 Content'],
},
{
selected_key: 'key_2',
selected_value: 'Item 3 Value',
suffix_value: 'Addition 3',
content: ['Item 3 Content A', 'Item 3 Content B'],
},
{
selected_key: 'key_3',
selected_value: 'Item 4 Value',
suffix_value: 'Addition 4',
content: ['Item 4 Content A', <>Custom Component</>],
},
]
// 2. as object
const data = {
a: 'A',
b: 'B',
}