@uncinc/uncinc-react-kitchen-sink 2.25.3 → 2.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5,7 +5,7 @@ export interface ApiAutocompleteItem {
|
|
|
5
5
|
name: string;
|
|
6
6
|
[key: string]: any;
|
|
7
7
|
}
|
|
8
|
-
export interface ApiAutocompleteProps<TSuggestion = ApiAutocompleteItem> extends InputProps<TSuggestion> {
|
|
8
|
+
export interface ApiAutocompleteProps<TSuggestion = ApiAutocompleteItem> extends Omit<InputProps<TSuggestion>, 'value' | 'onChange'> {
|
|
9
9
|
id: string;
|
|
10
10
|
endpoint: string;
|
|
11
11
|
placeholder?: string;
|
|
@@ -15,7 +15,8 @@ export interface ApiAutocompleteProps<TSuggestion = ApiAutocompleteItem> extends
|
|
|
15
15
|
queryParameter?: string;
|
|
16
16
|
getSuggestionValue: GetSuggestionValue<TSuggestion>;
|
|
17
17
|
requestOptions?: RequestInit;
|
|
18
|
-
|
|
18
|
+
debounce?: number;
|
|
19
|
+
suggestProps?: Omit<AutosuggestPropsBase<TSuggestion>, 'suggestions' | 'onSuggestionsFetchRequested' | 'onSuggestionsClearRequested' | 'getSuggestionValue' | 'renderSuggestion' | 'onSuggestionSelected' | 'inputProps'>;
|
|
19
20
|
}
|
|
20
|
-
declare const ApiAutocomplete: React.
|
|
21
|
+
declare const ApiAutocomplete: <TSuggestion extends object = ApiAutocompleteItem>({ endpoint, placeholder, renderItem, defaultValue, onSelectItem, queryParameter, getSuggestionValue, requestOptions, debounce, suggestProps, ...restProps }: ApiAutocompleteProps<TSuggestion>) => React.JSX.Element;
|
|
21
22
|
export default ApiAutocomplete;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
var _excluded = ["endpoint", "placeholder", "renderItem", "defaultValue", "onSelectItem", "queryParameter", "getSuggestionValue", "requestOptions", "suggestProps"];
|
|
2
|
+
var _excluded = ["endpoint", "placeholder", "renderItem", "defaultValue", "onSelectItem", "queryParameter", "getSuggestionValue", "requestOptions", "debounce", "suggestProps"];
|
|
3
3
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
4
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -14,11 +14,10 @@ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefine
|
|
|
14
14
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
15
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
16
16
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
17
|
-
import React, { useState } from 'react';
|
|
17
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
18
18
|
import Autosuggest from 'react-autosuggest';
|
|
19
19
|
import getApiAutoCompleteSuggestions from '../../helpers/apiAutoComplete';
|
|
20
20
|
import './style.scss';
|
|
21
|
-
var currentFetch;
|
|
22
21
|
var ApiAutocomplete = function ApiAutocomplete(_ref) {
|
|
23
22
|
var endpoint = _ref.endpoint,
|
|
24
23
|
placeholder = _ref.placeholder,
|
|
@@ -34,6 +33,7 @@ var ApiAutocomplete = function ApiAutocomplete(_ref) {
|
|
|
34
33
|
} : _ref$getSuggestionVal,
|
|
35
34
|
_ref$requestOptions = _ref.requestOptions,
|
|
36
35
|
requestOptions = _ref$requestOptions === void 0 ? {} : _ref$requestOptions,
|
|
36
|
+
debounce = _ref.debounce,
|
|
37
37
|
suggestProps = _ref.suggestProps,
|
|
38
38
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
39
39
|
var _useState = useState(defaultValue || ''),
|
|
@@ -44,8 +44,22 @@ var ApiAutocomplete = function ApiAutocomplete(_ref) {
|
|
|
44
44
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
45
45
|
results = _useState4[0],
|
|
46
46
|
setResults = _useState4[1];
|
|
47
|
+
var debounceTimeout = useRef();
|
|
48
|
+
var abortController = useRef();
|
|
49
|
+
useEffect(function () {
|
|
50
|
+
return function () {
|
|
51
|
+
return clearTimeout(debounceTimeout.current);
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
47
54
|
var getSuggestionsSetResults = function getSuggestionsSetResults(value) {
|
|
48
|
-
|
|
55
|
+
var _abortController$curr;
|
|
56
|
+
// Supersede the request that is still in flight, so its response cannot
|
|
57
|
+
// arrive after the one we are about to make.
|
|
58
|
+
(_abortController$curr = abortController.current) === null || _abortController$curr === void 0 ? void 0 : _abortController$curr.abort();
|
|
59
|
+
abortController.current = new AbortController();
|
|
60
|
+
getApiAutoCompleteSuggestions(endpoint, queryParameter, value, _objectSpread(_objectSpread({}, requestOptions), {}, {
|
|
61
|
+
signal: abortController.current.signal
|
|
62
|
+
})).then(function (data) {
|
|
49
63
|
if (data) {
|
|
50
64
|
setResults(data);
|
|
51
65
|
}
|
|
@@ -57,9 +71,17 @@ var ApiAutocomplete = function ApiAutocomplete(_ref) {
|
|
|
57
71
|
suggestions: results,
|
|
58
72
|
onSuggestionsFetchRequested: function onSuggestionsFetchRequested(_ref2) {
|
|
59
73
|
var value = _ref2.value;
|
|
60
|
-
|
|
74
|
+
if (!debounce) {
|
|
75
|
+
getSuggestionsSetResults(value);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
clearTimeout(debounceTimeout.current);
|
|
79
|
+
debounceTimeout.current = setTimeout(function () {
|
|
80
|
+
getSuggestionsSetResults(value);
|
|
81
|
+
}, debounce);
|
|
61
82
|
},
|
|
62
83
|
onSuggestionsClearRequested: function onSuggestionsClearRequested() {
|
|
84
|
+
clearTimeout(debounceTimeout.current);
|
|
63
85
|
setResults([]);
|
|
64
86
|
},
|
|
65
87
|
getSuggestionValue: getSuggestionValue,
|
|
@@ -75,10 +97,10 @@ var ApiAutocomplete = function ApiAutocomplete(_ref) {
|
|
|
75
97
|
inputProps: _objectSpread(_objectSpread({}, restProps), {}, {
|
|
76
98
|
placeholder: placeholder,
|
|
77
99
|
value: queryInput,
|
|
78
|
-
onBlur: function onBlur(
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
if (!value ||
|
|
100
|
+
onBlur: function onBlur(event) {
|
|
101
|
+
var _ref5 = event.target,
|
|
102
|
+
value = _ref5.value;
|
|
103
|
+
if (!value || value.length === 0) {
|
|
82
104
|
onSelectItem(null);
|
|
83
105
|
}
|
|
84
106
|
},
|
|
@@ -9,14 +9,13 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
9
9
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
10
10
|
function abortableFetch(request, opts) {
|
|
11
11
|
var controller = new AbortController();
|
|
12
|
-
var signal = controller.signal;
|
|
13
12
|
return {
|
|
14
13
|
abort: function abort() {
|
|
15
14
|
return controller.abort();
|
|
16
15
|
},
|
|
17
|
-
ready: fetch(request, _objectSpread(
|
|
18
|
-
signal: signal
|
|
19
|
-
}))
|
|
16
|
+
ready: fetch(request, _objectSpread({
|
|
17
|
+
signal: controller.signal
|
|
18
|
+
}, opts))
|
|
20
19
|
};
|
|
21
20
|
}
|
|
22
21
|
var getApiAutoCompleteSuggestions = /*#__PURE__*/function () {
|
|
@@ -29,10 +28,7 @@ var getApiAutoCompleteSuggestions = /*#__PURE__*/function () {
|
|
|
29
28
|
if (currentFetch) {
|
|
30
29
|
currentFetch.abort();
|
|
31
30
|
}
|
|
32
|
-
|
|
33
|
-
// eslint-disable-next-line no-param-reassign
|
|
34
|
-
currentFetch = abortableFetch(url, requestOptions);
|
|
35
|
-
return _context.abrupt("return", currentFetch.ready.then(function (response) {
|
|
31
|
+
return _context.abrupt("return", abortableFetch(url, requestOptions).ready.then(function (response) {
|
|
36
32
|
return response.json();
|
|
37
33
|
}).then(function (response) {
|
|
38
34
|
return (
|
|
@@ -46,11 +42,13 @@ var getApiAutoCompleteSuggestions = /*#__PURE__*/function () {
|
|
|
46
42
|
})
|
|
47
43
|
);
|
|
48
44
|
}).catch(function (e) {
|
|
49
|
-
|
|
45
|
+
if (e.name !== 'AbortError') {
|
|
46
|
+
console.warn(e);
|
|
47
|
+
}
|
|
50
48
|
return null;
|
|
51
49
|
// Catch the error so the browser does not output errors.
|
|
52
50
|
}));
|
|
53
|
-
case
|
|
51
|
+
case 3:
|
|
54
52
|
case "end":
|
|
55
53
|
return _context.stop();
|
|
56
54
|
}
|