UNPKG

barneo-search-widget-lib

Version:

Библиотека для поиска по каталогу Barneo на Vue 3

217 lines (209 loc) 6.79 kB
/** * Barneo Search Library - Полные типы конфигурации * * Этот модуль предоставляет комплексные типы конфигурации для Barneo Search Library, * позволяя детальный контроль над всеми компонентами и их поведением. * * @module config * */ /** * Конфигурация для интеграции и взаимодействия с API. */ export interface ApiConfig { /** * Базовый URL для API поиска (например, https://api.search.ensi.cloud). * @required */ baseUrl: string; /** * Токен аутентификации для доступа к API. * @required */ token: string; /** * Идентификатор клиента для мультитенантных настроек. * @required */ customerId: string; /** * Идентификатор локации для поиска, специфичного для местоположения. * @required */ locationId: string; /** * Версия API для использования в запросах. * Если не указана, используется только baseUrl без версии. */ apiVersion?: string; } /** * Конфигурация для компонента поискового виджета. */ export interface GlobalSearchWidgetConfig { /** * Текст-заполнитель для поля ввода поиска. * @defaultValue "Поиск товаров..." */ placeholder?: string; /** * Задержка в миллисекундах перед запуском поиска. * @defaultValue 300 */ debounceMs?: number; /** * Минимальная длина символов, необходимая для запуска поиска. * @defaultValue 2 */ minSearchLength?: number; /** * Включить темную тему для поискового виджета. * @defaultValue false */ darkMode?: boolean; /** * Показывать кнопку очистки в поле поиска. * @defaultValue true */ showClearButton?: boolean; /** * Включить стили режима фокуса для поля поиска. * @defaultValue false */ focusMode?: boolean; } /** * Конфигурация для компонента виджета фильтров. */ export interface GlobalFiltersWidgetConfig { /** * Максимальное количество значений фильтра для отображения перед показом "показать еще". * @defaultValue 5 */ maxValuesPerFilter?: number; /** * Задержка в миллисекундах для изменений фильтров. * @defaultValue 300 */ debounceMs?: number; /** * Включить темную тему для виджета фильтров. * @defaultValue false */ darkMode?: boolean; } /** * Конфигурация для компонента виджета товаров. */ export interface GlobalProductsWidgetConfig { /** * Количество товаров для отображения на странице. * @defaultValue 20 */ itemsPerPage?: number; /** * Ширина элементов сетки на мобильных устройствах (в пикселях). * @defaultValue 140 */ mobileItemWidth?: number; /** * Ширина элементов сетки на десктопе (в пикселях). * @defaultValue 250 */ desktopItemWidth?: number; /** * Включить темную тему для виджета товаров. * @defaultValue false */ darkMode?: boolean; /** * Показывать элементы управления пагинацией. * @defaultValue true */ showPagination?: boolean; /** * Показывать общее количество товаров. * @defaultValue true */ showTotalCount?: boolean; } /** * Конфигурация для компонента виджета сортировки. */ export interface GlobalSortWidgetConfig { /** * Включить темную тему для виджета сортировки. * @defaultValue false */ darkMode?: boolean; /** * Опция сортировки по умолчанию для использования изначально. * @defaultValue "relevance" */ defaultSort?: string; } /** * Полная конфигурация для Barneo Search Library. * Этот интерфейс определяет все доступные опции конфигурации для всей библиотеки. */ export interface BarneoConfig { /** * Конфигурация API для операций поиска. * @required */ api: ApiConfig; /** * Конфигурация для компонента поискового виджета. */ searchWidget?: GlobalSearchWidgetConfig; /** * Конфигурация для компонента виджета фильтров. */ filtersWidget?: GlobalFiltersWidgetConfig; /** * Конфигурация для компонента виджета товаров. */ productsWidget?: GlobalProductsWidgetConfig; /** * Конфигурация для компонента виджета сортировки. */ sortWidget?: GlobalSortWidgetConfig; } /** * Значения конфигурации по умолчанию для Barneo Search Library. * Эти значения используются, когда конфигурация не предоставлена или когда конкретные опции опущены. */ export const DEFAULT_CONFIG: BarneoConfig = { api: { baseUrl: "", token: "", customerId: "", locationId: "", apiVersion: "v1", }, searchWidget: { placeholder: "Поиск товаров...", debounceMs: 300, minSearchLength: 2, darkMode: false, showClearButton: true, focusMode: false, }, filtersWidget: { maxValuesPerFilter: 5, debounceMs: 300, darkMode: false, }, productsWidget: { itemsPerPage: 20, mobileItemWidth: 140, desktopItemWidth: 250, darkMode: false, showPagination: true, showTotalCount: true, }, sortWidget: { darkMode: false, defaultSort: "relevance", }, };