Форк библиотеки suggestions-jquery для автодополнения адресов, организаций, имен и других данных через API DaData.
🚧 В разработке
Отличия от оригинальной библиотеки:
- Полностью удалён jQuery.
- Запросы отправляются через
fetch, асинхронный API построен на промисах вместоDeferred. - Аргументы в событиях suggestions-* теперь в виде массива.
- Типы TypeScript для опций, подсказок и методов.
- Современный синтаксис и API браузера: нужны Chrome/Edge 98+, Firefox 97+, Safari 15.4+.
- Упрощённый код и уменьшенный размер библиотеки.
Что удалено:
- Реклама DaData(promo).
- Работа без CORS.
- Отложенная инициализация.
- Методы disable/enable.
- ФИАС.
- Версия и заголовок(header) X-version.
- scrollOnFocus.
- Опция addon (индикатор загрузки и кнопка очистки).
- Родительское поле в
constraintsв виде jQuery-коллекции.
Портированы тесты из оригинального репозитория, за исключением тестов, связанных с удалёнными функциями.
onSearchError(query, error)вместоonSearchError(query, xhr, textStatus, errorThrown).error—HttpError(с полемresponse, экспортируется из пакета),TypeErrorпри сетевой ошибке илиDOMException"TimeoutError".- Колбэки и события после ответа сервера и выбора подсказки (
onSelect,suggestions-select,suggestions-fixdataи т.д.) вызываются асинхронно, даже при ответе из кэша. select()возвращаетPromise<void>,selectCurrentValue()— промис с индексом выбранной подсказки или-1,getSuggestions()— промис с подсказками илиundefined.- Клавиши определяются по
KeyboardEvent.key: программно созданные события должны задаватьkey, а неkeyCode/which. setOptions({ option: undefined })сбрасывает опцию, а не игнорирует её.setSuggestion()копирует подсказку черезstructuredClone: функции и DOM-узлы вdataвызывают исключение.- Тип
Optionsпереписан: колбэки типизированы сthisи аргументами,hintпринимает строку илиfalse, параметр типа —T extends string.
dispose()и сменаconstraintsснимают обработчики и отписывают поле от родителя.- Определённое местоположение сразу попадает в запросы после
setOptionsи в новые экземпляры. - Уход из поля во время обогащения больше не обрывает обогащение.
- Ответ сервера с пустым телом не приводит к необработанной ошибке.
Этот проект основан на suggestions-jquery от HFLabs.