fix(desktop): prevent recipe parameter form from reloading the app on Enter (#10522)
Signed-off-by: Seydi Charyyev <seydi.charyev@gmail.com>
This commit is contained in:
@@ -94,7 +94,8 @@ const ParameterInputModal: React.FC<ParameterInputModalProps> = ({
|
||||
setInputValues((prevValues: Record<string, string>) => ({ ...prevValues, [name]: value }));
|
||||
};
|
||||
|
||||
const handleSubmit = (): void => {
|
||||
const handleSubmit = (e: React.SyntheticEvent): void => {
|
||||
e.preventDefault();
|
||||
setValidationErrors({});
|
||||
|
||||
const requiredParams: Parameter[] = parameters.filter(needsUserValue);
|
||||
|
||||
@@ -80,6 +80,30 @@ describe('ParameterInputModal', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('prevents the default form submission when Enter is pressed in a parameter field', async () => {
|
||||
const user = userEvent.setup();
|
||||
renderWithIntl(<ParameterInputModal {...defaultProps} />);
|
||||
|
||||
let submitFired = false;
|
||||
let defaultPrevented: boolean | undefined;
|
||||
const captureSubmit = (event: Event) => {
|
||||
submitFired = true;
|
||||
// Read before suppressing, otherwise this listener would mask the result
|
||||
defaultPrevented = event.defaultPrevented;
|
||||
event.preventDefault();
|
||||
};
|
||||
document.addEventListener('submit', captureSubmit);
|
||||
|
||||
try {
|
||||
await user.type(screen.getByLabelText(/test parameter 1/i), 'test value{Enter}');
|
||||
} finally {
|
||||
document.removeEventListener('submit', captureSubmit);
|
||||
}
|
||||
|
||||
expect(submitFired).toBe(true);
|
||||
expect(defaultPrevented).toBe(true);
|
||||
});
|
||||
|
||||
it('shows validation errors for required parameters', async () => {
|
||||
const user = userEvent.setup();
|
||||
renderWithIntl(<ParameterInputModal {...defaultProps} />);
|
||||
|
||||
Reference in New Issue
Block a user