Form input
Number input
Predictable numeric models, decimal-safe stepping, and consistent M3 controls.Playground
Configure the component and copy synchronized Vue code.
Token map
The manual manifest combines inherited token owners with local deltas.
MNumberInput · All115 tokens
md-number-inputMNumberInput API
Props, slots, and events are generated from the current public kit contract.
Props
NameTypeDefault
disabledPrevents interaction and applies the disabled visual state.booleanfalseloadingReplaces content with progress feedback and prevents interaction.booleanfalsereadonlybooleanfalsevariant'filled' | 'outlined''filled'rounded'sharp' | 'small' | 'medium' | 'large' | 'pill''small'labelPlacement'top' | 'float' | 'inset' | 'hidden''float'pathstringundefinednamestringundefinedlabelstringundefinedplaceholderstringundefinedhelperTextstringundefinederrorbooleanfalseerrorMessagestringundefinedrequiredbooleanfalseautofocusbooleanfalseautocompletestringundefineddensity'compact' | 'default' | 'comfortable''default' as MFieldDensityminnumberundefinedmaxnumberundefinedstepnumber1precisionDecimal places. Inferred from `step` when omitted.numberundefinedlocalestring'en-US'useGroupingbooleantruecontrols'split' | 'stacked' | 'scrub' | false'split'clampPull committed values back inside `min`/`max`. Never applied per keystroke.booleantrueunitsUnits to choose from. With a list the unit zone becomes a menu bound to `v-model:unit`; without one it stays a static suffix. Picking a unit **relabels only** — the number is left exactly as it is. Converting 512 MiB into 0.5 GiB needs a scale the field does not have, and silently rescaling a value the user typed is worse than not converting.MNumberInputUnit[]undefinedunitLabelAccessible name of the unit menu trigger.stringMESSAGES.numberUnitincrementLabelAccessible name of the increase control.stringMESSAGES.numberIncrementdecrementLabelAccessible name of the decrease control.stringMESSAGES.numberDecrementSlots
Events
@incrementnumber@decrementnumber@invalidstring