mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
Add react-instantsearch-native
This commit is contained in:
parent
62b44e8bab
commit
05f369091b
68
types/react-instantsearch-native/index.d.ts
vendored
Normal file
68
types/react-instantsearch-native/index.d.ts
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
// Type definitions for react-instantsearch-native 5.3
|
||||
// Project: https://community.algolia.com/react-instantsearch
|
||||
// Definitions by: Gordon Burgett <https://github.com/gburgett>
|
||||
// Justin Powell <https://github.com/jpowell>
|
||||
// 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;
|
||||
};
|
||||
}
|
||||
/**
|
||||
* <InstantSearch> 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<InstantSearchProps> {}
|
||||
|
||||
export class Index extends React.Component<any> {}
|
||||
@ -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 = () => (
|
||||
<InstantSearch appId="" apiKey="" indexName="first">
|
||||
<SearchBox />
|
||||
<AllResults>
|
||||
<div>
|
||||
<Index indexName="first">
|
||||
<IndexResults>
|
||||
<div>
|
||||
<div>first: </div>
|
||||
<Hits />
|
||||
</div>
|
||||
</IndexResults>
|
||||
</Index>
|
||||
<Index indexName="second">
|
||||
<IndexResults>
|
||||
<div>
|
||||
<div>second: </div>
|
||||
<Hits />
|
||||
</div>
|
||||
</IndexResults>
|
||||
</Index>
|
||||
<Index indexName="third">
|
||||
<IndexResults>
|
||||
<div>
|
||||
<div>third: </div>
|
||||
<Hits />
|
||||
</div>
|
||||
</IndexResults>
|
||||
</Index>
|
||||
</div>
|
||||
</AllResults>
|
||||
</InstantSearch>
|
||||
);
|
||||
|
||||
const IndexResults = connectStateResults(
|
||||
({ searchState, searchResults, children }) =>
|
||||
searchResults && searchResults.nbHits !== 0 ? (
|
||||
children as React.ReactElement<any>
|
||||
) : (
|
||||
<div>
|
||||
No results has been found for {searchState.query} and index{' '}
|
||||
{searchResults ? searchResults.index : ''}
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
const AllResults = connectStateResults(({ allSearchResults, children }) => {
|
||||
const hasResults =
|
||||
allSearchResults &&
|
||||
values(allSearchResults).some(results => results.nbHits > 0);
|
||||
|
||||
return !hasResults ? (
|
||||
<div>
|
||||
<div>No results in category, products or brand</div>
|
||||
<Index indexName="first" />
|
||||
<Index indexName="second" />
|
||||
<Index indexName="third" />
|
||||
</div>
|
||||
) : (
|
||||
children as React.ReactElement<any>
|
||||
);
|
||||
});
|
||||
24
types/react-instantsearch-native/tsconfig.json
Normal file
24
types/react-instantsearch-native/tsconfig.json
Normal file
@ -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"
|
||||
]
|
||||
}
|
||||
1
types/react-instantsearch-native/tslint.json
Normal file
1
types/react-instantsearch-native/tslint.json
Normal file
@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
2
types/react-instantsearch/dom.d.ts
vendored
2
types/react-instantsearch/dom.d.ts
vendored
@ -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';
|
||||
|
||||
3
types/react-instantsearch/native.d.ts
vendored
Normal file
3
types/react-instantsearch/native.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export { InstantSearch } from 'react-instantsearch-native';
|
||||
export { Index } from 'react-instantsearch-native';
|
||||
export { Configure } from 'react-instantsearch-native';
|
||||
@ -20,6 +20,7 @@
|
||||
"index.d.ts",
|
||||
"connectors.d.ts",
|
||||
"dom.d.ts",
|
||||
"native.d.ts",
|
||||
"react-instantsearch-tests.tsx"
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user