Skip to content

Commit 35122bc

Browse files
committed
fix: inline mode should not close the menu
1 parent 7f05d16 commit 35122bc

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/Menu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ const Menu: React.FC<MenuProps> = props => {
363363
}
364364

365365
// Whatever selectable, always close it
366-
if (!multiple && mergedOpenKeys.length) {
366+
if (!multiple && mergedOpenKeys.length && mergedMode !== 'inline') {
367367
triggerOpenKeys(EMPTY_LIST);
368368
}
369369
};

tests/Menu.spec.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,34 @@ describe('Menu', () => {
577577

578578
test('basic');
579579
test('not selectable', { selectable: false });
580+
test('inlineCollapsed', { mode: 'inline', inlineCollapsed: true });
581+
582+
it('not close inline', async () => {
583+
jest.useFakeTimers();
584+
585+
const onOpenChange = jest.fn();
586+
587+
const wrapper = mount(
588+
<Menu openKeys={['bamboo']} mode="inline" onOpenChange={onOpenChange}>
589+
<SubMenu key="bamboo" title="Bamboo">
590+
<MenuItem key="light">Light</MenuItem>
591+
</SubMenu>
592+
</Menu>,
593+
);
594+
595+
// Open menu
596+
await act(async () => {
597+
jest.runAllTimers();
598+
wrapper.update();
599+
});
600+
601+
wrapper.update();
602+
603+
wrapper.find('.rc-menu-item').last().simulate('click');
604+
expect(onOpenChange).not.toHaveBeenCalled();
605+
606+
jest.useRealTimers();
607+
});
580608
});
581609
});
582610
/* eslint-enable */

0 commit comments

Comments
 (0)