Skip to content

Commit fef567b

Browse files
authored
fix(Toolbar): only fire onClick on SPACE/ENTER if toolbar is focused (#4192)
Fixes #4190
1 parent d5f6d0d commit fef567b

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

packages/main/src/components/Toolbar/Toolbar.cy.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ describe('Toolbar', () => {
213213
cy.mount(
214214
<Toolbar active data-testid="tb" onClick={click}>
215215
Text
216+
<input data-testid="input" />
216217
</Toolbar>
217218
);
218219
cy.findByTestId('tb').click();
@@ -224,6 +225,10 @@ describe('Toolbar', () => {
224225
cy.findByTestId('tb').type(' ', { force: true });
225226
cy.get('@onClickSpy').should('have.been.calledThrice');
226227

228+
cy.findByTestId('input').trigger('keydown', { code: 'Enter' });
229+
cy.findByTestId('input').trigger('keydown', { code: 'Space' });
230+
cy.get('@onClickSpy').should('have.been.calledThrice');
231+
227232
cy.mount(
228233
<Toolbar data-testid="tb" onClick={click}>
229234
Text

packages/main/src/components/Toolbar/index.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
'use client';
22

3-
import {
4-
debounce,
5-
enrichEventWithDetails,
6-
useI18nBundle,
7-
useIsomorphicLayoutEffect,
8-
useSyncRef
9-
} from '@ui5/webcomponents-react-base';
3+
import { debounce, useI18nBundle, useIsomorphicLayoutEffect, useSyncRef } from '@ui5/webcomponents-react-base';
104
import { clsx } from 'clsx';
115
import React, {
126
Children,
@@ -265,9 +259,12 @@ const Toolbar = forwardRef<HTMLDivElement, ToolbarPropTypes>((props, ref) => {
265259
const handleToolbarClick = (e) => {
266260
if (active && typeof onClick === 'function') {
267261
const isSpaceEnterDown = e.type === 'keydown' && (e.code === 'Enter' || e.code === 'Space');
262+
if (isSpaceEnterDown && e.target !== e.currentTarget) {
263+
return;
264+
}
268265
if (e.type === 'click' || isSpaceEnterDown) {
269266
e.preventDefault();
270-
onClick(enrichEventWithDetails(e));
267+
onClick(e);
271268
}
272269
}
273270
};

0 commit comments

Comments
 (0)