Flow strict TouchableOpacity (#22146)
Summary: Related to #22100 Enhance Flow types for TouchableOpacity specifying Touchable event types and TvParallaxPropertiesType. I had to export TvParallaxPropertiesType from TVViewPropTypes file. There are still 1 any left using requireNativeComponent and a dependency to `Touchable` that need to be addressed to turn Flow to strict mode. I guess `Touchable` is a lot more work since there's no flow annotation and it's still good old Mixin. - All flow tests succeed. [GENERAL] [ENHANCEMENT] [TouchableOpacity.js] - Flow types [GENERAL] [ENHANCEMENT] [TVViewPropTypes.js] - Export type Pull Request resolved: https://github.com/facebook/react-native/pull/22146 Reviewed By: TheSavior Differential Revision: D12927044 Pulled By: RSNara fbshipit-source-id: c63d805699dd58e2fbc4fd1df4ee0c9f87e2336a
This commit is contained in:
parent
c03fc4087f
commit
69213eea95
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
type TVParallaxPropertiesType = $ReadOnly<{|
|
export type TVParallaxPropertiesType = $ReadOnly<{|
|
||||||
/**
|
/**
|
||||||
* If true, parallax effects are enabled. Defaults to true.
|
* If true, parallax effects are enabled. Defaults to true.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -24,14 +24,14 @@ const flattenStyle = require('flattenStyle');
|
||||||
|
|
||||||
import type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback';
|
import type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback';
|
||||||
import type {ViewStyleProp} from 'StyleSheet';
|
import type {ViewStyleProp} from 'StyleSheet';
|
||||||
|
import type {TVParallaxPropertiesType} from 'TVViewPropTypes';
|
||||||
type Event = Object;
|
import type {PressEvent} from 'CoreEventTypes';
|
||||||
|
|
||||||
const PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};
|
const PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};
|
||||||
|
|
||||||
type TVProps = $ReadOnly<{|
|
type TVProps = $ReadOnly<{|
|
||||||
hasTVPreferredFocus?: ?boolean,
|
hasTVPreferredFocus?: ?boolean,
|
||||||
tvParallaxProperties?: ?Object,
|
tvParallaxProperties?: ?TVParallaxPropertiesType,
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
type Props = $ReadOnly<{|
|
type Props = $ReadOnly<{|
|
||||||
|
@ -193,7 +193,7 @@ const TouchableOpacity = ((createReactClass({
|
||||||
* `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
|
* `Touchable.Mixin` self callbacks. The mixin will invoke these if they are
|
||||||
* defined on your component.
|
* defined on your component.
|
||||||
*/
|
*/
|
||||||
touchableHandleActivePressIn: function(e: Event) {
|
touchableHandleActivePressIn: function(e: PressEvent) {
|
||||||
if (e.dispatchConfig.registrationName === 'onResponderGrant') {
|
if (e.dispatchConfig.registrationName === 'onResponderGrant') {
|
||||||
this._opacityActive(0);
|
this._opacityActive(0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -202,16 +202,16 @@ const TouchableOpacity = ((createReactClass({
|
||||||
this.props.onPressIn && this.props.onPressIn(e);
|
this.props.onPressIn && this.props.onPressIn(e);
|
||||||
},
|
},
|
||||||
|
|
||||||
touchableHandleActivePressOut: function(e: Event) {
|
touchableHandleActivePressOut: function(e: PressEvent) {
|
||||||
this._opacityInactive(250);
|
this._opacityInactive(250);
|
||||||
this.props.onPressOut && this.props.onPressOut(e);
|
this.props.onPressOut && this.props.onPressOut(e);
|
||||||
},
|
},
|
||||||
|
|
||||||
touchableHandlePress: function(e: Event) {
|
touchableHandlePress: function(e: PressEvent) {
|
||||||
this.props.onPress && this.props.onPress(e);
|
this.props.onPress && this.props.onPress(e);
|
||||||
},
|
},
|
||||||
|
|
||||||
touchableHandleLongPress: function(e: Event) {
|
touchableHandleLongPress: function(e: PressEvent) {
|
||||||
this.props.onLongPress && this.props.onLongPress(e);
|
this.props.onLongPress && this.props.onLongPress(e);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue