From 7e6e8a9284542b0c69e7107ff84df7ffc8fe519c Mon Sep 17 00:00:00 2001 From: Haroen Viaene Date: Fri, 11 Sep 2020 17:51:16 +0200 Subject: [PATCH] react-instantsearch: fix typing of connectCurrentRefinements (#47193) --- types/react-instantsearch-core/index.d.ts | 26 +++++++++---------- .../react-instantsearch-core-tests.tsx | 12 +++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/types/react-instantsearch-core/index.d.ts b/types/react-instantsearch-core/index.d.ts index 10756f15da..54dbbdae5b 100644 --- a/types/react-instantsearch-core/index.d.ts +++ b/types/react-instantsearch-core/index.d.ts @@ -131,7 +131,7 @@ export type ConnectorProvided = TProvided & { */ export function createConnector( connectorDesc: ConnectorDescription -): ((stateless: React.StatelessComponent>) => React.ComponentClass) & +): ((stateless: React.FunctionComponent>) => React.ComponentClass) & (>>( Composed: React.ComponentType ) => ConnectedComponentClass, TExposed>); @@ -185,7 +185,7 @@ export interface AutocompleteExposed { } // tslint:disable-next-line:no-unnecessary-generics -export function connectAutoComplete(stateless: React.StatelessComponent>): React.ComponentClass; +export function connectAutoComplete(stateless: React.FunctionComponent>): React.ComponentClass; export function connectAutoComplete, TDoc = BasicDoc>( Composed: React.ComponentType ): ConnectedComponentClass, AutocompleteExposed>; @@ -224,7 +224,7 @@ export interface CurrentRefinementsExposed { export interface CurrentRefinementsProvided { /** a function to remove a single filter */ - refine: (refinement: RefinementValue | RefinementValue[]) => void; + refine: (refinement: RefinementValue | RefinementValue[] | Refinement[]) => void; /** * all the filters, the value is to pass to the refine function for removing all currentrefinements, * label is for the display. When existing several refinements for the same atribute name, then you @@ -237,7 +237,7 @@ export interface CurrentRefinementsProvided { } export function connectCurrentRefinements( - stateless: React.StatelessComponent + stateless: React.FunctionComponent ): React.ComponentClass; export function connectCurrentRefinements>( Composed: React.ComponentType @@ -273,7 +273,7 @@ export interface GeoSearchProvided { * https://community.algolia.com/react-instantsearch/connectors/connectGeoSearch.html */ export function connectGeoSearch( - stateless: React.StatelessComponent + stateless: React.FunctionComponent ): React.ComponentClass; export function connectGeoSearch>, THit>( ctor: React.ComponentType @@ -319,7 +319,7 @@ export type HighlightProps = HighlightProvided & HighlightPass * connectHighlight connector provides the logic to create an highlighter component that will retrieve, parse and render an highlighted attribute from an Algolia hit. */ export function connectHighlight( - stateless: React.StatelessComponent> + stateless: React.FunctionComponent> ): React.ComponentClass>; export function connectHighlight>, TDoc>( ctor: React.ComponentType @@ -338,7 +338,7 @@ export interface HitsProvided { * https://community.algolia.com/react-instantsearch/connectors/connectHits.html */ // tslint:disable-next-line:no-unnecessary-generics -export function connectHits(stateless: React.StatelessComponent>): React.ComponentClass; +export function connectHits(stateless: React.FunctionComponent>): React.ComponentClass; export function connectHits, THit>( ctor: React.ComponentType ): ConnectedComponentClass>; @@ -388,7 +388,7 @@ export interface MenuExposed { * * https://community.algolia.com/react-instantsearch/connectors/connectMenu.html */ -export function connectMenu(stateless: React.StatelessComponent): React.ComponentClass; +export function connectMenu(stateless: React.FunctionComponent): React.ComponentClass; export function connectMenu>( ctor: React.ComponentType ): ConnectedComponentClass; @@ -429,7 +429,7 @@ export interface NumericMenuExposed { * https://community.algolia.com/react-instantsearch/connectors/connectNumericMenu.html */ export function connectNumericMenu( - stateless: React.StatelessComponent + stateless: React.FunctionComponent ): React.ComponentClass; export function connectNumericMenu>( ctor: React.ComponentType @@ -487,7 +487,7 @@ export interface RefinementListExposed { * https://community.algolia.com/react-instantsearch/connectors/connectRefinementList.html */ export function connectRefinementList( - stateless: React.StatelessComponent + stateless: React.FunctionComponent ): React.ComponentClass; export function connectRefinementList>( ctor: React.ComponentType @@ -508,7 +508,7 @@ export interface SearchBoxExposed { defaultRefinement?: string; } export function connectSearchBox( - stateless: React.StatelessComponent + stateless: React.FunctionComponent ): React.ComponentClass; export function connectSearchBox>( ctor: React.ComponentType @@ -542,7 +542,7 @@ export interface StateResultsProvided { * * https://community.algolia.com/react-instantsearch/connectors/connectStateResults.html */ -export function connectStateResults(stateless: React.StatelessComponent): React.ComponentClass; +export function connectStateResults(stateless: React.FunctionComponent): React.ComponentClass; export function connectStateResults>>( ctor: React.ComponentType ): ConnectedComponentClass; @@ -552,7 +552,7 @@ interface StatsProvided { processingTimeMS: number; } -export function connectStats(stateless: React.StatelessComponent): React.ComponentClass; +export function connectStats(stateless: React.FunctionComponent): React.ComponentClass; export function connectStats>( ctor: React.ComponentType ): ConnectedComponentClass; diff --git a/types/react-instantsearch-core/react-instantsearch-core-tests.tsx b/types/react-instantsearch-core/react-instantsearch-core-tests.tsx index 2342f24575..d29a28fb68 100644 --- a/types/react-instantsearch-core/react-instantsearch-core-tests.tsx +++ b/types/react-instantsearch-core/react-instantsearch-core-tests.tsx @@ -300,6 +300,18 @@ import { item} />; }; +() => { + const MyClearRefinements = ({ refine, items }: CurrentRefinementsProvided) => ( + + ); + + const ConnectedClearRefinements = connectCurrentRefinements(MyClearRefinements); + + item} />; +}; + () => { function renderRefinement(label: string, value: Refinement['value'], refine: CurrentRefinementsProvided['refine']) { return (