From 405a3b79e820fb93f805720dfbbf120039907cd1 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Fri, 6 Jul 2018 15:00:50 -0700 Subject: [PATCH] [fix] TextInput calls onSelectionChange upon user input Fix #1018 --- .../exports/TextInput/__tests__/index-test.js | 31 ++++++++++++------- .../src/exports/TextInput/index.js | 1 + 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/react-native-web/src/exports/TextInput/__tests__/index-test.js b/packages/react-native-web/src/exports/TextInput/__tests__/index-test.js index 5dd04755..13b07ec9 100644 --- a/packages/react-native-web/src/exports/TextInput/__tests__/index-test.js +++ b/packages/react-native-web/src/exports/TextInput/__tests__/index-test.js @@ -330,18 +330,27 @@ describe('components/TextInput', () => { }); }); - test('prop "onSelectionChange"', done => { - const input = findNativeInput( - mount() - ); - input.simulate('select', { - target: { selectionStart: 0, selectionEnd: 3 } + describe('prop "onSelectionChange"', () => { + test('is called on select', done => { + const input = findNativeInput( + mount() + ); + input.simulate('select', { + target: { selectionStart: 0, selectionEnd: 3 } + }); + function onSelectionChange(e) { + expect(e.nativeEvent.selection.end).toEqual(3); + expect(e.nativeEvent.selection.start).toEqual(0); + done(); + } + }); + + test('is called on change', () => { + const onSelectionChange = jest.fn(); + const input = findNativeInput(mount()); + input.simulate('change'); + expect(onSelectionChange).toHaveBeenCalledTimes(1); }); - function onSelectionChange(e) { - expect(e.nativeEvent.selection.end).toEqual(3); - expect(e.nativeEvent.selection.start).toEqual(0); - done(); - } }); describe('prop "onSubmitEditing"', () => { diff --git a/packages/react-native-web/src/exports/TextInput/index.js b/packages/react-native-web/src/exports/TextInput/index.js index a6798094..2da70531 100644 --- a/packages/react-native-web/src/exports/TextInput/index.js +++ b/packages/react-native-web/src/exports/TextInput/index.js @@ -282,6 +282,7 @@ class TextInput extends Component<*> { if (onChangeText) { onChangeText(text); } + this._handleSelectionChange(e); }; _handleFocus = e => {