Инициализация начинается с передачи DOM-элемента и объекта настроек, который определяет поведение форматирования, правила ввода и ограничения значений. Библиотека строится вокруг идеи декларативного описания числового поля: внешний вид, допустимые диапазоны и форматирование отделяются от бизнес-логики.
Создание экземпляра обычно опирается на конструктор, принимающий элемент и конфигурацию, где каждый параметр влияет на отдельный аспект обработки значения — от визуального представления до внутреннего числового значения.
Конфигурация формируется как плоский объект, в котором ключи соответствуют конкретным аспектам форматирования и валидации. Поддерживается объединение базовых пресетов с пользовательскими значениями, что позволяет строить сложные правила поверх стандартных сценариев.
Основные группы параметров:
Каждая группа параметров не изолирована: изменение одного значения может повлиять на итоговое форматирование или поведение курсора.
Ключевым элементом конфигурации является описание дробной части числа.
При работе с финансовыми данными часто используется фиксированная точность, где значение автоматически округляется при потере фокуса или при обновлении поля.
Особое значение имеет различие между отображаемым значением и «сырым» числом, которое возвращается при вызове методов получения данных.
Форматирование целой части регулируется через параметры группировки:
Группировка применяется динамически при каждом изменении значения, что требует оптимизированной обработки строковых операций внутри библиотеки.
Для контроля допустимых чисел используются параметры:
Они работают на уровне валидации ввода и предотвращают выход значения за заданные пределы. Поведение при нарушении ограничений может быть различным: от автоматической коррекции до блокировки ввода или восстановления предыдущего значения.
Дополнительный контроль реализуется через обработчики событий, реагирующие на попытки вставки некорректных данных.
Важную роль играют параметры, определяющие UX взаимодействия:
Последний параметр определяет, будет ли пустое поле трактоваться как ноль, null или пустая строка. Это критично для интеграции с backend-системами, где различие между «0» и отсутствием значения имеет семантическое значение.
Для финансовых интерфейсов используются параметры оформления:
Эти параметры влияют только на визуальную часть, не затрагивая числовое значение. Внутри библиотеки реализовано разделение представления и данных, что позволяет безопасно сериализовать значения для отправки на сервер.
При этом символ валюты может быть как фиксированным, так и динамически изменяемым в зависимости от контекста приложения.
Поведение при извлечении значения регулируется через:
Существуют несколько режимов вывода: строковый формат с разделителями, числовой тип, а также «сырой» формат без преобразований.
Особое значение имеет режим отправки формы, при котором визуальное форматирование может быть временно отключено, чтобы сервер получил чистое числовое значение.
Поддерживается декларативная инициализация через data-атрибуты. Элементы формы могут содержать параметры прямо в HTML-разметке, что позволяет создавать конфигурацию без явного JavaScript-кода.
Такая модель особенно полезна при серверной генерации интерфейсов, где конфигурация передаётся вместе с разметкой.
При этом значения атрибутов имеют более низкий приоритет по сравнению с параметрами, переданными через JavaScript.
Библиотека включает механизм предустановок, где набор параметров объединяется в именованные конфигурации. Пресеты используются для типовых сценариев:
При инициализации пресет может быть расширен или переопределён, что позволяет строить гибридные конфигурации без дублирования настроек.
Для синхронизации с внешними изменениями используются параметры наблюдения:
Это особенно важно в реактивных интерфейсах, где значение может изменяться не только через пользовательский ввод, но и через состояние приложения.
Конфигурация включает параметры для управления ошибками ввода:
При этом библиотека стремится не блокировать ввод агрессивно, а корректировать данные в соответствии с заданными правилами.
При работе с коллекциями DOM-элементов применяется массовая инициализация. Каждый элемент получает собственный экземпляр с независимым состоянием, но может использовать общий объект конфигурации.
Это позволяет минимизировать накладные расходы и поддерживать согласованное поведение группы полей ввода.
После инициализации экземпляр поддерживает обновление конфигурации без повторного создания. Изменение параметров может происходить динамически, с последующим перерасчётом отображения.
Также предусмотрено корректное уничтожение экземпляра с восстановлением исходного состояния DOM-элемента, что важно при работе с динамическими интерфейсами и SPA-архитектурами.
При формировании итоговой конфигурации действует многоуровневая система приоритетов:
Такая иерархия обеспечивает предсказуемость поведения даже в сложных сценариях переопределения настроек.
Каждый параметр инициализации влияет на одно из трёх представлений значения:
Разделение этих уровней позволяет одновременно поддерживать строгую валидацию и гибкое форматирование без потери точности или семантики данных.