emptyInputBehavior

В числовых инпутах, управляемых AutoNumeric, особое значение имеет сценарий, при котором пользователь полностью удаляет содержимое поля. На уровне DOM это выглядит как пустая строка "", однако для финансовых, статистических и расчётных интерфейсов такое состояние редко является нейтральным: оно должно быть интерпретировано в виде конкретного числового значения или специального состояния null. Именно за эту логику отвечает параметр, управляющий поведением пустого ввода.

Ключевая задача механизма заключается в согласовании трёх представлений одного и того же поля:

  • отображаемого значения (formatted value),
  • внутреннего числового значения (raw numeric value),
  • значения, возвращаемого в модель данных приложения.

Разрыв между этими уровнями возникает именно в момент очистки поля, когда форматтер больше не имеет числовой основы для применения группировок, десятичного разделителя и валютных символов.


Семантика пустого состояния

Пустое значение в AutoNumeric не является просто отсутствием символов. Оно может трактоваться как:

  • логическое отсутствие данных (null),
  • нулевое значение (0),
  • минимально допустимое значение диапазона,
  • максимально допустимое значение диапазона,
  • либо как состояние, требующее немедленного восстановления отображения при потере фокуса.

Выбор интерпретации влияет на всю цепочку обработки данных, включая валидацию формы, отправку на сервер и вычисления в клиентской логике.


Поведение при вводе и очистке

При удалении содержимого поля библиотека переходит в режим, в котором входной буфер становится пустым. Дальнейшая реакция зависит от выбранной стратегии обработки пустого значения.

Сохранение пустого состояния

В одном из сценариев поле остаётся визуально пустым. Это означает, что:

  • пользователь может оставить инпут без значения,
  • getNumericString() или аналогичные методы возвращают null или пустую строку (в зависимости от конфигурации),
  • форматирование не восстанавливается автоматически при потере фокуса.

Такое поведение характерно для форм, где значение действительно опционально.


Автоматическая подстановка нуля

Часто используется стратегия, при которой пустое поле немедленно интерпретируется как 0. В этом случае:

  • при blur или обновлении состояния отображается 0,
  • внутреннее значение всегда остаётся числовым,
  • исключается необходимость проверки на null в бизнес-логике.

Этот подход широко применяется в бухгалтерских интерфейсах, где отсутствие значения не допускается.


Подстановка минимального или максимального значения

Если инпут ограничен диапазоном, пустое состояние может быть нормализовано:

  • к нижней границе допустимого диапазона,
  • либо к верхней границе.

Такая логика характерна для систем с жёсткими ограничениями ввода (лимиты бюджета, проценты, коэффициенты).


Поведение, зависящее от фокуса

Отдельный класс поведения связан с контекстом фокуса:

  • при активном вводе поле может оставаться пустым,
  • при потере фокуса автоматически восстанавливается значение (например, 0 или предыдущее валидное число),
  • при повторном фокусе значение снова очищается для удобства редактирования.

Такой механизм снижает трение при редактировании чисел, особенно в длинных формах.


Влияние на форматирование

Когда поле пустое, форматтер AutoNumeric временно отключает стандартную цепочку отображения:

  • разделители тысяч не применяются,
  • десятичный формат игнорируется,
  • валютные символы скрываются или переносятся в отдельный слой отображения.

При восстановлении значения форматирование пересобирается с нуля, как только появляется валидная числовая основа.


Взаимодействие с внутренним состоянием

AutoNumeric хранит внутреннее представление числа отдельно от DOM-значения. В момент очистки возможны два принципиально разных сценария:

  1. Полное обнуление состояния Внутренний буфер сбрасывается, и поле считается неинициализированным.

  2. Сохранение последнего значения Пустое отображение не влияет на raw-значение, пока не подтверждён blur или submit.

Второй подход позволяет реализовать более сложные UX-сценарии, например откат изменений при отмене редактирования.


Влияние на валидацию

Пустое значение является отдельным классом данных в системе валидации:

  • оно может быть валидным (если поле необязательное),
  • может трактоваться как ошибка (если поле обязательное),
  • либо автоматически нормализоваться до допустимого числа.

Важно, что проверка диапазонов (min, max) обычно не применяется к пустому состоянию, если оно интерпретируется как null.


Взаимодействие с submit и сериализацией

При сериализации формы пустое значение может преобразовываться в разные типы:

  • null — наиболее строгая модель отсутствия данных,
  • "" — строковое представление пустоты,
  • 0 — числовая подстановка,
  • отсутствие ключа в payload.

AutoNumeric позволяет адаптировать это поведение через слой конфигурации, обеспечивая согласованность между UI и API.


Практическое влияние на UX

Поведение при пустом вводе напрямую влияет на восприятие интерфейса:

  • если значение исчезает и не восстанавливается, пользователь воспринимает поле как необязательное;
  • если автоматически подставляется число, создаётся ощущение «обязательности» поля;
  • если поведение зависит от фокуса, интерфейс воспринимается как динамический и контекстный.

В сложных формах финансовых расчётов именно эта логика определяет, насколько предсказуемым будет взаимодействие с числовыми полями.


Связь с программной моделью данных

На уровне интеграции с приложением пустое значение становится точкой, где необходимо явно определить контракт данных:

  • API ожидает nullable-число или строку,
  • фронтенд-логика должна учитывать отсутствие значения в вычислениях,
  • реактивные фреймворки должны корректно обрабатывать переход между number и null.

AutoNumeric в этом контексте выступает как слой нормализации между пользовательским вводом и типизированной моделью данных, где пустое поле является не ошибкой, а отдельным состоянием системы.