From 2d76ff429a04533bd454b83652f1446c5e34b229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E8=B4=A7=E6=9C=BA=E5=99=A8=E4=BA=BA?= Date: Fri, 10 Jul 2026 21:37:55 +0800 Subject: [PATCH] fix: do not forward disabled to trigger --- src/Dropdown.tsx | 3 ++- tests/props.test.tsx | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/props.test.tsx diff --git a/src/Dropdown.tsx b/src/Dropdown.tsx index ecbba77..f2deba4 100644 --- a/src/Dropdown.tsx +++ b/src/Dropdown.tsx @@ -65,8 +65,9 @@ const Dropdown = React.forwardRef((props, ref) => { overlay, children, onVisibleChange, + disabled, ...otherProps - } = props; + } = props as DropdownProps & { disabled?: boolean }; const [triggerVisible, setTriggerVisible] = React.useState(); const mergedVisible = 'visible' in props ? visible : triggerVisible; diff --git a/tests/props.test.tsx b/tests/props.test.tsx new file mode 100644 index 0000000..6eae17e --- /dev/null +++ b/tests/props.test.tsx @@ -0,0 +1,33 @@ +import { render } from '@testing-library/react'; +import * as React from 'react'; +import Dropdown from '../src'; + +const mockTriggerRender = jest.fn(); + +jest.mock('@rc-component/trigger', () => { + const ReactModule: typeof React = jest.requireActual('react'); + + return { + __esModule: true, + default: ReactModule.forwardRef>( + (props, ref) => { + mockTriggerRender(props); + return ReactModule.createElement('div', { ref }); + }, + ), + }; +}); + +it('does not forward disabled to Trigger', () => { + const runtimeProps = { disabled: true }; + + render( + }> + + , + ); + + const triggerProps = mockTriggerRender.mock.calls[0][0]; + expect(triggerProps).not.toHaveProperty('disabled'); + expect(triggerProps).toHaveProperty('popupVisible', true); +});