Параметры инициализации

Инициализация начинается с передачи DOM-элемента и объекта настроек, который определяет поведение форматирования, правила ввода и ограничения значений. Библиотека строится вокруг идеи декларативного описания числового поля: внешний вид, допустимые диапазоны и форматирование отделяются от бизнес-логики.

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

Структура конфигурационного объекта

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

Основные группы параметров:

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

Каждая группа параметров не изолирована: изменение одного значения может повлиять на итоговое форматирование или поведение курсора.

Управление десятичной частью

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

  • decimalCharacter определяет символ разделителя дробной части
  • decimalCharacterAlternative задаёт альтернативные символы ввода
  • decimalPlaces фиксирует количество знаков после запятой
  • decimalPlacesRawValue задаёт точность внутреннего значения без форматирования

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

Особое значение имеет различие между отображаемым значением и «сырым» числом, которое возвращается при вызове методов получения данных.

Разделители групп разрядов

Форматирование целой части регулируется через параметры группировки:

  • digitGroupSeparator определяет символ разделителя тысяч
  • digitGroupSpacing задаёт стратегию группировки (3-3-3, индийская система и др.)
  • showOnlyNumbersOnFocus влияет на временное упрощение отображения при редактировании

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

Ограничения диапазона значений

Для контроля допустимых чисел используются параметры:

  • minimumValue
  • maximumValue

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

Дополнительный контроль реализуется через обработчики событий, реагирующие на попытки вставки некорректных данных.

Поведение при вводе и редактировании

Важную роль играют параметры, определяющие UX взаимодействия:

  • modifyValueOnWheel — изменение значения при прокрутке колеса мыши
  • modifyValueOnUpDownArrow — управление стрелками клавиатуры
  • caretPositionOnFocus — позиционирование курсора при активации поля
  • selectOnFocus — выделение всего значения при фокусе
  • emptyInputBehavior — поведение пустого поля

Последний параметр определяет, будет ли пустое поле трактоваться как ноль, null или пустая строка. Это критично для интеграции с backend-системами, где различие между «0» и отсутствием значения имеет семантическое значение.

Формат отображения валют и суффиксов

Для финансовых интерфейсов используются параметры оформления:

  • currencySymbol
  • currencySymbolPlacement (префикс или суффикс)
  • suffixText
  • prefixText

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

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

Формат вывода и сериализация значения

Поведение при извлечении значения регулируется через:

  • outputFormat — формат возвращаемого значения
  • rawValueDivisor — делитель внутреннего значения
  • unformatOnSubmit — автоматическое удаление форматирования при отправке формы

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

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

Инициализация через DOM-атрибуты

Поддерживается декларативная инициализация через data-атрибуты. Элементы формы могут содержать параметры прямо в HTML-разметке, что позволяет создавать конфигурацию без явного JavaScript-кода.

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

При этом значения атрибутов имеют более низкий приоритет по сравнению с параметрами, переданными через JavaScript.

Пресеты и предустановленные конфигурации

Библиотека включает механизм предустановок, где набор параметров объединяется в именованные конфигурации. Пресеты используются для типовых сценариев:

  • валютные поля
  • процентные значения
  • целые числа
  • фиксированная точность

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

Поведение при внешних изменениях DOM

Для синхронизации с внешними изменениями используются параметры наблюдения:

  • watchExternalChanges — отслеживание изменений значения извне
  • watchExternalChangesOnlyInitialized — ограничение наблюдения после инициализации

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

Обработка некорректного ввода

Конфигурация включает параметры для управления ошибками ввода:

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

При этом библиотека стремится не блокировать ввод агрессивно, а корректировать данные в соответствии с заданными правилами.

Инициализация нескольких элементов

При работе с коллекциями DOM-элементов применяется массовая инициализация. Каждый элемент получает собственный экземпляр с независимым состоянием, но может использовать общий объект конфигурации.

Это позволяет минимизировать накладные расходы и поддерживать согласованное поведение группы полей ввода.

Жизненный цикл экземпляра

После инициализации экземпляр поддерживает обновление конфигурации без повторного создания. Изменение параметров может происходить динамически, с последующим перерасчётом отображения.

Также предусмотрено корректное уничтожение экземпляра с восстановлением исходного состояния DOM-элемента, что важно при работе с динамическими интерфейсами и SPA-архитектурами.

Приоритеты конфигурации

При формировании итоговой конфигурации действует многоуровневая система приоритетов:

  1. параметры, переданные при создании экземпляра
  2. настройки, заданные через методы обновления
  3. пресеты
  4. data-атрибуты HTML
  5. значения по умолчанию библиотеки

Такая иерархия обеспечивает предсказуемость поведения даже в сложных сценариях переопределения настроек.

Связь параметров с внутренним представлением данных

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

  • отображаемое значение (UI)
  • внутреннее числовое значение
  • сериализованное значение для внешних систем

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