Skip to content

Commit 2d76ff4

Browse files
committed
fix: do not forward disabled to trigger
1 parent d76e391 commit 2d76ff4

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

src/Dropdown.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ const Dropdown = React.forwardRef<TriggerRef, DropdownProps>((props, ref) => {
6565
overlay,
6666
children,
6767
onVisibleChange,
68+
disabled,
6869
...otherProps
69-
} = props;
70+
} = props as DropdownProps & { disabled?: boolean };
7071

7172
const [triggerVisible, setTriggerVisible] = React.useState<boolean>();
7273
const mergedVisible = 'visible' in props ? visible : triggerVisible;

tests/props.test.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { render } from '@testing-library/react';
2+
import * as React from 'react';
3+
import Dropdown from '../src';
4+
5+
const mockTriggerRender = jest.fn();
6+
7+
jest.mock('@rc-component/trigger', () => {
8+
const ReactModule: typeof React = jest.requireActual('react');
9+
10+
return {
11+
__esModule: true,
12+
default: ReactModule.forwardRef<HTMLElement, Record<string, unknown>>(
13+
(props, ref) => {
14+
mockTriggerRender(props);
15+
return ReactModule.createElement('div', { ref });
16+
},
17+
),
18+
};
19+
});
20+
21+
it('does not forward disabled to Trigger', () => {
22+
const runtimeProps = { disabled: true };
23+
24+
render(
25+
<Dropdown {...runtimeProps} visible overlay={<div />}>
26+
<button type="button">open</button>
27+
</Dropdown>,
28+
);
29+
30+
const triggerProps = mockTriggerRender.mock.calls[0][0];
31+
expect(triggerProps).not.toHaveProperty('disabled');
32+
expect(triggerProps).toHaveProperty('popupVisible', true);
33+
});

0 commit comments

Comments
 (0)