Событие awesomplete-open возникает в момент, когда
список подсказок становится видимым. Оно фиксирует переход компонента из
состояния скрытого списка в состояние активного отображения, когда
результаты автодополнения уже сформированы и готовы к
взаимодействию.
awesomplete-open срабатывает после того, как:
Важно, что событие не инициирует открытие списка, а лишь сигнализирует о факте его открытия.
При открытии списка Awesomplete переводит внутреннее состояние в активный режим отображения результатов. В этот момент:
Событие awesomplete-open фиксирует именно завершение
этих действий.
Подписка осуществляется через стандартный механизм DOM-событий:
const input = document.querySelector("#search");
input.addEventListener("awesomplete-open", function (event) {
console.log("Список подсказок открыт");
});
Также возможно назначение обработчика через свойство экземпляра Awesomplete:
const awesomplete = new Awesomplete(input);
input.addEventListener("awesomplete-open", () => {
console.log("Open event triggered");
});
Оба варианта равнозначны, поскольку событие диспатчится непосредственно на элементе input.
Объект события Event, передаваемый обработчику, содержит
стандартные свойства DOM-событий:
type — всегда awesomplete-open;target — input-элемент, связанный с экземпляром
Awesomplete;currentTarget — тот же элемент, на котором
зарегистрирован слушатель;bubbles — true, событие всплывает по
DOM-дереву.Дополнительных специфичных данных библиотека в событие не добавляет, поэтому вся контекстная информация извлекается через экземпляр Awesomplete, связанный с input.
awesomplete-open является частью цепочки событий
жизненного цикла списка подсказок:
awesomplete-selectcomplete — выбор элемента и
завершение ввода;awesomplete-close — закрытие списка;awesomplete-open — открытие списка.В отличие от awesomplete-select и
awesomplete-selectcomplete, событие открытия не связано с
изменением значения input.
Событие может срабатывать многократно в рамках одного сеанса ввода. Основные триггеры:
Если список уже открыт, повторное открытие не генерирует событие, пока состояние не будет изменено на закрытое.
При использовании асинхронных источников данных момент открытия может быть отложен до завершения получения результатов. В этом случае последовательность выглядит так:
awesomplete-open.Таким образом событие фиксирует не начало запроса, а финальный момент отображения UI.
Хотя событие не предназначено для отмены открытия, его можно использовать для побочных действий:
Пример логирования состояния:
input.addEventListener("awesomplete-open", () => {
performance.mark("awesomplete-opened");
});
Открытие списка не изменяет фокус input-элемента. Однако при срабатывании события часто наблюдаются сопутствующие изменения:
Эти изменения происходят синхронно с моментом генерации события.
Чаще всего awesomplete-open применяется для:
Событие используется как индикатор того, что пользователь вошёл в режим выбора из списка, а не просто ввода текста.
Событие не предоставляет:
Все эти данные необходимо получать через экземпляр Awesomplete или через состояние input-элемента.