Перейти к содержимому
v2.5.0
English
Русский
Документация

NumberField

NumberField — составной компонент для ввода чисел с необязательными кнопками шага, границами, маской и изменением значения колесом или клавиатурой.

Пропсы корня

ПропТипПо умолчанию
valuenumber—
Контролируемое значение. NaN означает, что поле пустое.
defaultValuenumberNaN
Начальное значение для неконтролируемого использования. По умолчанию NaN — пустое поле.
onChangeValue(value: number) => void—
Вызывается с числом при его изменении и с NaN, когда поле очищено.
stepnumber1
Шаг, на который значение увеличивается или уменьшается клавишами со стрелками или кнопками счётчика.
minnumberNumber.MIN_SAFE_INTEGER
Минимально допустимое значение поля. Соблюдается и через HTML-атрибуты, и во внутренней логике.
maxnumberNumber.MAX_SAFE_INTEGER
Максимально допустимое значение поля.
refRef<HTMLDivElement>—
Ref, передаваемый на элемент.
precisionnumber0
Количество знаков после запятой, до которого округляется значение. Полезно для финансовой или научной точности.
changeOnWheelbooleantrue
Включает изменение значения колесом мыши, когда поле в фокусе.
allowEmptybooleantrue
Позволяет полю быть пустым (null/undefined) вместо значения 0 по умолчанию. Полезно для необязательных числовых полей.
maximumFractionDigitsnumber2
Максимальное количество цифр после десятичного разделителя. Управляет точностью числа, когда значение вводится или меняется действиями увеличения/уменьшения. Обычно используется для денежных сумм, измерений или рейтингов, где дробную точность нужно ограничить. Пример: maximumFractionDigits={0} → только целые числа; maximumFractionDigits={2} → до двух знаков после запятой
disabledboolean—
Отключает весь NumberField.
sizeTextFieldSize'md'
Визуальный размер текстового поля. Влияет на отступы, размер шрифта и общую высоту. 'sm': компактное поле; 'md': по умолчанию; 'lg': просторная раскладка
errorboolean—
Показывает поле ввода в состоянии ошибки.

Также принимает все атрибуты <div>.

Дочерние части

  • NumberFieldInput: числовой input, связанный с контекстом.
  • NumberFieldIncrementButton: кнопка увеличения.
  • NumberFieldDecrementButton: кнопка уменьшения.

NumberFieldDecrementButton

ПропТипПо умолчанию
sizeIconButtonSize—
Размер контейнера кнопки. Управляет отступами и общей кликабельной областью.
asChildboolean—
Если true, рендерит кнопку как дочерний компонент через Slot (например, из Radix UI). Включает полиморфный рендер — полезно, чтобы кнопка работала как ссылка или собственный тег.
variantButtonBaseVariant—
Определяет визуальный стиль кнопки: цветовую схему и акцент.
appearanceButtonBaseAppearance—
Настраивает структурный внешний вид кнопки (фон, рамка и т. д.).
disabledboolean—
Отключает кнопку при true. Запрещает взаимодействие и применяет визуальное отключённое состояние. Не применяется с asChild: отключённым состоянием владеет дочерний элемент, например через aria-disabled или ссылку без href.
classNamestring—
Необязательный собственный CSS-класс для элемента кнопки. Полезен для переопределений дизайн-системы или локальных стилей.
childrenReactNode—
Содержимое кнопки — текст, иконка или любой React-узел.
refRef<HTMLButtonElement>—
Ref, передаваемый на нативный элемент <button>. Даёт прямой доступ к DOM для управления фокусом или измерений.

Также принимает все атрибуты <button>.

NumberFieldIncrementButton

ПропТипПо умолчанию
sizeIconButtonSize—
Размер контейнера кнопки. Управляет отступами и общей кликабельной областью.
asChildboolean—
Если true, рендерит кнопку как дочерний компонент через Slot (например, из Radix UI). Включает полиморфный рендер — полезно, чтобы кнопка работала как ссылка или собственный тег.
variantButtonBaseVariant—
Определяет визуальный стиль кнопки: цветовую схему и акцент.
appearanceButtonBaseAppearance—
Настраивает структурный внешний вид кнопки (фон, рамка и т. д.).
disabledboolean—
Отключает кнопку при true. Запрещает взаимодействие и применяет визуальное отключённое состояние. Не применяется с asChild: отключённым состоянием владеет дочерний элемент, например через aria-disabled или ссылку без href.
classNamestring—
Необязательный собственный CSS-класс для элемента кнопки. Полезен для переопределений дизайн-системы или локальных стилей.
childrenReactNode—
Содержимое кнопки — текст, иконка или любой React-узел.
refRef<HTMLButtonElement>—
Ref, передаваемый на нативный элемент <button>. Даёт прямой доступ к DOM для управления фокусом или измерений.

Также принимает все атрибуты <button>.

NumberFieldInput

ПропТипПо умолчанию
refRef<HTMLInputElement>—
Ref, передаваемый на нижележащий нативный элемент <input>.

Также принимает все атрибуты <input>.

Типы

  • NumberFieldProps
  • NumberFieldInputProps
  • NumberFieldIncrementProps
  • NumberFieldDecrementProps
  • NumberFieldSize

Модель состояния

  • Корень отслеживает, находится ли текущее значение на min или max.
  • Стрелки и, если включены, события колеса меняют значение на шаг через логику корня. Как и в <input type="number">, колесо меняет только поле в фокусе; без фокуса оно прокручивает страницу.
  • Шаг сохраняет десятичные знаки значения и step (0.7 + 0.1 даёт 0.8).
  • onKeyDown корня выполняется после встроенной обработки стрелок и не заменяет её.
  • Корень принимает value, defaultValue и onChangeValue как число, NaN — для пустого поля; NumberFieldInput показывает отформатированный текст и по-прежнему вызывает собственные onChange и onInput. Сброс формы восстанавливает defaultValue, если поле не контролируемое.