UNPKG

2.87 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.error = undefined;
5
6var _typeof2 = require('babel-runtime/helpers/typeof');
7
8var _typeof3 = _interopRequireDefault(_typeof2);
9
10var _propTypes = require('prop-types');
11
12var PT = _interopRequireWildcard(_propTypes);
13
14var _constant = require('./constant');
15
16var _util = require('../util');
17
18function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22var error = exports.error = function error(propName, ComponentName) {
23 return new Error('Invalid prop ' + propName + ' supplied to ' + ComponentName + '. Validation failed.');
24};
25
26function checkType(type) {
27 return function (props, propName, componentName) {
28 var value = props[propName];
29 if (value) {
30 if (!Array.isArray(value)) {
31 value = [value];
32 }
33
34 if (!Array.isArray(type)) {
35 type = [type];
36 }
37
38 if (!value.every(function (v) {
39 return type.includes(typeof v === 'undefined' ? 'undefined' : (0, _typeof3.default)(v));
40 })) {
41 throw error(propName, componentName);
42 }
43 }
44 };
45}
46
47var SharedPT = {
48 date: function date(props, propName, componentName) {
49 if (propName in props && !(0, _util.datejs)(props.propName).isValid()) {
50 throw error(propName, componentName);
51 }
52 },
53 value: function value(props, propName, componentName) {
54 if (props[propName]) {
55 var value = props[propName];
56
57 if (props.type === _constant.DATE_PICKER_TYPE.RANGE && !Array.isArray(value)) {
58 throw error(propName, componentName);
59 } else if (!Array.isArray(value)) {
60 value = [value];
61 }
62
63 if (!value.every(function (v) {
64 return !v || (0, _util.datejs)(v).isValid();
65 })) {
66 throw error(propName, componentName);
67 }
68 }
69 },
70
71 format: checkType(['string', 'function']),
72 inputValue: checkType('string'),
73 placeholder: checkType('string'),
74 readOnly: checkType('boolean'),
75 disabled: checkType('boolean'),
76 disabledTime: checkType(['object', 'function']),
77 ariaLabel: checkType('string'),
78
79 render: PT.oneOfType([PT.node, PT.func]),
80 mode: PT.oneOf(Object.values(_constant.DATE_PICKER_MODE)),
81 type: PT.oneOf(Object.values(_constant.DATE_PICKER_TYPE)),
82 inputType: PT.oneOf(Object.values(_constant.DATE_INPUT_TYPE)),
83 size: PT.oneOf(['small', 'medium', 'large'])
84};
85
86exports.default = SharedPT;
\No newline at end of file