diff --git a/types/react-instantsearch-native/index.d.ts b/types/react-instantsearch-native/index.d.ts new file mode 100644 index 0000000000..6b328de132 --- /dev/null +++ b/types/react-instantsearch-native/index.d.ts @@ -0,0 +1,68 @@ +// Type definitions for react-instantsearch-native 5.3 +// Project: https://community.algolia.com/react-instantsearch +// Definitions by: Gordon Burgett +// Justin Powell +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.9 + +import * as React from 'react'; + +// Core +export { createConnector } from 'react-instantsearch-core'; +export { HIGHLIGHT_TAGS } from 'react-instantsearch-core'; +export { translatable } from 'react-instantsearch-core'; + +// Widget +export { Configure } from 'react-instantsearch-core'; + +// Connectors +export { connectAutoComplete } from 'react-instantsearch-core'; +export { connectBreadcrumb } from 'react-instantsearch-core'; +export { connectConfigure } from 'react-instantsearch-core'; +export { connectCurrentRefinements } from 'react-instantsearch-core'; +export { connectGeoSearch } from 'react-instantsearch-core'; +export { connectHierarchicalMenu } from 'react-instantsearch-core'; +export { connectHighlight } from 'react-instantsearch-core'; +export { connectHits } from 'react-instantsearch-core'; +export { connectHitsPerPage } from 'react-instantsearch-core'; +export { connectInfiniteHits } from 'react-instantsearch-core'; +export { connectMenu } from 'react-instantsearch-core'; +export { connectNumericMenu } from 'react-instantsearch-core'; +export { connectPagination } from 'react-instantsearch-core'; +export { connectPoweredBy } from 'react-instantsearch-core'; +export { connectRange } from 'react-instantsearch-core'; +export { connectRefinementList } from 'react-instantsearch-core'; +export { connectScrollTo } from 'react-instantsearch-core'; +export { connectSearchBox } from 'react-instantsearch-core'; +export { connectSortBy } from 'react-instantsearch-core'; +export { connectStateResults } from 'react-instantsearch-core'; +export { connectStats } from 'react-instantsearch-core'; +export { connectToggleRefinement } from 'react-instantsearch-core'; + +// Native +export interface InstantSearchProps { + apiKey: string; + appId: string; + indexName: string; + + algoliaClient?: any; + searchClient?: any; + createURL?: (...args: any[]) => any; + searchState?: any; + refresh?: boolean; + onSearchStateChange?: (...args: any[]) => any; + onSearchParameters?: (...args: any[]) => any; + resultsState?: any; + root?: { + Root: string | ((...args: any[]) => any); + props: any; + }; +} +/** + * is the root component of all React InstantSearch implementations. It provides all the connected components (aka widgets) a means to interact with the searchState. + * + * https://community.algolia.com/react-instantsearch/widgets/%3CInstantSearch%3E.html + */ +export class InstantSearch extends React.Component {} + +export class Index extends React.Component {} diff --git a/types/react-instantsearch-native/react-instantsearch-native-tests.tsx b/types/react-instantsearch-native/react-instantsearch-native-tests.tsx new file mode 100644 index 0000000000..7a369b0487 --- /dev/null +++ b/types/react-instantsearch-native/react-instantsearch-native-tests.tsx @@ -0,0 +1,69 @@ +import * as React from "react"; + +import { SearchBox, Hits, Highlight, Menu } from "react-instantsearch-dom"; +import { InstantSearch, Index, connectStateResults } from 'react-instantsearch-native'; +import { values } from 'lodash'; + +// https://community.algolia.com/react-instantsearch/guide/Conditional_display.html +const App = () => ( + + + +
+ + +
+
first:
+ +
+
+
+ + +
+
second:
+ +
+
+
+ + +
+
third:
+ +
+
+
+
+
+
+); + +const IndexResults = connectStateResults( + ({ searchState, searchResults, children }) => + searchResults && searchResults.nbHits !== 0 ? ( + children as React.ReactElement + ) : ( +
+ No results has been found for {searchState.query} and index{' '} + {searchResults ? searchResults.index : ''} +
+ ) +); + +const AllResults = connectStateResults(({ allSearchResults, children }) => { + const hasResults = + allSearchResults && + values(allSearchResults).some(results => results.nbHits > 0); + + return !hasResults ? ( +
+
No results in category, products or brand
+ + + +
+ ) : ( + children as React.ReactElement + ); +}); diff --git a/types/react-instantsearch-native/tsconfig.json b/types/react-instantsearch-native/tsconfig.json new file mode 100644 index 0000000000..d4fb7501c4 --- /dev/null +++ b/types/react-instantsearch-native/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "jsx": "react", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "react-instantsearch-native-tests.tsx" + ] +} diff --git a/types/react-instantsearch-native/tslint.json b/types/react-instantsearch-native/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-instantsearch-native/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/react-instantsearch/dom.d.ts b/types/react-instantsearch/dom.d.ts index 27704d48a3..ad857eaa58 100644 --- a/types/react-instantsearch/dom.d.ts +++ b/types/react-instantsearch/dom.d.ts @@ -1,5 +1,3 @@ -import * as React from 'react'; - export { InstantSearch, InstantSearchProps } from 'react-instantsearch-dom'; export { Index } from 'react-instantsearch-dom'; export { Breadcrumb } from 'react-instantsearch-dom'; diff --git a/types/react-instantsearch/native.d.ts b/types/react-instantsearch/native.d.ts new file mode 100644 index 0000000000..ff6ff89a3f --- /dev/null +++ b/types/react-instantsearch/native.d.ts @@ -0,0 +1,3 @@ +export { InstantSearch } from 'react-instantsearch-native'; +export { Index } from 'react-instantsearch-native'; +export { Configure } from 'react-instantsearch-native'; diff --git a/types/react-instantsearch/tsconfig.json b/types/react-instantsearch/tsconfig.json index 946b64bf0b..9782cbd17e 100644 --- a/types/react-instantsearch/tsconfig.json +++ b/types/react-instantsearch/tsconfig.json @@ -20,6 +20,7 @@ "index.d.ts", "connectors.d.ts", "dom.d.ts", + "native.d.ts", "react-instantsearch-tests.tsx" ] }