From 52216327dbbd1e5ddbc16ab67a191d33f7e87618 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Mon, 29 Nov 2021 17:51:39 -0600 Subject: [PATCH 1/2] chain onKeyDown prop --- packages/@react-aria/searchfield/src/useSearchField.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/@react-aria/searchfield/src/useSearchField.ts b/packages/@react-aria/searchfield/src/useSearchField.ts index cda77832a8d..777b147aa7b 100644 --- a/packages/@react-aria/searchfield/src/useSearchField.ts +++ b/packages/@react-aria/searchfield/src/useSearchField.ts @@ -12,6 +12,7 @@ import {AriaButtonProps} from '@react-types/button'; import {AriaSearchFieldProps} from '@react-types/searchfield'; +import {chain} from '@react-aria/utils'; import {HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, RefObject} from 'react'; // @ts-ignore import intlMessages from '../intl/*.json'; @@ -92,7 +93,7 @@ export function useSearchField( ...props, value: state.value, onChange: state.setValue, - onKeyDown, + onKeyDown: chain(onKeyDown, props.onKeyDown), type }, inputRef); From 8db0d7457dd31dde249157b14eba43f28f682871 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Mon, 29 Nov 2021 17:52:20 -0600 Subject: [PATCH 2/2] add test for onKeyDown --- .../@react-aria/searchfield/test/useSearchField.test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/@react-aria/searchfield/test/useSearchField.test.js b/packages/@react-aria/searchfield/test/useSearchField.test.js index a395763900b..bcbb9daaa84 100644 --- a/packages/@react-aria/searchfield/test/useSearchField.test.js +++ b/packages/@react-aria/searchfield/test/useSearchField.test.js @@ -54,6 +54,7 @@ describe('useSearchField hook', () => { let preventDefault = jest.fn(); let stopPropagation = jest.fn(); let onSubmit = jest.fn(); + let onKeyDown = jest.fn(); let event = (key) => ({ key, preventDefault, @@ -97,6 +98,12 @@ describe('useSearchField hook', () => { let {inputProps} = renderSearchHook({onClear, onSubmit, defaultValue: 'ABC'}); expect(inputProps.defaultValue).not.toBeDefined(); }); + + it('onKeyDown prop is called', () => { + let {inputProps} = renderSearchHook({onKeyDown}); + inputProps.onKeyDown(event('Enter')); + expect(onKeyDown).toHaveBeenCalledTimes(1); + }); }); });