@linzjs/lui 17.4.0 → 17.5.2

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.
package/dist/lui.esm.js CHANGED
@@ -55882,6 +55882,10 @@ var LuiSearchInput = function (props) {
55882
55882
  var _e = useState(false), isLoading = _e[0], setIsLoading = _e[1];
55883
55883
  var inputRef = useRef(null);
55884
55884
  var selectedRef = useRef(null);
55885
+ //clear result after search types changed
55886
+ useEffect(function () {
55887
+ setResults([]);
55888
+ }, [props.getOptions]);
55885
55889
  function setInputValue(value) {
55886
55890
  setTypedValue(props.inputTransformer ? props.inputTransformer(value) : value);
55887
55891
  }
@@ -55986,6 +55990,25 @@ var LuiSearchInput = function (props) {
55986
55990
  },
55987
55991
  } })) : null;
55988
55992
  var searchIcon = (React__default.createElement(LuiIcon, { className: 'LuiSearchInput-startIconPosition', name: "ic_search", size: "md", alt: "search", spanProps: { onClick: function () { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); } } }));
55993
+ var typeMore = 'You need to type a few more characters';
55994
+ function enoughChars(input) {
55995
+ if (typeof props.minCharactersForSearch === 'number')
55996
+ return input.length >= props.minCharactersForSearch;
55997
+ else
55998
+ return false;
55999
+ }
56000
+ function noOptionsMessage(inputValue) {
56001
+ if (inputValue === '') {
56002
+ return null;
56003
+ }
56004
+ if (!enoughChars(inputValue)) {
56005
+ return typeMore;
56006
+ }
56007
+ if (props.name)
56008
+ return "The " + props.name + " could not be displayed or does not exist.";
56009
+ else
56010
+ return null;
56011
+ }
55989
56012
  return (React__default.createElement("div", { className: "LuiSearchInput" },
55990
56013
  React__default.createElement("span", { className: "LuiSearchInput-inputWrapper" },
55991
56014
  searchIcon,
@@ -55994,10 +56017,17 @@ var LuiSearchInput = function (props) {
55994
56017
  setHaveFocus(true);
55995
56018
  },
55996
56019
  // This timeout could be a little brittle but allows the menu to stay open long enough to click it
55997
- onBlur: function () { return setTimeout(function () { return setHaveFocus(false); }, 100); } }),
56020
+ onBlur: function () { return setTimeout(function () { return setHaveFocus(false); }, 200); } }),
55998
56021
  cancelIcon),
55999
56022
  (isLoading || results.length > 0) && haveFocus && (React__default.createElement("div", null,
56000
56023
  React__default.createElement(ResultsDisplay, { results: results, selectedId: selectedId, setSelectedId: setSelectedId, selectedRef: selectedRef, onClick: selectItem, isLoading: isLoading, renderItem: props.renderItem }))),
56024
+ props.name &&
56025
+ haveFocus &&
56026
+ results.length === 0 &&
56027
+ !isLoading &&
56028
+ noOptionsMessage(typedValue) && (React__default.createElement(React__default.Fragment, null,
56029
+ React__default.createElement("hr", { className: "LuiSearchInput-resultSeparator" }),
56030
+ React__default.createElement("div", { "data-testid": "no-result-msg", className: "LuiSearchInput-disclaimer" }, noOptionsMessage(typedValue)))),
56001
56031
  props.disclaimer && haveFocus && (React__default.createElement(React__default.Fragment, null,
56002
56032
  React__default.createElement("hr", { className: "LuiSearchInput-resultSeparator" }),
56003
56033
  React__default.createElement("div", { "data-testid": "disclaimer", className: "LuiSearchInput-disclaimer" }, props.disclaimer)))));
@@ -56031,7 +56061,7 @@ var LuiSearchBox = function (_a) {
56031
56061
  return (React__default.createElement("div", { className: "LuiSearchBox" },
56032
56062
  React__default.createElement(LuiSelectMenu, { menuButton: React__default.createElement(LuiSearchBoxButton, null, selectedMenuOption.title) }, renderSelectMenu(searchBoxOptions, handleMenuSelected)),
56033
56063
  React__default.createElement("div", { className: "LuiSearchBox-right" },
56034
- React__default.createElement(LuiSearchInput, { minCharactersForSearch: 2, placeholderText: selectedMenuOption.placeholderText, getOptions: selectedMenuOption.getOption, onSelectOption: selectedMenuOption.onSelectOption, renderItem: selectedMenuOption.renderItem
56064
+ React__default.createElement(LuiSearchInput, { name: selectedMenuOption.name ? selectedMenuOption.name : undefined, minCharactersForSearch: 2, placeholderText: selectedMenuOption.placeholderText, getOptions: selectedMenuOption.getOption, onSelectOption: selectedMenuOption.onSelectOption, renderItem: selectedMenuOption.renderItem
56035
56065
  ? selectedMenuOption.renderItem
56036
56066
  : function (item) {
56037
56067
  return React__default.createElement("span", { style: resultStyle$1 }, item.description);
@@ -56084,6 +56114,7 @@ var searchBoxOptions = [
56084
56114
  groupTitle: 'Title',
56085
56115
  value: 'address',
56086
56116
  title: 'Address',
56117
+ name: 'address',
56087
56118
  placeholderText: 'Enter a place, street or address. e.g. Newlands',
56088
56119
  disclaimer: 'This is a default disclaimer, add your own search options',
56089
56120
  getOption: getDefaultOptions,