Skip to content

Commit 3e78566

Browse files
feat(js): provide setters and refresh to render API (#598)
1 parent dfa503d commit 3e78566

3 files changed

Lines changed: 45 additions & 2 deletions

File tree

packages/autocomplete-js/src/__tests__/render.test.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,48 @@ describe('render', () => {
536536
});
537537
});
538538

539+
test('provides the scoped API', () => {
540+
const container = document.createElement('div');
541+
const panelContainer = document.createElement('div');
542+
543+
document.body.appendChild(panelContainer);
544+
autocomplete<{ label: string }>({
545+
container,
546+
panelContainer,
547+
initialState: {
548+
isOpen: true,
549+
},
550+
getSources() {
551+
return [
552+
{
553+
sourceId: 'testSource',
554+
getItems() {
555+
return [{ label: '1' }];
556+
},
557+
templates: {
558+
item({ item }) {
559+
return item.label;
560+
},
561+
},
562+
},
563+
];
564+
},
565+
render(params) {
566+
expect(params).toEqual(
567+
expect.objectContaining({
568+
refresh: expect.any(Function),
569+
setActiveItemId: expect.any(Function),
570+
setCollections: expect.any(Function),
571+
setContext: expect.any(Function),
572+
setIsOpen: expect.any(Function),
573+
setQuery: expect.any(Function),
574+
setStatus: expect.any(Function),
575+
})
576+
);
577+
},
578+
});
579+
});
580+
539581
test('does not render the sections without results and noResults template on multi sources', async () => {
540582
const container = document.createElement('div');
541583
const panelContainer = document.createElement('div');

packages/autocomplete-js/src/render.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ export function renderPanel<TItem extends BaseItem>(
196196
createElement,
197197
Fragment,
198198
components,
199+
...autocompleteScopeApi,
199200
},
200201
dom.panel
201202
);

packages/autocomplete-js/src/types/AutocompleteRender.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { BaseItem } from '@algolia/autocomplete-core';
1+
import { AutocompleteScopeApi, BaseItem } from '@algolia/autocomplete-core';
22

33
import { AutocompleteComponents } from './AutocompleteComponents';
44
import { Pragma, PragmaFrag, VNode } from './AutocompleteRenderer';
55
import { AutocompleteState } from './AutocompleteState';
66

77
export type AutocompleteRender<TItem extends BaseItem> = (
8-
params: {
8+
params: AutocompleteScopeApi<TItem> & {
99
children: VNode;
1010
state: AutocompleteState<TItem>;
1111
sections: VNode[];

0 commit comments

Comments
 (0)