Added ColorPropType

Summary:
Problem: https://github.com/facebook/react-native/issues/4708

Solution: Added a ColorPropType that validates the color used by the dev

Notes:
1) I'm working a Win8.1 machine and couldn't build the react-native using the github repo. As soon as I figure that out, I'll probably figure how to run the tests and how to add some for this feature.
2) It's my first pull request. Be gentle :)
Closes https://github.com/facebook/react-native/pull/4866

Reviewed By: bestander, svcscm

Differential Revision: D2783672

Pulled By: nicklockwood

fb-gh-sync-id: ca22aa3c0999188075681b5d20fff0631496e238
This commit is contained in:
StefanT
2015-12-22 19:29:01 -08:00
committed by facebook-github-bot-3
parent 7164c755cb
commit a162f72655
14 changed files with 78 additions and 40 deletions

View File

@@ -11,6 +11,7 @@
*/
'use strict';
const ColorPropType = require('ColorPropType');
const EdgeInsetsPropType = require('EdgeInsetsPropType');
const Image = require('Image');
const NativeMethodsMixin = require('NativeMethodsMixin');
@@ -166,10 +167,7 @@ const MapView = React.createClass({
* are supported for regular pins. For custom pin images, any tintColor
* value is supported on all iOS versions.
*/
tintColor: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.number
]),
tintColor: ColorPropType,
/**
* Custom pin image. This must be a static image resource inside the app.
@@ -213,14 +211,8 @@ const MapView = React.createClass({
* Line attributes
*/
lineWidth: React.PropTypes.number,
strokeColor: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.number
]),
fillColor: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.number
]),
strokeColor: ColorPropType,
fillColor: ColorPropType,
/**
* Overlay id

View File

@@ -15,6 +15,7 @@ var React = require('React');
var ReactPropTypes = require('ReactPropTypes');
var ReactNativeViewAttributes = require('ReactNativeViewAttributes');
var View = require('View');
var ColorPropType = require('ColorPropType');
var requireNativeComponent = require('requireNativeComponent');
@@ -88,7 +89,7 @@ var ProgressBarAndroid = React.createClass({
/**
* Color of the progress bar.
*/
color: ReactPropTypes.string,
color: ColorPropType,
/**
* Used to locate this view in end-to-end tests.
*/

View File

@@ -6,6 +6,7 @@
*/
'use strict';
var ColorPropType = require('ColorPropType');
var NativeMethodsMixin = require('NativeMethodsMixin');
var Platform = require('Platform');
var React = require('React');
@@ -43,22 +44,22 @@ var Switch = React.createClass({
* Used to locate this view in end-to-end tests.
*/
testID: React.PropTypes.string,
/**
* Background color when the switch is turned off.
* @platform ios
*/
tintColor: React.PropTypes.string,
tintColor: ColorPropType,
/**
* Background color when the switch is turned on.
* @platform ios
*/
onTintColor: React.PropTypes.string,
onTintColor: ColorPropType,
/**
* Color of the foreground switch grip.
* @platform ios
*/
thumbTintColor: React.PropTypes.string,
thumbTintColor: ColorPropType,
},
getDefaultProps: function(): DefaultProps {

View File

@@ -13,6 +13,7 @@
*/
'use strict';
var ColorPropType = require('ColorPropType');
var NativeMethodsMixin = require('NativeMethodsMixin');
var PropTypes = require('ReactPropTypes');
var React = require('React');
@@ -62,17 +63,17 @@ var SwitchIOS = React.createClass({
/**
* Background color when the switch is turned on.
*/
onTintColor: PropTypes.string,
onTintColor: ColorPropType,
/**
* Background color for the switch round button.
*/
thumbTintColor: PropTypes.string,
thumbTintColor: ColorPropType,
/**
* Background color when the switch is turned off.
*/
tintColor: PropTypes.string,
tintColor: ColorPropType,
},
getDefaultProps: function(): DefaultProps {

View File

@@ -11,6 +11,7 @@
*/
'use strict';
var ColorPropType = require('ColorPropType');
var React = require('React');
var StyleSheet = require('StyleSheet');
var TabBarItemIOS = require('TabBarItemIOS');
@@ -29,11 +30,11 @@ var TabBarIOS = React.createClass({
/**
* Color of the currently selected tab icon
*/
tintColor: React.PropTypes.string,
tintColor: ColorPropType,
/**
* Background color of the tab bar
*/
barTintColor: React.PropTypes.string,
barTintColor: ColorPropType,
/**
* A Boolean value that indicates whether the tab bar is translucent
*/

View File

@@ -18,6 +18,7 @@ var ReactNativeViewAttributes = require('ReactNativeViewAttributes');
var ReactPropTypes = require('ReactPropTypes');
var UIManager = require('UIManager');
var View = require('View');
var ColorPropType = require('ColorPropType');
var requireNativeComponent = require('requireNativeComponent');
var resolveAssetSource = require('resolveAssetSource');
@@ -116,7 +117,7 @@ var ToolbarAndroid = React.createClass({
/**
* Sets the toolbar subtitle color.
*/
subtitleColor: ReactPropTypes.string,
subtitleColor: ColorPropType,
/**
* Sets the toolbar title.
*/
@@ -124,7 +125,7 @@ var ToolbarAndroid = React.createClass({
/**
* Sets the toolbar title color.
*/
titleColor: ReactPropTypes.string,
titleColor: ColorPropType,
/**
* Sets the content inset for the toolbar starting edge.
*

View File

@@ -13,6 +13,7 @@
// Note (avik): add @flow when Flow supports spread properties in propTypes
var ColorPropType = require('ColorPropType');
var NativeMethodsMixin = require('NativeMethodsMixin');
var React = require('React');
var ReactNativeViewAttributes = require('ReactNativeViewAttributes');
@@ -76,7 +77,7 @@ var TouchableHighlight = React.createClass({
* The color of the underlay that will show through when the touch is
* active.
*/
underlayColor: React.PropTypes.string,
underlayColor: ColorPropType,
style: View.propTypes.style,
/**
* Called immediately after the underlay is shown

View File

@@ -13,6 +13,7 @@
var LayoutPropTypes = require('LayoutPropTypes');
var ReactPropTypes = require('ReactPropTypes');
var ColorPropType = require('ColorPropType');
var TransformPropTypes = require('TransformPropTypes');
/**
@@ -22,12 +23,12 @@ var ViewStylePropTypes = {
...LayoutPropTypes,
...TransformPropTypes,
backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),
backgroundColor: ReactPropTypes.string,
borderColor: ReactPropTypes.string,
borderTopColor: ReactPropTypes.string,
borderRightColor: ReactPropTypes.string,
borderBottomColor: ReactPropTypes.string,
borderLeftColor: ReactPropTypes.string,
backgroundColor: ColorPropType,
borderColor: ColorPropType,
borderTopColor: ColorPropType,
borderRightColor: ColorPropType,
borderBottomColor: ColorPropType,
borderLeftColor: ColorPropType,
borderRadius: ReactPropTypes.number,
borderTopLeftRadius: ReactPropTypes.number,
borderTopRightRadius: ReactPropTypes.number,
@@ -41,7 +42,7 @@ var ViewStylePropTypes = {
borderLeftWidth: ReactPropTypes.number,
opacity: ReactPropTypes.number,
overflow: ReactPropTypes.oneOf(['visible', 'hidden']),
shadowColor: ReactPropTypes.string,
shadowColor: ColorPropType,
shadowOffset: ReactPropTypes.shape(
{width: ReactPropTypes.number, height: ReactPropTypes.number}
),