В библиотеке AutoNumeric базовая модель конфигурирования строится вокруг многоуровневой системы приоритетов, где каждый экземпляр получает итоговый набор параметров из нескольких источников. Центральное место занимает глобальная конфигурация, которая определяет поведение всех создаваемых инстансов до момента их индивидуальной настройки.
Глобальные настройки выступают как единая точка определения стандартного поведения форматирования чисел: разделители, точность, правила округления, допустимые диапазоны ввода, поведение при потере фокуса и множество других параметров. Переопределение глобальных значений используется в случаях, когда требуется единый стандарт форматирования для всего приложения без необходимости дублирования конфигурации при каждом создании поля.
Система разрешения конфигурации AutoNumeric строится по принципу каскадного наследования:
Локальные настройки экземпляра (instance options) Применяются при инициализации конкретного поля и имеют максимальный приоритет.
Глобальная конфигурация (default/global settings) Используется как базовый слой для всех инстансов.
Предустановленные профили (predefined options) Например, стандартные конфигурации вроде европейского или американского формата чисел.
Встроенные значения библиотеки Используются только при отсутствии переопределений.
Итоговая конфигурация формируется путём глубокого слияния (deep merge), где более высокий уровень перекрывает значения нижележащих уровней.
Основной механизм переопределения глобальных параметров реализуется через метод установки конфигурации по умолчанию:
AutoNumeric.setDefaultConfig({
digitGroupSeparator: " ",
decimalCharacter: ",",
decimalPlaces: 2,
minimumValue: "0",
maximumValue: "999999999.99"
});
После выполнения подобного вызова все последующие экземпляры AutoNumeric будут наследовать указанные параметры, если они не были переопределены локально.
Важным аспектом является то, что изменения глобальной конфигурации не всегда автоматически применяются к уже созданным экземплярам. В большинстве реализаций библиотек подобного типа обновление влияет только на новые инстансы, чтобы избежать нарушения состояния уже инициализированных DOM-элементов.
Для анализа текущего состояния глобальных настроек используется метод получения конфигурации:
const currentConfig = AutoNumeric.getDefaultConfig();
Возвращаемый объект содержит итоговый набор параметров, который используется как базовый при создании новых экземпляров. Этот механизм позволяет строить динамические системы конфигурирования, где текущие значения могут быть модифицированы на основе среды выполнения.
При изменении глобальных параметров используется стратегия глубокого объединения объектов. Это означает, что вложенные структуры не перезаписываются целиком, а обновляются точечно.
Пример логики:
{
currencySymbol: "$",
decimalPlaces: 2,
allowDecimalPadding: true
}
При частичном обновлении:
AutoNumeric.setDefaultConfig({
decimalPlaces: 4
});
результирующая конфигурация сохраняет остальные параметры без
изменений, изменяя только decimalPlaces.
Такой подход предотвращает потерю ранее установленных значений и обеспечивает предсказуемость поведения системы.
В некоторых сценариях применяется подход расширения существующей конфигурации вместо полной замены. Это позволяет модифицировать текущие глобальные настройки на основе их предыдущего состояния:
const base = AutoNumeric.getDefaultConfig();
AutoNumeric.setDefaultConfig({
...base,
decimalCharacter: ".",
digitGroupSeparator: ","
});
Подобная техника используется при адаптации приложения под разные локали без разрушения уже определённых параметров.
После создания экземпляра AutoNumeric его конфигурация становится независимой от глобальных изменений. Это критически важно для предотвращения побочных эффектов в интерфейсе.
Жизненный цикл выглядит следующим образом:
Таким образом, глобальная конфигурация выступает исключительно как фабричный шаблон.
Если при создании экземпляра передаются локальные параметры, они имеют более высокий приоритет:
AutoNumeric.setDefaultConfig({
decimalPlaces: 2
});
new AutoNumeric("#input", {
decimalPlaces: 0
});
В данном случае поле будет работать с нулевым количеством знаков после запятой, несмотря на глобальную настройку.
Иерархия приоритетов сохраняется строго:
локальные настройки > глобальные настройки > значения по умолчанию
Для возврата к исходному состоянию используется сброс глобальных параметров. В зависимости от версии библиотеки это может реализовываться через передачу базового профиля или пустого объекта:
AutoNumeric.setDefaultConfig({});
или через установку стандартного профиля:
AutoNumeric.setDefaultConfig(AutoNumeric.getPredefinedOptions().numeric);
Сброс глобальной конфигурации особенно важен при тестировании, когда требуется гарантированная изоляция тест-кейсов.
В крупных приложениях глобальная конфигурация AutoNumeric часто интегрируется на уровне инициализации модуля:
import AutoNumeric from "autonumeric";
AutoNumeric.setDefaultConfig({
digitGroupSeparator: " ",
decimalCharacter: ".",
decimalPlaces: 2,
modifyValueOnWheel: false,
unformatOnSubmit: true
});
Такой подход позволяет централизовать правила форматирования и исключить дублирование конфигурации в каждом компоненте интерфейса.
В некоторых случаях глобальные настройки изменяются во время работы приложения, например при переключении локали:
function switchLocale(locale) {
if (locale === "ru") {
AutoNumeric.setDefaultConfig({
decimalCharacter: ",",
digitGroupSeparator: " "
});
}
if (locale === "en") {
AutoNumeric.setDefaultConfig({
decimalCharacter: ".",
digitGroupSeparator: ","
});
}
}
Подобная динамика требует осторожности, поскольку новые настройки применяются только к будущим экземплярам, а существующие поля продолжают использовать прежнюю конфигурацию.
Одной из типичных проблем является ожидание мгновенного изменения всех уже созданных инстансов. Поскольку конфигурация копируется при инициализации, изменение глобального объекта не приводит к обновлению состояния существующих элементов.
Другой распространённый сценарий — полная замена конфигурации без учёта обязательных параметров. Это может привести к потере критичных значений, таких как правила округления или допустимые диапазоны ввода.
Также часто встречается некорректное использование поверхностного слияния вместо глубокого, что приводит к перезаписи вложенных структур конфигурации.
При разработке сложных интерфейсов глобальная конфигурация AutoNumeric используется как фундаментальный слой стандартизации. Она позволяет унифицировать формат числовых полей в формах, таблицах, финансовых панелях и аналитических модулях без необходимости повторного описания правил форматирования в каждом компоненте.
Такой подход обеспечивает консистентность отображения данных и снижает вероятность расхождений в обработке числовых значений между различными частями приложения.