Exemple #1
0
  it('should support the arrayOf propType', function() {
    typeCheck(Props.arrayOf(Props.number), [1, 2, 3]);
    typeCheck(Props.arrayOf(Props.string), ['a', 'b', 'c']);
    typeCheck(Props.arrayOf(Props.oneOf(['a', 'b'])), ['a', 'b']);

    // No warnings should have been logged.
    expect(console.warn.mock.calls.length).toBe(0);
  });
 it("should warn for missing required values", function() {
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number).isRequired, null, requiredMessage
   );
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number).isRequired, undefined, requiredMessage
   );
 });
  it('should support arrayOf with complex types', function() {
    typeCheckPass(
      PropTypes.arrayOf(PropTypes.shape({a: PropTypes.number.isRequired})),
      [{a: 1}, {a: 2}]
    );

    function Thing() {}
    typeCheckPass(
      PropTypes.arrayOf(PropTypes.instanceOf(Thing)),
      [new Thing(), new Thing()]
    );
  });
Exemple #4
0
  it('should warn when passed something other than an array', function() {
    typeCheck(Props.arrayOf(Props.number), {'0': 'maybe-array', length: 1});
    typeCheck(Props.arrayOf(Props.number), 123);
    typeCheck(Props.arrayOf(Props.number), 'string');

    expect(console.warn.mock.calls.length).toBe(3);

    var message = 'Warning: Invalid prop `testProp` supplied to ' +
      '`testComponent`, expected an array.';

    expect(console.warn.mock.calls[0][0]).toBe(message);
    expect(console.warn.mock.calls[1][0]).toBe(message);
    expect(console.warn.mock.calls[2][0]).toBe(message);
  });
Exemple #5
0
  it('should support arrayOf with complex types', function() {
    typeCheck(Props.arrayOf(Props.shape({
      a: Props.number.isRequired
    })), [{a: 1}, {a: 2}]);

    function Thing() {}
    typeCheck(
      Props.arrayOf(Props.instanceOf(Thing)),
      [new Thing(), new Thing()]
    );

    // No warnings should have been logged.
    expect(console.warn.mock.calls.length).toBe(0);
  });
 it('should warn with invalid items in the array', function() {
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number),
     [1, 2, 'b'],
     'Invalid prop `2` of type `string` supplied to `testComponent`, ' +
     'expected `number`.'
   );
 });
Exemple #7
0
  it('should warn with invalid items in the array', function() {
    typeCheck(Props.arrayOf(Props.number), [1, 2, 'b']);

    expect(console.warn.mock.calls.length).toBe(1);

    expect(console.warn.mock.calls[0][0]).toBe(
      'Warning: Invalid prop `2` of type `string` supplied to ' +
      '`testComponent`, expected `number`.'
    );
  });
 it('should warn when passed something other than an array', function() {
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number),
     {'0': 'maybe-array', length: 1},
     'Invalid prop `testProp` of type `object` supplied to `testComponent`, ' +
     'expected an array.'
   );
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number),
     123,
     'Invalid prop `testProp` of type `number` supplied to `testComponent`, ' +
     'expected an array.'
   );
   typeCheckFail(
     PropTypes.arrayOf(PropTypes.number),
     'string',
     'Invalid prop `testProp` of type `string` supplied to `testComponent`, ' +
     'expected an array.'
   );
 });
  it('should warn with invalid complex types', function() {
    function Thing() {}
    var name = Thing.name || '<<anonymous>>';

    typeCheckFail(
      PropTypes.arrayOf(PropTypes.instanceOf(Thing)),
      [new Thing(), 'xyz'],
      'Invalid prop `1` supplied to `testComponent`, expected instance of `' +
      name + '`.'
    );
  });
Exemple #10
0
  it('should warn with invalid complex types', function() {
    function Thing() {}
    var name = Thing.name || '<<anonymous>>';

    typeCheck(
      Props.arrayOf(Props.instanceOf(Thing)),
      [new Thing(), 'xyz']
    );

    expect(console.warn.mock.calls.length).toBe(1);

    expect(console.warn.mock.calls[0][0]).toBe(
      'Warning: Invalid prop `1` supplied to ' +
      '`testComponent`, expected instance of `' + name + '`.'
    );
  });
 * 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 TransformPropTypes
 * @flow
 */
'use strict';

var ReactPropTypes = require('ReactPropTypes');

var TransformPropTypes = {
  transform: ReactPropTypes.arrayOf(
    ReactPropTypes.oneOfType([
      ReactPropTypes.shape({rotate: ReactPropTypes.string}),
      ReactPropTypes.shape({scaleX: ReactPropTypes.number}),
      ReactPropTypes.shape({scaleY: ReactPropTypes.number}),
      ReactPropTypes.shape({translateX: ReactPropTypes.number}),
      ReactPropTypes.shape({translateY: ReactPropTypes.number})
    ])
  ),
  transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),

  // DEPRECATED
  rotation: ReactPropTypes.number,
  scaleX: ReactPropTypes.number,
  scaleY: ReactPropTypes.number,
  translateX: ReactPropTypes.number,
  translateY: ReactPropTypes.number,
};

module.exports = TransformPropTypes;
 *   selectedIndex={this.state.selectedIndex}
 *   onChange={(event) => {
 *     this.setState({selectedIndex: event.nativeEvent.selectedSegmentIndex});
 *   }}
 * />
 * ````
 */
var SegmentedControlIOS = React.createClass({
  mixins: [NativeMethodsMixin],

  propTypes: {
    ...View.propTypes,
    /**
     * The labels for the control's segment buttons, in order.
     */
    values: PropTypes.arrayOf(PropTypes.string),

    /**
     * The index in `props.values` of the segment to be (pre)selected.
     */
    selectedIndex: PropTypes.number,

    /**
     * Callback that is called when the user taps a segment;
     * passes the segment's value as an argument
     */
    onValueChange: PropTypes.func,

    /**
     * Callback that is called when the user taps a segment;
     * passes the event as an argument
Exemple #13
0
     */
    importantForAccessibility: PropTypes.oneOf([
      'auto',
      'yes',
      'no',
      'no-hide-descendants',
    ]),

    /**
     * Provides additional traits to screen reader. By default no traits are
     * provided unless specified otherwise in element
     * @platform ios
     */
    accessibilityTraits: PropTypes.oneOfType([
      PropTypes.oneOf(AccessibilityTraits),
      PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),
    ]),

    /**
     * Enables Dran'n'Drop Support for certain types of PboardType
     *
     */
    draggedTypes: PropTypes.arrayOf(
      PropTypes.oneOf([
        'NSFilenamesPboardType',
        'NSColorPboardType'
      ])
    ),
    /**
     * When `accessible` is true, the system will try to invoke this function
     * when the user performs accessibility tap gesture.
/**
 * Warning: Some of these properties may not be supported in all releases.
 */
var ViewStylePropTypes = merge(
  LayoutPropTypes, {
  backgroundColor: ReactPropTypes.string,
  borderColor: ReactPropTypes.string,
  borderTopColor: ReactPropTypes.string,
  borderRightColor: ReactPropTypes.string,
  borderBottomColor: ReactPropTypes.string,
  borderLeftColor: ReactPropTypes.string,
  borderRadius: ReactPropTypes.number,
  opacity: ReactPropTypes.number,
  overflow: ReactPropTypes.oneOf(['visible', 'hidden']),
  shadowColor: ReactPropTypes.string,
  shadowOffset: ReactPropTypes.shape(
    {h: ReactPropTypes.number, w: ReactPropTypes.number}
  ),
  shadowOpacity: ReactPropTypes.number,
  shadowRadius: ReactPropTypes.number,
  transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),
  rotation: ReactPropTypes.number,
  scaleX: ReactPropTypes.number,
  scaleY: ReactPropTypes.number,
  translateX: ReactPropTypes.number,
  translateY: ReactPropTypes.number,
});

module.exports = ViewStylePropTypes;
  * could be an http address, a local file path, or a static image
  * resource (which should be wrapped in the `require('./path/to/image.png')` function).
  * This prop can also contain several remote `uri`, specified together with
  * their width and height. The native side will then choose the best `uri` to display
  * based on the measured size of the image container.
  */
 source: PropTypes.oneOfType([
   PropTypes.shape({
     uri: PropTypes.string,
   }),
   // Opaque type returned by require('./image.jpg')
   PropTypes.number,
   // Multiple sources
   PropTypes.arrayOf(
     PropTypes.shape({
       uri: PropTypes.string,
       width: PropTypes.number,
       height: PropTypes.number,
     }))
 ]),
 /**
  * similarly to `source`, this property represents the resource used to render
  * the loading indicator for the image, displayed until image is ready to be
  * displayed, typically after when it got downloaded from network.
  */
 loadingIndicatorSource: PropTypes.oneOfType([
   PropTypes.shape({
     uri: PropTypes.string,
   }),
   // Opaque type returned by require('./image.jpg')
   PropTypes.number,
 ]),
     */
    importantForAccessibility: PropTypes.oneOf([
      'auto',
      'yes',
      'no',
      'no-hide-descendants',
    ]),

    /**
     * Provides additional traits to screen reader. By default no traits are
     * provided unless specified otherwise in element
     * @platform ios
     */
    accessibilityTraits: PropTypes.oneOfType([
      PropTypes.oneOf(AccessibilityTraits),
      PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),
    ]),

    /**
     * When `accessible` is true, the system will try to invoke this function
     * when the user performs accessibility tap gesture.
     */
    onAcccessibilityTap: PropTypes.func,

    /**
     * When `accessible` is true, the system will invoke this function when the
     * user performs the magic tap gesture.
     */
    onMagicTap: PropTypes.func,

    /**
Exemple #17
0
 it("should be implicitly optional and not warn without values", function() {
   typeCheckPass(PropTypes.arrayOf(PropTypes.number), null);
   typeCheckPass(PropTypes.arrayOf(PropTypes.number), undefined);
 });
Exemple #18
0
 it('should not warn when passing an empty array', function() {
   typeCheckPass(PropTypes.arrayOf(PropTypes.number), []);
 });
});

/**
 * Shape of the return value of the `getPhotos` function.
 */
var getPhotosReturnChecker = createStrictShapeTypeChecker({
  edges: ReactPropTypes.arrayOf(createStrictShapeTypeChecker({
    node: createStrictShapeTypeChecker({
      type: ReactPropTypes.string.isRequired,
      group_name: ReactPropTypes.string.isRequired,
      image: createStrictShapeTypeChecker({
        uri: ReactPropTypes.string.isRequired,
        height: ReactPropTypes.number.isRequired,
        width: ReactPropTypes.number.isRequired,
        isStored: ReactPropTypes.bool,
      }).isRequired,
      timestamp: ReactPropTypes.number.isRequired,
      location: createStrictShapeTypeChecker({
        latitude: ReactPropTypes.number,
        longitude: ReactPropTypes.number,
        altitude: ReactPropTypes.number,
        heading: ReactPropTypes.number,
        speed: ReactPropTypes.number,
      }),
    }).isRequired,
  })).isRequired,
  page_info: createStrictShapeTypeChecker({
    has_next_page: ReactPropTypes.bool.isRequired,
    start_cursor: ReactPropTypes.string,
    end_cursor: ReactPropTypes.string,
  }).isRequired,
});
 */
var EditorStylePropTypes = {
  ...LayoutPropTypes,
  backgroundColor: ReactPropTypes.string,
  borderColor: ReactPropTypes.string,
  borderTopColor: ReactPropTypes.string,
  borderRightColor: ReactPropTypes.string,
  borderBottomColor: ReactPropTypes.string,
  borderLeftColor: ReactPropTypes.string,
  borderRadius: ReactPropTypes.number,
  opacity: ReactPropTypes.number,
  overflow: ReactPropTypes.oneOf(['visible', 'hidden']),
  shadowColor: ReactPropTypes.string,
  shadowOffset: ReactPropTypes.shape(
    {h: ReactPropTypes.number, w: ReactPropTypes.number}
  ),
  shadowOpacity: ReactPropTypes.number,
  shadowRadius: ReactPropTypes.number,
  transform: ReactPropTypes.arrayOf(ReactPropTypes.object),
  transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),

  // DEPRECATED
  rotation: ReactPropTypes.number,
  scaleX: ReactPropTypes.number,
  scaleY: ReactPropTypes.number,
  translateX: ReactPropTypes.number,
  translateY: ReactPropTypes.number,
};

module.exports = EditorStylePropTypes;
Exemple #21
0
 it('should support the arrayOf propTypes', function() {
   typeCheckPass(PropTypes.arrayOf(PropTypes.number), [1, 2, 3]);
   typeCheckPass(PropTypes.arrayOf(PropTypes.string), ['a', 'b', 'c']);
   typeCheckPass(PropTypes.arrayOf(PropTypes.oneOf(['a', 'b'])), ['a', 'b']);
 });
 /**
  * Sets possible actions on the toolbar as part of the action menu. These are displayed as icons
  * or text on the right side of the widget. If they don't fit they are placed in an 'overflow'
  * menu.
  *
  * This property takes an array of objects, where each object has the following keys:
  *
  * * `title`: **required**, the title of this action
  * * `icon`: the icon for this action, e.g. `require('image!some_icon')`
  * * `show`: when to show this action as an icon or hide it in the overflow menu: `always`,
  * `ifRoom` or `never`
  * * `showWithText`: boolean, whether to show text alongside the icon or not
  */
 actions: ReactPropTypes.arrayOf(ReactPropTypes.shape({
   title: ReactPropTypes.string.isRequired,
   icon: optionalImageSource,
   show: ReactPropTypes.oneOf(['always', 'ifRoom', 'never']),
   showWithText: ReactPropTypes.bool
 })),
 /**
  * Sets the toolbar logo.
  */
 logo: optionalImageSource,
 /**
  * Sets the navigation icon.
  */
 navIcon: optionalImageSource,
 /**
  * Callback that is called when an action is selected. The only argument that is passed to the
  * callback is the position of the action in the actions array.
  */
 onActionSelected: ReactPropTypes.func,
Exemple #23
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 TransformPropTypes
 * @flow
 */
'use strict';

var ReactPropTypes = require('ReactPropTypes');
var deprecatedPropType = require('deprecatedPropType');

var ArrayOfNumberPropType = ReactPropTypes.arrayOf(ReactPropTypes.number);

var TransformMatrixPropType = function(
  props : Object,
  propName : string,
  componentName : string
) : ?Error {
  if (props.transform && props.transformMatrix) {
    return new Error(
      'transformMatrix and transform styles cannot be used on the same ' +
      'component'
    );
  }
  return ArrayOfNumberPropType(props, propName, componentName);
};