diff --git a/src/components/button/Button.js b/src/components/button/Button.js index e337ae99..d0bc7d28 100644 --- a/src/components/button/Button.js +++ b/src/components/button/Button.js @@ -30,6 +30,9 @@ function Button({ className, rel, setProps, + // onClick prop needs to be overridable for dcc.ConfirmDialog + // eslint-disable-next-line react/prop-types + onClick, ...otherProps }) { const incrementClicks = () => { @@ -38,7 +41,7 @@ function Button({ } }; const useLink = href && !disabled; - otherProps[useLink ? 'preOnClick' : 'onClick'] = incrementClicks; + otherProps[useLink ? 'preOnClick' : 'onClick'] = onClick || incrementClicks; if (useLink) { // react-bootstrap strips out target prop if tag isn't an anchor element, diff --git a/src/components/button/__tests__/Button.test.js b/src/components/button/__tests__/Button.test.js index 55e336a4..49ffe1fa 100644 --- a/src/components/button/__tests__/Button.test.js +++ b/src/components/button/__tests__/Button.test.js @@ -135,4 +135,18 @@ describe('Button', () => { await user.click(button.getByText('Clickable')); expect(mockEventListener.mock.calls).toHaveLength(0); }); + + test('onClick can be overridden', async () => { + const user = userEvent.setup(); + const mockOnClick = jest.fn(); + const button = render( + + ); + + expect(mockOnClick.mock.calls).toHaveLength(0); + await user.click(button.getByText('Clickable')); + expect(mockOnClick.mock.calls).toHaveLength(1); + }); }); diff --git a/uv.lock b/uv.lock index b0432e53..d2acf616 100644 --- a/uv.lock +++ b/uv.lock @@ -1,10 +1,9 @@ version = 1 -revision = 1 -requires-python = ">=3.9, <4" +requires-python = ">=3.9" resolution-markers = [ - "python_full_version < '3.11'", - "python_full_version == '3.11.*'", "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", ] [[package]] @@ -327,7 +326,6 @@ requires-dist = [ { name = "numpy", marker = "extra == 'pandas'", specifier = ">=2.0.2" }, { name = "pandas", marker = "extra == 'pandas'", specifier = ">=2.2.3" }, ] -provides-extras = ["pandas"] [package.metadata.requires-dev] dev = [