diff --git a/packages/instantsearch.js/src/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.ts b/packages/instantsearch.js/src/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.ts index e8d53aa45f..9861fd375e 100644 --- a/packages/instantsearch.js/src/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.ts +++ b/packages/instantsearch.js/src/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.ts @@ -18,6 +18,7 @@ import type { Unmounter, UnknownWidgetParams, RecommendResponse, + Hit, AlgoliaHit, } from '../../types'; import type { PlainSearchParameters } from 'algoliasearch-helper'; @@ -33,7 +34,7 @@ export type FrequentlyBoughtTogetherRenderState< /** * The matched recommendations from Algolia API. */ - items: Array>; + items: Array>; /** * Sends an event to the Insights middleware. @@ -78,7 +79,7 @@ export type FrequentlyBoughtTogetherConnectorParams< * Function to transform the items passed to the templates. */ transformItems?: TransformItems< - AlgoliaHit, + Hit, { results: RecommendResponse> } >; }; diff --git a/packages/instantsearch.js/src/connectors/looking-similar/connectLookingSimilar.ts b/packages/instantsearch.js/src/connectors/looking-similar/connectLookingSimilar.ts index 39ab72c763..f3feb39edd 100644 --- a/packages/instantsearch.js/src/connectors/looking-similar/connectLookingSimilar.ts +++ b/packages/instantsearch.js/src/connectors/looking-similar/connectLookingSimilar.ts @@ -18,6 +18,7 @@ import type { Unmounter, UnknownWidgetParams, RecommendResponse, + Hit, AlgoliaHit, } from '../../types'; import type { PlainSearchParameters } from 'algoliasearch-helper'; @@ -33,7 +34,7 @@ export type LookingSimilarRenderState< /** * The matched recommendations from the Algolia API. */ - items: Array>; + items: Array>; /** * Sends an event to the Insights middleware. */ @@ -79,7 +80,7 @@ export type LookingSimilarConnectorParams< * Function to transform the items passed to the templates. */ transformItems?: TransformItems< - AlgoliaHit, + Hit, { results: RecommendResponse> } >; }; diff --git a/packages/instantsearch.js/src/connectors/related-products/connectRelatedProducts.ts b/packages/instantsearch.js/src/connectors/related-products/connectRelatedProducts.ts index 526721aacc..a8ac1aa5df 100644 --- a/packages/instantsearch.js/src/connectors/related-products/connectRelatedProducts.ts +++ b/packages/instantsearch.js/src/connectors/related-products/connectRelatedProducts.ts @@ -18,6 +18,7 @@ import type { Unmounter, UnknownWidgetParams, RecommendResponse, + Hit, AlgoliaHit, } from '../../types'; import type { PlainSearchParameters } from 'algoliasearch-helper'; @@ -33,7 +34,7 @@ export type RelatedProductsRenderState< /** * The matched recommendations from the Algolia API. */ - items: Array>; + items: Array>; /** * Sends an event to the Insights middleware. @@ -80,7 +81,7 @@ export type RelatedProductsConnectorParams< * Function to transform the items passed to the templates. */ transformItems?: TransformItems< - AlgoliaHit, + Hit, { results: RecommendResponse> } >; }; diff --git a/packages/instantsearch.js/src/connectors/trending-items/connectTrendingItems.ts b/packages/instantsearch.js/src/connectors/trending-items/connectTrendingItems.ts index 5454a6b0bc..8f1b1e76bc 100644 --- a/packages/instantsearch.js/src/connectors/trending-items/connectTrendingItems.ts +++ b/packages/instantsearch.js/src/connectors/trending-items/connectTrendingItems.ts @@ -19,6 +19,7 @@ import type { Unmounter, UnknownWidgetParams, RecommendResponse, + Hit, AlgoliaHit, } from '../../types'; import type { PlainSearchParameters } from 'algoliasearch-helper'; @@ -34,7 +35,7 @@ export type TrendingItemsRenderState< /** * The matched recommendations from the Algolia API. */ - items: Array>; + items: Array>; /** * Sends an event to the Insights middleware. @@ -92,7 +93,7 @@ export type TrendingItemsConnectorParams< * Function to transform the items passed to the templates. */ transformItems?: TransformItems< - AlgoliaHit, + Hit, { results: RecommendResponse> } >; }; diff --git a/packages/instantsearch.js/src/widgets/frequently-bought-together/frequently-bought-together.tsx b/packages/instantsearch.js/src/widgets/frequently-bought-together/frequently-bought-together.tsx index 39160ec7c9..1183d7087a 100644 --- a/packages/instantsearch.js/src/widgets/frequently-bought-together/frequently-bought-together.tsx +++ b/packages/instantsearch.js/src/widgets/frequently-bought-together/frequently-bought-together.tsx @@ -20,7 +20,6 @@ import type { PreparedTemplateProps } from '../../lib/templating'; import type { Template, WidgetFactory, - AlgoliaHit, Renderer, BaseHit, RecommendResponse, @@ -83,9 +82,9 @@ const renderer = /> ) : undefined - ) as FrequentlyBoughtTogetherUiProps['headerComponent']; + ) as FrequentlyBoughtTogetherUiProps['headerComponent']; - const itemComponent: FrequentlyBoughtTogetherUiProps['itemComponent'] = + const itemComponent: FrequentlyBoughtTogetherUiProps['itemComponent'] = templates.item ? ({ item, sendEvent: _sendEvent, ...rootProps }) => { return ( @@ -112,7 +111,7 @@ const renderer = /> ) : undefined - ) as FrequentlyBoughtTogetherUiProps['emptyComponent']; + ) as FrequentlyBoughtTogetherUiProps['emptyComponent']; const layoutComponent = ( templates.layout @@ -126,7 +125,7 @@ const renderer = items: data.items, templates: { item: templates.item - ? ({ item }: { item: AlgoliaHit }) => ( + ? ({ item }: { item: Hit }) => ( ) : undefined - ) as FrequentlyBoughtTogetherUiProps>['layout']; + ) as FrequentlyBoughtTogetherUiProps>['layout']; render( >>; + empty: Template>>; /** * Template to use for the header of the widget. @@ -180,7 +179,7 @@ export type FrequentlyBoughtTogetherTemplates< Pick< Parameters< NonNullable< - FrequentlyBoughtTogetherUiProps>['headerComponent'] + FrequentlyBoughtTogetherUiProps>['headerComponent'] > >[0], 'items' @@ -190,7 +189,7 @@ export type FrequentlyBoughtTogetherTemplates< /** * Template to use for each result. This template will receive an object containing a single record. */ - item: TemplateWithBindEvent>; + item: TemplateWithBindEvent>; /** * Template to use to wrap all items. @@ -198,14 +197,12 @@ export type FrequentlyBoughtTogetherTemplates< layout: Template< Pick< Parameters< - NonNullable>['layout']> + NonNullable>['layout']> >[0], 'items' > & { templates: { - item: FrequentlyBoughtTogetherUiProps< - AlgoliaHit - >['itemComponent']; + item: FrequentlyBoughtTogetherUiProps>['itemComponent']; }; cssClasses: Pick; } diff --git a/packages/instantsearch.js/src/widgets/looking-similar/looking-similar.tsx b/packages/instantsearch.js/src/widgets/looking-similar/looking-similar.tsx index 554736f119..323522a7e6 100644 --- a/packages/instantsearch.js/src/widgets/looking-similar/looking-similar.tsx +++ b/packages/instantsearch.js/src/widgets/looking-similar/looking-similar.tsx @@ -20,7 +20,6 @@ import type { PreparedTemplateProps } from '../../lib/templating'; import type { Template, WidgetFactory, - AlgoliaHit, Renderer, BaseHit, RecommendResponse, @@ -82,9 +81,9 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as LookingSimilarUiProps['headerComponent']; + ) as LookingSimilarUiProps['headerComponent']; - const itemComponent: LookingSimilarUiProps['itemComponent'] = + const itemComponent: LookingSimilarUiProps['itemComponent'] = templates.item ? ({ item, sendEvent: _sendEvent, ...rootProps }) => { return ( @@ -111,7 +110,7 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as LookingSimilarUiProps['emptyComponent']; + ) as LookingSimilarUiProps['emptyComponent']; const layoutComponent = ( templates.layout @@ -125,7 +124,7 @@ function createRenderer = BaseHit>({ items: data.items, templates: { item: templates.item - ? ({ item }: { item: AlgoliaHit }) => ( + ? ({ item }: { item: Hit }) => ( = BaseHit>({ /> ) : undefined - ) as LookingSimilarUiProps>['layout']; + ) as LookingSimilarUiProps>['layout']; render( >>; + empty: Template>>; /** * Template to use for the header of the widget. @@ -179,7 +178,7 @@ export type LookingSimilarTemplates< header: Template< Pick< Parameters< - NonNullable>['headerComponent']> + NonNullable>['headerComponent']> >[0], 'items' > & { cssClasses: RecommendClassNames } @@ -188,20 +187,18 @@ export type LookingSimilarTemplates< /** * Template to use for each result. This template will receive an object containing a single record. */ - item: TemplateWithBindEvent>; + item: TemplateWithBindEvent>; /** * Template to use to wrap all items. */ layout: Template< Pick< - Parameters< - NonNullable>['layout']> - >[0], + Parameters>['layout']>>[0], 'items' > & { templates: { - item: LookingSimilarUiProps>['itemComponent']; + item: LookingSimilarUiProps>['itemComponent']; }; cssClasses: Pick; } diff --git a/packages/instantsearch.js/src/widgets/related-products/related-products.tsx b/packages/instantsearch.js/src/widgets/related-products/related-products.tsx index 95a1866937..1c82171632 100644 --- a/packages/instantsearch.js/src/widgets/related-products/related-products.tsx +++ b/packages/instantsearch.js/src/widgets/related-products/related-products.tsx @@ -20,11 +20,10 @@ import type { PreparedTemplateProps } from '../../lib/templating'; import type { Template, WidgetFactory, - AlgoliaHit, + Hit, Renderer, BaseHit, RecommendResponse, - Hit, TemplateWithBindEvent, } from '../../types'; import type { @@ -89,9 +88,9 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as RelatedProductsUiProps['headerComponent']; + ) as RelatedProductsUiProps['headerComponent']; - const itemComponent: RelatedProductsUiProps['itemComponent'] = + const itemComponent: RelatedProductsUiProps['itemComponent'] = templates.item ? ({ item, sendEvent: _sendEvent, ...rootProps }) => { return ( @@ -118,7 +117,7 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as RelatedProductsUiProps['emptyComponent']; + ) as RelatedProductsUiProps['emptyComponent']; const layoutComponent = ( templates.layout @@ -132,7 +131,7 @@ function createRenderer = BaseHit>({ items: data.items, templates: { item: templates.item - ? ({ item }: { item: AlgoliaHit }) => ( + ? ({ item }: { item: Hit }) => ( = BaseHit>({ /> ) : undefined - ) as RelatedProductsUiProps>['layout']; + ) as RelatedProductsUiProps>['layout']; render( >>; + empty: Template>>; /** * Template to use for the header of the widget. @@ -186,7 +185,7 @@ export type RelatedProductsTemplates< header: Template< Pick< Parameters< - NonNullable>['headerComponent']> + NonNullable>['headerComponent']> >[0], 'items' > & { cssClasses: RecommendClassNames } @@ -195,20 +194,18 @@ export type RelatedProductsTemplates< /** * Template to use for each result. This template will receive an object containing a single record. */ - item: TemplateWithBindEvent>; + item: TemplateWithBindEvent>; /** * Template to use to wrap all items. */ layout: Template< Pick< - Parameters< - NonNullable>['layout']> - >[0], + Parameters>['layout']>>[0], 'items' > & { templates: { - item: RelatedProductsUiProps>['itemComponent']; + item: RelatedProductsUiProps>['itemComponent']; }; cssClasses: Pick; } diff --git a/packages/instantsearch.js/src/widgets/trending-items/trending-items.tsx b/packages/instantsearch.js/src/widgets/trending-items/trending-items.tsx index 0914b5e7ff..e6df0cac86 100644 --- a/packages/instantsearch.js/src/widgets/trending-items/trending-items.tsx +++ b/packages/instantsearch.js/src/widgets/trending-items/trending-items.tsx @@ -20,7 +20,6 @@ import type { PreparedTemplateProps } from '../../lib/templating'; import type { Template, WidgetFactory, - AlgoliaHit, Renderer, BaseHit, RecommendResponse, @@ -89,9 +88,9 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as TrendingItemsUiProps['headerComponent']; + ) as TrendingItemsUiProps['headerComponent']; - const itemComponent: TrendingItemsUiProps['itemComponent'] = + const itemComponent: TrendingItemsUiProps['itemComponent'] = templates.item ? ({ item, sendEvent: _sendEvent, ...rootProps }) => { return ( @@ -118,7 +117,7 @@ function createRenderer = BaseHit>({ /> ) : undefined - ) as TrendingItemsUiProps['emptyComponent']; + ) as TrendingItemsUiProps['emptyComponent']; const layoutComponent = ( templates.layout @@ -132,7 +131,7 @@ function createRenderer = BaseHit>({ items: data.items, templates: { item: templates.item - ? ({ item }: { item: AlgoliaHit }) => ( + ? ({ item }: { item: Hit }) => ( = BaseHit>({ /> ) : undefined - ) as TrendingItemsUiProps>['layout']; + ) as TrendingItemsUiProps>['layout']; render( = BaseHit> = /** * Template to use when there are no results. */ - empty: Template>>; + empty: Template>>; /** * Template to use for the header of the widget. @@ -185,7 +184,7 @@ export type TrendingItemsTemplates = BaseHit> = header: Template< Pick< Parameters< - NonNullable>['headerComponent']> + NonNullable>['headerComponent']> >[0], 'items' > & { cssClasses: RecommendClassNames } @@ -194,20 +193,18 @@ export type TrendingItemsTemplates = BaseHit> = /** * Template to use for each result. This template will receive an object containing a single record. */ - item: TemplateWithBindEvent>; + item: TemplateWithBindEvent>; /** * Template to use to wrap all items. */ layout: Template< Pick< - Parameters< - NonNullable>['layout']> - >[0], + Parameters>['layout']>>[0], 'items' > & { templates: { - item: TrendingItemsUiProps>['itemComponent']; + item: TrendingItemsUiProps>['itemComponent']; }; cssClasses: Pick; } diff --git a/packages/react-instantsearch/src/widgets/FrequentlyBoughtTogether.tsx b/packages/react-instantsearch/src/widgets/FrequentlyBoughtTogether.tsx index 1b9f32bca7..95bf313c50 100644 --- a/packages/react-instantsearch/src/widgets/FrequentlyBoughtTogether.tsx +++ b/packages/react-instantsearch/src/widgets/FrequentlyBoughtTogether.tsx @@ -9,11 +9,11 @@ import type { FrequentlyBoughtTogetherProps as FrequentlyBoughtTogetherPropsUiComponentProps, Pragma, } from 'instantsearch-ui-components'; -import type { AlgoliaHit, BaseHit, Hit } from 'instantsearch.js'; +import type { Hit, BaseHit } from 'instantsearch.js'; import type { UseFrequentlyBoughtTogetherProps } from 'react-instantsearch-core'; type UiProps = Pick< - FrequentlyBoughtTogetherPropsUiComponentProps>, + FrequentlyBoughtTogetherPropsUiComponentProps>, | 'items' | 'itemComponent' | 'headerComponent' @@ -24,7 +24,7 @@ type UiProps = Pick< >; export type FrequentlyBoughtTogetherProps = Omit< - FrequentlyBoughtTogetherPropsUiComponentProps>, + FrequentlyBoughtTogetherPropsUiComponentProps>, keyof UiProps > & UseFrequentlyBoughtTogetherProps & { @@ -86,7 +86,7 @@ export function FrequentlyBoughtTogether({ ); const uiProps: UiProps = { - items: items as Array>, + items, itemComponent: _itemComponent, headerComponent, emptyComponent, diff --git a/packages/react-instantsearch/src/widgets/LookingSimilar.tsx b/packages/react-instantsearch/src/widgets/LookingSimilar.tsx index 5bf65fb39f..16174432fc 100644 --- a/packages/react-instantsearch/src/widgets/LookingSimilar.tsx +++ b/packages/react-instantsearch/src/widgets/LookingSimilar.tsx @@ -6,11 +6,11 @@ import type { LookingSimilarProps as LookingSimilarPropsUiComponentProps, Pragma, } from 'instantsearch-ui-components'; -import type { AlgoliaHit, BaseHit, Hit } from 'instantsearch.js'; +import type { Hit, BaseHit } from 'instantsearch.js'; import type { UseLookingSimilarProps } from 'react-instantsearch-core'; type UiProps = Pick< - LookingSimilarPropsUiComponentProps>, + LookingSimilarPropsUiComponentProps>, | 'items' | 'itemComponent' | 'headerComponent' @@ -21,7 +21,7 @@ type UiProps = Pick< >; export type LookingSimilarProps = Omit< - LookingSimilarPropsUiComponentProps>, + LookingSimilarPropsUiComponentProps>, keyof UiProps > & UseLookingSimilarProps & { @@ -84,7 +84,7 @@ export function LookingSimilar({ ); const uiProps: UiProps = { - items: items as Array>, + items, itemComponent: _itemComponent, headerComponent, emptyComponent,