Библиотека Awesomplete строится вокруг минимального набора данных, без которого автодополнение не может функционировать. В основе работы всегда находится связка: поле ввода и источник данных. Эти два элемента формируют ядро конфигурации, а остальная функциональность является расширением поведения.
Инициализация выполняется через конструктор:
new Awesomplete(input, options);
где input — DOM-элемент текстового поля, а
options — объект конфигурации. Отсутствие любого из
ключевых обязательных компонентов приводит к невозможности построения
списка подсказок.
Поле ввода является единственной точкой взаимодействия пользователя с системой автодополнения. Awesomplete не создает собственный input, а только расширяет существующий DOM-элемент.
Минимально допустимая структура:
<input id="city" />
const input = document.querySelector("#city");
new Awesomplete(input, {
list: ["London", "Paris", "Berlin"]
});
Ключевые требования:
input[type="text"], search, либо
textarea);input, так как именно
оно триггерит обновление списка.Отсутствие валидного input приводит к невозможности привязки поведения библиотеки, поскольку Awesomplete не имеет внутреннего механизма создания UI.
Поле list определяет набор значений, по которым
выполняется поиск совпадений. Без него библиотека теряет
функциональность, так как отсутствует пространство поиска.
Минимальный вариант:
new Awesomplete(input, {
list: ["Apple", "Apricot", "Banana"]
});
Awesomplete поддерживает несколько форматов, но обязательным остается сам факт наличия источника:
list: ["One", "Two", "Three"]
list: [
{ label: "Alaska", value: "AK" },
{ label: "California", value: "CA" }
]
<input id="country" data-list="USA,Canada,Mexico" />
При отсутствии list библиотека не выполняет поиск и не
формирует выпадающее меню.
Awesomplete не оперирует абстрактными источниками данных. Минимально работоспособная конфигурация всегда включает оба компонента одновременно:
input определяет точку ввода;list определяет пространство поиска.Эта связка формирует базовый цикл:
list;input.Отсутствие одного из элементов нарушает весь цикл.
Хотя Awesomplete генерирует интерфейс самостоятельно, он требует корректного DOM-контекста:
<ul> и <li>
формируются динамически;input.parentNode.Если input не имеет родительского узла в DOM, построение
интерфейса становится невозможным.
Фактически, библиотека может работать в самом базовом виде без дополнительных настроек:
new Awesomplete(input, {
list: []
});
Однако такая конфигурация не имеет практического смысла. Рабочий
минимум предполагает наличие хотя бы одного значения в
list.
Оптимальный минимальный вариант:
new Awesomplete(input, {
list: ["A", "B", "C"]
});
Алгоритм поиска Awesomplete основан на сравнении введенной строки с
элементами list. Это означает, что структура обязательных
данных влияет на поведение системы:
label для отображения и
value для вставки;Без корректного list этот алгоритм не может быть
запущен, даже при наличии input.
Функционирование Awesomplete можно свести к обязательной архитектурной схеме:
Любая реализация строится вокруг этих элементов, где первые два являются строго обязательными, а остальные — производными механизмами внутренней логики.