UNPKG

5.32 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports.caseSensitiveType = caseSensitiveType;
8exports.checkPropType = checkPropType;
9exports.defaultInputValueType = defaultInputValueType;
10exports.defaultSelectedType = defaultSelectedType;
11exports.deprecated = deprecated;
12exports.highlightOnlyResultType = highlightOnlyResultType;
13exports.ignoreDiacriticsType = ignoreDiacriticsType;
14exports.inputPropsType = inputPropsType;
15exports.isRequiredForA11y = isRequiredForA11y;
16exports.labelKeyType = labelKeyType;
17exports.optionType = void 0;
18exports.selectedType = selectedType;
19exports.sizeType = void 0;
20var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21var _propTypes = _interopRequireDefault(require("prop-types"));
22var _constants = require("./constants");
23var _utils = require("./utils");
24var INPUT_PROPS_BLACKLIST = [{
25 alt: 'onBlur',
26 prop: 'onBlur'
27}, {
28 alt: 'onInputChange',
29 prop: 'onChange'
30}, {
31 alt: 'onFocus',
32 prop: 'onFocus'
33}, {
34 alt: 'onKeyDown',
35 prop: 'onKeyDown'
36}];
37var sizeType = exports.sizeType = _propTypes["default"].oneOf(_constants.SIZES);
38/**
39 * Allows additional warnings or messaging related to prop validation.
40 */
41function checkPropType(validator, callback) {
42 return function (props, propName, componentName) {
43 _propTypes["default"].checkPropTypes((0, _defineProperty2["default"])({}, propName, validator), props, 'prop', componentName);
44 (0, _utils.isFunction)(callback) && callback(props, propName, componentName);
45 };
46}
47function caseSensitiveType(props) {
48 var caseSensitive = props.caseSensitive,
49 filterBy = props.filterBy;
50 (0, _utils.warn)(!caseSensitive || typeof filterBy !== 'function', 'Your `filterBy` function will override the `caseSensitive` prop.');
51}
52function deprecated(validator, reason) {
53 return function (props, propName, componentName) {
54 if (props[propName] != null) {
55 (0, _utils.warn)(false, "The `".concat(propName, "` prop is deprecated. ").concat(reason));
56 }
57 return _propTypes["default"].checkPropTypes((0, _defineProperty2["default"])({}, propName, validator), props, 'prop', componentName);
58 };
59}
60function defaultInputValueType(props) {
61 var defaultInputValue = props.defaultInputValue,
62 defaultSelected = props.defaultSelected,
63 multiple = props.multiple,
64 selected = props.selected;
65 var name = defaultSelected.length ? 'defaultSelected' : 'selected';
66 (0, _utils.warn)(!(!multiple && defaultInputValue && (defaultSelected.length || selected && selected.length)), "`defaultInputValue` will be overridden by the value from `".concat(name, "`."));
67}
68function defaultSelectedType(props) {
69 var defaultSelected = props.defaultSelected,
70 multiple = props.multiple;
71 (0, _utils.warn)(multiple || defaultSelected.length <= 1, 'You are passing multiple options to the `defaultSelected` prop of a ' + 'Typeahead in single-select mode. The selections will be truncated to a ' + 'single selection.');
72}
73function highlightOnlyResultType(_ref) {
74 var allowNew = _ref.allowNew,
75 highlightOnlyResult = _ref.highlightOnlyResult;
76 (0, _utils.warn)(!(highlightOnlyResult && allowNew), '`highlightOnlyResult` will not work with `allowNew`.');
77}
78function ignoreDiacriticsType(props) {
79 var filterBy = props.filterBy,
80 ignoreDiacritics = props.ignoreDiacritics;
81 (0, _utils.warn)(ignoreDiacritics || typeof filterBy !== 'function', 'Your `filterBy` function will override the `ignoreDiacritics` prop.');
82}
83function inputPropsType(_ref2) {
84 var inputProps = _ref2.inputProps;
85 if (!(inputProps && Object.prototype.toString.call(inputProps) === '[object Object]')) {
86 return;
87 }
88
89 // Blacklisted properties.
90 INPUT_PROPS_BLACKLIST.forEach(function (_ref3) {
91 var alt = _ref3.alt,
92 prop = _ref3.prop;
93 var msg = alt ? " Use the top-level `".concat(alt, "` prop instead.") : null;
94 (0, _utils.warn)(!inputProps[prop], "The `".concat(prop, "` property of `inputProps` will be ignored.").concat(msg));
95 });
96}
97function isRequiredForA11y(props, propName, componentName) {
98 (0, _utils.warn)(props[propName] != null, "The prop `".concat(propName, "` is required to make `").concat(componentName, "` ") + 'accessible for users of assistive technologies such as screen readers.');
99}
100function labelKeyType(_ref4) {
101 var allowNew = _ref4.allowNew,
102 labelKey = _ref4.labelKey;
103 (0, _utils.warn)(!((0, _utils.isFunction)(labelKey) && allowNew), '`labelKey` must be a string when `allowNew={true}`.');
104}
105var optionType = exports.optionType = _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].string]);
106function selectedType(_ref5) {
107 var multiple = _ref5.multiple,
108 onChange = _ref5.onChange,
109 selected = _ref5.selected;
110 (0, _utils.warn)(multiple || !selected || selected.length <= 1, 'You are passing multiple options to the `selected` prop of a Typeahead ' + 'in single-select mode. This may lead to unexpected behaviors or errors.');
111 (0, _utils.warn)(!selected || selected && (0, _utils.isFunction)(onChange), 'You provided a `selected` prop without an `onChange` handler. If you ' + 'want the typeahead to be uncontrolled, use `defaultSelected`. ' + 'Otherwise, set `onChange`.');
112}
\No newline at end of file