Метод close в Awesomplete отвечает за программное
закрытие выпадающего списка подсказок. Он является частью базового API
экземпляра и тесно связан с внутренним состоянием виджета
автодополнения, управляющим отображением и скрытием списка
результатов.
Метод close используется для принудительного скрытия
списка подсказок, независимо от текущего состояния ввода пользователя
или наличия совпадений в источнике данных. Это прямой механизм
управления интерфейсом, который переводит компонент в состояние
«закрыт».
Ключевая функция метода:
Метод вызывается у экземпляра Awesomplete без
параметров:
awesomplete.close();
Где awesomplete — экземпляр компонента, созданный через
конструктор:
const input = document.querySelector("input");
const awesomplete = new Awesomplete(input, {
list: ["Apple", "Banana", "Orange"]
});
Вызов:
awesomplete.close();
принудительно скрывает список, даже если он был открыт через ввод
пользователя или метод open.
При вызове close происходят следующие действия:
Компонент переключает внутренний флаг состояния открытия (обычно
opened) в значение false. Это влияет на все
последующие проверки отображения списка.
Выпадающий список (обычно <ul> контейнер) получает
CSS-состояние скрытия. В зависимости от реализации это может быть:
display: none;Если в списке был выбран или подсвечен элемент, он деактивируется:
После закрытия инициируется событие:
awesomplete-closeЭто позволяет подписываться на момент закрытия списка и выполнять дополнительную логику.
input.addEventListener("awesomplete-close", function () {
console.log("Список подсказок закрыт");
});
Метод close часто вызывается не напрямую, а внутри
логики компонента.
При уходе фокуса с поля ввода список автоматически закрывается:
input.addEventListener("blur", function () {
awesomplete.close();
});
После выбора элемента из списка компонент закрывает выпадающее меню:
При очистке значения input (например, через пользовательский код) список может быть закрыт, если больше нет валидных совпадений.
Стандартное поведение клавиатурного управления включает закрытие списка по клавише Escape:
input.addEventListener("keydown", function (event) {
if (event.key === "Escape") {
awesomplete.close();
}
});
Методы open и close являются антагонистами
внутри API Awesomplete.
open() — делает список видимым;close() — скрывает список.Повторный вызов close() при уже закрытом состоянии не
приводит к ошибкам и считается безопасной операцией.
awesomplete.close();
awesomplete.open();
awesomplete.close();
Такая последовательность корректно переключает состояние компонента без нарушения логики.
Внутреннее свойство isOpened синхронизируется с вызовом
метода:
close() → isOpened = false;open() → isOpened = true.Это значение используется для:
Если список подсказок пуст или не инициализирован, вызов
close():
Это делает метод устойчивым к ошибкам состояния.
Хотя логика закрытия управляется JavaScript, визуальный результат зависит от CSS-реализации:
aria-hidden;display или
visibility.При кастомизации стилей важно учитывать, что close() не
удаляет элементы из DOM, а лишь изменяет их состояние.
Событие закрытия используется для интеграции с внешней логикой:
Пример использования:
input.addEventListener("awesomplete-close", function () {
document.body.classList.remove("autocomplete-open");
});
Метод можно вызывать многократно без побочных эффектов:
Это позволяет безопасно использовать close() в
обработчиках глобальных событий.
Частое закрытие списка при каждом вводе может ухудшать пользовательский опыт, так как прерывает выбор подсказок.
Вызов close() при активном фокусе может конфликтовать с
логикой автопоказа подсказок.
Если внешний код вручную управляет DOM списка, метод
close() может не синхронизироваться с кастомными
изменениями.
Метод close является одной из ключевых точек управления
состоянием интерфейса автодополнения. Он завершает активную фазу
взаимодействия пользователя со списком подсказок и возвращает компонент
в базовое состояние ожидания нового ввода.