Skip to content

Number Input

A number field with increment/decrement steppers, clamping, and keyboard/scroll support.

html
<div
  data-controller="zag-number-input"
  data-part="root"
  data-zag-number-input-value-value="1"
  data-zag-number-input-min-value="0"
  data-zag-number-input-max-value="99"
  class="space-y-1"
>
  <label data-part="label" class="mr-2 text-sm font-medium">Quantity</label>
  <div
    data-part="control"
    class="border-input inline-flex items-center overflow-hidden rounded-lg border"
  >
    <button
      data-part="decrement-trigger"
      class="text-muted-foreground border-input hover:bg-accent border-r px-3 py-2 text-lg"
      aria-label="Decrease"
    >

    </button>
    <input
      data-part="input"
      class="border-input bg-popover w-16 py-2 text-center focus:outline-none"
    />
    <button
      data-part="increment-trigger"
      class="text-muted-foreground border-input hover:bg-accent border-l px-3 py-2 text-lg"
      aria-label="Increase"
    >
      +
    </button>
  </div>
</div>

Parts

root, label, control, input, value-text, increment-trigger, decrement-trigger, scrubber.

Values

AttributeTypeDefaultDescription
data-zag-number-input-value-valueNumber0Initial value.
data-zag-number-input-min-valueNumber(−∞)Minimum value.
data-zag-number-input-max-valueNumber(+∞)Maximum value.
data-zag-number-input-step-valueNumber1Step increment.
data-zag-number-input-name-valueString""name for form submission.
data-zag-number-input-allow-mouse-wheel-valueBooleanfalseChange value on scroll.
data-zag-number-input-clamp-value-on-blur-valueBooleantrueClamp to min/max on blur.
data-zag-number-input-disabled-valueBooleanfalseDisable the input.
data-zag-number-input-required-valueBooleanfalseMark the field required.
data-zag-number-input-invalid-valueBooleanfalseMark the field invalid.
data-zag-number-input-read-only-valueBooleanfalseRead-only.

Events

Emits zag-number-input:changedetail is { value, valueAsNumber }.

Programmatic control

value (getter), valueAsString (getter), setValue(n), increment(), decrement().