mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 17:45:59 +00:00
cec913e7ce
Summary: The propTypes of RCTDatePickerIOS do not fit with the propTypes of DatePickerIOS. All dates (date, minimumDate, maximumDate) are a timestamp (check line 126), so they should have propType number. OnDateChange function should not be required since it is called onChange in the iOS implementation. The problem currently causes warnings that the given types are wrong, while they were added correctly. Closes https://github.com/facebook/react-native/pull/7833 Differential Revision: D3371324 Pulled By: nicklockwood fbshipit-source-id: bca5b2bbe7e9dd2e045288bfbd268578848c7bff
62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
/**
|
|
* 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 verifyPropTypes
|
|
* @flow
|
|
*/
|
|
'use strict';
|
|
|
|
var ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');
|
|
|
|
export type ComponentInterface = ReactClass<any> | {
|
|
name?: string;
|
|
displayName?: string;
|
|
propTypes: Object;
|
|
};
|
|
|
|
function verifyPropTypes(
|
|
componentInterface: ComponentInterface,
|
|
viewConfig: Object,
|
|
nativePropsToIgnore?: ?Object
|
|
) {
|
|
if (!viewConfig) {
|
|
return; // This happens for UnimplementedView.
|
|
}
|
|
var componentName = componentInterface.name ||
|
|
componentInterface.displayName ||
|
|
'unknown';
|
|
if (!componentInterface.propTypes) {
|
|
throw new Error(
|
|
'`' + componentName + '` has no propTypes defined`'
|
|
);
|
|
}
|
|
|
|
var nativeProps = viewConfig.NativeProps;
|
|
for (var prop in nativeProps) {
|
|
if (!componentInterface.propTypes[prop] &&
|
|
!ReactNativeStyleAttributes[prop] &&
|
|
(!nativePropsToIgnore || !nativePropsToIgnore[prop])) {
|
|
var message;
|
|
if (componentInterface.propTypes.hasOwnProperty(prop)) {
|
|
message = '`' + componentName + '` has incorrectly defined propType for native prop `' +
|
|
viewConfig.uiViewClassName + '.' + prop + '` of native type `' + nativeProps[prop];
|
|
} else {
|
|
message = '`' + componentName + '` has no propType for native prop `' +
|
|
viewConfig.uiViewClassName + '.' + prop + '` of native type `' +
|
|
nativeProps[prop] + '`';
|
|
}
|
|
message += '\nIf you haven\'t changed this prop yourself, this usually means that ' +
|
|
'your versions of the native code and JavaScript code are out of sync. Updating both ' +
|
|
'should make this error go away.';
|
|
throw new Error(message);
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = verifyPropTypes;
|