UNPKG

vcc-ui

Version:

A React library for building user interfaces at Volvo Cars

17 lines 1.02 kB
import PropTypes from 'prop-types'; /** We need to create our own version of this, as it's not possible to combine out-of-the-box PropTypes with custom function validators. */ export const oneOf = validTypes => (props, propName, componentName) => { if (validTypes.indexOf(props[propName]) === -1) { return new Error(`Invalid prop supplied to '${componentName}'. Must be one of ['${validTypes.join("', '")}'].`); } }; export const responsiveNumberOrStringProp = createResponsivePropType([PropTypes.number, PropTypes.string]); export const responsiveNumberProp = createResponsivePropType(PropTypes.number); export const responsiveStringProp = createResponsivePropType(PropTypes.string); export function createResponsivePropType(propTypes) { return Array.isArray(propTypes) ? PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType(propTypes)), PropTypes.objectOf(PropTypes.oneOfType(propTypes)), ...propTypes]) : PropTypes.oneOfType([PropTypes.arrayOf(propTypes), PropTypes.objectOf(propTypes), propTypes]); }