use-shopify
Version:
React hooks to work with Shopify's Storefront API
46 lines (45 loc) • 1.36 kB
TypeScript
import { DocumentNode } from 'graphql';
import { Product, Collection, QueryFunction } from '../types';
import { SearchQueryResult } from './searchQuery';
/**
* API
*/
export interface UseSearchQueries {
SEARCH_QUERY: string | DocumentNode;
}
export interface UseSearchConfig {
collections: boolean;
products: boolean;
pageSize: number;
memoize: boolean;
debounce: number;
}
interface UseSearchArguments {
query: QueryFunction;
config?: Partial<UseSearchConfig>;
queries?: Partial<UseSearchQueries>;
}
export interface UseSearchValues extends Pick<SearchState, 'searchTerm' | 'loading' | 'products' | 'collections' | 'results' | 'hasMoreResults'> {
search: (searchTerm?: string) => Promise<void>;
setSearchTerm: (searchTerm?: string) => void;
reset: () => void;
}
/**
* State
*/
export interface SearchState {
loading: boolean;
products: Product[];
collections: Collection[];
results: SearchQueryResult[];
config: UseSearchConfig;
searchTerm: string;
hasMoreResults: boolean;
stale: boolean;
lastSearchTerm: string | void;
}
/**
* useSearch
*/
export declare const useSearch: <ExpectedResult extends SearchQueryResult>({ query: userQueryFunction, config: userConfig, queries, }: UseSearchArguments) => UseSearchValues;
export {};