Awesomplete предоставляет набор параметров первичной конфигурации, определяющих поведение компонента ещё до момента первого пользовательского ввода. Базовая инициализация задаёт фундаментальные ограничения: от источника данных до алгоритмов фильтрации и отображения элементов списка.
Конфигурация формируется в момент создания экземпляра компонента и
передаётся либо через конструктор, либо через HTML-атрибуты
data-*. В JavaScript-инициализации используется объект
параметров:
list)minChars)maxItems)Каждый параметр влияет на отдельный этап жизненного цикла автодополнения: от реакции на ввод до генерации выпадающего меню.
listОсновой работы автодополнения является параметр list,
определяющий набор вариантов.
Поддерживаются структуры:
Простейший вариант:
new Awesomplete(input, {
list: ["Apple", "Apricot", "Banana"]
});
При использовании объектов возможна привязка дополнительных данных:
list: [
{ label: "Apple", value: "apple" },
{ label: "Apricot", value: "apricot" }
]
Функциональный вариант позволяет динамическую подгрузку:
list: function() {
return fetch("/data").then(r => r.json());
}
На этапе первичной конфигурации важно учитывать, что структура данных определяет поведение фильтрации и отображения.
minCharsПараметр minChars задаёт порог активации
автодополнения.
new Awesomplete(input, {
minChars: 2
});
Значение определяет минимальную длину строки ввода, при которой начинается поиск совпадений.
Поведение:
0 — список отображается сразу1 — активация после первого символаn > 1 — задержка до достижения длины строкиЭтот параметр влияет на нагрузку и частоту фильтрации.
maxItemsПараметр управляет числом отображаемых результатов.
new Awesomplete(input, {
maxItems: 5
});
Механизм ограничивает количество DOM-элементов в выпадающем списке, снижая визуальную перегрузку и ускоряя рендеринг.
Особенности:
autoFirstПараметр autoFirst управляет автоматическим выделением
первого совпадения.
new Awesomplete(input, {
autoFirst: true
});
При включённом режиме:
При отключении выбор всегда требует явного действия.
filterФункция filter определяет, какие элементы списка
считаются подходящими.
Сигнатура:
filter: function(text, input) { }
Пример переопределения:
new Awesomplete(input, {
filter: function(text, input) {
return text.toLowerCase().includes(input.toLowerCase());
}
});
По умолчанию используется поиск по началу строки, но кастомизация позволяет реализовать:
sortПараметр sort задаёт порядок вывода результатов.
sort: function(a, b, input) {
return a.length - b.length;
}
Стандартное поведение:
Переопределение позволяет реализовать:
itemФункция item отвечает за создание DOM-элементов
списка.
item: function(text, input) {
var el = document.createElement("li");
el.textContent = text;
return el;
}
Через этот механизм контролируется:
Функция вызывается для каждого результата после фильтрации и сортировки.
replaceФункция replace определяет, каким образом выбранный
элемент вставляется в input.
replace: function(text) {
this.input.value = text;
}
Стандартное поведение — полная замена значения поля ввода.
Возможные сценарии:
dataФункция data используется для извлечения значения из
сложных структур.
data: function(item) {
return item.label;
}
Применяется при работе с объектами в list. Позволяет
отделить:
Первичная конфигурация может задаваться без JavaScript через
data-*:
<input class="awesomplete"
data-list="Apple, Banana, Cherry"
data-minchars="1"
data-maxitems="10" />
Особенности:
true/falseЭтот способ применяется для быстрой инициализации без дополнительного кода.
При инициализации параметры обрабатываются в следующей последовательности:
data-* атрибутовКаждый следующий этап может переопределять предыдущий, если задан приоритет в конфигурации.
Комбинация настроек формирует итоговое поведение:
minChars влияет на момент активацииfilter определяет состав результатовsort изменяет порядокmaxItems ограничивает отображениеitem и replace формируют UI и поведение
выбораКонфигурация не является изолированной: изменение одного параметра может полностью изменить восприятие остальных.
Без явной настройки используется базовая конфигурация:
Такой режим ориентирован на универсальные сценарии автодополнения без дополнительной логики.