Эволюция API AutoNumeric связана с переходом от императивной модели управления DOM-элементами к более декларативной и инкапсулированной архитектуре. В ранних версиях библиотека опиралась на прямое изменение состояния input-элементов через набор процедурных методов, тогда как современные версии формируют единый экземпляр управления с чётко определённым жизненным циклом.
Ключевым изменением стало разделение ответственности между:
Это привело к тому, что большинство глобальных функций было заменено методами экземпляра, а конфигурация стала централизованной структурой.
Ранние версии использовали прямой вызов функции с передачей DOM-элемента:
new AutoNumeric(element, options);
В более поздних версиях добавилась строгая типизация экземпляра и расширенная фабричная инициализация:
AutoNumeric.multiple(selector, options);
и
const anElement = AutoNumeric.getAutoNumericElement(element);
Изменился сам смысл инициализации: вместо «применить форматирование к элементу» модель стала трактоваться как «создать контроллер числового поля».
Важные изменения:
Конфигурационные опции претерпели значительные изменения. В старых версиях присутствовал плоский объект настроек, где параметры часто пересекались по смыслу.
Современная модель перешла к строгой структуре:
const options = {
digitGroupSeparator: ',',
decimalCharacter: '.',
decimalPlaces: 2
};
Изменения затронули следующие аспекты:
1. Переименование параметров
| Старое имя | Новое имя |
|---|---|
| aSep | digitGroupSeparator |
| aDec | decimalCharacter |
| vMin / vMax | minimumValue / maximumValue |
2. Уточнение семантики
3. Введение групп опций Конфигурация стала логически группироваться:
API методов экземпляра стало более унифицированным и предсказуемым.
Основные методы, подвергшиеся изменениям:
set() — установка значенияgetNumber() — получение числового значенияgetFormatted() — получение форматированной строкиclear() — очистка значенияupd ate() — обновление конфигурацииРанее присутствовали менее консистентные методы, например
autoNumericSet, autoNumericGet, которые были
заменены на единый интерфейс.
Изменение поведения set:
anElement.se t(1234.56);
Ранее метод мог принимать строку и число без строгой обработки типов. В новой модели добавлена предсказуемая нормализация входных данных.
Метод update также изменил семантику: вместо частичного
патча конфигурации в некоторых версиях теперь используется
контролируемое обновление с перерасчётом внутреннего состояния.
Статический API был переработан с целью разделения утилитарных и управляющих функций.
Добавились или были переработаны:
AutoNumeric.getAutoNumericElement(element)AutoNumeric.multiple(selector, options)AutoNumeric.isManagedByAutoNumeric(element)AutoNumeric.unformat(value, options)Изменения заключаются в том, что статические методы больше не выполняют скрытую мутацию DOM. Их роль ограничена:
Модель событий была переработана в сторону стандартизации.
Вместо разрозненных callback-опций (например onFocus,
onBlur, onChange) введена унифицированная
система событий:
autoNumeric:initializedautoNumeric:formattedautoNumeric:rawValueModifiedautoNumeric:destroyedИзменения:
Пример новой модели:
element.addEventListener('autoNumeric:formatted', (e) => {
const { formatted, rawValue } = e.detail;
});
Ряд функций был исключён или признан устаревшим:
AutoNumeric.set,
AutoNumeric.getaSep,
aDec)Причины удаления:
Жизненный цикл стал явным и контролируемым:
Метод destroy был переработан:
При переходе на новые версии API требуется учёт следующих изменений:
1. Замена устаревших опций
// старый стиль
{ aSep: ',', aDec: '.' }
// новый стиль
{ digitGroupSeparator: ',', decimalCharacter: '.' }
2. Переход на экземплярную модель
// старый стиль
AutoNumeric.set(element, 1234);
// новый стиль
const an = new AutoNumeric(element, options);
an.set(1234);
3. Обработка событий через DOM API
// старый стиль
onChange: callback
// новый стиль
element.addEventListener('autoNumeric:rawValueModified', callback);
Ранее обработка множественных элементов требовала ручного обхода DOM. В новых версиях введён централизованный метод:
AutoNumeric.multiple('.price-input', options);
Изменения:
Изменения API затронули интеграции с UI-фреймворками:
Особенно важным стало разделение:
Ранее ошибки часто обрабатывались через silent-fail или логические возвраты.
В новых версиях:
Поведение стало более предсказуемым при: