mirror of
https://github.com/status-im/react-native.git
synced 2025-01-28 10:14:49 +00:00
Add WebView.dataDetectorTypes prop.
Summary: WebView component detect phone numbers in html as URL links by default. But sometimes we don't want this behavior. This PR add dataDetectorTypes as a prop of WebView, so one can specify value of this prop as one or more of phoneNumber/link/address/calendarEvent/none/all This prop maps to UIWebView.dataDetectorTypes Closes https://github.com/facebook/react-native/pull/8743 Differential Revision: D3556440 fbshipit-source-id: 55f01d2cdd785381f261a9dc931aa9311f0ad1d4
This commit is contained in:
parent
8dd8c41553
commit
8612d7640d
@ -59,6 +59,15 @@ type ErrorEvent = {
|
|||||||
|
|
||||||
type Event = Object;
|
type Event = Object;
|
||||||
|
|
||||||
|
const DataDetectorTypes = [
|
||||||
|
'phoneNumber',
|
||||||
|
'link',
|
||||||
|
'address',
|
||||||
|
'calendarEvent',
|
||||||
|
'none',
|
||||||
|
'all',
|
||||||
|
];
|
||||||
|
|
||||||
var defaultRenderLoading = () => (
|
var defaultRenderLoading = () => (
|
||||||
<View style={styles.loadingView}>
|
<View style={styles.loadingView}>
|
||||||
<ActivityIndicator />
|
<ActivityIndicator />
|
||||||
@ -238,6 +247,28 @@ var WebView = React.createClass({
|
|||||||
*/
|
*/
|
||||||
style: View.propTypes.style,
|
style: View.propTypes.style,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines the types of data converted to clickable URLs in the web view’s content.
|
||||||
|
* By default only phone numbers are detected.
|
||||||
|
*
|
||||||
|
* You can provide one type or an array of many types.
|
||||||
|
*
|
||||||
|
* Possible values for `dataDetectorTypes` are:
|
||||||
|
*
|
||||||
|
* - `'phoneNumber'`
|
||||||
|
* - `'link'`
|
||||||
|
* - `'address'`
|
||||||
|
* - `'calendarEvent'`
|
||||||
|
* - `'none'`
|
||||||
|
* - `'all'`
|
||||||
|
*
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
|
dataDetectorTypes: PropTypes.oneOfType([
|
||||||
|
PropTypes.oneOf(DataDetectorTypes),
|
||||||
|
PropTypes.arrayOf(PropTypes.oneOf(DataDetectorTypes)),
|
||||||
|
]),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Boolean value to enable JavaScript in the `WebView`. Used on Android only
|
* Boolean value to enable JavaScript in the `WebView`. Used on Android only
|
||||||
* as JavaScript is enabled by default on iOS. The default value is `true`.
|
* as JavaScript is enabled by default on iOS. The default value is `true`.
|
||||||
@ -374,6 +405,7 @@ var WebView = React.createClass({
|
|||||||
scalesPageToFit={this.props.scalesPageToFit}
|
scalesPageToFit={this.props.scalesPageToFit}
|
||||||
allowsInlineMediaPlayback={this.props.allowsInlineMediaPlayback}
|
allowsInlineMediaPlayback={this.props.allowsInlineMediaPlayback}
|
||||||
mediaPlaybackRequiresUserAction={this.props.mediaPlaybackRequiresUserAction}
|
mediaPlaybackRequiresUserAction={this.props.mediaPlaybackRequiresUserAction}
|
||||||
|
dataDetectorTypes={this.props.dataDetectorTypes}
|
||||||
/>;
|
/>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -66,6 +66,7 @@ typedef NSURL RCTFileURL;
|
|||||||
+ (UIKeyboardType)UIKeyboardType:(id)json;
|
+ (UIKeyboardType)UIKeyboardType:(id)json;
|
||||||
+ (UIKeyboardAppearance)UIKeyboardAppearance:(id)json;
|
+ (UIKeyboardAppearance)UIKeyboardAppearance:(id)json;
|
||||||
+ (UIReturnKeyType)UIReturnKeyType:(id)json;
|
+ (UIReturnKeyType)UIReturnKeyType:(id)json;
|
||||||
|
+ (UIDataDetectorTypes)UIDataDetectorTypes:(id)json;
|
||||||
|
|
||||||
+ (UIViewContentMode)UIViewContentMode:(id)json;
|
+ (UIViewContentMode)UIViewContentMode:(id)json;
|
||||||
+ (UIBarStyle)UIBarStyle:(id)json;
|
+ (UIBarStyle)UIBarStyle:(id)json;
|
||||||
|
@ -319,6 +319,15 @@ RCT_ENUM_CONVERTER(UIKeyboardType, (@{
|
|||||||
@"numeric": @(UIKeyboardTypeDecimalPad),
|
@"numeric": @(UIKeyboardTypeDecimalPad),
|
||||||
}), UIKeyboardTypeDefault, integerValue)
|
}), UIKeyboardTypeDefault, integerValue)
|
||||||
|
|
||||||
|
RCT_MULTI_ENUM_CONVERTER(UIDataDetectorTypes, (@{
|
||||||
|
@"phoneNumber": @(UIDataDetectorTypePhoneNumber),
|
||||||
|
@"link": @(UIDataDetectorTypeLink),
|
||||||
|
@"address": @(UIDataDetectorTypeAddress),
|
||||||
|
@"calendarEvent": @(UIDataDetectorTypeCalendarEvent),
|
||||||
|
@"none": @(UIDataDetectorTypeNone),
|
||||||
|
@"all": @(UIDataDetectorTypeAll),
|
||||||
|
}), UIDataDetectorTypePhoneNumber, unsignedLongLongValue)
|
||||||
|
|
||||||
RCT_ENUM_CONVERTER(UIKeyboardAppearance, (@{
|
RCT_ENUM_CONVERTER(UIKeyboardAppearance, (@{
|
||||||
@"default": @(UIKeyboardAppearanceDefault),
|
@"default": @(UIKeyboardAppearanceDefault),
|
||||||
@"light": @(UIKeyboardAppearanceLight),
|
@"light": @(UIKeyboardAppearanceLight),
|
||||||
|
@ -47,7 +47,7 @@ RCT_EXPORT_VIEW_PROPERTY(onLoadingError, RCTDirectEventBlock)
|
|||||||
RCT_EXPORT_VIEW_PROPERTY(onShouldStartLoadWithRequest, RCTDirectEventBlock)
|
RCT_EXPORT_VIEW_PROPERTY(onShouldStartLoadWithRequest, RCTDirectEventBlock)
|
||||||
RCT_REMAP_VIEW_PROPERTY(allowsInlineMediaPlayback, _webView.allowsInlineMediaPlayback, BOOL)
|
RCT_REMAP_VIEW_PROPERTY(allowsInlineMediaPlayback, _webView.allowsInlineMediaPlayback, BOOL)
|
||||||
RCT_REMAP_VIEW_PROPERTY(mediaPlaybackRequiresUserAction, _webView.mediaPlaybackRequiresUserAction, BOOL)
|
RCT_REMAP_VIEW_PROPERTY(mediaPlaybackRequiresUserAction, _webView.mediaPlaybackRequiresUserAction, BOOL)
|
||||||
|
RCT_REMAP_VIEW_PROPERTY(dataDetectorTypes, _webView.dataDetectorTypes, UIDataDetectorTypes)
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
|
RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user