funda-ui 4.7.152 → 4.7.161

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.
Files changed (45) hide show
  1. package/CascadingSelect/index.js +13 -6
  2. package/CascadingSelectE2E/index.js +13 -6
  3. package/Chatbox/index.css +8 -0
  4. package/Chatbox/index.d.ts +1 -0
  5. package/Chatbox/index.js +18 -8
  6. package/Date/index.js +13 -6
  7. package/DropdownMenu/index.js +13 -6
  8. package/EventCalendar/index.js +42 -35
  9. package/EventCalendarTimeline/index.js +55 -41
  10. package/LiveSearch/index.css +33 -0
  11. package/LiveSearch/index.d.ts +1 -0
  12. package/LiveSearch/index.js +186 -91
  13. package/ModalDialog/index.js +13 -6
  14. package/RootPortal/index.d.ts +2 -1
  15. package/RootPortal/index.js +13 -6
  16. package/Select/index.js +81 -72
  17. package/Toast/index.js +13 -6
  18. package/Tooltip/index.js +13 -6
  19. package/lib/cjs/CascadingSelect/index.js +13 -6
  20. package/lib/cjs/CascadingSelectE2E/index.js +13 -6
  21. package/lib/cjs/Chatbox/index.d.ts +1 -0
  22. package/lib/cjs/Chatbox/index.js +18 -8
  23. package/lib/cjs/Date/index.js +13 -6
  24. package/lib/cjs/DropdownMenu/index.js +13 -6
  25. package/lib/cjs/EventCalendar/index.js +42 -35
  26. package/lib/cjs/EventCalendarTimeline/index.js +55 -41
  27. package/lib/cjs/LiveSearch/index.d.ts +1 -0
  28. package/lib/cjs/LiveSearch/index.js +186 -91
  29. package/lib/cjs/ModalDialog/index.js +13 -6
  30. package/lib/cjs/RootPortal/index.d.ts +2 -1
  31. package/lib/cjs/RootPortal/index.js +13 -6
  32. package/lib/cjs/Select/index.js +81 -72
  33. package/lib/cjs/Toast/index.js +13 -6
  34. package/lib/cjs/Tooltip/index.js +13 -6
  35. package/lib/css/Chatbox/index.css +8 -0
  36. package/lib/css/LiveSearch/index.css +33 -0
  37. package/lib/esm/Chatbox/index.scss +9 -0
  38. package/lib/esm/Chatbox/index.tsx +7 -4
  39. package/lib/esm/LiveSearch/index.scss +47 -0
  40. package/lib/esm/LiveSearch/index.tsx +120 -64
  41. package/lib/esm/RootPortal/index.tsx +14 -8
  42. package/lib/esm/SearchBar/index.tsx +1 -0
  43. package/lib/esm/Select/index.tsx +65 -64
  44. package/lib/esm/Textarea/index.tsx +1 -0
  45. package/package.json +1 -1
@@ -171,7 +171,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
171
171
  var RootPortal = function RootPortal(props) {
172
172
  var containerClassName = props.containerClassName,
173
173
  show = props.show,
174
- children = props.children;
174
+ children = props.children,
175
+ _props$usePortal = props.usePortal,
176
+ usePortal = _props$usePortal === void 0 ? true : _props$usePortal;
175
177
  var containerRef = (0, react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
176
178
 
177
179
  // Move HTML templates to tag end body </body>
@@ -182,15 +184,20 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
182
184
  // Use `containerRef.current` to ensure the correctness of the nextjs framework. It may report an error document as undefined
183
185
 
184
186
  (0, react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
185
- containerRef.current = document.createElement('div');
186
- containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
187
- document.body.appendChild(containerRef.current);
187
+ if (usePortal) {
188
+ containerRef.current = document.createElement('div');
189
+ containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
190
+ document.body.appendChild(containerRef.current);
191
+ }
188
192
  return function () {
189
- if (containerRef.current) {
193
+ if (usePortal && containerRef.current) {
190
194
  containerRef.current.remove();
191
195
  }
192
196
  };
193
- }, []);
197
+ }, [usePortal]);
198
+ if (!usePortal) {
199
+ return show ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0___default().Fragment, null, children) : null;
200
+ }
194
201
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0___default().Fragment, null, containerRef.current && show && /*#__PURE__*/(0, react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)(children, containerRef.current));
195
202
  };
196
203
  /* harmony default export */
@@ -2745,7 +2752,7 @@ __webpack_require__.r(__webpack_exports__);
2745
2752
  /* harmony import */ var funda_utils_dist_cjs_getElementProperty__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_getElementProperty__WEBPACK_IMPORTED_MODULE_8__);
2746
2753
  /* harmony import */ var funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(188);
2747
2754
  /* harmony import */ var funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9__);
2748
- var _excluded = ["contentRef", "popupRef", "wrapperClassName", "controlClassName", "controlExClassName", "optionsExClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "exceededSidePosOffset", "appearance", "isSearchInput", "allowSpacingRetrive", "readOnly", "disabled", "required", "placeholder", "noMatchPopup", "options", "value", "label", "name", "units", "iconLeft", "iconRight", "minLength", "maxLength", "id", "autoComplete", "autoCapitalize", "spellCheck", "icon", "btnId", "fetchTrigger", "hideIcon", "depth", "style", "winWidth", "tabIndex", "data", "autoShowOptions", "fetchNoneInfo", "fetchUpdate", "fetchFuncAsync", "fetchFuncMethod", "fetchFuncMethodParams", "fetchCallback", "onClick", "onFetch", "onChange", "onKeyboardInput", "onBlur", "onPressEnter"];
2755
+ var _excluded = ["contentRef", "popupRef", "wrapperClassName", "controlClassName", "controlExClassName", "optionsExClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "exceededSidePosOffset", "appearance", "isSearchInput", "allowSpacingRetrive", "loader", "readOnly", "disabled", "required", "placeholder", "noMatchPopup", "options", "value", "label", "name", "units", "iconLeft", "iconRight", "minLength", "maxLength", "id", "autoComplete", "autoCapitalize", "spellCheck", "icon", "btnId", "fetchTrigger", "hideIcon", "depth", "style", "winWidth", "tabIndex", "data", "autoShowOptions", "fetchNoneInfo", "fetchUpdate", "fetchFuncAsync", "fetchFuncMethod", "fetchFuncMethodParams", "fetchCallback", "onClick", "onFetch", "onChange", "onKeyboardInput", "onBlur", "onPressEnter"];
2749
2756
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2750
2757
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
2751
2758
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -2786,6 +2793,7 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2786
2793
  appearance = props.appearance,
2787
2794
  isSearchInput = props.isSearchInput,
2788
2795
  allowSpacingRetrive = props.allowSpacingRetrive,
2796
+ loader = props.loader,
2789
2797
  readOnly = props.readOnly,
2790
2798
  disabled = props.disabled,
2791
2799
  required = props.required,
@@ -2814,7 +2822,8 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2814
2822
  tabIndex = props.tabIndex,
2815
2823
  data = props.data,
2816
2824
  autoShowOptions = props.autoShowOptions,
2817
- fetchNoneInfo = props.fetchNoneInfo,
2825
+ _props$fetchNoneInfo = props.fetchNoneInfo,
2826
+ fetchNoneInfo = _props$fetchNoneInfo === void 0 ? 'No match yet' : _props$fetchNoneInfo,
2818
2827
  fetchUpdate = props.fetchUpdate,
2819
2828
  fetchFuncAsync = props.fetchFuncAsync,
2820
2829
  fetchFuncMethod = props.fetchFuncMethod,
@@ -2831,7 +2840,9 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2831
2840
  var DEPTH = depth || 1055; // the default value same as bootstrap
2832
2841
  var POS_OFFSET = 0;
2833
2842
  var EXCEEDED_SIDE_POS_OFFSET = Number(exceededSidePosOffset) || 15;
2834
- var EMPTY_FOR_FETCH = typeof autoShowOptions === 'undefined' || autoShowOptions === false ? false : true;
2843
+ var AUTO_SHOW_OPTIONS = typeof autoShowOptions !== 'undefined' && autoShowOptions === true ? true : false;
2844
+ var MANUAL_REQ = typeof fetchTrigger !== 'undefined' && fetchTrigger === true ? true : false; // Manual requests
2845
+
2835
2846
  var NO_MATCH_POPUP = typeof noMatchPopup === 'undefined' ? true : noMatchPopup;
2836
2847
  var WIN_WIDTH = typeof winWidth === 'function' ? winWidth() : winWidth ? winWidth : 'auto';
2837
2848
  var uniqueID = funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_3___default()();
@@ -2846,34 +2857,47 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2846
2857
  var staticOptionsData = optionsRes;
2847
2858
 
2848
2859
  //
2849
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2860
+ var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),
2850
2861
  _useState2 = _slicedToArray(_useState, 2),
2851
- firstFetch = _useState2[0],
2852
- setFirstFetch = _useState2[1];
2853
- var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(staticOptionsData),
2862
+ controlTempValue = _useState2[0],
2863
+ setControlTempValue = _useState2[1]; // Storage for temporary input
2864
+ var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2854
2865
  _useState4 = _slicedToArray(_useState3, 2),
2855
- dataInit = _useState4[0],
2856
- setOrginalDataInit = _useState4[1];
2857
- var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
2866
+ firstFetch = _useState4[0],
2867
+ setFirstFetch = _useState4[1];
2868
+ var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(staticOptionsData),
2858
2869
  _useState6 = _slicedToArray(_useState5, 2),
2859
- orginalData = _useState6[0],
2860
- setOrginalData = _useState6[1];
2861
- var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value || ''),
2870
+ dataInit = _useState6[0],
2871
+ setOrginalDataInit = _useState6[1];
2872
+ var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
2862
2873
  _useState8 = _slicedToArray(_useState7, 2),
2863
- changedVal = _useState8[0],
2864
- setChangedVal = _useState8[1];
2865
- var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2874
+ orginalData = _useState8[0],
2875
+ setOrginalData = _useState8[1];
2876
+ var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value || ''),
2866
2877
  _useState10 = _slicedToArray(_useState9, 2),
2867
- isOpen = _useState10[0],
2868
- setIsOpen = _useState10[1];
2878
+ changedVal = _useState10[0],
2879
+ setChangedVal = _useState10[1];
2869
2880
  var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2870
2881
  _useState12 = _slicedToArray(_useState11, 2),
2871
- hasErr = _useState12[0],
2872
- setHasErr = _useState12[1];
2882
+ isOpen = _useState12[0],
2883
+ setIsOpen = _useState12[1];
2873
2884
  var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2874
2885
  _useState14 = _slicedToArray(_useState13, 2),
2875
- componentFirstLoad = _useState14[0],
2876
- setComponentFirstLoad = _useState14[1];
2886
+ hasErr = _useState14[0],
2887
+ setHasErr = _useState14[1];
2888
+ var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2889
+ _useState16 = _slicedToArray(_useState15, 2),
2890
+ componentFirstLoad = _useState16[0],
2891
+ setComponentFirstLoad = _useState16[1];
2892
+ var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
2893
+ _useState18 = _slicedToArray(_useState17, 2),
2894
+ reqProgress = _useState18[0],
2895
+ setReqProgress = _useState18[1];
2896
+
2897
+ // Mark whether it is out of focus
2898
+ // Fixed the issue that caused the pop-up window to still display due to
2899
+ // the delayed close in handleBlur and the timing of the call to popwinPosInit
2900
+ var isBlurringRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
2877
2901
 
2878
2902
  //performance
2879
2903
  var handleChangeFetchSafe = funda_utils_dist_cjs_useDebounce__WEBPACK_IMPORTED_MODULE_7___default()(function (e) {
@@ -2884,8 +2908,10 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2884
2908
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(popupRef, function () {
2885
2909
  return {
2886
2910
  close: function close() {
2887
- setIsOpen(false);
2888
2911
  cancel();
2912
+ },
2913
+ open: function open() {
2914
+ activate();
2889
2915
  }
2890
2916
  };
2891
2917
  }, [popupRef]);
@@ -2921,7 +2947,6 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2921
2947
  },
2922
2948
  handle: function handle(event) {
2923
2949
  // cancel
2924
- setIsOpen(false);
2925
2950
  cancel();
2926
2951
  }
2927
2952
  }, [isOpen, rootRef, listRef]);
@@ -2940,6 +2965,11 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
2940
2965
  function popwinPosInit() {
2941
2966
  var showAct = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
2942
2967
  if (listContentRef.current === null || inputRef.current === null) return;
2968
+
2969
+ // If it is out of focus, do not perform position initialization
2970
+ if (isBlurringRef.current && !MANUAL_REQ) return;
2971
+
2972
+ //
2943
2973
  var contentHeightOffset = 80;
2944
2974
  var contentMaxHeight = 0;
2945
2975
 
@@ -3138,9 +3168,12 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3138
3168
  var val = e.target.value;
3139
3169
  setChangedVal(val);
3140
3170
 
3171
+ // update temporary value
3172
+ setControlTempValue(val);
3173
+
3141
3174
  //
3142
- if (!fetchTrigger) {
3143
- matchData(val, fetchUpdate, EMPTY_FOR_FETCH).then(function (response) {
3175
+ if (!MANUAL_REQ) {
3176
+ matchData(val, fetchUpdate, AUTO_SHOW_OPTIONS).then(function (response) {
3144
3177
  setOrginalData(response);
3145
3178
 
3146
3179
  //
@@ -3165,8 +3198,15 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3165
3198
  }
3166
3199
  }
3167
3200
  function cancel() {
3201
+ // hide list
3202
+ setIsOpen(false);
3203
+
3204
+ //
3168
3205
  setOrginalData([]);
3169
3206
  popwinPosHide();
3207
+
3208
+ // update temporary value
3209
+ setControlTempValue(null);
3170
3210
  }
3171
3211
  function fetchData(_x2) {
3172
3212
  return _fetchData.apply(this, arguments);
@@ -3177,13 +3217,17 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3177
3217
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
3178
3218
  while (1) switch (_context2.prev = _context2.next) {
3179
3219
  case 0:
3220
+ // update request process
3221
+ setReqProgress(true);
3222
+
3223
+ //
3180
3224
  if (!(_typeof(fetchFuncAsync) === 'object')) {
3181
- _context2.next = 13;
3225
+ _context2.next = 15;
3182
3226
  break;
3183
3227
  }
3184
- _context2.next = 3;
3228
+ _context2.next = 4;
3185
3229
  return fetchFuncAsync["".concat(fetchFuncMethod)].apply(fetchFuncAsync, _toConsumableArray(params.split(',')));
3186
- case 3:
3230
+ case 4:
3187
3231
  response = _context2.sent;
3188
3232
  _ORGIN_DATA = response.data; // reset data structure
3189
3233
  if (typeof fetchCallback === 'function') {
@@ -3210,10 +3254,15 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3210
3254
  popwinPosInit();
3211
3255
  }, 500);
3212
3256
  }
3257
+
3258
+ // update request process
3259
+ setReqProgress(false);
3213
3260
  return _context2.abrupt("return", _ORGIN_DATA);
3214
- case 13:
3261
+ case 15:
3262
+ // update request process
3263
+ setReqProgress(false);
3215
3264
  return _context2.abrupt("return", []);
3216
- case 14:
3265
+ case 17:
3217
3266
  case "end":
3218
3267
  return _context2.stop();
3219
3268
  }
@@ -3249,32 +3298,37 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3249
3298
  _data = JSON.parse(dataInput);
3250
3299
  onChange === null || onChange === void 0 ? void 0 : onChange(inputRef.current, orginalData, _data, listRef.current);
3251
3300
  setChangedVal(_data.label);
3252
- _context3.next = 21;
3301
+ _context3.next = 23;
3253
3302
  break;
3254
3303
  case 9:
3255
3304
  _curData = typeof el.target !== 'undefined' ? el.target.dataset.itemdata : el.dataset.itemdata;
3305
+ if (!(typeof _curData === 'undefined')) {
3306
+ _context3.next = 12;
3307
+ break;
3308
+ }
3309
+ return _context3.abrupt("return");
3310
+ case 12:
3256
3311
  _data2 = JSON.parse(_curData);
3257
3312
  res = [];
3258
- if (EMPTY_FOR_FETCH) {
3259
- _context3.next = 18;
3313
+ if (AUTO_SHOW_OPTIONS) {
3314
+ _context3.next = 20;
3260
3315
  break;
3261
3316
  }
3262
- _context3.next = 15;
3263
- return matchData(inputRef.current.value, false, EMPTY_FOR_FETCH);
3264
- case 15:
3317
+ _context3.next = 17;
3318
+ return matchData(inputRef.current.value, false, AUTO_SHOW_OPTIONS);
3319
+ case 17:
3265
3320
  res = _context3.sent;
3266
- _context3.next = 19;
3321
+ _context3.next = 21;
3267
3322
  break;
3268
- case 18:
3323
+ case 20:
3269
3324
  res = dataInit;
3270
- case 19:
3325
+ case 21:
3271
3326
  onChange === null || onChange === void 0 ? void 0 : onChange(inputRef.current, res, _data2, listRef.current);
3272
3327
  setChangedVal(_data2.label);
3273
- case 21:
3328
+ case 23:
3274
3329
  // cancel
3275
- setIsOpen(false);
3276
3330
  cancel();
3277
- case 23:
3331
+ case 24:
3278
3332
  case "end":
3279
3333
  return _context3.stop();
3280
3334
  }
@@ -3291,12 +3345,12 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3291
3345
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
3292
3346
  while (1) switch (_context4.prev = _context4.next) {
3293
3347
  case 0:
3294
- if (!fetchTrigger) {
3348
+ if (!MANUAL_REQ) {
3295
3349
  _context4.next = 7;
3296
3350
  break;
3297
3351
  }
3298
3352
  _context4.next = 3;
3299
- return matchData(changedVal, fetchUpdate, EMPTY_FOR_FETCH);
3353
+ return matchData(changedVal, true, true);
3300
3354
  case 3:
3301
3355
  res = _context4.sent;
3302
3356
  setOrginalData(res);
@@ -3316,38 +3370,45 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3316
3370
  }));
3317
3371
  return _handleFetch.apply(this, arguments);
3318
3372
  }
3319
- function handleClick() {
3320
- if (!isOpen) {
3321
- if (EMPTY_FOR_FETCH) {
3322
- setOrginalData(dataInit);
3323
- setIsOpen(true);
3324
- }
3373
+ function activate() {
3374
+ if (AUTO_SHOW_OPTIONS) {
3375
+ setOrginalData(dataInit);
3376
+ setIsOpen(true);
3377
+ }
3325
3378
 
3326
- // window position
3327
- setTimeout(function () {
3328
- popwinPosInit();
3329
- }, 0);
3379
+ // window position
3380
+ setTimeout(function () {
3381
+ popwinPosInit();
3382
+ }, 0);
3383
+ }
3384
+ function handleShowList() {
3385
+ // Reset the out-of-focus marker
3386
+ isBlurringRef.current = false;
3387
+ if (!isOpen) {
3388
+ activate();
3330
3389
  } else {
3331
3390
  // cancel
3332
- setIsOpen(false);
3333
3391
  cancel();
3334
3392
  }
3393
+
3394
+ // Every time the input changes or the search button is clicked, a data request will be triggered
3395
+ if (!AUTO_SHOW_OPTIONS && (controlTempValue === '' || controlTempValue === null) || MANUAL_REQ) {
3396
+ setTimeout(function () {
3397
+ popwinPosHide();
3398
+ }, 0);
3399
+ }
3335
3400
  onClick === null || onClick === void 0 ? void 0 : onClick(inputRef.current, listRef.current);
3336
3401
  }
3337
3402
  function handleBlur(e) {
3338
- setIsOpen(false);
3339
- if (!fetchTrigger) {
3340
- setTimeout(function () {
3341
- //
3342
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(inputRef.current, listRef.current);
3403
+ // Set the out-of-focus marker
3404
+ isBlurringRef.current = true;
3405
+ setTimeout(function () {
3406
+ // cancel
3407
+ cancel(); // The delay is to avoid losing focus and not being able to click on the option
3343
3408
 
3344
- //
3345
- cancel();
3346
- }, 300);
3347
- }
3348
- }
3349
- function handleMouseLeaveTrigger() {
3350
- setIsOpen(false);
3409
+ //
3410
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(inputRef.current, listRef.current);
3411
+ }, 300);
3351
3412
  }
3352
3413
  function optionFocus(type) {
3353
3414
  return new Promise(function (resolve) {
@@ -3477,13 +3538,16 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3477
3538
 
3478
3539
  // data init
3479
3540
  //--------------
3480
- var _oparams = fetchFuncMethodParams || [];
3481
- var _params = _oparams.map(function (item) {
3482
- return item !== '$QUERY_STRING' ? item : fetchTrigger && !fetchUpdate ? '' : fetchUpdate ? QUERY_STRING_PLACEHOLDER : fetchTrigger ? QUERY_STRING_PLACEHOLDER : '';
3483
- });
3484
- if (!firstFetch) {
3485
- fetchData(_params.join(','));
3486
- setFirstFetch(true); // avoid triggering two data requests if the input value has not changed
3541
+ // If automatic request enabled, do not send them for the first time
3542
+ if (AUTO_SHOW_OPTIONS) {
3543
+ var _oparams = fetchFuncMethodParams || [];
3544
+ var _params = _oparams.map(function (item) {
3545
+ return item !== '$QUERY_STRING' ? item : MANUAL_REQ && !fetchUpdate ? '' : fetchUpdate ? QUERY_STRING_PLACEHOLDER : MANUAL_REQ ? QUERY_STRING_PLACEHOLDER : '';
3546
+ });
3547
+ if (!firstFetch) {
3548
+ fetchData(_params.join(','));
3549
+ setFirstFetch(true); // avoid triggering two data requests if the input value has not changed
3550
+ }
3487
3551
  }
3488
3552
  }, [value, data]);
3489
3553
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, label ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
@@ -3502,7 +3566,6 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3502
3566
  className: (0,funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9__.combinedCls)('livesearch__wrapper', (0,funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9__.clsWrite)(wrapperClassName, 'mb-3 position-relative'), {
3503
3567
  'active': isOpen
3504
3568
  }),
3505
- onMouseLeave: handleMouseLeaveTrigger,
3506
3569
  onKeyDown: handleKeyPressed
3507
3570
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((funda_searchbar__WEBPACK_IMPORTED_MODULE_2___default()), _extends({
3508
3571
  wrapperClassName: "",
@@ -3539,8 +3602,8 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3539
3602
  },
3540
3603
  onBlur: handleBlur,
3541
3604
  onSubmit: handleFetch,
3542
- onClick: handleClick,
3543
- icon: hideIcon ? '' : !fetchTrigger ? '' : icon,
3605
+ onClick: handleShowList,
3606
+ icon: hideIcon ? '' : !MANUAL_REQ ? '' : icon,
3544
3607
  btnId: btnId,
3545
3608
  autoComplete: typeof autoComplete === 'undefined' ? 'off' : autoComplete,
3546
3609
  autoCapitalize: typeof autoCapitalize === 'undefined' ? 'off' : autoCapitalize,
@@ -3571,9 +3634,6 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3571
3634
  className: (0,funda_utils_dist_cjs_cls__WEBPACK_IMPORTED_MODULE_9__.combinedCls)('livesearch__options-contentlist rounded', {
3572
3635
  'd-none': orginalData && orginalData.length === 0 && !NO_MATCH_POPUP
3573
3636
  }),
3574
- style: {
3575
- backgroundColor: 'var(--bs-list-group-bg)'
3576
- },
3577
3637
  ref: listContentRef
3578
3638
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
3579
3639
  className: "livesearch__options-contentlist-inner"
@@ -3582,7 +3642,7 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3582
3642
  type: "button",
3583
3643
  className: "list-group-item list-group-item-action border-top-0 border-bottom-0 no-match livesearch__control-option-item--nomatch",
3584
3644
  disabled: true
3585
- }, fetchNoneInfo || 'No match yet')) : null, orginalData ? orginalData.map(function (item, index) {
3645
+ }, fetchNoneInfo)) : null, orginalData ? orginalData.map(function (item, index) {
3586
3646
  var startItemBorder = index === 0 ? 'border-top-0' : '';
3587
3647
  var endItemBorder = index === orginalData.length - 1 ? 'border-bottom-0' : '';
3588
3648
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
@@ -3604,14 +3664,49 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3604
3664
  },
3605
3665
  onClick: handleSelect
3606
3666
  });
3607
- }) : null))))) : null, hideIcon ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, !fetchTrigger ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
3667
+ }) : null))))) : null, reqProgress ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
3668
+ className: "livesearch-loader ".concat(!hideIcon ? 'pos-offset' : '')
3669
+ }, loader || /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", {
3670
+ height: "12px",
3671
+ width: "12px",
3672
+ viewBox: "0 0 512 512"
3673
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("g", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3674
+ fill: "inherit",
3675
+ d: "M256,0c-23.357,0-42.297,18.932-42.297,42.288c0,23.358,18.94,42.288,42.297,42.288c23.357,0,42.279-18.93,42.279-42.288C298.279,18.932,279.357,0,256,0z"
3676
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3677
+ fill: "inherit",
3678
+ d: "M256,427.424c-23.357,0-42.297,18.931-42.297,42.288C213.703,493.07,232.643,512,256,512c23.357,0,42.279-18.93,42.279-42.288C298.279,446.355,279.357,427.424,256,427.424z"
3679
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3680
+ fill: "inherit",
3681
+ d: "M74.974,74.983c-16.52,16.511-16.52,43.286,0,59.806c16.52,16.52,43.287,16.52,59.806,0c16.52-16.511,16.52-43.286,0-59.806C118.261,58.463,91.494,58.463,74.974,74.983z"
3682
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3683
+ fill: "inherit",
3684
+ d: "M377.203,377.211c-16.503,16.52-16.503,43.296,0,59.815c16.519,16.52,43.304,16.52,59.806,0c16.52-16.51,16.52-43.295,0-59.815C420.489,360.692,393.722,360.7,377.203,377.211z"
3685
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3686
+ fill: "inherit",
3687
+ d: "M84.567,256c0.018-23.348-18.922-42.279-42.279-42.279c-23.357-0.009-42.297,18.932-42.279,42.288c-0.018,23.348,18.904,42.279,42.279,42.279C65.645,298.288,84.567,279.358,84.567,256z"
3688
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3689
+ fill: "inherit",
3690
+ d: "M469.712,213.712c-23.357,0-42.279,18.941-42.297,42.288c0,23.358,18.94,42.288,42.297,42.297c23.357,0,42.297-18.94,42.279-42.297C512.009,232.652,493.069,213.712,469.712,213.712z"
3691
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3692
+ fill: "inherit",
3693
+ d: "M74.991,377.22c-16.519,16.511-16.519,43.296,0,59.806c16.503,16.52,43.27,16.52,59.789,0c16.52-16.519,16.52-43.295,0-59.815C118.278,360.692,91.511,360.692,74.991,377.22z"
3694
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3695
+ fill: "inherit",
3696
+ d: "M437.026,134.798c16.52-16.52,16.52-43.304,0-59.824c-16.519-16.511-43.304-16.52-59.823,0c-16.52,16.52-16.503,43.295,0,59.815C393.722,151.309,420.507,151.309,437.026,134.798z"
3697
+ }))))) : null, hideIcon ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
3608
3698
  className: "livesearch__wrapper-searchbtn"
3609
3699
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
3610
3700
  tabIndex: -1,
3611
3701
  type: "button",
3612
3702
  className: "btn border-end-0 rounded-pill",
3613
- style: {
3703
+ style: MANUAL_REQ ? undefined : {
3614
3704
  pointerEvents: 'none'
3705
+ },
3706
+ onClick: function onClick(e) {
3707
+ e.preventDefault();
3708
+ e.stopPropagation();
3709
+ handleFetch();
3615
3710
  }
3616
3711
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", {
3617
3712
  width: "1em",
@@ -3621,7 +3716,7 @@ var LiveSearch = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(
3621
3716
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", {
3622
3717
  d: "M12.027 9.92L16 13.95 14 16l-4.075-3.976A6.465 6.465 0 0 1 6.5 13C2.91 13 0 10.083 0 6.5 0 2.91 2.917 0 6.5 0 10.09 0 13 2.917 13 6.5a6.463 6.463 0 0 1-.973 3.42zM1.997 6.452c0 2.48 2.014 4.5 4.5 4.5 2.48 0 4.5-2.015 4.5-4.5 0-2.48-2.015-4.5-4.5-4.5-2.48 0-4.5 2.014-4.5 4.5z",
3623
3718
  fillRule: "evenodd"
3624
- }))))) : null)));
3719
+ })))))));
3625
3720
  });
3626
3721
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LiveSearch);
3627
3722
  })();
@@ -171,7 +171,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
171
171
  var RootPortal = function RootPortal(props) {
172
172
  var containerClassName = props.containerClassName,
173
173
  show = props.show,
174
- children = props.children;
174
+ children = props.children,
175
+ _props$usePortal = props.usePortal,
176
+ usePortal = _props$usePortal === void 0 ? true : _props$usePortal;
175
177
  var containerRef = (0, react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
176
178
 
177
179
  // Move HTML templates to tag end body </body>
@@ -182,15 +184,20 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
182
184
  // Use `containerRef.current` to ensure the correctness of the nextjs framework. It may report an error document as undefined
183
185
 
184
186
  (0, react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
185
- containerRef.current = document.createElement('div');
186
- containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
187
- document.body.appendChild(containerRef.current);
187
+ if (usePortal) {
188
+ containerRef.current = document.createElement('div');
189
+ containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
190
+ document.body.appendChild(containerRef.current);
191
+ }
188
192
  return function () {
189
- if (containerRef.current) {
193
+ if (usePortal && containerRef.current) {
190
194
  containerRef.current.remove();
191
195
  }
192
196
  };
193
- }, []);
197
+ }, [usePortal]);
198
+ if (!usePortal) {
199
+ return show ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0___default().Fragment, null, children) : null;
200
+ }
194
201
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0___default().Fragment, null, containerRef.current && show && /*#__PURE__*/(0, react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)(children, containerRef.current));
195
202
  };
196
203
  /* harmony default export */
@@ -3,6 +3,7 @@ export declare type RootPortalProps = {
3
3
  containerClassName?: string;
4
4
  children?: React.ReactNode;
5
5
  show?: boolean;
6
+ usePortal?: boolean;
6
7
  };
7
- declare const RootPortal: (props: RootPortalProps) => JSX.Element;
8
+ declare const RootPortal: (props: RootPortalProps) => JSX.Element | null;
8
9
  export default RootPortal;
@@ -110,7 +110,9 @@ __webpack_require__.r(__webpack_exports__);
110
110
  var RootPortal = function RootPortal(props) {
111
111
  var containerClassName = props.containerClassName,
112
112
  show = props.show,
113
- children = props.children;
113
+ children = props.children,
114
+ _props$usePortal = props.usePortal,
115
+ usePortal = _props$usePortal === void 0 ? true : _props$usePortal;
114
116
  var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
115
117
 
116
118
  // Move HTML templates to tag end body </body>
@@ -121,15 +123,20 @@ var RootPortal = function RootPortal(props) {
121
123
  // Use `containerRef.current` to ensure the correctness of the nextjs framework. It may report an error document as undefined
122
124
 
123
125
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
124
- containerRef.current = document.createElement('div');
125
- containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
126
- document.body.appendChild(containerRef.current);
126
+ if (usePortal) {
127
+ containerRef.current = document.createElement('div');
128
+ containerRef.current.className = "root-portal-container ".concat(containerClassName || '');
129
+ document.body.appendChild(containerRef.current);
130
+ }
127
131
  return function () {
128
- if (containerRef.current) {
132
+ if (usePortal && containerRef.current) {
129
133
  containerRef.current.remove();
130
134
  }
131
135
  };
132
- }, []);
136
+ }, [usePortal]);
137
+ if (!usePortal) {
138
+ return show ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, children) : null;
139
+ }
133
140
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, containerRef.current && show && /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)(children, containerRef.current));
134
141
  };
135
142
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RootPortal);