Архитектура библиотеки строится вокруг слоистой системы настроек, где локальные параметры экземпляра маски перекрывают алиасы, а алиасы, в свою очередь, наследуют поведение из глобальных конфигураций. Глобальный уровень предназначен для централизованного определения поведения масок во всём приложении без необходимости повторного описания одних и тех же правил.
Глобальные настройки влияют на:
Такой уровень конфигурации позволяет формировать единый стандарт ввода данных в приложении: телефоны, даты, числовые поля, идентификаторы и пользовательские форматы.
Внутренне библиотека хранит глобальные параметры в объекте:
Inputmask.defaults
Этот объект содержит значения, которые применяются ко всем новым экземплярам масок, если они не были переопределены локально.
Типичная структура:
Inputmask.defaults = {
placeholder: "_",
showMaskOnFocus: true,
showMaskOnHover: true,
clearIncomplete: false,
repeat: 0,
greedy: false
};
Любое поле, отсутствующее в конфигурации конкретной маски, берётся из
defaults.
Основной способ изменения глобального поведения:
Inputmask.extendDefaults({
placeholder: "*",
showMaskOnFocus: false
});
Механизм работает как поверхностное объединение объектов (shallow merge). Новые значения перезаписывают существующие, остальные остаются без изменений.
Особенности поведения:
Алиасы представляют собой именованные конфигурации масок, например:
phonedatetimenumericemailГлобальное хранилище алиасов:
Inputmask.aliases
Расширение или модификация:
Inputmask.extendAliases({
"phone": {
mask: "+7 (999) 999-99-99",
country: "RU"
}
});
Если алиас уже существует, он перезаписывается или дополняется в зависимости от структуры объекта.
Приоритет:
Inputmask(...)Inputmask.defaultsДефиниции определяют правила интерпретации масочных символов. Например:
9 — цифраa — буква* — буква или цифраГлобальное хранилище:
Inputmask.definitions
Расширение:
Inputmask.extendDefinitions({
"#": {
validator: "[0-9]",
cardinality: 1,
definitionSymbol: "#"
}
});
Каждая дефиниция описывает:
validator — регулярное выражение или функция
проверки;cardinality — количество символов;prevalidator — предварительная проверка;definitionSymbol — символ, используемый в маске.Глобальные дефиниции применяются ко всем маскам без необходимости локального дублирования.
В глобальных настройках допускается задание стандартных обработчиков событий:
onBeforeMaskonBeforePasteonBeforeWriteonUnMaskПример:
Inputmask.extendDefaults({
onBeforeMask: function (value) {
return value.trim();
}
});
Эти функции вызываются для каждой маски, если не переопределены локально.
Через глобальные настройки регулируется логика взаимодействия с полем ввода:
Inputmask.extendDefaults({
showMaskOnFocus: true,
showMaskOnHover: false
});
showMaskOnFocus — отображение маски при фокусе;showMaskOnHover — отображение при наведении;showMaskOnAlways — постоянное отображение.Inputmask.extendDefaults({
clearIncomplete: true,
clearMaskOnLostFocus: false
});
clearIncomplete удаляет неполные значения при потере
фокуса;clearMaskOnLostFocus управляет поведением при
blur.Inputmask.extendDefaults({
repeat: 5,
greedy: false
});
repeat задаёт количество повторений шаблона;greedy управляет захватом доступного ввода.Система конфигурации строится по строгой иерархии:
Inputmask.defaults)При конфликте значений выбирается наиболее специфичный уровень.
Глобальные параметры могут изменяться динамически:
Inputmask.extendDefaults({
placeholder: "0"
});
После выполнения такого кода новые маски будут использовать обновлённое поведение.
Однако важный аспект заключается в том, что:
Использование глобального уровня конфигурации снижает накладные расходы:
Особенно заметно при работе с большим количеством input-полей, где единые правила маскирования применяются системно.
Несмотря на глобальный характер, структура позволяет изолировать изменения:
const oldDefaults = { ...Inputmask.defaults };
Inputmask.extendDefaults({
placeholder: "_"
});
// восстановление
Inputmask.extendDefaults(oldDefaults);
Такой подход используется в сценариях временного переопределения поведения, например при переключении режимов интерфейса или локализации.
Механизм глобальных настроек формирует базовый слой расширения библиотеки. Через него реализуются:
Глобальная конфигурация выступает связующим звеном между ядром библиотеки и прикладной логикой приложения, обеспечивая единообразие поведения масок на уровне всего интерфейса.