Skip to main content

SelectorWidget

from v9.3

This widget renders an icon button that opens a popover menu of selectable options. Each option provides an icon and an optional label, and the button updates to reflect the current selection.

import {Deck} from '@deck.gl/core';
import {SelectorWidget} from '@deck.gl/widgets';
import '@deck.gl/widgets/stylesheet.css';

const deck = new Deck({
widgets: [
new SelectorWidget({
initialValue: 'single',
options: [
{
value: 'single',
label: 'Single view',
icon: './single.svg'
},
{
value: 'split-horizontal',
label: 'Split views horizontal',
icon: './split-h.svg'
},
{
value: 'split-vertical',
label: 'Split views vertical',
icon: './split-v.svg'
}
],
onChange: value => updateViews(value)
})
]
});

Constructor

import {SelectorWidget, type SelectorWidgetProps} from '@deck.gl/widgets';
new SelectorWidget<ValueT>({} satisfies SelectorWidgetProps<ValueT>);

Types

SelectorWidgetProps

The SelectorWidget accepts the generic WidgetProps and:

options (SelectorWidgetOption[], required)

Selectable options displayed in the popover menu.

initialValue (any, optional)

  • Default: value of the first option

Initial selected value. If it does not match any option, the first option is displayed.

onChange (function, optional)

(value: ValueT) => void

Callback invoked when a new option is selected.

SelectorWidgetOption

value (any, required)

Value returned from onChange when this option is selected.

icon (string, required)

Data URL used as the option icon mask.

label (string, optional)

Text shown in the menu and used as the button tooltip when selected.

Styles

The SelectorWidget uses the shared button and menu theme variables described in the styling guide.

Source

modules/widgets/src/selector-widget.tsx