Skip to content

Commit e23d947

Browse files
committed
fix: not prevent when child
1 parent 7b9b2aa commit e23d947

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/SelectInput/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ export default React.forwardRef<SelectInputRef, SelectInputProps>(function Selec
171171
// ====================== Open ======================
172172
const onInternalMouseDown: SelectInputProps['onMouseDown'] = useEvent((event) => {
173173
if (!disabled) {
174-
if (event.target !== getDOM(inputRef.current)) {
174+
const inputDOM = getDOM(inputRef.current);
175+
if (inputDOM && event.target !== inputDOM && !inputDOM.contains(event.target as Node)) {
175176
event.preventDefault();
176177
}
177178

tests/components.test.tsx

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render } from '@testing-library/react';
1+
import { createEvent, fireEvent, render } from '@testing-library/react';
22
import React from 'react';
33
import Select from '../src';
44
import { injectRunAllTimers } from './utils/common';
@@ -22,4 +22,27 @@ describe('Select.Components', () => {
2222

2323
expect(container.querySelector('textarea')?.getAttribute('placeholder')).toBe('test');
2424
});
25+
26+
it('should not preventDefault when customize input contains input', () => {
27+
const preventDefault = jest.fn();
28+
const { container } = render(
29+
<Select
30+
mode="combobox"
31+
getInputElement={() => (
32+
<div>
33+
<textarea />
34+
</div>
35+
)}
36+
/>,
37+
);
38+
39+
const textareaEle = container.querySelector('textarea');
40+
41+
// Create mouseDown event on the selector element
42+
const mouseDownEvent = createEvent.mouseDown(textareaEle);
43+
mouseDownEvent.preventDefault = preventDefault;
44+
fireEvent(textareaEle, mouseDownEvent);
45+
46+
expect(preventDefault).not.toHaveBeenCalled();
47+
});
2548
});

0 commit comments

Comments
 (0)