---
url: "https://vueda.dev/v3/reference/api/vue/NumberField.md"
title: "NumberField"
---

# NumberField

## Overview

A numeric input container built on Reka UI's NumberFieldRoot, providing
increment/decrement controls, min/max constraints, and v-model binding.

Theme entry: [NumberField](/v3/reference/theming/keys/NumberField.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-class">class</span> | `import('vue').HTMLAttributes['class']` |  | `undefined` | Additional CSS classes to apply to the root element. |
| <span id="prop-modelValue">modelValue</span> | `number` |  | `undefined` | The controlled numeric value. |
| <span id="prop-defaultValue">defaultValue</span> | `number` |  | `undefined` | The default value when uncontrolled. |
| <span id="prop-min">min</span> | `number` |  | `undefined` | The minimum allowed value. |
| <span id="prop-max">max</span> | `number` |  | `undefined` | The maximum allowed value. |
| <span id="prop-step">step</span> | `number` |  | `undefined` | The amount the value changes per increment or decrement step. |
| <span id="prop-stepSnapping">stepSnapping</span> | `boolean` |  | `undefined` | When false, prevents snapping to the nearest step increment. |
| <span id="prop-focusOnChange">focusOnChange</span> | `boolean` |  | `undefined` | When true, focuses the input when the value changes. |
| <span id="prop-formatOptions">formatOptions</span> | `object` |  | `undefined` | Intl.NumberFormatOptions to format the displayed value. |
| <span id="prop-locale">locale</span> | `string` |  | `undefined` | The locale used for formatting. |
| <span id="prop-disabled">disabled</span> | `boolean` |  | `undefined` | When true, prevents interaction with the number field. |
| <span id="prop-readonly">readonly</span> | `boolean` |  | `undefined` | When true, the field is read-only. |
| <span id="prop-disableWheelChange">disableWheelChange</span> | `boolean` |  | `undefined` | When true, prevents value changes on mouse wheel scroll. |
| <span id="prop-invertWheelChange">invertWheelChange</span> | `boolean` |  | `undefined` | When true, inverts the direction of wheel-driven value changes. |
| <span id="prop-id">id</span> | `string` |  | `undefined` | The id of the underlying input element. |
| <span id="prop-as">as</span> | `string\|object` |  | `undefined` | The element or component to render as. |
| <span id="prop-asChild">asChild</span> | `boolean` |  | `false` | When true, merges props onto the child element instead of rendering a wrapper. |
| <span id="prop-name">name</span> | `string` |  | `undefined` | The name submitted with form data. |
| <span id="prop-required">required</span> | `boolean` |  | `false` | When true, the field is required. |

## Slots

### `default` {#slot-default}

Scoped slot.

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the value changes. |

[Full event reference](/v3/reference/api/vue/NumberField/events.md)

## Source

`client/lib/controls/number-field/NumberField.vue`
