Selection field
Dropdown
Single or multiple selection in a field you can read at rest — chips, a limit, and a panel you may replace entirely.Reviewers are notified once the pull request opens
Playground
The full prop surface with copy-ready markup that follows what you change.
Tokens
What the dropdown owns is the chrome between the field and the rows: the arrow, the panel box, the keyboard highlight and the empty state. The box comes from the field, the row from the list.
MDropdown · All40 tokens
md-dropdownMDropdown API
Props, slots and events extracted from the shipped component.
Props
NameTypeDefault
disabledPrevents interaction and applies the disabled visual state.booleanfalseloadingReplaces content with progress feedback and prevents interaction.booleanfalsereadonlybooleanfalsevariantExtract<MTextFieldVariant, 'filled' | 'outlined'>'filled'rounded'sharp' | 'small' | 'medium' | 'large' | 'pill''small'labelPlacement'top' | 'float' | 'inset' | 'hidden''float'pathstringundefinednamestringundefinedlabelstringundefinedplaceholderstringundefinedhelperTextstringundefinederrorbooleanfalseerrorMessagestringundefinedrequiredbooleanfalseautofocusbooleanfalseautocompletestringundefineddensity'compact' | 'default' | 'comfortable''default' as MFieldDensityitemsOptions. Every item carries its own `id`; that id is its identity.readonly DropdownItemBase[]() => []itemTitleRow text. Key or getter; defaults to the item's `label`.DropdownRuntimeResolver<string>'label'itemValueValue written to the model. Key or getter; defaults to the whole item.DropdownRuntimeResolver<unknown>undefineditemDisabledPer-item disabled guard. Key or getter; defaults to the item's `disabled`.DropdownRuntimeResolver<boolean>'disabled'valueComparatorValue equality. Defaults to comparing two objects by `id` and everything else by `===` — a refetched list is a new set of object references, and identity is the one thing an item is required to declare.(left: never, right: never) => booleanundefinedmultipleSelect more than one value; the model becomes an array.booleanfalsemandatoryKeep at least one value selected (the last one cannot be removed).booleanfalsemaxUpper bound on the selection. `multiple` only — a single-select field cannot hold two values, so a limit there has nothing to limit.numberundefinedclearableShow a control that empties the selection.booleanfalsemenuPlacementWhere the panel opens relative to the field.'top left' | 'top right' | 'bottom left' | 'bottom right' | 'center' | 'top' | 'bottom''top left'maxHeightCap on the scrolling area of the panel. A number is read as `rem` (the kit's 1rem = 1px-of-the-mockup convention), a string is passed through. Defaults to the panel's own token so the list of a hundred options does not run off the screen. This is live geometry supplied at runtime, so it travels as a custom property — the one case the zero-runtime rule allows.number | stringundefinedSlots
Events
MDropdown does not emit component-specific events. Native events fall through to its root element.