Skip to content

Commit bd45a77

Browse files
feat(core): pass refresh to all events
1 parent b33f08e commit bd45a77

23 files changed

+367
-346
lines changed

packages/autocomplete-core/src/__tests__/getInputProps.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@ describe('getInputProps', () => {
459459
});
460460
const {
461461
inputElement,
462+
refresh,
462463
setCollections,
463464
setContext,
464465
setIsOpen,
@@ -481,6 +482,7 @@ describe('getInputProps', () => {
481482
item: { label: '1', __autocomplete_id: 0 },
482483
itemInputValue: 'a',
483484
itemUrl: undefined,
485+
refresh,
484486
source: expect.any(Object),
485487
setCollections,
486488
setContext,
@@ -631,6 +633,7 @@ describe('getInputProps', () => {
631633
const onHighlight = jest.fn();
632634
const {
633635
inputElement,
636+
refresh,
634637
setCollections,
635638
setContext,
636639
setIsOpen,
@@ -660,6 +663,7 @@ describe('getInputProps', () => {
660663
itemInputValue: 'a',
661664
itemUrl: undefined,
662665
source: expect.any(Object),
666+
refresh,
663667
setCollections,
664668
setContext,
665669
setIsOpen,
@@ -869,6 +873,7 @@ describe('getInputProps', () => {
869873
};
870874
const {
871875
inputElement,
876+
refresh,
872877
setCollections,
873878
setContext,
874879
setIsOpen,
@@ -904,6 +909,7 @@ describe('getInputProps', () => {
904909
},
905910
itemInputValue: '',
906911
itemUrl: '#1',
912+
refresh,
907913
setCollections,
908914
setContext,
909915
setIsOpen,
@@ -1004,6 +1010,7 @@ describe('getInputProps', () => {
10041010
};
10051011
const {
10061012
inputElement,
1013+
refresh,
10071014
setCollections,
10081015
setContext,
10091016
setIsOpen,
@@ -1036,6 +1043,7 @@ describe('getInputProps', () => {
10361043
item: { label: '1' },
10371044
itemInputValue: '',
10381045
itemUrl: undefined,
1046+
refresh,
10391047
setCollections,
10401048
setContext,
10411049
setIsOpen,

packages/autocomplete-core/src/__tests__/onReset.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('onReset', () => {
2121
expect(onResetProp).toHaveBeenCalledTimes(1);
2222
expect(onResetProp).toHaveBeenCalledWith({
2323
event: expect.any(Event),
24+
refresh: expect.any(Function),
2425
setCollections: expect.any(Function),
2526
setContext: expect.any(Function),
2627
setIsOpen: expect.any(Function),

packages/autocomplete-core/src/__tests__/onSubmit.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('onSubmit', () => {
2121
expect(onSubmitProp).toHaveBeenCalledTimes(1);
2222
expect(onSubmitProp).toHaveBeenCalledWith({
2323
event: expect.any(Event),
24+
refresh: expect.any(Function),
2425
setCollections: expect.any(Function),
2526
setContext: expect.any(Function),
2627
setIsOpen: expect.any(Function),

packages/autocomplete-core/src/createAutocomplete.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
AutocompleteApi,
1010
AutocompleteOptions,
1111
BaseItem,
12-
Subscribers,
12+
AutocompleteSubscribers,
1313
} from './types';
1414

1515
export function createAutocomplete<
@@ -22,7 +22,7 @@ export function createAutocomplete<
2222
): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent> {
2323
checkOptions(options);
2424

25-
const subscribers: Subscribers<TItem> = [];
25+
const subscribers: AutocompleteSubscribers<TItem> = [];
2626
const props = getDefaultProps(options, subscribers);
2727
const store = createStore(stateReducer, props);
2828

packages/autocomplete-core/src/getDefaultProps.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
AutocompleteOptions,
33
BaseItem,
44
InternalAutocompleteOptions,
5-
Subscribers,
5+
AutocompleteSubscribers,
66
} from './types';
77
import {
88
generateAutocompleteId,
@@ -13,7 +13,7 @@ import {
1313

1414
export function getDefaultProps<TItem extends BaseItem>(
1515
props: AutocompleteOptions<TItem>,
16-
subscribers: Subscribers<TItem>
16+
subscribers: AutocompleteSubscribers<TItem>
1717
): InternalAutocompleteOptions<TItem> {
1818
const environment: InternalAutocompleteOptions<TItem>['environment'] = (typeof window !==
1919
'undefined'

packages/autocomplete-core/src/getPropGetters.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
import { onInput } from './onInput';
22
import { onKeyDown } from './onKeyDown';
33
import {
4-
InternalAutocompleteOptions,
5-
AutocompleteSetters,
4+
AutocompleteScopeApi,
65
AutocompleteStore,
7-
AutocompleteRefresh,
8-
GetPanelProps,
6+
BaseItem,
97
GetEnvironmentProps,
108
GetFormProps,
119
GetInputProps,
1210
GetItemProps,
1311
GetLabelProps,
1412
GetListProps,
13+
GetPanelProps,
1514
GetRootProps,
16-
BaseItem,
15+
InternalAutocompleteOptions,
1716
} from './types';
1817
import { getSelectedItem, isOrContainsNode } from './utils';
1918

2019
interface GetPropGettersOptions<TItem extends BaseItem>
21-
extends AutocompleteSetters<TItem> {
20+
extends AutocompleteScopeApi<TItem> {
2221
store: AutocompleteStore<TItem>;
2322
props: InternalAutocompleteOptions<TItem>;
24-
refresh: AutocompleteRefresh;
2523
}
2624

2725
export function getPropGetters<
@@ -121,6 +119,7 @@ export function getPropGetters<
121119
setIsOpen,
122120
setStatus,
123121
setContext,
122+
refresh,
124123
event,
125124
});
126125

@@ -141,6 +140,7 @@ export function getPropGetters<
141140
setIsOpen,
142141
setStatus,
143142
setContext,
143+
refresh,
144144
event,
145145
});
146146

@@ -324,6 +324,7 @@ export function getPropGetters<
324324
setIsOpen,
325325
setStatus,
326326
setContext,
327+
refresh,
327328
event,
328329
});
329330
}
@@ -380,6 +381,7 @@ export function getPropGetters<
380381
setIsOpen,
381382
setStatus,
382383
setContext,
384+
refresh,
383385
event,
384386
});
385387
});

packages/autocomplete-core/src/onInput.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import {
2-
AutocompleteSetters,
2+
AutocompleteScopeApi,
33
AutocompleteState,
44
AutocompleteStore,
5-
AutocompleteRefresh,
65
BaseItem,
76
InternalAutocompleteOptions,
87
} from './types';
@@ -11,7 +10,7 @@ import { getSelectedItem } from './utils';
1110
let lastStalledId: number | null = null;
1211

1312
interface OnInputParams<TItem extends BaseItem>
14-
extends AutocompleteSetters<TItem> {
13+
extends AutocompleteScopeApi<TItem> {
1514
query: string;
1615
event: any;
1716
store: AutocompleteStore<TItem>;
@@ -24,7 +23,6 @@ interface OnInputParams<TItem extends BaseItem>
2423
* but we want to close the panel in that case.
2524
*/
2625
nextState?: Partial<AutocompleteState<TItem>>;
27-
refresh: AutocompleteRefresh;
2826
}
2927

3028
export function onInput<TItem extends BaseItem>({
@@ -151,6 +149,7 @@ export function onInput<TItem extends BaseItem>({
151149
setIsOpen,
152150
setStatus,
153151
setContext,
152+
refresh,
154153
event,
155154
});
156155
}

packages/autocomplete-core/src/onKeyDown.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
import { onInput } from './onInput';
22
import {
3-
AutocompleteSetters,
3+
AutocompleteScopeApi,
44
AutocompleteStore,
5-
AutocompleteRefresh,
65
BaseItem,
76
InternalAutocompleteOptions,
87
} from './types';
98
import { getSelectedItem } from './utils';
109

1110
interface OnKeyDownOptions<TItem extends BaseItem>
12-
extends AutocompleteSetters<TItem> {
11+
extends AutocompleteScopeApi<TItem> {
1312
event: KeyboardEvent;
1413
store: AutocompleteStore<TItem>;
1514
props: InternalAutocompleteOptions<TItem>;
16-
refresh: AutocompleteRefresh;
1715
}
1816

1917
export function onKeyDown<TItem extends BaseItem>({
@@ -66,6 +64,7 @@ export function onKeyDown<TItem extends BaseItem>({
6664
setIsOpen,
6765
setStatus,
6866
setContext,
67+
refresh,
6968
event,
7069
});
7170
}
@@ -110,6 +109,7 @@ export function onKeyDown<TItem extends BaseItem>({
110109
setIsOpen,
111110
setStatus,
112111
setContext,
112+
refresh,
113113
event,
114114
});
115115
props.navigator.navigateNewTab({
@@ -132,6 +132,7 @@ export function onKeyDown<TItem extends BaseItem>({
132132
setIsOpen,
133133
setStatus,
134134
setContext,
135+
refresh,
135136
event,
136137
});
137138
props.navigator.navigateNewWindow({
@@ -156,6 +157,7 @@ export function onKeyDown<TItem extends BaseItem>({
156157
setIsOpen,
157158
setStatus,
158159
setContext,
160+
refresh,
159161
event,
160162
});
161163
props.navigator.navigate({
@@ -195,6 +197,7 @@ export function onKeyDown<TItem extends BaseItem>({
195197
setIsOpen,
196198
setStatus,
197199
setContext,
200+
refresh,
198201
event,
199202
});
200203
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { AutocompletePropGetters } from './AutocompletePropGetters';
2+
import { AutocompleteSetters } from './AutocompleteSetters';
3+
4+
export type BaseItem = Record<string, unknown>;
5+
6+
export interface AutocompleteScopeApi<TItem extends BaseItem>
7+
extends AutocompleteSetters<TItem> {
8+
/**
9+
* Triggers a search to refresh the state.
10+
*/
11+
refresh: () => Promise<void>;
12+
}
13+
14+
export type AutocompleteApi<
15+
TItem extends BaseItem,
16+
TEvent = Event,
17+
TMouseEvent = MouseEvent,
18+
TKeyboardEvent = KeyboardEvent
19+
> = AutocompleteScopeApi<TItem> &
20+
AutocompletePropGetters<TItem, TEvent, TMouseEvent, TKeyboardEvent>;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { BaseItem } from './AutocompleteApi';
2+
import { InternalAutocompleteSource } from './AutocompleteSource';
3+
4+
export interface AutocompleteCollection<TItem extends BaseItem> {
5+
source: InternalAutocompleteSource<TItem>;
6+
items: TItem[];
7+
}
8+
9+
export interface AutocompleteCollectionItemsArray<TItem extends BaseItem> {
10+
source: InternalAutocompleteSource<TItem>;
11+
items: TItem[][];
12+
}

0 commit comments

Comments
 (0)