Ir al contenido

InputNumber

Campo de entrada numérico con controles de incremento/decremento y restricciones de valor.

import { InputNumber } from 'asterui'

InputNumber Básico

Entrada numérica simple con controles de incremento/decremento.

import { InputNumber } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(0);
  
  return (
      <InputNumber value={value} onChange={setValue} />
    )
}

export default App

Límites Mín/Máx

Entrada numérica con restricciones de valor mínimo y máximo.

Value: 5 (min: 0, max: 10)
import { InputNumber, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(5);
  
  return (
      <Space direction="vertical" size="sm">
        <InputNumber
          value={value}
          onChange={setValue}
          min={0}
          max={10}
        />
        <div className="text-sm text-base-content/70">
          Value: {value} (min: 0, max: 10)
        </div>
      </Space>
    )
}

export default App

Paso Personalizado

Entrada numérica con valor de paso de incremento/decremento personalizado.

Step: 5
import { InputNumber, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(0);
  
  return (
      <Space direction="vertical" size="sm">
        <InputNumber
          value={value}
          onChange={setValue}
          step={5}
        />
        <div className="text-sm text-base-content/70">
          Step: 5
        </div>
      </Space>
    )
}

export default App

Precisión Decimal

Entrada numérica con control de precisión decimal.

Precision: 2 decimal places
import { InputNumber, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(0);
  
  return (
      <Space direction="vertical" size="sm">
        <InputNumber
          value={value}
          onChange={setValue}
          step={0.1}
          precision={2}
        />
        <div className="text-sm text-base-content/70">
          Precision: 2 decimal places
        </div>
      </Space>
    )
}

export default App

Tamaños

Cinco tamaños: xs, sm, md, lg y xl.

import { InputNumber, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value1, setValue1] = useState(0);
  const [value2, setValue2] = useState(0);
  const [value3, setValue3] = useState(0);
  const [value4, setValue4] = useState(0);
  const [value5, setValue5] = useState(0);
  
  return (
      <Space direction="vertical" size="sm">
        <InputNumber size="xs" value={value1} onChange={setValue1} />
        <InputNumber size="sm" value={value2} onChange={setValue2} />
        <InputNumber size="md" value={value3} onChange={setValue3} />
        <InputNumber size="lg" value={value4} onChange={setValue4} />
        <InputNumber size="xl" value={value5} onChange={setValue5} />
      </Space>
    )
}

export default App

Sin Controles

Entrada numérica sin botones de incremento/decremento.

import { InputNumber } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(0);
  
  return (
      <InputNumber
        value={value}
        onChange={setValue}
        controls={false}
      />
    )
}

export default App

Deshabilitado

Estado de entrada numérica deshabilitado.

import { InputNumber, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState(42);
  
  return (
      <Space direction="vertical" size="sm">
        <InputNumber value={value} onChange={setValue} />
        <InputNumber value={42} onChange={() => {}} disabled />
      </Space>
    )
}

export default App
PropiedadDescripciónTipoPredeterminado
valueValor numérico actual (controlado)number-
defaultValueValor inicial (no controlado)number-
onChangeCallback cuando cambia el valor(value: number | null) => void-
minValor mínimonumber-Infinity
maxValor máximonumberInfinity
stepPaso de incremento/decremento de valornumber1
precisionPrecisión decimal para visualizaciónnumber-
formatterFormatea valor de visualización(value: number | undefined) => string-
parserAnaliza valor de visualización a número(displayValue: string) => number-
controlsMostrar botones de incremento/decrementobooleantrue
disabledEstado deshabilitadobooleanfalse
sizeTamaño de input'xs' | 'sm' | 'md' | 'lg' | 'xl'-
blockInput de ancho completobooleanfalse
classNameClases CSS adicionalesstring-
  • Usa role="spinbutton" con inputMode="decimal" para semántica adecuada
  • Expone aria-valuemin, aria-valuemax y aria-valuenow para lectores de pantalla
  • Los botones de incremento/decremento tienen aria-label para usuarios de lectores de pantalla
  • El estado deshabilitado se anuncia apropiadamente a lectores de pantalla
  • Los estados de enfoque son claramente visibles para navegación por teclado
  • Las teclas de flecha se pueden usar para incrementar/decrementar valores