joyent-portal/packages/ui-toolkit/src/slider/react-input-range/input-range/value-prop-type.js

24 lines
820 B
JavaScript
Executable File

import { isNumber, isObject } from '../utils';
/**
* @ignore
* @param {Object} props
* @return {?Error} Return Error if validation fails
*/
export default function valuePropType(props, propName) {
const { maxValue, minValue } = props;
const value = props[propName];
if (!isNumber(value) && (!isObject(value) || !isNumber(value.min) || !isNumber(value.max))) {
return new Error(`"${propName}" must be a number or a range object`);
}
if (isNumber(value) && (value < minValue || value > maxValue)) {
return new Error(`"${propName}" must be in between "minValue" and "maxValue"`);
}
if (isObject(value) && (value.min < minValue || value.min > maxValue || value.max < minValue || value.max > maxValue)) {
return new Error(`"${propName}" must be in between "minValue" and "maxValue"`);
}
}