diff --git a/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts b/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts index be860ec65..4103ebc95 100644 --- a/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts +++ b/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts @@ -18,6 +18,7 @@ export type CreateRecentSearchesPluginParams< transformSource?(params: { source: AutocompleteSource; onRemove(id: string): void; + onTapAhead(item: TItem): void; }): AutocompleteSource; }; @@ -55,7 +56,7 @@ export function createRecentSearchesPlugin({ } as any); } }, - getSources({ query, refresh }) { + getSources({ query, setQuery, refresh }) { lastItemsRef.current = store.getAll(query); function onRemove(id: string) { @@ -63,6 +64,11 @@ export function createRecentSearchesPlugin({ refresh(); } + function onTapAhead(item: TItem) { + setQuery(item.query); + refresh(); + } + return Promise.resolve(lastItemsRef.current).then((items) => { if (items.length === 0) { return []; @@ -78,9 +84,10 @@ export function createRecentSearchesPlugin({ getItems() { return items; }, - templates: getTemplates({ onRemove }), + templates: getTemplates({ onRemove, onTapAhead }), }, onRemove, + onTapAhead, }), ]; }); diff --git a/packages/autocomplete-plugin-recent-searches/src/getTemplates.tsx b/packages/autocomplete-plugin-recent-searches/src/getTemplates.tsx index 43bf16dda..8813f71ca 100644 --- a/packages/autocomplete-plugin-recent-searches/src/getTemplates.tsx +++ b/packages/autocomplete-plugin-recent-searches/src/getTemplates.tsx @@ -3,13 +3,15 @@ import { reverseHighlightHit, SourceTemplates } from '@algolia/autocomplete-js'; import { RecentSearchesItem } from './types'; -export type GetTemplatesParams = { +export type GetTemplatesParams = { onRemove(id: string): void; + onTapAhead(item: TItem): void; }; export function getTemplates({ onRemove, -}: GetTemplatesParams): SourceTemplates { + onTapAhead, +}: GetTemplatesParams): SourceTemplates { return { item({ item, createElement, Fragment }) { return ( @@ -50,6 +52,23 @@ export function getTemplates({ + );