From 6bc10b79e5adc1c5563faa4c3e1287f438da784c Mon Sep 17 00:00:00 2001 From: Sarah Dayan <5370675+sarahdayan@users.noreply.github.com> Date: Wed, 13 Oct 2021 17:50:43 +0200 Subject: [PATCH 1/4] feat: add optional name to plugins --- packages/autocomplete-core/src/types/AutocompletePlugin.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/autocomplete-core/src/types/AutocompletePlugin.ts b/packages/autocomplete-core/src/types/AutocompletePlugin.ts index 014534038..bd291c6eb 100644 --- a/packages/autocomplete-core/src/types/AutocompletePlugin.ts +++ b/packages/autocomplete-core/src/types/AutocompletePlugin.ts @@ -31,4 +31,10 @@ export type AutocompletePlugin< * @link https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/plugins/#param-data */ data?: TData; + /** + * A name to identify the plugin. + * + * @link https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/plugins/#param-name + */ + name?: string; }; From 210c066bf0a6625beb51c846e2cf6be47ad53cd8 Mon Sep 17 00:00:00 2001 From: Sarah Dayan <5370675+sarahdayan@users.noreply.github.com> Date: Wed, 13 Oct 2021 17:51:15 +0200 Subject: [PATCH 2/4] feat: name all plugins --- .../__tests__/createAlgoliaInsightsPlugin.test.ts | 9 +++++++++ .../src/createAlgoliaInsightsPlugin.ts | 1 + .../__tests__/createQuerySuggestionsPlugin.test.ts | 14 ++++++++++++++ .../src/createQuerySuggestionsPlugin.ts | 1 + .../createLocalStorageRecentSearchesPlugin.test.ts | 11 +++++++++++ .../__tests__/createRecentSearchesPlugin.test.ts | 12 ++++++++++++ .../src/createLocalStorageRecentSearchesPlugin.ts | 7 ++++++- .../src/createRecentSearchesPlugin.ts | 1 + .../src/__tests__/createTagsPlugin.test.tsx | 5 +++++ .../src/createTagsPlugin.tsx | 1 + 10 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 packages/autocomplete-plugin-recent-searches/src/__tests__/createLocalStorageRecentSearchesPlugin.test.ts diff --git a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts index b7cee2d35..0c51b192c 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts @@ -1,3 +1,12 @@ +import insightsClient from 'search-insights'; + +import { createAlgoliaInsightsPlugin } from '../createAlgoliaInsightsPlugin'; + describe('createAlgoliaInsightsPlugin', () => { + test('has a name', () => { + const plugin = createAlgoliaInsightsPlugin({ insightsClient }); + + expect(plugin.name).toBe('aa.algoliaInsightsPlugin'); + }); test.todo('tests'); }); diff --git a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts index 935db2885..11d42dd65 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts @@ -116,6 +116,7 @@ export function createAlgoliaInsightsPlugin({ }, 0); return { + name: 'aa.algoliaInsightsPlugin', subscribe({ setContext, onSelect, onActive }) { setContext({ algoliaInsightsPlugin: { insights } }); diff --git a/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts b/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts index f984b4a21..8451aa376 100644 --- a/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts +++ b/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts @@ -1,4 +1,18 @@ +import { createQuerySuggestionsPlugin } from '../createQuerySuggestionsPlugin'; +import { createSearchClient } from '../../../../test/utils'; + +const searchClient = createSearchClient(); + describe('createQuerySuggestionsPlugin', () => { + test('has a name', () => { + const plugin = createQuerySuggestionsPlugin({ + searchClient, + indexName: 'indexName', + }); + + expect(plugin.name).toBe('aa.querySuggestionsPlugin'); + }); + test.todo('adds a source'); test.todo('fills the input with the query item key'); diff --git a/packages/autocomplete-plugin-query-suggestions/src/createQuerySuggestionsPlugin.ts b/packages/autocomplete-plugin-query-suggestions/src/createQuerySuggestionsPlugin.ts index dd49940ef..385e75904 100644 --- a/packages/autocomplete-plugin-query-suggestions/src/createQuerySuggestionsPlugin.ts +++ b/packages/autocomplete-plugin-query-suggestions/src/createQuerySuggestionsPlugin.ts @@ -81,6 +81,7 @@ export function createQuerySuggestionsPlugin< undefined > { return { + name: 'aa.querySuggestionsPlugin', getSources({ query, setQuery, refresh, state }) { function onTapAhead(item: TItem) { setQuery(`${item.query} `); diff --git a/packages/autocomplete-plugin-recent-searches/src/__tests__/createLocalStorageRecentSearchesPlugin.test.ts b/packages/autocomplete-plugin-recent-searches/src/__tests__/createLocalStorageRecentSearchesPlugin.test.ts new file mode 100644 index 000000000..57651e73e --- /dev/null +++ b/packages/autocomplete-plugin-recent-searches/src/__tests__/createLocalStorageRecentSearchesPlugin.test.ts @@ -0,0 +1,11 @@ +import { createLocalStorageRecentSearchesPlugin } from '../createLocalStorageRecentSearchesPlugin'; + +describe('createLocalStorageRecentSearchesPlugin', () => { + test('has a name', () => { + const plugin = createLocalStorageRecentSearchesPlugin({ + key: 'autocomplete', + }); + + expect(plugin.name).toBe('aa.localStorageRecentSearchesPlugin'); + }); +}); diff --git a/packages/autocomplete-plugin-recent-searches/src/__tests__/createRecentSearchesPlugin.test.ts b/packages/autocomplete-plugin-recent-searches/src/__tests__/createRecentSearchesPlugin.test.ts index abf253945..4f4edf0e0 100644 --- a/packages/autocomplete-plugin-recent-searches/src/__tests__/createRecentSearchesPlugin.test.ts +++ b/packages/autocomplete-plugin-recent-searches/src/__tests__/createRecentSearchesPlugin.test.ts @@ -1,4 +1,16 @@ +import { noop } from '@algolia/autocomplete-shared'; + +import { createRecentSearchesPlugin } from '../createRecentSearchesPlugin'; + describe('createRecentSearchesPlugin', () => { + test('has a name', () => { + const plugin = createRecentSearchesPlugin({ + storage: { onAdd: noop, onRemove: noop, getAll: () => [] }, + }); + + expect(plugin.name).toBe('aa.recentSearchesPlugin'); + }); + test.todo('saves the query on select'); test.todo('does not save the query on select without item input value'); diff --git a/packages/autocomplete-plugin-recent-searches/src/createLocalStorageRecentSearchesPlugin.ts b/packages/autocomplete-plugin-recent-searches/src/createLocalStorageRecentSearchesPlugin.ts index ffb494b6e..4a21f24ef 100644 --- a/packages/autocomplete-plugin-recent-searches/src/createLocalStorageRecentSearchesPlugin.ts +++ b/packages/autocomplete-plugin-recent-searches/src/createLocalStorageRecentSearchesPlugin.ts @@ -72,9 +72,14 @@ export function createLocalStorageRecentSearchesPlugin< search, }); - return createRecentSearchesPlugin({ + const recentSearchesPlugin = createRecentSearchesPlugin({ transformSource, storage, subscribe, }); + + return { + ...recentSearchesPlugin, + name: 'aa.localStorageRecentSearchesPlugin', + }; } diff --git a/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts b/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts index bf50e5acb..252975bda 100644 --- a/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts +++ b/packages/autocomplete-plugin-recent-searches/src/createRecentSearchesPlugin.ts @@ -78,6 +78,7 @@ export function createRecentSearchesPlugin({ const lastItemsRef = createRef>([]); return { + name: 'aa.recentSearchesPlugin', subscribe: subscribe ?? getDefaultSubcribe(store), onSubmit({ state }) { const { query } = state; diff --git a/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx b/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx index 6db6a09f7..547ebbfcf 100644 --- a/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx +++ b/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx @@ -11,6 +11,11 @@ beforeEach(() => { }); describe('createTagsPlugin', () => { + test('has a name', () => { + const tagsPlugin = createTagsPlugin(); + + expect(tagsPlugin.name).toBe('aa.tagsPlugin'); + }); test('adds a tags source', async () => { const container = document.createElement('div'); const panelContainer = document.createElement('div'); diff --git a/packages/autocomplete-plugin-tags/src/createTagsPlugin.tsx b/packages/autocomplete-plugin-tags/src/createTagsPlugin.tsx index 0bf1c401b..802e61e20 100644 --- a/packages/autocomplete-plugin-tags/src/createTagsPlugin.tsx +++ b/packages/autocomplete-plugin-tags/src/createTagsPlugin.tsx @@ -93,6 +93,7 @@ export function createTagsPlugin< const tagsApi = { setTags: tags.set, addTags: tags.add }; return { + name: 'aa.tagsPlugin', subscribe(params) { const { setContext, onSelect, setIsOpen, refresh } = params; const subscribers = getTagsSubscribers(); From 1f3f876ad02e0f1f749bb3638edc8c8b74397e90 Mon Sep 17 00:00:00 2001 From: Sarah Dayan <5370675+sarahdayan@users.noreply.github.com> Date: Wed, 13 Oct 2021 18:00:46 +0200 Subject: [PATCH 3/4] style: lint --- .../src/__tests__/createQuerySuggestionsPlugin.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts b/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts index 8451aa376..1cfc1d567 100644 --- a/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts +++ b/packages/autocomplete-plugin-query-suggestions/src/__tests__/createQuerySuggestionsPlugin.test.ts @@ -1,5 +1,5 @@ -import { createQuerySuggestionsPlugin } from '../createQuerySuggestionsPlugin'; import { createSearchClient } from '../../../../test/utils'; +import { createQuerySuggestionsPlugin } from '../createQuerySuggestionsPlugin'; const searchClient = createSearchClient(); From b54e8c98a79b1f5be34a00c1e43960c25a069414 Mon Sep 17 00:00:00 2001 From: Sarah Dayan <5370675+sarahdayan@users.noreply.github.com> Date: Thu, 14 Oct 2021 10:53:32 +0200 Subject: [PATCH 4/4] fix: apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: François Chalifour --- .../src/__tests__/createAlgoliaInsightsPlugin.test.ts | 1 + .../src/__tests__/createTagsPlugin.test.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts index 0c51b192c..cc7d22409 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts @@ -8,5 +8,6 @@ describe('createAlgoliaInsightsPlugin', () => { expect(plugin.name).toBe('aa.algoliaInsightsPlugin'); }); + test.todo('tests'); }); diff --git a/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx b/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx index 547ebbfcf..62b5e1958 100644 --- a/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx +++ b/packages/autocomplete-plugin-tags/src/__tests__/createTagsPlugin.test.tsx @@ -16,6 +16,7 @@ describe('createTagsPlugin', () => { expect(tagsPlugin.name).toBe('aa.tagsPlugin'); }); + test('adds a tags source', async () => { const container = document.createElement('div'); const panelContainer = document.createElement('div');