diff --git a/Libraries/Components/ViewPager/AndroidViewPagerNativeComponent.js b/Libraries/Components/ViewPager/AndroidViewPagerNativeComponent.js index 557fc8063a73e7..6ac6e871fb8b3e 100644 --- a/Libraries/Components/ViewPager/AndroidViewPagerNativeComponent.js +++ b/Libraries/Components/ViewPager/AndroidViewPagerNativeComponent.js @@ -5,11 +5,106 @@ * LICENSE file in the root directory of this source tree. * * @format - * @flow strict-local + * @flow */ 'use strict'; const requireNativeComponent = require('requireNativeComponent'); -module.exports = requireNativeComponent('AndroidViewPager'); +import type {SyntheticEvent} from 'CoreEventTypes'; +import type {NativeComponent} from 'ReactNative'; +import type {Node} from 'React'; +import type {ViewStyleProp} from 'StyleSheet'; + +type PageScrollEvent = SyntheticEvent< + $ReadOnly<{| + position: number, + offset: number, + |}>, +>; + +type PageScrollStateChangedEvent = SyntheticEvent< + $ReadOnly<{| + pageScrollState: string, + |}>, +>; + +type PageSelectedEvent = SyntheticEvent< + $ReadOnly<{| + position: number, + |}>, +>; + +type NativeProps = $ReadOnly<{| + /** + * Index of initial page that should be selected. Use `setPage` method to + * update the page, and `onPageSelected` to monitor page changes + */ + initialPage?: ?number, + + /** + * Executed when transitioning between pages (ether because of animation for + * the requested page change or when user is swiping/dragging between pages) + * The `event.nativeEvent` object for this callback will carry following data: + * - position - index of first page from the left that is currently visible + * - offset - value from range [0,1) describing stage between page transitions. + * Value x means that (1 - x) fraction of the page at "position" index is + * visible, and x fraction of the next page is visible. + */ + onPageScroll?: ?(e: PageScrollEvent) => void, + + /** + * Function called when the page scrolling state has changed. + * The page scrolling state can be in 3 states: + * - idle, meaning there is no interaction with the page scroller happening at the time + * - dragging, meaning there is currently an interaction with the page scroller + * - settling, meaning that there was an interaction with the page scroller, and the + * page scroller is now finishing it's closing or opening animation + */ + onPageScrollStateChanged?: ?(e: PageScrollStateChangedEvent) => void, + + /** + * This callback will be called once ViewPager finish navigating to selected page + * (when user swipes between pages). The `event.nativeEvent` object passed to this + * callback will have following fields: + * - position - index of page that has been selected + */ + onPageSelected?: ?(e: PageSelectedEvent) => void, + + /** + * Blank space to show between pages. This is only visible while scrolling, pages are still + * edge-to-edge. + */ + pageMargin?: ?number, + + /** + * Whether enable showing peekFraction or not. If this is true, the preview of + * last and next page will show in current screen. Defaults to false. + */ + + peekEnabled?: ?boolean, + + /** + * Determines whether the keyboard gets dismissed in response to a drag. + * - 'none' (the default), drags do not dismiss the keyboard. + * - 'on-drag', the keyboard is dismissed when a drag begins. + */ + keyboardDismissMode?: ?('none' | 'on-drag'), + + /** + * When false, the content does not scroll. + * The default value is true. + */ + scrollEnabled?: ?boolean, + + children?: Node, + + style?: ?ViewStyleProp, +|}>; + +type ViewPagerNativeType = Class>; + +module.exports = ((requireNativeComponent( + 'AndroidViewPager', +): any): ViewPagerNativeType); diff --git a/Libraries/Components/ViewPager/ViewPagerAndroid.android.js b/Libraries/Components/ViewPager/ViewPagerAndroid.android.js index 200537c8861193..a47107dc5695f5 100644 --- a/Libraries/Components/ViewPager/ViewPagerAndroid.android.js +++ b/Libraries/Components/ViewPager/ViewPagerAndroid.android.js @@ -34,7 +34,7 @@ type PageScrollEvent = SyntheticEvent< type PageScrollStateChangedEvent = SyntheticEvent< $ReadOnly<{| - pageScrollState: PageScrollState, + pageScrollState: string, |}>, >; @@ -76,7 +76,7 @@ type Props = $ReadOnly<{| * - settling, meaning that there was an interaction with the page scroller, and the * page scroller is now finishing it's closing or opening animation */ - onPageScrollStateChanged?: ?(e: PageScrollState) => void, + onPageScrollStateChanged?: ?(e: PageScrollStateChangedEvent) => void, /** * This callback will be called once ViewPager finish navigating to selected page diff --git a/Libraries/vendor/core/whatwg-fetch.js b/Libraries/vendor/core/whatwg-fetch.js index 37eaebc4c62e2c..3f1767afda813e 100644 --- a/Libraries/vendor/core/whatwg-fetch.js +++ b/Libraries/vendor/core/whatwg-fetch.js @@ -517,7 +517,7 @@ } if ('responseType' in xhr && support.blob) { - xhr.responseType = 'blob' + xhr.responseType = 'blob'; } request.headers.forEach(function(value, name) {