Skip to content

Commit 490c37e

Browse files
authored
fix: Proxy of setSelectionRange (#70)
* fix: rc-input change event * test: add test case
1 parent fe30455 commit 490c37e

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

src/utils/commonUtils.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ function cloneEvent<
3838
currentTarget.selectionEnd = target.selectionEnd;
3939
}
4040

41+
currentTarget.setSelectionRange = (...args) => {
42+
target.setSelectionRange(...args);
43+
};
44+
4145
return newEvent;
4246
}
4347

tests/index.test.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,10 @@ describe('Input ref', () => {
353353
it('selectionXXX should pass', () => {
354354
const onChange = jest.fn();
355355
const { container } = render(<Input onChange={onChange} />);
356+
const spySetSelectionRange = jest.spyOn(
357+
container.querySelector('input')!,
358+
'setSelectionRange',
359+
);
356360

357361
const inputEl = container.querySelector('input')!;
358362
fireEvent.change(inputEl, { target: { value: 'test' } });
@@ -361,6 +365,10 @@ describe('Input ref', () => {
361365
const event = onChange.mock.calls[0][0];
362366
expect(event.target.selectionStart).toBe(4);
363367
expect(event.target.selectionEnd).toBe(4);
368+
369+
// Call `setSelectionRange`
370+
event.target.setSelectionRange(1, 2);
371+
expect(spySetSelectionRange).toHaveBeenCalledWith(1, 2);
364372
});
365373

366374
it('email type not support selection', () => {

0 commit comments

Comments
 (0)