diff --git a/packages/autocomplete-core/src/__tests__/getInputProps.test.ts b/packages/autocomplete-core/src/__tests__/getInputProps.test.ts index 8a56a473d..297e58735 100644 --- a/packages/autocomplete-core/src/__tests__/getInputProps.test.ts +++ b/packages/autocomplete-core/src/__tests__/getInputProps.test.ts @@ -1068,9 +1068,14 @@ describe('getInputProps', () => { }); }); - test('calls onInput and onSelect without item URL', async () => { + test('calls getSources and onSelect without item URL', async () => { const onSelect = jest.fn(); - const onInput = jest.fn(); + const getSources = jest.fn(() => [ + createSource({ + onSelect, + getItems: () => [{ label: '1' }, { label: '2' }], + }), + ]); const navigator = createNavigator(); const { inputElement, @@ -1082,30 +1087,26 @@ describe('getInputProps', () => { setActiveItemId, setStatus, } = createPlayground(createAutocomplete, { - onInput, navigator, defaultActiveItemId: 0, - initialState: { - isOpen: true, - collections: [ - createCollection({ - source: { onSelect }, - items: [{ label: '1' }, { label: '2' }], - }), - ], - }, + getSources, }); inputElement.focus(); - userEvent.type(inputElement, '{enter}'); + userEvent.type(inputElement, 'a'); + await runAllMicroTasks(); + + expect(getSources).toHaveBeenCalledTimes(1); - expect(onInput).toHaveBeenCalledTimes(1); + userEvent.type(inputElement, '{enter}'); await runAllMicroTasks(); + + expect(getSources).toHaveBeenCalledTimes(2); expect(onSelect).toHaveBeenCalledTimes(1); expect(onSelect).toHaveBeenCalledWith({ event: expect.any(KeyboardEvent), - item: { label: '1' }, - itemInputValue: '', + item: expect.objectContaining({ label: '1' }), + itemInputValue: 'a', itemUrl: undefined, refresh, setCollections, @@ -1118,14 +1119,17 @@ describe('getInputProps', () => { state: { collections: [ { - items: [{ label: '1' }, { label: '2' }], + items: [ + expect.objectContaining({ label: '1' }), + expect.objectContaining({ label: '2' }), + ], source: expect.any(Object), }, ], completion: null, context: {}, isOpen: false, - query: '', + query: 'a', activeItemId: 0, status: 'idle', }, diff --git a/packages/autocomplete-core/src/onInput.ts b/packages/autocomplete-core/src/onInput.ts index b644d7b10..3564a2127 100644 --- a/packages/autocomplete-core/src/onInput.ts +++ b/packages/autocomplete-core/src/onInput.ts @@ -36,17 +36,6 @@ export function onInput({ store, ...setters }: OnInputParams): Promise { - if (props.onInput) { - return Promise.resolve( - props.onInput({ - query, - refresh, - state: store.getState(), - ...setters, - }) - ); - } - if (lastStalledId) { props.environment.clearTimeout(lastStalledId); } diff --git a/packages/autocomplete-core/src/types/AutocompleteOptions.ts b/packages/autocomplete-core/src/types/AutocompleteOptions.ts index 9437fcdab..e195967d3 100644 --- a/packages/autocomplete-core/src/types/AutocompleteOptions.ts +++ b/packages/autocomplete-core/src/types/AutocompleteOptions.ts @@ -122,13 +122,6 @@ export interface AutocompleteOptions { * The function called when the Autocomplete form is reset. */ onReset?(params: OnResetParams): void; - /** - * The function called when the input changes. - * - * This turns the experience in controlled mode, leaving you in charge of - * updating the state. - */ - onInput?(params: OnInputParams): void; /** * The array of plugins. */ diff --git a/packages/website/docs/partials/createAutocomplete-props.md b/packages/website/docs/partials/createAutocomplete-props.md index 5f901f871..92d22cf27 100644 --- a/packages/website/docs/partials/createAutocomplete-props.md +++ b/packages/website/docs/partials/createAutocomplete-props.md @@ -90,14 +90,6 @@ The function called when the Autocomplete form is submitted. The function called when the Autocomplete form is reset. -### `onInput` - -> `(params: { query: string, state: AutocompleteState, ...setters }) => void` - -The function called when the input changes. - -This turns the experience in controlled mode, leaving you in charge of updating the state. - ### `debug` > `boolean` | defaults to `false`