Remove deprecated APIs and modules
Summary: We've deprecated these APIs for quite a few releases and we should be able to get rid of them now. Remove following deprecated modules/components - AppStateIOS - ActivityIndicatorIOS - IntentAndroid - SliderIOS - SwitchAndroid - SwitchIOS - LinkingIOS Update following modules to remove callback support - Clipboard - NetInfo cc bestander Closes https://github.com/facebook/react-native/pull/9891 Reviewed By: bestander Differential Revision: D3974094 Pulled By: javache fbshipit-source-id: 9abe32716bd85d0cea9933894f4447d53bdd5ee7
This commit is contained in:
parent
9ed9bca0bf
commit
fa5ad85252
|
@ -32,7 +32,7 @@ var {
|
|||
var UIExplorerBlock = require('./UIExplorerBlock');
|
||||
var UIExplorerPage = require('./UIExplorerPage');
|
||||
|
||||
var SwitchAndroid = require('SwitchAndroid');
|
||||
var Switch = require('Switch');
|
||||
var ToolbarAndroid = require('ToolbarAndroid');
|
||||
|
||||
class ToolbarAndroidExample extends React.Component {
|
||||
|
@ -67,7 +67,7 @@ class ToolbarAndroidExample extends React.Component {
|
|||
logo={require('image!launcher_icon')}
|
||||
style={styles.toolbar}>
|
||||
<View style={{height: 56, flexDirection: 'row', alignItems: 'center'}}>
|
||||
<SwitchAndroid
|
||||
<Switch
|
||||
value={this.state.toolbarSwitch}
|
||||
onValueChange={(value) => this.setState({'toolbarSwitch': value})} />
|
||||
<Text>{'\'Tis but a switch'}</Text>
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule AppStateIOS
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
const AppState = require('AppState');
|
||||
|
||||
console.warn('AppStateIOS is deprecated. Use AppState instead');
|
||||
|
||||
module.exports = AppState;
|
|
@ -1,22 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule ActivityIndicatorIOS
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var React = require('React');
|
||||
var View = require('View');
|
||||
|
||||
class ActivityIndicatorIOS extends React.Component {
|
||||
render(): ReactElement {
|
||||
return <View {...this.props} />;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ActivityIndicatorIOS;
|
|
@ -1,63 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule ActivityIndicatorIOS
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var ActivityIndicator = require('ActivityIndicator');
|
||||
var NativeMethodsMixin = require('react/lib/NativeMethodsMixin');
|
||||
var PropTypes = require('react/lib/ReactPropTypes');
|
||||
var React = require('React');
|
||||
var View = require('View');
|
||||
|
||||
/**
|
||||
* Deprecated, use ActivityIndicator instead.
|
||||
*/
|
||||
var ActivityIndicatorIOS = React.createClass({
|
||||
mixins: [NativeMethodsMixin],
|
||||
|
||||
propTypes: {
|
||||
...View.propTypes,
|
||||
/**
|
||||
* Whether to show the indicator (true, the default) or hide it (false).
|
||||
*/
|
||||
animating: PropTypes.bool,
|
||||
/**
|
||||
* The foreground color of the spinner (default is gray).
|
||||
*/
|
||||
color: PropTypes.string,
|
||||
/**
|
||||
* Whether the indicator should hide when not animating (true by default).
|
||||
*/
|
||||
hidesWhenStopped: PropTypes.bool,
|
||||
/**
|
||||
* Size of the indicator. Small has a height of 20, large has a height of 36.
|
||||
*/
|
||||
size: PropTypes.oneOf([
|
||||
'small',
|
||||
'large',
|
||||
]),
|
||||
/**
|
||||
* Invoked on mount and layout changes with
|
||||
*
|
||||
* {nativeEvent: { layout: {x, y, width, height}}}.
|
||||
*/
|
||||
onLayout: PropTypes.func,
|
||||
},
|
||||
|
||||
componentDidMount: function() {
|
||||
console.warn('ActivityIndicatorIOS is deprecated. Use ActivityIndicator instead.');
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return <ActivityIndicator {...this.props} />;
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = ActivityIndicatorIOS;
|
|
@ -12,7 +12,6 @@
|
|||
'use strict';
|
||||
|
||||
const Clipboard = require('NativeModules').Clipboard;
|
||||
const deprecatedCallback = require('deprecatedCallback');
|
||||
|
||||
/**
|
||||
* `Clipboard` gives you an interface for setting and getting content from Clipboard on both iOS and Android
|
||||
|
@ -27,12 +26,7 @@ module.exports = {
|
|||
* ```
|
||||
*/
|
||||
getString(): Promise<string> {
|
||||
return deprecatedCallback(
|
||||
Clipboard.getString(),
|
||||
Array.prototype.slice.call(arguments),
|
||||
'success-first',
|
||||
'Clipboard.getString(callback) is deprecated. Use the returned Promise instead'
|
||||
);
|
||||
return Clipboard.getString();
|
||||
},
|
||||
/**
|
||||
* Set content of string type. You can use following code to set clipboard content
|
||||
|
|
|
@ -1,142 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule IntentAndroid
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var Linking = require('Linking');
|
||||
var invariant = require('fbjs/lib/invariant');
|
||||
|
||||
/**
|
||||
* NOTE: `IntentAndroid` is being deprecated. Use `Linking` instead.
|
||||
*
|
||||
* `IntentAndroid` gives you a general interface to handle external links.
|
||||
*
|
||||
* ### Basic Usage
|
||||
*
|
||||
* #### Handling deep links
|
||||
*
|
||||
* If your app was launched from an external url registered to your app you can
|
||||
* access and handle it from any component you want with
|
||||
*
|
||||
* ```
|
||||
* componentDidMount() {
|
||||
* var url = IntentAndroid.getInitialURL(url => {
|
||||
* if (url) {
|
||||
* console.log('Initial url is: ' + url);
|
||||
* }
|
||||
* });
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* Example to add support for deep linking inside your React Native app.
|
||||
* More Info: [Enabling Deep Links for App Content - Add Intent Filters for Your Deep Links](http://developer.android.com/training/app-indexing/deep-linking.html#adding-filters).
|
||||
*
|
||||
* Edit in `android/app/src/main/AndroidManifest.xml`
|
||||
*
|
||||
* ```
|
||||
* <intent-filter>
|
||||
* <action android:name="android.intent.action.VIEW" />
|
||||
* <category android:name="android.intent.category.DEFAULT" />
|
||||
* <category android:name="android.intent.category.BROWSABLE" />
|
||||
*
|
||||
* <!-- Accepts URIs that begin with "http://www.facebook.com/react -->
|
||||
* <data android:scheme="http"
|
||||
* android:host="www.facebook.com"
|
||||
* android:pathPrefix="/react" />
|
||||
* <!-- note that the leading "/" is required for pathPrefix-->
|
||||
*
|
||||
* <!-- Accepts URIs that begin with "facebook://react -->
|
||||
* <!-- <data android:scheme="facebook" android:host="react" /> -->
|
||||
* </intent-filter>
|
||||
* ```
|
||||
*
|
||||
* #### Opening external links
|
||||
*
|
||||
* To start the corresponding activity for a link (web URL, email, contact etc.), call
|
||||
*
|
||||
* ```
|
||||
* IntentAndroid.openURL(url)
|
||||
* ```
|
||||
*
|
||||
* If you want to check if any installed app can handle a given URL beforehand you can call
|
||||
* ```
|
||||
* IntentAndroid.canOpenURL(url, (supported) => {
|
||||
* if (!supported) {
|
||||
* console.log('Can\'t handle url: ' + url);
|
||||
* } else {
|
||||
* IntentAndroid.openURL(url);
|
||||
* }
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
class IntentAndroid {
|
||||
|
||||
/**
|
||||
* Starts a corresponding external activity for the given URL.
|
||||
*
|
||||
* For example, if the URL is "https://www.facebook.com", the system browser will be opened,
|
||||
* or the "choose application" dialog will be shown.
|
||||
*
|
||||
* You can use other URLs, like a location (e.g. "geo:37.484847,-122.148386"), a contact,
|
||||
* or any other URL that can be opened with {@code Intent.ACTION_VIEW}.
|
||||
*
|
||||
* NOTE: This method will fail if the system doesn't know how to open the specified URL.
|
||||
* If you're passing in a non-http(s) URL, it's best to check {@code canOpenURL} first.
|
||||
*
|
||||
* NOTE: For web URLs, the protocol ("http://", "https://") must be set accordingly!
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
static openURL(url: string) {
|
||||
console.warn('"IntentAndroid.openURL" is deprecated. Use the promise based "Linking.openURL" instead.');
|
||||
Linking.openURL(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether or not an installed app can handle a given URL.
|
||||
*
|
||||
* You can use other URLs, like a location (e.g. "geo:37.484847,-122.148386"), a contact,
|
||||
* or any other URL that can be opened with {@code Intent.ACTION_VIEW}.
|
||||
*
|
||||
* NOTE: For web URLs, the protocol ("http://", "https://") must be set accordingly!
|
||||
*
|
||||
* @param URL the URL to open
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
static canOpenURL(url: string, callback: Function) {
|
||||
console.warn('"IntentAndroid.canOpenURL" is deprecated. Use the promise based "Linking.canOpenURL" instead.');
|
||||
invariant(
|
||||
typeof callback === 'function',
|
||||
'A valid callback function is required'
|
||||
);
|
||||
Linking.canOpenURL(url).then(callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the app launch was triggered by an app link with {@code Intent.ACTION_VIEW},
|
||||
* it will give the link url, otherwise it will give `null`
|
||||
*
|
||||
* Refer http://developer.android.com/training/app-indexing/deep-linking.html#handling-intents
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
static getInitialURL(callback: Function) {
|
||||
console.warn('"IntentAndroid.getInitialURL" is deprecated. Use the promise based "Linking.getInitialURL" instead.');
|
||||
invariant(
|
||||
typeof callback === 'function',
|
||||
'A valid callback function is required'
|
||||
);
|
||||
Linking.getInitialURL().then(callback);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = IntentAndroid;
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule IntentAndroid
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
openURL: function(url) {
|
||||
console.error('IntentAndroid is not supported on iOS');
|
||||
},
|
||||
};
|
|
@ -1,14 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SliderIOS
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = require('UnimplementedView');
|
|
@ -1,161 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SliderIOS
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var Image = require('Image');
|
||||
var NativeMethodsMixin = require('react/lib/NativeMethodsMixin');
|
||||
var PropTypes = require('react/lib/ReactPropTypes');
|
||||
var React = require('React');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var View = require('View');
|
||||
|
||||
var requireNativeComponent = require('requireNativeComponent');
|
||||
|
||||
type Event = Object;
|
||||
|
||||
/**
|
||||
* **Note:** SliderIOS is deprecated and will be removed in the future. Use the cross-platform
|
||||
* Slider as a drop-in replacement with the same API.
|
||||
*
|
||||
* An iOS-specific component used to select a single value from a range of values.
|
||||
*/
|
||||
var SliderIOS = React.createClass({
|
||||
mixins: [NativeMethodsMixin],
|
||||
|
||||
propTypes: {
|
||||
...View.propTypes,
|
||||
/**
|
||||
* Used to style and layout the `Slider`. See `StyleSheet.js` and
|
||||
* `ViewStylePropTypes.js` for more info.
|
||||
*/
|
||||
style: View.propTypes.style,
|
||||
|
||||
/**
|
||||
* Initial value of the slider. The value should be between minimumValue
|
||||
* and maximumValue, which default to 0 and 1 respectively.
|
||||
* Default value is 0.
|
||||
*
|
||||
* *This is not a controlled component*, e.g. if you don't update
|
||||
* the value, the component won't be reset to its initial value.
|
||||
*/
|
||||
value: PropTypes.number,
|
||||
|
||||
/**
|
||||
* Step value of the slider. The value should be
|
||||
* between 0 and (maximumValue - minimumValue).
|
||||
* Default value is 0.
|
||||
*/
|
||||
step: PropTypes.number,
|
||||
|
||||
/**
|
||||
* Initial minimum value of the slider. Default value is 0.
|
||||
*/
|
||||
minimumValue: PropTypes.number,
|
||||
|
||||
/**
|
||||
* Initial maximum value of the slider. Default value is 1.
|
||||
*/
|
||||
maximumValue: PropTypes.number,
|
||||
|
||||
/**
|
||||
* The color used for the track to the left of the button. Overrides the
|
||||
* default blue gradient image.
|
||||
*/
|
||||
minimumTrackTintColor: PropTypes.string,
|
||||
|
||||
/**
|
||||
* The color used for the track to the right of the button. Overrides the
|
||||
* default blue gradient image.
|
||||
*/
|
||||
maximumTrackTintColor: PropTypes.string,
|
||||
|
||||
/**
|
||||
* If true the user won't be able to move the slider.
|
||||
* Default value is false.
|
||||
*/
|
||||
disabled: PropTypes.bool,
|
||||
|
||||
/**
|
||||
* Assigns a single image for the track. Only static images are supported.
|
||||
* The center pixel of the image will be stretched to fill the track.
|
||||
*/
|
||||
trackImage: Image.propTypes.source,
|
||||
|
||||
/**
|
||||
* Assigns a minimum track image. Only static images are supported. The
|
||||
* rightmost pixel of the image will be stretched to fill the track.
|
||||
*/
|
||||
minimumTrackImage: Image.propTypes.source,
|
||||
|
||||
/**
|
||||
* Assigns a maximum track image. Only static images are supported. The
|
||||
* leftmost pixel of the image will be stretched to fill the track.
|
||||
*/
|
||||
maximumTrackImage: Image.propTypes.source,
|
||||
|
||||
/**
|
||||
* Sets an image for the thumb. It only supports static images.
|
||||
*/
|
||||
thumbImage: Image.propTypes.source,
|
||||
|
||||
/**
|
||||
* Callback continuously called while the user is dragging the slider.
|
||||
*/
|
||||
onValueChange: PropTypes.func,
|
||||
|
||||
/**
|
||||
* Callback called when the user finishes changing the value (e.g. when
|
||||
* the slider is released).
|
||||
*/
|
||||
onSlidingComplete: PropTypes.func,
|
||||
},
|
||||
|
||||
getDefaultProps: function() : any {
|
||||
return {
|
||||
disabled: false,
|
||||
};
|
||||
},
|
||||
|
||||
render: function() {
|
||||
console.warn(
|
||||
'SliderIOS is deprecated and will be removed in ' +
|
||||
'future versions of React Native. Use the cross-platform Slider ' +
|
||||
'as a drop-in replacement.');
|
||||
|
||||
const {style, onValueChange, onSlidingComplete, ...props} = this.props;
|
||||
props.style = [styles.slider, style];
|
||||
|
||||
props.onValueChange = onValueChange && ((event: Event) => {
|
||||
onValueChange && onValueChange(event.nativeEvent.value);
|
||||
});
|
||||
|
||||
props.onSlidingComplete = onSlidingComplete && ((event: Event) => {
|
||||
onSlidingComplete && onSlidingComplete(event.nativeEvent.value);
|
||||
});
|
||||
|
||||
return <RCTSlider
|
||||
{...props}
|
||||
onStartShouldSetResponder={() => true}
|
||||
onResponderTerminationRequest={() => false}
|
||||
/>;
|
||||
}
|
||||
});
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
slider: {
|
||||
height: 40,
|
||||
},
|
||||
});
|
||||
|
||||
var RCTSlider = requireNativeComponent('RCTSlider', SliderIOS);
|
||||
|
||||
module.exports = SliderIOS;
|
|
@ -1,93 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SwitchAndroid
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var NativeMethodsMixin = require('react/lib/NativeMethodsMixin');
|
||||
var PropTypes = require('react/lib/ReactPropTypes');
|
||||
var React = require('React');
|
||||
var View = require('View');
|
||||
|
||||
var requireNativeComponent = require('requireNativeComponent');
|
||||
|
||||
var SWITCH = 'switch';
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*
|
||||
* Use <Switch> instead for cross-platform compatibility.
|
||||
*/
|
||||
var SwitchAndroid = React.createClass({
|
||||
mixins: [NativeMethodsMixin],
|
||||
|
||||
propTypes: {
|
||||
...View.propTypes,
|
||||
/**
|
||||
* Boolean value of the switch.
|
||||
*/
|
||||
value: PropTypes.bool,
|
||||
/**
|
||||
* If `true`, this component can't be interacted with.
|
||||
*/
|
||||
disabled: PropTypes.bool,
|
||||
/**
|
||||
* Invoked with the new value when the value changes.
|
||||
*/
|
||||
onValueChange: PropTypes.func,
|
||||
/**
|
||||
* Used to locate this view in end-to-end tests.
|
||||
*/
|
||||
testID: PropTypes.string,
|
||||
},
|
||||
|
||||
getDefaultProps: function() {
|
||||
return {
|
||||
value: false,
|
||||
disabled: false,
|
||||
};
|
||||
},
|
||||
|
||||
_onChange: function(event) {
|
||||
// The underlying switch might have changed, but we're controlled,
|
||||
// and so want to ensure it represents our value.
|
||||
this.refs[SWITCH].setNativeProps({on: this.props.value});
|
||||
|
||||
if (this.props.value === event.nativeEvent.value || this.props.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.props.onChange && this.props.onChange(event);
|
||||
this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<RKSwitch
|
||||
ref={SWITCH}
|
||||
style={this.props.style}
|
||||
enabled={!this.props.disabled}
|
||||
on={this.props.value}
|
||||
onChange={this._onChange}
|
||||
testID={this.props.testID}
|
||||
onStartShouldSetResponder={() => true}
|
||||
onResponderTerminationRequest={() => false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
var RKSwitch = requireNativeComponent('AndroidSwitch', SwitchAndroid, {
|
||||
nativeOnly: {
|
||||
on: true,
|
||||
enabled: true,
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = SwitchAndroid;
|
|
@ -1,13 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SwitchAndroid
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
module.exports = require('UnimplementedView');
|
|
@ -1,46 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SwitchIOS
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var React = require('React');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var Text = require('Text');
|
||||
var View = require('View');
|
||||
|
||||
class DummySwitchIOS extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<View style={[styles.dummySwitchIOS, this.props.style]}>
|
||||
<Text style={styles.text}>SwitchIOS is not supported on this platform!</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
dummySwitchIOS: {
|
||||
width: 120,
|
||||
height: 50,
|
||||
backgroundColor: '#ffbcbc',
|
||||
borderWidth: 1,
|
||||
borderColor: 'red',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
text: {
|
||||
color: '#333333',
|
||||
margin: 5,
|
||||
fontSize: 10,
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = DummySwitchIOS;
|
|
@ -1,120 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule SwitchIOS
|
||||
* @flow
|
||||
*
|
||||
* This is a controlled component version of RCTSwitch.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var ColorPropType = require('ColorPropType');
|
||||
var NativeMethodsMixin = require('react/lib/NativeMethodsMixin');
|
||||
var PropTypes = require('react/lib/ReactPropTypes');
|
||||
var React = require('React');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var View = require('View');
|
||||
|
||||
var requireNativeComponent = require('requireNativeComponent');
|
||||
|
||||
var SWITCH = 'switch';
|
||||
|
||||
type DefaultProps = {
|
||||
value: boolean,
|
||||
disabled: boolean,
|
||||
};
|
||||
|
||||
type Event = Object;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*
|
||||
* Use <Switch> instead for cross-platform compatibility.
|
||||
*/
|
||||
var SwitchIOS = React.createClass({
|
||||
mixins: [NativeMethodsMixin],
|
||||
|
||||
propTypes: {
|
||||
...View.propTypes,
|
||||
/**
|
||||
* The value of the switch, if true the switch will be turned on.
|
||||
* Default value is false.
|
||||
*/
|
||||
value: PropTypes.bool,
|
||||
|
||||
/**
|
||||
* If true the user won't be able to toggle the switch.
|
||||
* Default value is false.
|
||||
*/
|
||||
disabled: PropTypes.bool,
|
||||
|
||||
/**
|
||||
* Callback that is called when the user toggles the switch.
|
||||
*/
|
||||
onValueChange: PropTypes.func,
|
||||
|
||||
/**
|
||||
* Background color when the switch is turned on.
|
||||
*/
|
||||
onTintColor: ColorPropType,
|
||||
|
||||
/**
|
||||
* Background color for the switch round button.
|
||||
*/
|
||||
thumbTintColor: ColorPropType,
|
||||
|
||||
/**
|
||||
* Background color when the switch is turned off.
|
||||
*/
|
||||
tintColor: ColorPropType,
|
||||
},
|
||||
|
||||
getDefaultProps: function(): DefaultProps {
|
||||
return {
|
||||
value: false,
|
||||
disabled: false,
|
||||
};
|
||||
},
|
||||
|
||||
_onChange: function(event: Event) {
|
||||
// The underlying switch might have changed, but we're controlled,
|
||||
// and so want to ensure it represents our value.
|
||||
this.refs[SWITCH].setNativeProps({value: this.props.value});
|
||||
|
||||
if (this.props.value === event.nativeEvent.value || this.props.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.props.onChange && this.props.onChange(event);
|
||||
this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<RCTSwitch
|
||||
{...this.props}
|
||||
ref={SWITCH}
|
||||
onChange={this._onChange}
|
||||
style={[styles.rkSwitch, this.props.style]}
|
||||
/>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
rkSwitch: {
|
||||
height: 31,
|
||||
width: 51,
|
||||
},
|
||||
});
|
||||
|
||||
var RCTSwitch = requireNativeComponent('RCTSwitch', SwitchIOS, {
|
||||
nativeOnly: { onChange: true }
|
||||
});
|
||||
|
||||
module.exports = SwitchIOS;
|
|
@ -1,18 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule LinkingIOS
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var Linking = require('Linking');
|
||||
|
||||
console.warn('LinkingIOS is deprecated. Use Linking instead');
|
||||
|
||||
module.exports = Linking;
|
|
@ -16,7 +16,6 @@ const NativeEventEmitter = require('NativeEventEmitter');
|
|||
const NativeModules = require('NativeModules');
|
||||
const Platform = require('Platform');
|
||||
const RCTNetInfo = NativeModules.NetInfo;
|
||||
const deprecatedCallback = require('deprecatedCallback');
|
||||
|
||||
const NetInfoEventEmitter = new NativeEventEmitter(RCTNetInfo);
|
||||
|
||||
|
@ -257,12 +256,9 @@ const NetInfo = {
|
|||
},
|
||||
},
|
||||
|
||||
isConnectionExpensive(): Promise<any> {
|
||||
return deprecatedCallback(
|
||||
Platform.OS === 'android' ? RCTNetInfo.isConnectionMetered() : Promise.reject(new Error('Currently not supported on iOS')),
|
||||
Array.prototype.slice.call(arguments),
|
||||
'single-callback-value-first',
|
||||
'NetInfo.isConnectionMetered(callback) is deprecated. Use the returned Promise instead.'
|
||||
isConnectionExpensive(): Promise<boolean> {
|
||||
return (
|
||||
Platform.OS === 'android' ? RCTNetInfo.isConnectionMetered() : Promise.reject(new Error('Currently not supported on iOS'))
|
||||
);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* Helper for deprecated callback pattern
|
||||
*
|
||||
* @providesModule deprecatedCallback
|
||||
* @flow
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = function(promise: Promise<any>, callbacks: Array<Function>, type: string, warning: string): Promise<any> {
|
||||
if (callbacks.length === 0) {
|
||||
return promise;
|
||||
}
|
||||
|
||||
let success, error, callback;
|
||||
|
||||
console.warn(warning);
|
||||
|
||||
switch (type) {
|
||||
case 'success-first': // handles func(success, error), func(success)
|
||||
[ success, error ] = callbacks;
|
||||
return promise.then(
|
||||
res => success(res),
|
||||
err => error && error(err)
|
||||
);
|
||||
case 'error-first': // handles func(error, success)
|
||||
[ error, success ] = callbacks;
|
||||
return promise.then(
|
||||
res => success(res),
|
||||
err => error(err)
|
||||
);
|
||||
case 'single-callback-value-first': // handles func(callback(value, err))
|
||||
[ callback ] = callbacks;
|
||||
return promise.then(
|
||||
res => callback(res),
|
||||
err => callback(null, err)
|
||||
);
|
||||
case 'node': // handles func(callback(err, value))
|
||||
[ callback ] = callbacks;
|
||||
return promise.then(
|
||||
res => callback(null, res),
|
||||
err => callback(err)
|
||||
);
|
||||
default:
|
||||
throw new Error('Type of callbacks not specified. Must be one of \'success-first\', \'error-first\', \'single-callback-value-first\', or \'node\'');
|
||||
}
|
||||
};
|
|
@ -28,7 +28,6 @@ if (__DEV__) {
|
|||
const ReactNative = {
|
||||
// Components
|
||||
get ActivityIndicator() { return require('ActivityIndicator'); },
|
||||
get ActivityIndicatorIOS() { return require('ActivityIndicatorIOS'); },
|
||||
get ART() { return require('ReactNativeART'); },
|
||||
get Button() { return require('Button'); },
|
||||
get DatePickerIOS() { return require('DatePickerIOS'); },
|
||||
|
@ -49,15 +48,12 @@ const ReactNative = {
|
|||
get ScrollView() { return require('ScrollView'); },
|
||||
get SegmentedControlIOS() { return require('SegmentedControlIOS'); },
|
||||
get Slider() { return require('Slider'); },
|
||||
get SliderIOS() { return require('SliderIOS'); },
|
||||
get SnapshotViewIOS() { return require('SnapshotViewIOS'); },
|
||||
get Switch() { return require('Switch'); },
|
||||
get RecyclerViewBackedScrollView() { return require('RecyclerViewBackedScrollView'); },
|
||||
get RefreshControl() { return require('RefreshControl'); },
|
||||
get StatusBar() { return require('StatusBar'); },
|
||||
get SwipeableListView() { return require('SwipeableListView'); },
|
||||
get SwitchAndroid() { return require('SwitchAndroid'); },
|
||||
get SwitchIOS() { return require('SwitchIOS'); },
|
||||
get TabBarIOS() { return require('TabBarIOS'); },
|
||||
get Text() { return require('Text'); },
|
||||
get TextInput() { return require('TextInput'); },
|
||||
|
@ -80,7 +76,6 @@ const ReactNative = {
|
|||
get Animated() { return require('Animated'); },
|
||||
get AppRegistry() { return require('AppRegistry'); },
|
||||
get AppState() { return require('AppState'); },
|
||||
get AppStateIOS() { return require('AppStateIOS'); },
|
||||
get AsyncStorage() { return require('AsyncStorage'); },
|
||||
get BackAndroid() { return require('BackAndroid'); },
|
||||
get CameraRoll() { return require('CameraRoll'); },
|
||||
|
@ -90,12 +85,10 @@ const ReactNative = {
|
|||
get Easing() { return require('Easing'); },
|
||||
get I18nManager() { return require('I18nManager'); },
|
||||
get ImagePickerIOS() { return require('ImagePickerIOS'); },
|
||||
get IntentAndroid() { return require('IntentAndroid'); },
|
||||
get InteractionManager() { return require('InteractionManager'); },
|
||||
get Keyboard() { return require('Keyboard'); },
|
||||
get LayoutAnimation() { return require('LayoutAnimation'); },
|
||||
get Linking() { return require('Linking'); },
|
||||
get LinkingIOS() { return require('LinkingIOS'); },
|
||||
get NativeEventEmitter() { return require('NativeEventEmitter'); },
|
||||
get NavigationExperimental() { return require('NavigationExperimental'); },
|
||||
get NetInfo() { return require('NetInfo'); },
|
||||
|
|
|
@ -12,12 +12,12 @@
|
|||
'use strict';
|
||||
|
||||
var Image = require('Image');
|
||||
var Picker = require('Picker');
|
||||
var ProgressBarAndroid = require('ProgressBarAndroid');
|
||||
var React = require('React');
|
||||
var ScrollView = require('ScrollView');
|
||||
var Picker = require('Picker');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var SwitchAndroid = require('SwitchAndroid');
|
||||
var Switch = require('Switch');
|
||||
var Text = require('Text');
|
||||
var TextInput = require('TextInput');
|
||||
var ToolbarAndroid = require('ToolbarAndroid');
|
||||
|
@ -83,7 +83,7 @@ class TestIdTestApp extends React.Component {
|
|||
<Picker.Item label="Dialog picker" value="key0" />
|
||||
</Picker>
|
||||
|
||||
<SwitchAndroid testID="Switch" value={true} />
|
||||
<Switch testID="Switch" value={true} />
|
||||
|
||||
<Text testID="Text">text</Text>
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const assert = require('assert');
|
||||
const babel = require('babel-core');
|
||||
const deepAssign = require('deep-assign');
|
||||
const docgen = require('react-docgen');
|
||||
|
@ -41,7 +40,7 @@ function getNameFromPath(filepath) {
|
|||
filepath = removeExtName(filepath);
|
||||
if (filepath === 'LayoutPropTypes') {
|
||||
return 'Layout Props';
|
||||
} else if (filepath == 'ShadowPropTypesIOS') {
|
||||
} else if (filepath === 'ShadowPropTypesIOS') {
|
||||
return 'Shadow Props';
|
||||
} else if (filepath === 'TransformPropTypes') {
|
||||
return 'Transforms';
|
||||
|
@ -65,7 +64,7 @@ function getPlatformFromPath(filepath) {
|
|||
|
||||
function getExamplePaths(componentName, componentPlatform) {
|
||||
const componentExample = '../Examples/UIExplorer/js/' + componentName + 'Example.';
|
||||
let pathsToCheck = [
|
||||
const pathsToCheck = [
|
||||
componentExample + 'js',
|
||||
componentExample + componentPlatform + '.js',
|
||||
];
|
||||
|
@ -75,7 +74,7 @@ function getExamplePaths(componentName, componentPlatform) {
|
|||
componentExample + ANDROID_SUFFIX + '.js'
|
||||
);
|
||||
}
|
||||
let paths = [];
|
||||
const paths = [];
|
||||
pathsToCheck.map((p) => {
|
||||
if (fs.existsSync(p)) {
|
||||
paths.push(p);
|
||||
|
@ -87,7 +86,7 @@ function getExamplePaths(componentName, componentPlatform) {
|
|||
function getExamples(componentName, componentPlatform) {
|
||||
const paths = getExamplePaths(componentName, componentPlatform);
|
||||
if (paths) {
|
||||
let examples = [];
|
||||
const examples = [];
|
||||
paths.map((p) => {
|
||||
const platform = p.match(/Example\.(.*)\.js$/);
|
||||
let title = '';
|
||||
|
@ -243,7 +242,7 @@ function getTypedef(filepath, fileContent, json) {
|
|||
if (!json) {
|
||||
return typedefDocgen;
|
||||
}
|
||||
let typedef = typedefDocgen;
|
||||
const typedef = typedefDocgen;
|
||||
if (json.typedef && json.typedef.length !== 0) {
|
||||
json.typedef.forEach(def => {
|
||||
const typedefMatch = typedefDocgen.find(t => t.name === def.name);
|
||||
|
@ -316,7 +315,7 @@ function parseAPIJsDocFormat(filepath, fileContent) {
|
|||
identifier.order = index;
|
||||
});
|
||||
// Group by "kind"
|
||||
let json = {};
|
||||
const json = {};
|
||||
jsonParsed.forEach((identifier, index) => {
|
||||
let kind = identifier.kind;
|
||||
if (kind === 'function') {
|
||||
|
@ -409,7 +408,7 @@ function getTypehint(typehint) {
|
|||
}
|
||||
|
||||
function getJsDocFormatType(entities) {
|
||||
let modEntities = entities;
|
||||
const modEntities = entities;
|
||||
if (entities) {
|
||||
if (typeof entities === 'object' && entities.length) {
|
||||
entities.map((entity, entityIndex) => {
|
||||
|
@ -440,11 +439,11 @@ function renderAPI(filepath, type) {
|
|||
const fileContent = fs.readFileSync(filepath).toString();
|
||||
let json = parseAPIInferred(filepath, fileContent);
|
||||
if (isJsDocFormat(fileContent)) {
|
||||
let jsonJsDoc = parseAPIJsDocFormat(filepath, fileContent);
|
||||
const jsonJsDoc = parseAPIJsDocFormat(filepath, fileContent);
|
||||
// Combine method info with jsdoc formatted content
|
||||
const methods = json.methods;
|
||||
if (methods && methods.length) {
|
||||
let modMethods = methods;
|
||||
const modMethods = methods;
|
||||
methods.map((method, methodIndex) => {
|
||||
modMethods[methodIndex].params = getJsDocFormatType(method.params);
|
||||
modMethods[methodIndex].returns =
|
||||
|
@ -486,7 +485,6 @@ function renderStyle(filepath) {
|
|||
|
||||
const components = [
|
||||
'../Libraries/Components/ActivityIndicator/ActivityIndicator.js',
|
||||
'../Libraries/Components/ActivityIndicator/ActivityIndicatorIOS.ios.js',
|
||||
'../Libraries/Components/Button.js',
|
||||
'../Libraries/Components/DatePicker/DatePickerIOS.ios.js',
|
||||
'../Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js',
|
||||
|
@ -505,12 +503,9 @@ const components = [
|
|||
'../Libraries/Components/ScrollView/ScrollView.js',
|
||||
'../Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js',
|
||||
'../Libraries/Components/Slider/Slider.js',
|
||||
'../Libraries/Components/SliderIOS/SliderIOS.ios.js',
|
||||
'../Libraries/Components/StatusBar/StatusBar.js',
|
||||
'../Libraries/RCTTest/SnapshotViewIOS.ios.js',
|
||||
'../Libraries/Components/Switch/Switch.js',
|
||||
'../Libraries/Components/SwitchAndroid/SwitchAndroid.android.js',
|
||||
'../Libraries/Components/SwitchIOS/SwitchIOS.ios.js',
|
||||
'../Libraries/Components/TabBarIOS/TabBarIOS.ios.js',
|
||||
'../Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js',
|
||||
'../Libraries/Text/Text.js',
|
||||
|
@ -544,7 +539,6 @@ const apis = [
|
|||
'../Libraries/Image/ImageEditor.js',
|
||||
'../Libraries/CameraRoll/ImagePickerIOS.js',
|
||||
'../Libraries/Image/ImageStore.js',
|
||||
'../Libraries/Components/Intent/IntentAndroid.android.js',
|
||||
'../Libraries/Interaction/InteractionManager.js',
|
||||
'../Libraries/Components/Keyboard/Keyboard.js',
|
||||
'../Libraries/LayoutAnimation/LayoutAnimation.js',
|
||||
|
|
Loading…
Reference in New Issue