From 09e114924eb1250c3786112b11d124c4c4482fae Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 11 Oct 2021 21:22:28 +0300 Subject: [PATCH] fix: submit on enter keypress for checkboxes and radio buttons --- src/__tests__/keyboard/plugin/functional.ts | 25 +++++++++++++++++++++ src/keyboard/plugins/functional.ts | 17 +++++++++++--- src/utils/index.ts | 1 + src/utils/misc/hasFormSubmit.ts | 6 +++++ 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 src/utils/misc/hasFormSubmit.ts diff --git a/src/__tests__/keyboard/plugin/functional.ts b/src/__tests__/keyboard/plugin/functional.ts index cc72f8e0..7c9c4744 100644 --- a/src/__tests__/keyboard/plugin/functional.ts +++ b/src/__tests__/keyboard/plugin/functional.ts @@ -117,6 +117,31 @@ test('trigger click event on [Enter] keypress on HTMLButtonElement', () => { `) }) +test.each` + elementType | submit + ${'checkbox'} | ${'input'} + ${'checkbox'} | ${'button'} + ${'radio'} | ${'input'} + ${'radio'} | ${'button'} +`( + 'trigger submit event on [Enter] keypress on HTMLInputElement type=$elementType with submit $submit', + ({elementType, submit}) => { + const {element, getEvents} = setup( + `
+ + ${submit === 'button' && ''} + ${submit === 'input' && ''} +
`, + ) + + element.querySelector('input')?.focus() + + userEvent.keyboard('[Enter]') + + expect(getEvents('submit')).toHaveLength(1) + }, +) + test('trigger click event on [Space] keyup on HTMLButtonElement', () => { const {element, getEventSnapshot, getEvents} = setup(`