Move Switch native require call to new file
Summary: Moving out the requireNativeComponent call into a new file. We want this long term for all of our view managers to support codegen of the native side and so we can move the viewConfigs into JS. Reviewed By: yungsters Differential Revision: D9191214 fbshipit-source-id: d0bddbb50bb1cf6b5a727d72faf834b007ad9440
This commit is contained in:
parent
51b12dd375
commit
457a74cbc2
|
@ -10,16 +10,15 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const SwitchNativeComponent = require('SwitchNativeComponent');
|
||||||
const Platform = require('Platform');
|
const Platform = require('Platform');
|
||||||
const React = require('React');
|
const React = require('React');
|
||||||
const ReactNative = require('ReactNative');
|
|
||||||
const StyleSheet = require('StyleSheet');
|
const StyleSheet = require('StyleSheet');
|
||||||
|
|
||||||
const requireNativeComponent = require('requireNativeComponent');
|
|
||||||
|
|
||||||
import type {SwitchChangeEvent} from 'CoreEventTypes';
|
import type {SwitchChangeEvent} from 'CoreEventTypes';
|
||||||
import type {ColorValue} from 'StyleSheetTypes';
|
import type {ColorValue} from 'StyleSheetTypes';
|
||||||
import type {ViewProps} from 'ViewPropTypes';
|
import type {ViewProps} from 'ViewPropTypes';
|
||||||
|
import type {NativeAndroidProps, NativeIOSProps} from 'SwitchNativeComponent';
|
||||||
|
|
||||||
export type Props = $ReadOnly<{|
|
export type Props = $ReadOnly<{|
|
||||||
...ViewProps,
|
...ViewProps,
|
||||||
|
@ -75,41 +74,6 @@ export type Props = $ReadOnly<{|
|
||||||
onValueChange?: ?(value: boolean) => Promise<void> | void,
|
onValueChange?: ?(value: boolean) => Promise<void> | void,
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
// @see ReactSwitchManager.java
|
|
||||||
type NativeAndroidProps = $ReadOnly<{|
|
|
||||||
...ViewProps,
|
|
||||||
enabled?: ?boolean,
|
|
||||||
on?: ?boolean,
|
|
||||||
onChange?: ?(event: SwitchChangeEvent) => mixed,
|
|
||||||
thumbTintColor?: ?string,
|
|
||||||
trackTintColor?: ?string,
|
|
||||||
|}>;
|
|
||||||
|
|
||||||
// @see RCTSwitchManager.m
|
|
||||||
type NativeIOSProps = $ReadOnly<{|
|
|
||||||
...ViewProps,
|
|
||||||
disabled?: ?boolean,
|
|
||||||
onChange?: ?(event: SwitchChangeEvent) => mixed,
|
|
||||||
onTintColor?: ?string,
|
|
||||||
thumbTintColor?: ?string,
|
|
||||||
tintColor?: ?string,
|
|
||||||
value?: ?boolean,
|
|
||||||
|}>;
|
|
||||||
|
|
||||||
type NativeSwitchType = Class<
|
|
||||||
ReactNative.NativeComponent<
|
|
||||||
$ReadOnly<{|
|
|
||||||
...NativeAndroidProps,
|
|
||||||
...NativeIOSProps,
|
|
||||||
|}>,
|
|
||||||
>,
|
|
||||||
>;
|
|
||||||
|
|
||||||
const NativeSwitch: NativeSwitchType =
|
|
||||||
Platform.OS === 'android'
|
|
||||||
? (requireNativeComponent('AndroidSwitch'): any)
|
|
||||||
: (requireNativeComponent('RCTSwitch'): any);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A visual toggle between two mutually exclusive states.
|
* A visual toggle between two mutually exclusive states.
|
||||||
*
|
*
|
||||||
|
@ -119,7 +83,7 @@ const NativeSwitch: NativeSwitchType =
|
||||||
* supplied `value` prop instead of the expected result of any user actions.
|
* supplied `value` prop instead of the expected result of any user actions.
|
||||||
*/
|
*/
|
||||||
class Switch extends React.Component<Props> {
|
class Switch extends React.Component<Props> {
|
||||||
_nativeSwitchRef: ?React.ElementRef<NativeSwitchType>;
|
_nativeSwitchRef: ?React.ElementRef<typeof SwitchNativeComponent>;
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
|
@ -197,13 +161,13 @@ class Switch extends React.Component<Props> {
|
||||||
}: NativeIOSProps);
|
}: NativeIOSProps);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NativeSwitch
|
<SwitchNativeComponent
|
||||||
{...props}
|
{...props}
|
||||||
{...platformProps}
|
{...platformProps}
|
||||||
onChange={this._handleChange}
|
onChange={this._handleChange}
|
||||||
onResponderTerminationRequest={returnsFalse}
|
onResponderTerminationRequest={returnsFalse}
|
||||||
onStartShouldSetResponder={returnsTrue}
|
onStartShouldSetResponder={returnsTrue}
|
||||||
ref={this._handleNativeSwitchRef}
|
ref={this._handleSwitchNativeComponentRef}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -230,7 +194,9 @@ class Switch extends React.Component<Props> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
_handleNativeSwitchRef = (ref: ?React.ElementRef<NativeSwitchType>) => {
|
_handleSwitchNativeComponentRef = (
|
||||||
|
ref: ?React.ElementRef<typeof SwitchNativeComponent>,
|
||||||
|
) => {
|
||||||
this._nativeSwitchRef = ref;
|
this._nativeSwitchRef = ref;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @flow
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Platform = require('Platform');
|
||||||
|
const ReactNative = require('ReactNative');
|
||||||
|
|
||||||
|
const requireNativeComponent = require('requireNativeComponent');
|
||||||
|
|
||||||
|
import type {SwitchChangeEvent} from 'CoreEventTypes';
|
||||||
|
import type {ViewProps} from 'ViewPropTypes';
|
||||||
|
|
||||||
|
// @see ReactSwitchManager.java
|
||||||
|
export type NativeAndroidProps = $ReadOnly<{|
|
||||||
|
...ViewProps,
|
||||||
|
enabled?: ?boolean,
|
||||||
|
on?: ?boolean,
|
||||||
|
onChange?: ?(event: SwitchChangeEvent) => mixed,
|
||||||
|
thumbTintColor?: ?string,
|
||||||
|
trackTintColor?: ?string,
|
||||||
|
|}>;
|
||||||
|
|
||||||
|
// @see RCTSwitchManager.m
|
||||||
|
export type NativeIOSProps = $ReadOnly<{|
|
||||||
|
...ViewProps,
|
||||||
|
disabled?: ?boolean,
|
||||||
|
onChange?: ?(event: SwitchChangeEvent) => mixed,
|
||||||
|
onTintColor?: ?string,
|
||||||
|
thumbTintColor?: ?string,
|
||||||
|
tintColor?: ?string,
|
||||||
|
value?: ?boolean,
|
||||||
|
|}>;
|
||||||
|
|
||||||
|
type SwitchNativeComponentType = Class<
|
||||||
|
ReactNative.NativeComponent<
|
||||||
|
$ReadOnly<{|
|
||||||
|
...NativeAndroidProps,
|
||||||
|
...NativeIOSProps,
|
||||||
|
|}>,
|
||||||
|
>,
|
||||||
|
>;
|
||||||
|
|
||||||
|
const SwitchNativeComponent: SwitchNativeComponentType =
|
||||||
|
Platform.OS === 'android'
|
||||||
|
? (requireNativeComponent('AndroidSwitch'): any)
|
||||||
|
: (requireNativeComponent('RCTSwitch'): any);
|
||||||
|
|
||||||
|
module.exports = SwitchNativeComponent;
|
Loading…
Reference in New Issue