diff --git a/src/Step.tsx b/src/Step.tsx index 9f29512..6aa57ad 100644 --- a/src/Step.tsx +++ b/src/Step.tsx @@ -28,7 +28,7 @@ export interface StepProps { itemWrapperRender?: StepsProps['itemWrapperRender']; // Event - onClick: (index: number) => void; + onClick?: (index: number) => void; } export default function Step(props: StepProps) { @@ -105,7 +105,7 @@ export default function Step(props: StepProps) { accessibilityProps.tabIndex = 0; accessibilityProps.onClick = (e) => { onItemClick?.(e); - onClick(index); + onClick?.(index); }; accessibilityProps.onKeyDown = (e) => { diff --git a/tests/index.test.tsx b/tests/index.test.tsx index f31d169..261fea1 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -270,6 +270,27 @@ describe('Steps', () => { expect(onClick).toHaveBeenCalled(); }); + it('should not crash when item has onClick but Steps has no onChange', () => { + const onItemClick = jest.fn(); + const { container } = render( + , + ); + + const btn = container.querySelectorAll('.rc-steps-item')[0]; + fireEvent.click(btn); + expect(onItemClick).toHaveBeenCalledTimes(1); + }); + it('disabled', () => { const onChange = jest.fn(); const { container } = render( @@ -278,7 +299,7 @@ describe('Steps', () => { const items = container.querySelectorAll('.rc-steps-item'); fireEvent.click(items[2]); - expect(onChange).not.toBeCalled(); + expect(onChange).not.toHaveBeenCalled(); }); it('key board support', () => {