@uncinc/uncinc-react-kitchen-sink 2.25.2 → 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
- suggestProps: Omit<AutosuggestPropsBase<TSuggestion>, 'suggestions' | 'onSuggestionsFetchRequested' | 'onSuggestionsClearRequested' | 'getSuggestionValue' | 'renderSuggestion' | 'onSuggestionSelected' | 'inputProps'>;
18
+ debounce?: number;
19
+ suggestProps?: Omit<AutosuggestPropsBase<TSuggestion>, 'suggestions' | 'onSuggestionsFetchRequested' | 'onSuggestionsClearRequested' | 'getSuggestionValue' | 'renderSuggestion' | 'onSuggestionSelected' | 'inputProps'>;
19
20
  }
20
- declare const ApiAutocomplete: React.FC<ApiAutocompleteProps>;
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
- getApiAutoCompleteSuggestions(endpoint, queryParameter, value, requestOptions, currentFetch).then(function (data) {
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
- getSuggestionsSetResults(value);
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(_ref5) {
79
- var value = _ref5.target;
80
- // @ts-ignore
81
- if (!value || (value === null || value === void 0 ? void 0 : value.length) === 0) {
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
  },
@@ -1,9 +1,11 @@
1
1
  import React, { HTMLAttributes } from 'react';
2
+ export type TitleWithTextHeadingTag = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
2
3
  export interface TitleWithTextProps extends React.HTMLProps<HTMLAttributes<HTMLDivElement>> {
3
4
  title?: string;
4
5
  titleProps?: React.ComponentPropsWithoutRef<'h2'>;
5
6
  text?: string;
6
7
  className?: string;
8
+ headingTag?: TitleWithTextHeadingTag;
7
9
  }
8
10
  declare const TitleWithText: React.FC<TitleWithTextProps>;
9
11
  export default TitleWithText;
@@ -1,4 +1,4 @@
1
- var _excluded = ["title", "titleProps", "text", "className"];
1
+ var _excluded = ["title", "titleProps", "text", "className", "headingTag"];
2
2
  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); }
3
3
  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; }
4
4
  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; }
@@ -10,11 +10,14 @@ var TitleWithText = function TitleWithText(_ref) {
10
10
  titleProps = _ref.titleProps,
11
11
  text = _ref.text,
12
12
  className = _ref.className,
13
+ _ref$headingTag = _ref.headingTag,
14
+ headingTag = _ref$headingTag === void 0 ? 'h2' : _ref$headingTag,
13
15
  props = _objectWithoutProperties(_ref, _excluded);
14
16
  var classes = c('TitleWithText', className);
17
+ var HeadingTag = headingTag;
15
18
  return /*#__PURE__*/React.createElement("div", {
16
19
  className: classes
17
- }, title && /*#__PURE__*/React.createElement("h2", _extends({
20
+ }, title && /*#__PURE__*/React.createElement(HeadingTag, _extends({
18
21
  className: "TitleWithText__title"
19
22
  }, titleProps), title), text && /*#__PURE__*/React.createElement(WysiwygField, _extends({
20
23
  className: "TitleWithText__text",
@@ -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(_objectSpread({}, opts), {}, {
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
- console.warn(e);
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 4:
51
+ case 3:
54
52
  case "end":
55
53
  return _context.stop();
56
54
  }
@@ -1,7 +1,9 @@
1
1
  import React, { HTMLAttributes } from 'react';
2
+ import { type TitleWithTextHeadingTag } from '../../components/TitleWithText';
2
3
  export interface TextProps extends React.HTMLProps<HTMLAttributes<HTMLDivElement>> {
3
4
  title?: string;
4
5
  titleProps?: React.ComponentProps<'h2'>;
6
+ headingTag?: TitleWithTextHeadingTag;
5
7
  text: string;
6
8
  readMore?: string;
7
9
  duration?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uncinc/uncinc-react-kitchen-sink",
3
- "version": "2.25.2",
3
+ "version": "2.26.0",
4
4
  "description": "Default React components that are easily extended.",
5
5
  "author": "uncinc",
6
6
  "license": "MIT",