@seekora-ai/ui-sdk-core 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +9 -1
- package/dist/index.esm.js +81 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +81 -6
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ThemeConfig, Theme } from '@seekora-ai/ui-sdk-types';
|
|
2
|
-
import { SearchResponse, SeekoraClient, SearchOptions } from '@seekora-ai/search-sdk';
|
|
2
|
+
import { SearchResponse, SeekoraClient, SearchOptions, FilterOptions, FiltersResponse, FacetValuesSearchResponse, FiltersSchemaResponse } from '@seekora-ai/search-sdk';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Field Mapping Utilities
|
|
@@ -355,6 +355,14 @@ declare class SearchStateManager {
|
|
|
355
355
|
getAbTestId(): string | undefined;
|
|
356
356
|
getAbVariant(): string | undefined;
|
|
357
357
|
setAbTest(abTestId?: string, abVariant?: string): void;
|
|
358
|
+
/** Build filter_by string from current refinements */
|
|
359
|
+
buildFilterString(): string;
|
|
360
|
+
/** Fetch filter values independently from search */
|
|
361
|
+
fetchFilters(options?: FilterOptions): Promise<FiltersResponse>;
|
|
362
|
+
/** Search within a facet's values (for autocomplete in facet search boxes) */
|
|
363
|
+
searchFacetValues(facetName: string, query: string): Promise<FacetValuesSearchResponse>;
|
|
364
|
+
/** Get filter schema (for UI initialization) */
|
|
365
|
+
getFiltersSchema(): Promise<FiltersSchemaResponse>;
|
|
358
366
|
clear(): void;
|
|
359
367
|
}
|
|
360
368
|
|
package/dist/index.esm.js
CHANGED
|
@@ -303,12 +303,6 @@ function generateComponentClasses(prefix) {
|
|
|
303
303
|
color: var(${prefix}-color-textSecondary);
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
.seekora-results__loading {
|
|
307
|
-
padding: var(${prefix}-spacing-large);
|
|
308
|
-
text-align: center;
|
|
309
|
-
color: var(${prefix}-color-textSecondary);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
306
|
/* Pagination */
|
|
313
307
|
.seekora-pagination {
|
|
314
308
|
display: flex;
|
|
@@ -1677,6 +1671,87 @@ class SearchStateManager {
|
|
|
1677
1671
|
this.abVariant = abVariant;
|
|
1678
1672
|
log.verbose('SearchStateManager: A/B test updated', { abTestId, abVariant });
|
|
1679
1673
|
}
|
|
1674
|
+
// =========================================================================
|
|
1675
|
+
// Filters API
|
|
1676
|
+
// =========================================================================
|
|
1677
|
+
/** Build filter_by string from current refinements */
|
|
1678
|
+
buildFilterString() {
|
|
1679
|
+
if (this.state.refinements.length === 0)
|
|
1680
|
+
return '';
|
|
1681
|
+
const filtersByField = {};
|
|
1682
|
+
this.state.refinements.forEach((refinement) => {
|
|
1683
|
+
if (!filtersByField[refinement.field]) {
|
|
1684
|
+
filtersByField[refinement.field] = [];
|
|
1685
|
+
}
|
|
1686
|
+
filtersByField[refinement.field].push(refinement.value);
|
|
1687
|
+
});
|
|
1688
|
+
const filterParts = [];
|
|
1689
|
+
Object.entries(filtersByField).forEach(([field, values]) => {
|
|
1690
|
+
values.forEach((value) => {
|
|
1691
|
+
filterParts.push(`${field}:${value}`);
|
|
1692
|
+
});
|
|
1693
|
+
});
|
|
1694
|
+
return filterParts.join(' && ');
|
|
1695
|
+
}
|
|
1696
|
+
/** Fetch filter values independently from search */
|
|
1697
|
+
async fetchFilters(options) {
|
|
1698
|
+
log.verbose('SearchStateManager: Fetching filters', { options });
|
|
1699
|
+
try {
|
|
1700
|
+
const filterString = this.buildFilterString();
|
|
1701
|
+
const response = await this.client.getFilters({
|
|
1702
|
+
q: this.state.query || undefined,
|
|
1703
|
+
filter: filterString || undefined,
|
|
1704
|
+
...options,
|
|
1705
|
+
});
|
|
1706
|
+
log.info('SearchStateManager: Filters fetched', {
|
|
1707
|
+
filterCount: response?.filters?.length,
|
|
1708
|
+
});
|
|
1709
|
+
return response;
|
|
1710
|
+
}
|
|
1711
|
+
catch (err) {
|
|
1712
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
1713
|
+
log.error('SearchStateManager: Failed to fetch filters', { error: error.message });
|
|
1714
|
+
throw error;
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
/** Search within a facet's values (for autocomplete in facet search boxes) */
|
|
1718
|
+
async searchFacetValues(facetName, query) {
|
|
1719
|
+
log.verbose('SearchStateManager: Searching facet values', { facetName, query });
|
|
1720
|
+
try {
|
|
1721
|
+
const filterString = this.buildFilterString();
|
|
1722
|
+
const response = await this.client.searchFacetValues(facetName, {
|
|
1723
|
+
q: this.state.query || undefined,
|
|
1724
|
+
filter: filterString || undefined,
|
|
1725
|
+
facetQuery: query,
|
|
1726
|
+
});
|
|
1727
|
+
log.info('SearchStateManager: Facet values fetched', {
|
|
1728
|
+
facetName,
|
|
1729
|
+
valueCount: response?.values?.length,
|
|
1730
|
+
});
|
|
1731
|
+
return response;
|
|
1732
|
+
}
|
|
1733
|
+
catch (err) {
|
|
1734
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
1735
|
+
log.error('SearchStateManager: Failed to search facet values', { facetName, error: error.message });
|
|
1736
|
+
throw error;
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
/** Get filter schema (for UI initialization) */
|
|
1740
|
+
async getFiltersSchema() {
|
|
1741
|
+
log.verbose('SearchStateManager: Getting filters schema');
|
|
1742
|
+
try {
|
|
1743
|
+
const response = await this.client.getFiltersSchema();
|
|
1744
|
+
log.info('SearchStateManager: Filters schema fetched', {
|
|
1745
|
+
fieldCount: response?.fields?.length,
|
|
1746
|
+
});
|
|
1747
|
+
return response;
|
|
1748
|
+
}
|
|
1749
|
+
catch (err) {
|
|
1750
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
1751
|
+
log.error('SearchStateManager: Failed to get filters schema', { error: error.message });
|
|
1752
|
+
throw error;
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1680
1755
|
// Clear all state
|
|
1681
1756
|
clear() {
|
|
1682
1757
|
this.state = {
|