From 3653895fcd3e2bda1ab63eeac4833d744ad1e88e Mon Sep 17 00:00:00 2001 From: Alexaner T Date: Wed, 13 Jun 2018 14:31:33 +0300 Subject: [PATCH] Add onScroll event to TextInput --- types/react-native/index.d.ts | 24 +++++++++++++++++++----- types/react-native/test/index.tsx | 16 +++++++++++++--- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index b06d877c4c..b469a5bdf2 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -1075,17 +1075,23 @@ export type KeyboardTypeIOS = | "twitter" | "web-search"; export type KeyboardTypeAndroid = "visible-password"; -export type KeyboardTypeOptions = KeyboardType | KeyboardTypeAndroid | KeyboardTypeIOS +export type KeyboardTypeOptions = KeyboardType | KeyboardTypeAndroid | KeyboardTypeIOS; export type ReturnKeyType = "done" | "go" | "next" | "search" | "send"; export type ReturnKeyTypeAndroid = "none" | "previous"; export type ReturnKeyTypeIOS = "default" | "google" | "join" | "route" | "yahoo" | "emergency-call"; -export type ReturnKeyTypeOptions = ReturnKeyType | ReturnKeyTypeAndroid | ReturnKeyTypeIOS +export type ReturnKeyTypeOptions = ReturnKeyType | ReturnKeyTypeAndroid | ReturnKeyTypeIOS; export interface TextInputFocusEventData { - target: number, - text: string, - eventCount: number + target: number; + text: string; + eventCount: number; +} + +export interface TextInputScrollEvent { + nativeEvent: { + contentOffset: { x: number; y: number; } + } } /** @@ -1220,6 +1226,14 @@ export interface TextInputProps */ onSubmitEditing?: (event: { nativeEvent: { text: string } }) => void; + /** + * Invoked on content scroll with + * `{ nativeEvent: { contentOffset: { x, y } } }`. + * + * May also contain other properties from ScrollEvent but on Android contentSize is not provided for performance reasons. + */ + onScroll?: (event: TextInputScrollEvent) => void; + /** * The string that will be rendered before text input has been entered */ diff --git a/types/react-native/test/index.tsx b/types/react-native/test/index.tsx index 9fbad8a870..2f753eee64 100644 --- a/types/react-native/test/index.tsx +++ b/types/react-native/test/index.tsx @@ -54,7 +54,8 @@ import { InputAccessoryView, StatusBar, NativeSyntheticEvent, - GestureResponderEvent + GestureResponderEvent, + TextInputScrollEvent, } from "react-native"; declare module "react-native" { @@ -197,14 +198,19 @@ class Welcome extends React.Component { export default Welcome; -// SyntheticEventsTest -export class SyntheticEventsTest extends React.Component { +// EventsTest +export class EventsTest extends React.Component { onPressButton(e: GestureResponderEvent) { e.persist(); e.isPropagationStopped(); e.isDefaultPrevented(); } + onScroll(e: TextInputScrollEvent) { + console.log(`x: ${ e.nativeEvent.contentOffset.x }`); + console.log(`y: ${ e.nativeEvent.contentOffset.y }`); + } + render() { return ( Button + )