barneo-search-widget-lib
Version:
Библиотека для поиска по каталогу Barneo на Vue 3
217 lines (209 loc) • 6.79 kB
text/typescript
/**
* 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",
},
};