@capillarytech/blaze-ui 1.0.3-alpha.6 → 1.0.3-alpha.7
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/CapUnifiedSelect/CapUnifiedSelect.d.ts +2 -9
- package/CapUnifiedSelect/CapUnifiedSelect.d.ts.map +1 -1
- package/CapUnifiedSelect/constants.d.ts +57 -0
- package/CapUnifiedSelect/constants.d.ts.map +1 -0
- package/CapUnifiedSelect/index.js +196 -92
- package/CapUnifiedSelect/index.js.map +1 -1
- package/CapUnifiedSelect/testData.d.ts +107 -0
- package/CapUnifiedSelect/testData.d.ts.map +1 -0
- package/index.js +198 -94
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -20394,6 +20394,7 @@ var _CapRow = _interopRequireDefault(__webpack_require__(7375));
|
|
|
20394
20394
|
var _CapSpin = _interopRequireDefault(__webpack_require__(1549));
|
|
20395
20395
|
var _CapTooltip = _interopRequireDefault(__webpack_require__(5636));
|
|
20396
20396
|
var _CapTooltipWithInfo = _interopRequireDefault(__webpack_require__(2608));
|
|
20397
|
+
var _constants = __webpack_require__(9788);
|
|
20397
20398
|
var _styles = _interopRequireDefault(__webpack_require__(8263));
|
|
20398
20399
|
var _jsxRuntime = __webpack_require__(4848);
|
|
20399
20400
|
const _excluded = ["type", "options", "value", "onChange", "placeholder", "className", "style", "isError", "errorMessage", "containerClassName", "popoverClassName", "allowClear", "headerLabel", "onUpload", "uploadLabel", "tooltip", "bylineText", "disabled", "showUpload", "customPopupRender", "showSearch", "searchBasedOn", "onSearch", "searchDebounce", "onConfirm", "clearText", "noResultCustomText", "noResultCustomIcon", "readOnly", "staticValue", "onFooterDownloadChange", "onPopupScroll", "enableVirtualization", "virtualRowHeight", "resetSearch", "resetData"];
|
|
@@ -20401,12 +20402,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
20401
20402
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20402
20403
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
20403
20404
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /* eslint-disable max-lines */
|
|
20404
|
-
const SELECT_TYPES = {
|
|
20405
|
-
SELECT: 'select',
|
|
20406
|
-
MULTI_SELECT: 'multiSelect',
|
|
20407
|
-
TREE_SELECT: 'treeSelect',
|
|
20408
|
-
MULTI_TREE_SELECT: 'multiTreeSelect'
|
|
20409
|
-
};
|
|
20410
20405
|
const NoResult = _ref => {
|
|
20411
20406
|
let {
|
|
20412
20407
|
noResultCustomText,
|
|
@@ -20424,7 +20419,7 @@ const NoResult = _ref => {
|
|
|
20424
20419
|
size: "m"
|
|
20425
20420
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
20426
20421
|
className: _styles.default['cap-unified-select-no-result-text'],
|
|
20427
|
-
children: showUpload && (options == null ? void 0 : options.length) === 0 ? noResultCustomText :
|
|
20422
|
+
children: showUpload && (options == null ? void 0 : options.length) === 0 ? noResultCustomText : _constants.DEFAULTS.NO_RESULT_TEXT
|
|
20428
20423
|
})]
|
|
20429
20424
|
});
|
|
20430
20425
|
};
|
|
@@ -20540,11 +20535,11 @@ const filterTreeData = function (data, search, searchBasedOn, selectedValues) {
|
|
|
20540
20535
|
};
|
|
20541
20536
|
const CapUnifiedSelect = _ref4 => {
|
|
20542
20537
|
let {
|
|
20543
|
-
type = SELECT_TYPES.SELECT,
|
|
20538
|
+
type = _constants.SELECT_TYPES.SELECT,
|
|
20544
20539
|
options = [],
|
|
20545
20540
|
value,
|
|
20546
20541
|
onChange,
|
|
20547
|
-
placeholder =
|
|
20542
|
+
placeholder = _constants.DEFAULTS.PLACEHOLDER,
|
|
20548
20543
|
className = '',
|
|
20549
20544
|
style,
|
|
20550
20545
|
isError = false,
|
|
@@ -20554,7 +20549,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20554
20549
|
allowClear = false,
|
|
20555
20550
|
headerLabel,
|
|
20556
20551
|
onUpload,
|
|
20557
|
-
uploadLabel =
|
|
20552
|
+
uploadLabel = _constants.DEFAULTS.UPLOAD_LABEL,
|
|
20558
20553
|
tooltip,
|
|
20559
20554
|
bylineText,
|
|
20560
20555
|
disabled = false,
|
|
@@ -20563,18 +20558,18 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20563
20558
|
showSearch = true,
|
|
20564
20559
|
searchBasedOn = 'label',
|
|
20565
20560
|
onSearch,
|
|
20566
|
-
searchDebounce =
|
|
20561
|
+
searchDebounce = _constants.TIMEOUTS.DEFAULT_SEARCH_DEBOUNCE,
|
|
20567
20562
|
onConfirm,
|
|
20568
|
-
clearText =
|
|
20569
|
-
noResultCustomText =
|
|
20570
|
-
noResultCustomIcon =
|
|
20563
|
+
clearText = _constants.DEFAULTS.CLEAR_TEXT,
|
|
20564
|
+
noResultCustomText = _constants.DEFAULTS.NO_RESULT_TEXT,
|
|
20565
|
+
noResultCustomIcon = _constants.DEFAULTS.NO_RESULT_ICON,
|
|
20571
20566
|
readOnly = false,
|
|
20572
20567
|
staticValue = true,
|
|
20573
20568
|
onFooterDownloadChange,
|
|
20574
20569
|
onPopupScroll,
|
|
20575
20570
|
enableVirtualization = false,
|
|
20576
|
-
virtualRowHeight =
|
|
20577
|
-
resetSearch =
|
|
20571
|
+
virtualRowHeight = _constants.DEFAULTS.VIRTUAL_ROW_HEIGHT,
|
|
20572
|
+
resetSearch = true,
|
|
20578
20573
|
resetData
|
|
20579
20574
|
} = _ref4,
|
|
20580
20575
|
rest = _objectWithoutPropertiesLoose(_ref4, _excluded);
|
|
@@ -20589,6 +20584,12 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20589
20584
|
const searchTimeoutRef = (0, _react.useRef)(null);
|
|
20590
20585
|
const scrollContainerRef = (0, _react.useRef)(null);
|
|
20591
20586
|
const scrollLoadingTimeoutRef = (0, _react.useRef)(null);
|
|
20587
|
+
// Track if scroll handler is currently processing to prevent duplicate calls
|
|
20588
|
+
const isScrollProcessingRef = (0, _react.useRef)(false);
|
|
20589
|
+
// Throttle ref for scroll events
|
|
20590
|
+
const scrollThrottleTimeoutRef = (0, _react.useRef)(null);
|
|
20591
|
+
// Ref to track options for scroll handler (avoids recreating handleScroll)
|
|
20592
|
+
const optionsRef = (0, _react.useRef)(options);
|
|
20592
20593
|
// Cache of selected items from async results to preserve them during search
|
|
20593
20594
|
const selectedItemsCacheRef = (0, _react.useRef)(new Map());
|
|
20594
20595
|
// Track the last search query to detect when options update after search
|
|
@@ -20689,7 +20690,12 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20689
20690
|
}, [options, orderedOptions, tempValue]);
|
|
20690
20691
|
|
|
20691
20692
|
// Extract debounce timeout (extracted early for use in useEffects)
|
|
20692
|
-
const debounceTimeout = searchDebounce != null ? searchDebounce :
|
|
20693
|
+
const debounceTimeout = searchDebounce != null ? searchDebounce : _constants.TIMEOUTS.DEFAULT_SEARCH_DEBOUNCE;
|
|
20694
|
+
|
|
20695
|
+
// Keep optionsRef in sync with options
|
|
20696
|
+
(0, _react.useEffect)(() => {
|
|
20697
|
+
optionsRef.current = options;
|
|
20698
|
+
}, [options]);
|
|
20693
20699
|
|
|
20694
20700
|
// Cleanup timeouts on unmount
|
|
20695
20701
|
(0, _react.useEffect)(() => {
|
|
@@ -20700,6 +20706,9 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20700
20706
|
if (scrollLoadingTimeoutRef.current) {
|
|
20701
20707
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
20702
20708
|
}
|
|
20709
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
20710
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
20711
|
+
}
|
|
20703
20712
|
};
|
|
20704
20713
|
}, []);
|
|
20705
20714
|
|
|
@@ -20722,8 +20731,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20722
20731
|
const searchCleared = lastSearchQueryRef.current === '';
|
|
20723
20732
|
const timeSinceCleared = searchClearedTimeRef.current ? Date.now() - searchClearedTimeRef.current : Infinity;
|
|
20724
20733
|
const hasOptionsData = options.length > 0;
|
|
20725
|
-
// Wait at least
|
|
20726
|
-
const clearedSearchReady = searchCleared && hasOptionsData && timeSinceCleared >
|
|
20734
|
+
// Wait at least SEARCH_CLEARED_TIMEOUT after search is cleared to allow API call to complete
|
|
20735
|
+
const clearedSearchReady = searchCleared && hasOptionsData && timeSinceCleared > _constants.TIMEOUTS.SEARCH_CLEARED_TIMEOUT;
|
|
20727
20736
|
if (optionsChanged || clearedSearchReady) {
|
|
20728
20737
|
// Options updated after search - data has arrived
|
|
20729
20738
|
// Use a small delay to ensure state updates are processed
|
|
@@ -20734,7 +20743,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20734
20743
|
if (searchCleared) {
|
|
20735
20744
|
searchClearedTimeRef.current = null;
|
|
20736
20745
|
}
|
|
20737
|
-
},
|
|
20746
|
+
}, _constants.TIMEOUTS.SEARCH_STATE_UPDATE_DELAY);
|
|
20738
20747
|
return () => clearTimeout(timeoutId);
|
|
20739
20748
|
}
|
|
20740
20749
|
prevOptionsRef.current = options;
|
|
@@ -20753,8 +20762,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20753
20762
|
// For cleared search (empty string), use a shorter timeout since it should reload initial data quickly
|
|
20754
20763
|
// For regular search, use debounce timeout + buffer
|
|
20755
20764
|
const searchCleared = lastSearchQueryRef.current === '';
|
|
20756
|
-
const timeoutDuration = searchCleared ? debounceTimeout +
|
|
20757
|
-
: debounceTimeout +
|
|
20765
|
+
const timeoutDuration = searchCleared ? debounceTimeout + _constants.TIMEOUTS.SEARCH_CLEARED_BUFFER // Shorter timeout for cleared search
|
|
20766
|
+
: debounceTimeout + _constants.TIMEOUTS.SEARCH_REGULAR_BUFFER; // Longer timeout for regular search
|
|
20758
20767
|
|
|
20759
20768
|
// Calculate timeout: debounce timeout + a small buffer for API response
|
|
20760
20769
|
// This ensures we wait for the API call to complete before showing "No results"
|
|
@@ -20792,7 +20801,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20792
20801
|
// Additional check: if enough time has passed since resetData was called
|
|
20793
20802
|
// and we have options data, assume data has loaded even if comparison didn't detect change
|
|
20794
20803
|
const timeSinceReset = resetDataCalledTimeRef.current ? Date.now() - resetDataCalledTimeRef.current : Infinity;
|
|
20795
|
-
const hasDataAfterTimeout = currentOptions.length > 0 && timeSinceReset >
|
|
20804
|
+
const hasDataAfterTimeout = currentOptions.length > 0 && timeSinceReset > _constants.TIMEOUTS.RESET_DATA_MIN_TIME && timeSinceReset < _constants.TIMEOUTS.RESET_DATA_MAX_TIME;
|
|
20796
20805
|
|
|
20797
20806
|
// If options changed or enough time has passed with data, clear the loading state
|
|
20798
20807
|
if (optionsChanged || hasDataAfterTimeout) {
|
|
@@ -20819,8 +20828,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20819
20828
|
prevOptionsBeforeResetRef.current = options;
|
|
20820
20829
|
// Clear timestamp
|
|
20821
20830
|
resetDataCalledTimeRef.current = null;
|
|
20822
|
-
},
|
|
20823
|
-
|
|
20831
|
+
}, _constants.TIMEOUTS.RESET_DATA_TIMEOUT);
|
|
20824
20832
|
return () => clearTimeout(fallbackTimeout);
|
|
20825
20833
|
}, [isResettingData, options]);
|
|
20826
20834
|
|
|
@@ -20873,6 +20881,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20873
20881
|
if (optionsCountIncreased || optionsContentChanged) {
|
|
20874
20882
|
// Options updated after scroll - data has arrived, clear loading overlay
|
|
20875
20883
|
setIsLoadingOnScroll(false);
|
|
20884
|
+
// Reset processing flag to allow next scroll event
|
|
20885
|
+
isScrollProcessingRef.current = false;
|
|
20876
20886
|
if (scrollLoadingTimeoutRef.current) {
|
|
20877
20887
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
20878
20888
|
scrollLoadingTimeoutRef.current = null;
|
|
@@ -20933,11 +20943,11 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
20933
20943
|
// Clear loading state after a short delay (filtering is instant but we show feedback)
|
|
20934
20944
|
searchTimeoutRef.current = setTimeout(() => {
|
|
20935
20945
|
setIsSearching(false);
|
|
20936
|
-
},
|
|
20946
|
+
}, _constants.TIMEOUTS.STATIC_SEARCH_DELAY);
|
|
20937
20947
|
}
|
|
20938
20948
|
}, [onSearch, staticValue, debounceTimeout]);
|
|
20939
|
-
const isMulti = (0, _react.useMemo)(() => type === SELECT_TYPES.MULTI_SELECT || type === SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
20940
|
-
const isTree = (0, _react.useMemo)(() => type === SELECT_TYPES.TREE_SELECT || type === SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
20949
|
+
const isMulti = (0, _react.useMemo)(() => type === _constants.SELECT_TYPES.MULTI_SELECT || type === _constants.SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
20950
|
+
const isTree = (0, _react.useMemo)(() => type === _constants.SELECT_TYPES.TREE_SELECT || type === _constants.SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
20941
20951
|
|
|
20942
20952
|
// Use options directly since pagination is handled by the developer
|
|
20943
20953
|
const mergedOptions = (0, _react.useMemo)(() => {
|
|
@@ -21298,10 +21308,15 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21298
21308
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
21299
21309
|
scrollLoadingTimeoutRef.current = null;
|
|
21300
21310
|
}
|
|
21311
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
21312
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
21313
|
+
scrollThrottleTimeoutRef.current = null;
|
|
21314
|
+
}
|
|
21301
21315
|
// Reset loading states
|
|
21302
21316
|
setIsSearching(false);
|
|
21303
21317
|
searchClearedTimeRef.current = null; // Clear search cleared timestamp
|
|
21304
21318
|
setIsLoadingOnScroll(false);
|
|
21319
|
+
isScrollProcessingRef.current = false;
|
|
21305
21320
|
// Safety check: Clear isResettingData if it's still true when opening
|
|
21306
21321
|
// This handles cases where options updated while dropdown was closed
|
|
21307
21322
|
if (isResettingData) {
|
|
@@ -21327,10 +21342,15 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21327
21342
|
}
|
|
21328
21343
|
// Reset scroll loading state
|
|
21329
21344
|
setIsLoadingOnScroll(false);
|
|
21345
|
+
isScrollProcessingRef.current = false;
|
|
21330
21346
|
if (scrollLoadingTimeoutRef.current) {
|
|
21331
21347
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
21332
21348
|
scrollLoadingTimeoutRef.current = null;
|
|
21333
21349
|
}
|
|
21350
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
21351
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
21352
|
+
scrollThrottleTimeoutRef.current = null;
|
|
21353
|
+
}
|
|
21334
21354
|
scrollContainerRef.current = null;
|
|
21335
21355
|
|
|
21336
21356
|
// Only call resetData if user actually interacted (selected, searched, etc.)
|
|
@@ -21390,6 +21410,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21390
21410
|
|
|
21391
21411
|
// Handle scroll event - automatically checks if scroll is near bottom
|
|
21392
21412
|
// Developer handles hasMore and isLoading conditions in onPopupScroll callback
|
|
21413
|
+
// Using refs to avoid recreating the callback when options change
|
|
21393
21414
|
const handleScroll = (0, _react.useCallback)(event => {
|
|
21394
21415
|
if (!onPopupScroll) return;
|
|
21395
21416
|
const target = event.target;
|
|
@@ -21400,74 +21421,83 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21400
21421
|
|
|
21401
21422
|
// Only call onPopupScroll if scroll is near bottom
|
|
21402
21423
|
// Developer will handle hasMore and isLoading checks inside the callback
|
|
21403
|
-
if (!isNearBottom)
|
|
21424
|
+
if (!isNearBottom) {
|
|
21425
|
+
// Reset processing flag when not near bottom
|
|
21426
|
+
isScrollProcessingRef.current = false;
|
|
21427
|
+
return;
|
|
21428
|
+
}
|
|
21429
|
+
|
|
21430
|
+
// Prevent multiple scroll triggers while already processing
|
|
21431
|
+
// This ensures we don't trigger multiple API calls simultaneously
|
|
21432
|
+
if (isScrollProcessingRef.current) return;
|
|
21404
21433
|
|
|
21405
21434
|
// Prevent multiple scroll triggers while already loading
|
|
21406
21435
|
// This ensures loading state is managed properly and data loading completes
|
|
21407
21436
|
if (isLoadingOnScroll) return;
|
|
21408
21437
|
|
|
21409
|
-
//
|
|
21410
|
-
//
|
|
21411
|
-
|
|
21412
|
-
|
|
21413
|
-
|
|
21414
|
-
// Also store the count at scroll trigger time for orderedOptions update
|
|
21415
|
-
scrollTriggerOptionsCountRef.current = options.length;
|
|
21416
|
-
|
|
21417
|
-
// Show loading indicator when scrolling near bottom
|
|
21418
|
-
// This happens before calling onPopupScroll to provide immediate feedback
|
|
21419
|
-
setIsLoadingOnScroll(true);
|
|
21420
|
-
|
|
21421
|
-
// Clear any existing timeout
|
|
21422
|
-
if (scrollLoadingTimeoutRef.current) {
|
|
21423
|
-
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
21424
|
-
scrollLoadingTimeoutRef.current = null;
|
|
21425
|
-
}
|
|
21426
|
-
|
|
21427
|
-
// Create a React synthetic event-like object with scroll information
|
|
21428
|
-
// const syntheticEvent = {
|
|
21429
|
-
// target: target,
|
|
21430
|
-
// currentTarget: target,
|
|
21431
|
-
// nativeEvent: event,
|
|
21432
|
-
// bubbles: false,
|
|
21433
|
-
// cancelable: false,
|
|
21434
|
-
// defaultPrevented: false,
|
|
21435
|
-
// eventPhase: 0,
|
|
21436
|
-
// isTrusted: false,
|
|
21437
|
-
// timeStamp: Date.now(),
|
|
21438
|
-
// type: 'scroll',
|
|
21439
|
-
// detail: 0,
|
|
21440
|
-
// view: null,
|
|
21441
|
-
// preventDefault: () => { },
|
|
21442
|
-
// stopPropagation: () => { },
|
|
21443
|
-
// stopImmediatePropagation: () => { },
|
|
21444
|
-
// isDefaultPrevented: () => false,
|
|
21445
|
-
// isPropagationStopped: () => false,
|
|
21446
|
-
// } as unknown as React.UIEvent<HTMLElement>;
|
|
21447
|
-
|
|
21448
|
-
// Mark as interacted when user scrolls (triggers data loading)
|
|
21449
|
-
hasInteractedRef.current = true;
|
|
21438
|
+
// Throttle scroll events to prevent rapid-fire API calls
|
|
21439
|
+
// Clear any existing throttle timeout
|
|
21440
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
21441
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
21442
|
+
}
|
|
21450
21443
|
|
|
21451
|
-
//
|
|
21452
|
-
|
|
21453
|
-
|
|
21454
|
-
|
|
21455
|
-
|
|
21456
|
-
|
|
21457
|
-
|
|
21458
|
-
|
|
21459
|
-
|
|
21460
|
-
|
|
21461
|
-
|
|
21462
|
-
|
|
21463
|
-
|
|
21464
|
-
|
|
21465
|
-
|
|
21466
|
-
|
|
21467
|
-
|
|
21468
|
-
|
|
21469
|
-
|
|
21470
|
-
|
|
21444
|
+
// Set processing flag immediately to prevent duplicate calls
|
|
21445
|
+
isScrollProcessingRef.current = true;
|
|
21446
|
+
|
|
21447
|
+
// Throttle the actual API call to prevent multiple rapid triggers
|
|
21448
|
+
scrollThrottleTimeoutRef.current = setTimeout(() => {
|
|
21449
|
+
// Double-check we're still near bottom and not loading
|
|
21450
|
+
const stillNearBottom = Math.floor(target.scrollHeight - target.scrollTop) <= target.clientHeight;
|
|
21451
|
+
if (!stillNearBottom || isLoadingOnScroll) {
|
|
21452
|
+
isScrollProcessingRef.current = false;
|
|
21453
|
+
return;
|
|
21454
|
+
}
|
|
21455
|
+
|
|
21456
|
+
// Store current options count and options reference before triggering load
|
|
21457
|
+
// This helps detect when new data arrives
|
|
21458
|
+
// Use ref to get current options without depending on options.length
|
|
21459
|
+
const currentOptions = optionsRef.current;
|
|
21460
|
+
prevOptionsCountRef.current = currentOptions.length;
|
|
21461
|
+
prevOptionsRefForScroll.current = currentOptions;
|
|
21462
|
+
// Also store the count at scroll trigger time for orderedOptions update
|
|
21463
|
+
scrollTriggerOptionsCountRef.current = currentOptions.length;
|
|
21464
|
+
|
|
21465
|
+
// Show loading indicator when scrolling near bottom
|
|
21466
|
+
// This happens before calling onPopupScroll to provide immediate feedback
|
|
21467
|
+
setIsLoadingOnScroll(true);
|
|
21468
|
+
|
|
21469
|
+
// Clear any existing timeout
|
|
21470
|
+
if (scrollLoadingTimeoutRef.current) {
|
|
21471
|
+
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
21472
|
+
scrollLoadingTimeoutRef.current = null;
|
|
21473
|
+
}
|
|
21474
|
+
|
|
21475
|
+
// Mark as interacted when user scrolls (triggers data loading)
|
|
21476
|
+
hasInteractedRef.current = true;
|
|
21477
|
+
|
|
21478
|
+
// Call the developer's scroll handler - component already checked scroll position
|
|
21479
|
+
// Developer should check hasMore and isLoading inside the callback
|
|
21480
|
+
// This triggers the async data loading
|
|
21481
|
+
onPopupScroll();
|
|
21482
|
+
|
|
21483
|
+
// Set a fallback timeout to clear loading if options don't change
|
|
21484
|
+
// This prevents loading from staying forever if data never arrives
|
|
21485
|
+
// Using a longer timeout (10 seconds) to give enough time for slow API calls
|
|
21486
|
+
scrollLoadingTimeoutRef.current = setTimeout(() => {
|
|
21487
|
+
// Only clear if still loading (options change detection might have cleared it already)
|
|
21488
|
+
setIsLoadingOnScroll(prev => {
|
|
21489
|
+
if (prev) {
|
|
21490
|
+
// Clear the timeout reference when clearing loading state
|
|
21491
|
+
scrollLoadingTimeoutRef.current = null;
|
|
21492
|
+
// Reset processing flag when loading times out
|
|
21493
|
+
isScrollProcessingRef.current = false;
|
|
21494
|
+
return false;
|
|
21495
|
+
}
|
|
21496
|
+
return prev;
|
|
21497
|
+
});
|
|
21498
|
+
}, _constants.TIMEOUTS.SCROLL_LOADING_TIMEOUT);
|
|
21499
|
+
}, 150); // 150ms throttle to prevent rapid-fire events
|
|
21500
|
+
}, [onPopupScroll, isLoadingOnScroll]);
|
|
21471
21501
|
|
|
21472
21502
|
// Setup scroll listener for onPopupScroll
|
|
21473
21503
|
(0, _react.useEffect)(() => {
|
|
@@ -21511,13 +21541,20 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21511
21541
|
passive: true
|
|
21512
21542
|
});
|
|
21513
21543
|
}
|
|
21514
|
-
},
|
|
21544
|
+
}, _constants.TIMEOUTS.SCROLL_CONTAINER_DELAY);
|
|
21515
21545
|
return () => {
|
|
21516
21546
|
clearTimeout(timeoutId);
|
|
21547
|
+
// Clear throttle timeout when cleaning up
|
|
21548
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
21549
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
21550
|
+
scrollThrottleTimeoutRef.current = null;
|
|
21551
|
+
}
|
|
21517
21552
|
if (scrollContainerRef.current) {
|
|
21518
21553
|
scrollContainerRef.current.removeEventListener('scroll', handleScroll);
|
|
21519
21554
|
scrollContainerRef.current = null;
|
|
21520
21555
|
}
|
|
21556
|
+
// Reset processing flag when listener is removed
|
|
21557
|
+
isScrollProcessingRef.current = false;
|
|
21521
21558
|
};
|
|
21522
21559
|
}, [onPopupScroll, dropdownOpen, handleScroll]);
|
|
21523
21560
|
const renderHeader = (0, _react.useMemo)(() => {
|
|
@@ -21672,7 +21709,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21672
21709
|
})]
|
|
21673
21710
|
})]
|
|
21674
21711
|
})
|
|
21675
|
-
}), (type === SELECT_TYPES.SELECT || type === SELECT_TYPES.TREE_SELECT) && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapRow.default, {
|
|
21712
|
+
}), (type === _constants.SELECT_TYPES.SELECT || type === _constants.SELECT_TYPES.TREE_SELECT) && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapRow.default, {
|
|
21676
21713
|
className: _styles.default['cap-unified-select-tree-clear-container'],
|
|
21677
21714
|
onClick: handleClearAll,
|
|
21678
21715
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
@@ -21760,7 +21797,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
21760
21797
|
popupMatchSelectWidth: false,
|
|
21761
21798
|
disabled: disabled,
|
|
21762
21799
|
filterTreeNode: false,
|
|
21763
|
-
listHeight:
|
|
21800
|
+
listHeight: _constants.DEFAULTS.LIST_HEIGHT,
|
|
21764
21801
|
listItemHeight: virtualRowHeight,
|
|
21765
21802
|
popupRender: renderCustomDropdown
|
|
21766
21803
|
}, rest)), isError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
@@ -23491,7 +23528,7 @@ var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(1601);
|
|
|
23491
23528
|
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
|
|
23492
23529
|
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);
|
|
23493
23530
|
// Module
|
|
23494
|
-
___CSS_LOADER_EXPORT___.push([module.id, `.blaze-ui-cap-unified-select-header-wrapper{display:flex;align-items:center}.blaze-ui-cap-unified-select-header-wrapper.blaze-ui-disabled{opacity:.5;cursor:not-allowed}.blaze-ui-cap-unified-select-header-wrapper .blaze-ui-cap-unified-select-header-label{font-family:"Roboto",sans-serif;font-weight:500;font-size:1rem;line-height:1.429rem;letter-spacing:0}.blaze-ui-cap-unified-select-header-byline-text{font-family:"Roboto",sans-serif;font-weight:400;font-size:.857rem;letter-spacing:0;color:#97a0af}.blaze-ui-cap-unified-select-container{text-align:justify;min-width:13.786rem}.blaze-ui-cap-unified-select-container.blaze-ui-disabled{cursor:not-allowed}.blaze-ui-cap-unified-select-container.ant-select-focused .ant-select-selector{border:.071rem solid #091e42 !important}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-more-text{cursor:pointer;color:#091e42;margin-right:.286rem;position:relative}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-suffix-icon{color:#7a869a}.blaze-ui-cap-unified-select-container .blaze-ui-cap-tooltip-with-info-icon{margin-top:.143rem}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select.blaze-ui-cap-unified-tree-select-readonly{pointer-events:none}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select.blaze-ui-cap-unified-tree-select-readonly .blaze-ui-cap-unified-select-more-text{pointer-events:auto}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select .ant-select-tree-treenode{padding-left:.286rem}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly .ant-select-selector{background-color:#fff;border-color:#ebecf0 !important;cursor:default}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly .ant-select-arrow{pointer-events:auto;color:#b3bac5}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:hover .ant-select-selector,.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:active .ant-select-selector,.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:focus .ant-select-selector{border-color:#ebecf0 !important}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-status{color:#ea213a}.blaze-ui-cap-unified-select-container .ant-select-outlined:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#7a869a}.blaze-ui-cap-unified-select-container .ant-select-selector{background-color:#fff !important;border:.071rem solid #7a869a !important;border-radius:.286rem !important}.blaze-ui-cap-unified-select-container .ant-select-selector .ant-select-selection-placeholder{pointer-events:unset;color:#97a0af;display:flex;align-items:center}.blaze-ui-cap-unified-select-container .ant-select-prefix{font-size:1rem;font-weight:400;color:#091e42;line-height:1.429rem}.blaze-ui-cap-unified-select-container .ant-input-affix-wrapper .ant-input-prefix{left:.857rem}.blaze-ui-cap-unified-select-container .ant-select-selector{border-color:#7a869a !important;box-shadow:none !important;outline:0}.blaze-ui-cap-unified-select-container .ant-btn-variant-solid:not(:disabled):not(.ant-btn-disabled):hover{background-color:#47af46}.blaze-ui-cap-unified-select-container .ant-select-dropdown{margin-top:-0.571rem !important;border-radius:.286rem;background-color:#fff;box-shadow:0 .286rem .571rem -0.143rem rgba(9,30,66,.15),0 0 .071rem 0 rgba(9,30,66,.1);max-height:25.714rem;overflow:visible}.blaze-ui-cap-unified-select-container .ant-select-outlined.ant-select-multiple .ant-select-selection-wrap .ant-select-selection-item{background:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-container .ant-select-multiple .ant-select-selection-wrap .ant-select-selection-item,.blaze-ui-cap-unified-select-container .ant-select-selection-wrap .ant-select-selection-item{background:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-container .ant-select-multiple .ant-select-selection-wrap{align-self:center}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-search-container{border-bottom:.071rem solid #ebecf0 !important;line-height:2.857rem !important}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-search-container .blaze-ui-cap-unified-select-search-icon{color:#b3bac5}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-select-all-container{padding:.643rem 1.071rem;display:flex;align-items:center;border-bottom:.071rem solid #ebecf0;height:2.857rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-select-all-container .blaze-ui-cap-unified-select-select-all-checkbox{display:contents !important}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container{cursor:pointer;display:flex;align-items:center;border-bottom:.071rem solid #ebecf0;height:2.857rem;padding-left:1.143rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container .blaze-ui-cap-unified-select-upload-icon{color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container .blaze-ui-cap-unified-select-upload-label{margin-left:.857rem;color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container{display:flex;align-items:center;height:3.429rem;padding:.5rem;border-top:.071rem solid #ebecf0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group{display:flex;padding-left:.571rem;align-items:center;width:100%}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button{background-color:#47af46;height:2.286rem;width:6.714rem;color:#fff}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button:hover{background-color:#1f9a1d}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button:disabled{background-color:#a1d8a0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-cancel-button{border:rgba(0,0,0,0);box-shadow:none;width:5.714rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-selected-count{display:flex;margin-left:auto;font-size:.857rem;font-weight:400;line-height:1.143rem;color:#5e6c84}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container{display:flex;justify-content:center;align-items:center;height:2.857rem;border-top:.071rem solid #ebecf0;cursor:pointer;color:#091e42}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container:hover{background-color:#ebecf0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container .blaze-ui-cap-unified-select-tree-clear-label{font-size:1rem;font-weight:400}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container{cursor:pointer;display:flex;align-items:center;margin-left:auto;padding-right:1.143rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container:hover{opacity:.8}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container .blaze-ui-cap-unified-select-footer-download-icon{color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container .blaze-ui-cap-unified-select-footer-download-label{margin-left:.857rem;color:#2466ea;font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:.857rem;line-height:1.143rem;letter-spacing:0;text-align:right}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-no-result{display:flex;flex-direction:column;align-items:center;justify-content:center;height:14.286rem;color:#97a0af;font-size:1rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-no-result .blaze-ui-cap-unified-select-no-result-text{font-weight:500}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:14.286rem;width:100%;gap:8px}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-more{display:flex;align-items:center;justify-content:center;padding:.857rem;border-top:.071rem solid #ebecf0;color:#97a0af}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-menu-wrapper{position:relative;width:100%}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(255,255,255,.8);z-index:10;gap:8px;color:#97a0af}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix{display:flex;justify-content:space-between;align-items:center;width:100%;height:100%;line-height:1.5;vertical-align:middle;flex:1}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-label{display:flex;align-items:center;flex-shrink:1;min-width:0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-end{display:flex;align-items:center;gap:.571rem;flex-shrink:0;margin-left:auto}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-suffix{display:flex;align-items:center;padding:0 .571rem;max-height:1.429rem;white-space:nowrap}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-tooltip-with-info .blaze-ui-cap-tooltip-with-info-icon{margin-top:.357rem;color:#42526e}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-tooltip-with-info .blaze-ui-cap-tooltip-with-info-icon .blaze-ui-cap-icon{color:#42526e}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu{margin-top:0 !important}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu .ant-select-dropdown-menu-item{padding:.571rem 1.714rem !important;height:unset !important;font-size:1rem !important}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:rgba(0,0,0,.25) !important;cursor:not-allowed !important;line-height:1.428rem !important;font-size:1rem !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper{background-color:rgba(0,0,0,0);height:100%;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode{height:2.857rem;margin-bottom:0;display:flex;align-items:center;width:100%}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode:hover{background-color:#fffbe6}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-selected{background-color:#f4f5f7 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled{cursor:not-allowed !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled .blaze-ui-cap-unified-select-option-label{color:#b3bac5}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled .blaze-ui-cap-icon{color:#b3bac5 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode.ant-select-tree-treenode-selected{background-color:#f4f5f7}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-leaf .ant-select-tree-switcher-noop{display:none}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox{display:flex;align-items:center;justify-content:center;line-height:1;vertical-align:middle}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox .ant-select-tree-checkbox-inner{height:1.286rem;width:1.286rem;border:.143rem solid #b3bac5;border-radius:.286rem;display:flex;align-items:center;justify-content:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:hover{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner{background-color:#47af46 !important;border-color:#47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after{content:"";position:absolute;top:50%;left:50%;width:.714rem;height:.143rem;background-color:#fff;transform:translate(-50%, -50%);border-radius:.071rem}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper{border-radius:0;padding-left:.214rem;width:100%;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-title{width:100%;display:flex}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-indent{margin-left:.857rem;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher{display:flex;align-items:center;justify-content:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher:not(.ant-select-tree-switcher-noop):hover:before{background-color:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon{font-size:.857rem;margin-top:1.286rem}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-list-holder-inner{width:fit-content !important;min-width:100%}.blaze-ui-cap-unified-select-popup .ant-tree-select:hover .ant-select-selector{border-color:#7a869a}.blaze-ui-cap-unified-select-popup .ant-tree-select-focused .ant-select-selector,.blaze-ui-cap-unified-select-popup .ant-tree-select-open .ant-select-selector{border-color:#7a869a;box-shadow:none;outline:none}.blaze-ui-cap-unified-select-popup .ant-checkbox-inner{height:1.286rem;width:1.286rem;border:.143rem solid #b3bac5;border-radius:.286rem}.blaze-ui-cap-unified-select-popup .ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-checkbox-indeterminate .ant-checkbox-inner{background-color:#47af46 !important;border-color:#47af46 !important}.blaze-ui-cap-unified-select-popup .ant-checkbox-indeterminate .ant-checkbox-inner::after{content:"";position:absolute;top:50%;left:50%;width:.714rem;height:.143rem;background-color:#fff;transform:translate(-50%, -50%);border-radius:.071rem}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper{padding-left:.571rem;border:none;box-shadow:none;border-radius:0;border-bottom:.071rem solid rgba(0,0,0,0);transition:border-color .2s ease}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper:hover{border-bottom:.071rem solid #7a869a !important;box-shadow:none}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper:focus-within{border-bottom:.071rem solid #091e42 !important;box-shadow:none;outline:none}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper .ant-input{border:none !important;box-shadow:none !important}`, ""]);
|
|
23531
|
+
___CSS_LOADER_EXPORT___.push([module.id, `.blaze-ui-cap-unified-select-header-wrapper{display:flex;align-items:center}.blaze-ui-cap-unified-select-header-wrapper.blaze-ui-disabled{opacity:.5;cursor:not-allowed}.blaze-ui-cap-unified-select-header-wrapper .blaze-ui-cap-unified-select-header-label{font-family:"Roboto",sans-serif;font-weight:500;font-size:1rem;line-height:1.429rem;letter-spacing:0}.blaze-ui-cap-unified-select-header-byline-text{font-family:"Roboto",sans-serif;font-weight:400;font-size:.857rem;letter-spacing:0;color:#97a0af}.blaze-ui-cap-unified-select-container{text-align:justify;min-width:13.786rem}.blaze-ui-cap-unified-select-container.blaze-ui-disabled{cursor:not-allowed}.blaze-ui-cap-unified-select-container.ant-select-focused .ant-select-selector{border:.071rem solid #091e42 !important}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-more-text{cursor:pointer;color:#091e42;margin-right:.286rem;position:relative}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-suffix-icon{color:#7a869a}.blaze-ui-cap-unified-select-container .blaze-ui-cap-tooltip-with-info-icon{margin-top:.143rem}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select.blaze-ui-cap-unified-tree-select-readonly{pointer-events:none}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select.blaze-ui-cap-unified-tree-select-readonly .blaze-ui-cap-unified-select-more-text{pointer-events:auto}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select .ant-select-tree-treenode{padding-left:.286rem}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly .ant-select-selector{background-color:#fff;border-color:#ebecf0 !important;cursor:default}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly .ant-select-arrow{pointer-events:auto;color:#b3bac5}.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:hover .ant-select-selector,.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:active .ant-select-selector,.blaze-ui-cap-unified-select-container.blaze-ui-cap-unified-tree-select-readonly.ant-select-outlined:focus .ant-select-selector{border-color:#ebecf0 !important}.blaze-ui-cap-unified-select-container .blaze-ui-cap-unified-select-status{color:#ea213a}.blaze-ui-cap-unified-select-container .ant-select-outlined:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#7a869a}.blaze-ui-cap-unified-select-container .ant-select-selector{background-color:#fff !important;border:.071rem solid #7a869a !important;border-radius:.286rem !important}.blaze-ui-cap-unified-select-container .ant-select-selector .ant-select-selection-placeholder{pointer-events:unset;color:#97a0af;display:flex;align-items:center}.blaze-ui-cap-unified-select-container .ant-select-prefix{font-size:1rem;font-weight:400;color:#091e42;line-height:1.429rem}.blaze-ui-cap-unified-select-container .ant-input-affix-wrapper .ant-input-prefix{left:.857rem}.blaze-ui-cap-unified-select-container .ant-select-selector{border-color:#7a869a !important;box-shadow:none !important;outline:0}.blaze-ui-cap-unified-select-container .ant-btn-variant-solid:not(:disabled):not(.ant-btn-disabled):hover{background-color:#47af46}.blaze-ui-cap-unified-select-container .ant-select-dropdown{margin-top:-0.571rem !important;border-radius:.286rem;background-color:#fff;box-shadow:0 .286rem .571rem -0.143rem rgba(9,30,66,.15),0 0 .071rem 0 rgba(9,30,66,.1);max-height:25.714rem;overflow:visible}.blaze-ui-cap-unified-select-container .ant-select-outlined.ant-select-multiple .ant-select-selection-wrap .ant-select-selection-item{background:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-container .ant-select-multiple .ant-select-selection-wrap .ant-select-selection-item,.blaze-ui-cap-unified-select-container .ant-select-selection-wrap .ant-select-selection-item{background:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-container .ant-select-multiple .ant-select-selection-wrap{align-self:center}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-search-container{border-bottom:.071rem solid #ebecf0 !important;line-height:2.857rem !important}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-search-container .blaze-ui-cap-unified-select-search-icon{color:#b3bac5}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-select-all-container{padding:.643rem 1.071rem;display:flex;align-items:center;border-bottom:.071rem solid #ebecf0;height:2.857rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-select-all-container .blaze-ui-cap-unified-select-select-all-checkbox{display:contents !important}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container{cursor:pointer;display:flex;align-items:center;border-bottom:.071rem solid #ebecf0;height:2.857rem;padding-left:1.143rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container .blaze-ui-cap-unified-select-upload-icon{color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-upload-container .blaze-ui-cap-unified-select-upload-label{margin-left:.857rem;color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container{display:flex;align-items:center;height:3.429rem;padding:.5rem;border-top:.071rem solid #ebecf0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group{display:flex;padding-left:.571rem;align-items:center;width:100%}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button{background-color:#47af46;height:2.286rem;width:6.714rem;color:#fff}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button:hover{background-color:#1f9a1d}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-confirm-button:disabled{background-color:#a1d8a0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-cancel-button{border:rgba(0,0,0,0);box-shadow:none;width:5.714rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-confirm-container .blaze-ui-cap-unified-select-confirm-button-group .blaze-ui-cap-unified-select-selected-count{display:flex;margin-left:auto;font-size:.857rem;font-weight:400;line-height:1.143rem;color:#5e6c84}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container{display:flex;justify-content:center;align-items:center;height:2.857rem;border-top:.071rem solid #ebecf0;cursor:pointer;color:#091e42}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container:hover{background-color:#ebecf0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-tree-clear-container .blaze-ui-cap-unified-select-tree-clear-label{font-size:1rem;font-weight:400}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container{cursor:pointer;display:flex;align-items:center;margin-left:auto;padding-right:1.143rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container:hover{opacity:.8}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container .blaze-ui-cap-unified-select-footer-download-icon{color:#2466ea}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-footer-download-container .blaze-ui-cap-unified-select-footer-download-label{margin-left:.857rem;color:#2466ea;font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:.857rem;line-height:1.143rem;letter-spacing:0;text-align:right}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-no-result{display:flex;flex-direction:column;align-items:center;justify-content:center;height:14.286rem;color:#97a0af;font-size:1rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-no-result .blaze-ui-cap-unified-select-no-result-text{font-weight:500}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:14.286rem;width:100%;gap:.571rem}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-more{display:flex;align-items:center;justify-content:center;padding:.857rem;border-top:.071rem solid #ebecf0;color:#97a0af}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-menu-wrapper{position:relative;width:100%}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(255,255,255,.8);z-index:10;gap:.571rem;color:#97a0af}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix{display:flex;align-items:center;width:100%;height:100%;line-height:1.5;vertical-align:middle;flex:1}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-label{display:flex;align-items:center;flex-shrink:1;min-width:0}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-end{display:flex;align-items:center;gap:.571rem;flex-shrink:0;margin-left:auto}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-unified-select-option-suffix{display:flex;align-items:center;padding:0 .571rem;max-height:1.429rem;white-space:nowrap}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-tooltip-with-info .blaze-ui-cap-tooltip-with-info-icon{margin-top:.357rem;color:#42526e}.blaze-ui-cap-unified-select-popup .blaze-ui-cap-unified-select-option-with-suffix .blaze-ui-cap-tooltip-with-info .blaze-ui-cap-tooltip-with-info-icon .blaze-ui-cap-icon{color:#42526e}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu{margin-top:0 !important}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu .ant-select-dropdown-menu-item{padding:.571rem 1.714rem !important;height:unset !important;font-size:1rem !important}.blaze-ui-cap-unified-select-popup .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:rgba(0,0,0,.25) !important;cursor:not-allowed !important;line-height:1.428rem !important;font-size:1rem !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper{background-color:rgba(0,0,0,0);height:100%;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper:hover{background-color:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode{height:2.857rem;margin-bottom:0;display:flex;align-items:center;width:100%}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode:hover{background-color:#fffbe6}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-selected{background-color:#f4f5f7 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled{cursor:not-allowed !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled .blaze-ui-cap-unified-select-option-label{color:#b3bac5}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-disabled .blaze-ui-cap-icon{color:#b3bac5 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode.ant-select-tree-treenode-selected{background-color:#f4f5f7}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-treenode-leaf .ant-select-tree-switcher-noop{display:none}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox{display:flex;align-items:center;justify-content:center;line-height:1;vertical-align:middle}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox .ant-select-tree-checkbox-inner{height:1.286rem;width:1.286rem;border:.143rem solid #b3bac5;border-radius:.286rem;display:flex;align-items:center;justify-content:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:hover{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner{background-color:#47af46 !important;border-color:#47af46 !important}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-checkbox.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after{content:"";position:absolute;top:50%;left:50%;width:.714rem;height:.143rem;background-color:#fff;transform:translate(-50%, -50%);border-radius:.071rem}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper{border-radius:0;padding-left:.214rem;width:100%;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-title{width:100%;display:flex}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-indent{margin-left:.857rem;display:flex;align-items:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher{display:flex;align-items:center;justify-content:center}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher:not(.ant-select-tree-switcher-noop):hover:before{background-color:rgba(0,0,0,0)}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon{font-size:.857rem;margin-top:1.286rem}.blaze-ui-cap-unified-select-popup .ant-select-tree .ant-select-tree-list-holder-inner{width:fit-content !important;min-width:100%}.blaze-ui-cap-unified-select-popup .ant-tree-select:hover .ant-select-selector{border-color:#7a869a}.blaze-ui-cap-unified-select-popup .ant-tree-select-focused .ant-select-selector,.blaze-ui-cap-unified-select-popup .ant-tree-select-open .ant-select-selector{border-color:#7a869a;box-shadow:none;outline:none}.blaze-ui-cap-unified-select-popup .ant-checkbox-inner{height:1.286rem;width:1.286rem;border:.143rem solid #b3bac5;border-radius:.286rem}.blaze-ui-cap-unified-select-popup .ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:#47af46;border:.143rem solid #47af46 !important}.blaze-ui-cap-unified-select-popup .ant-checkbox-indeterminate .ant-checkbox-inner{background-color:#47af46 !important;border-color:#47af46 !important}.blaze-ui-cap-unified-select-popup .ant-checkbox-indeterminate .ant-checkbox-inner::after{content:"";position:absolute;top:50%;left:50%;width:.714rem;height:.143rem;background-color:#fff;transform:translate(-50%, -50%);border-radius:.071rem}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper{padding-left:.571rem;border:none;box-shadow:none;border-radius:0;border-bottom:.071rem solid rgba(0,0,0,0);transition:border-color .2s ease}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper:hover{border-bottom:.071rem solid #7a869a !important;box-shadow:none}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper:focus-within{border-bottom:.071rem solid #091e42 !important;box-shadow:none;outline:none}.blaze-ui-cap-unified-select-popup .ant-input-affix-wrapper .ant-input{border:none !important;box-shadow:none !important}`, ""]);
|
|
23495
23532
|
// Exports
|
|
23496
23533
|
___CSS_LOADER_EXPORT___.locals = {
|
|
23497
23534
|
"cap-unified-select-header-wrapper": `blaze-ui-cap-unified-select-header-wrapper`,
|
|
@@ -23539,6 +23576,73 @@ ___CSS_LOADER_EXPORT___.locals = {
|
|
|
23539
23576
|
module.exports = ___CSS_LOADER_EXPORT___;
|
|
23540
23577
|
|
|
23541
23578
|
|
|
23579
|
+
/***/ }),
|
|
23580
|
+
|
|
23581
|
+
/***/ 9788:
|
|
23582
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
23583
|
+
|
|
23584
|
+
"use strict";
|
|
23585
|
+
|
|
23586
|
+
|
|
23587
|
+
exports.__esModule = true;
|
|
23588
|
+
exports.TIMEOUTS = exports.SELECT_TYPES = exports.DEFAULTS = void 0;
|
|
23589
|
+
/**
|
|
23590
|
+
* Select type constants for CapUnifiedSelect component
|
|
23591
|
+
*/
|
|
23592
|
+
const SELECT_TYPES = exports.SELECT_TYPES = {
|
|
23593
|
+
SELECT: 'select',
|
|
23594
|
+
MULTI_SELECT: 'multiSelect',
|
|
23595
|
+
TREE_SELECT: 'treeSelect',
|
|
23596
|
+
MULTI_TREE_SELECT: 'multiTreeSelect'
|
|
23597
|
+
};
|
|
23598
|
+
/**
|
|
23599
|
+
* Timeout constants (in milliseconds)
|
|
23600
|
+
*/
|
|
23601
|
+
const TIMEOUTS = exports.TIMEOUTS = {
|
|
23602
|
+
/** Default search debounce timeout */
|
|
23603
|
+
DEFAULT_SEARCH_DEBOUNCE: 300,
|
|
23604
|
+
/** Delay for state updates after search */
|
|
23605
|
+
SEARCH_STATE_UPDATE_DELAY: 100,
|
|
23606
|
+
/** Minimum time since search was cleared to consider data ready */
|
|
23607
|
+
SEARCH_CLEARED_TIMEOUT: 200,
|
|
23608
|
+
/** Buffer time added to debounce for cleared search */
|
|
23609
|
+
SEARCH_CLEARED_BUFFER: 300,
|
|
23610
|
+
/** Buffer time added to debounce for regular search */
|
|
23611
|
+
SEARCH_REGULAR_BUFFER: 500,
|
|
23612
|
+
/** Brief delay to show loading indicator for static search */
|
|
23613
|
+
STATIC_SEARCH_DELAY: 150,
|
|
23614
|
+
/** Timeout for resetData fallback (1 second) */
|
|
23615
|
+
RESET_DATA_TIMEOUT: 1000,
|
|
23616
|
+
/** Minimum time since resetData was called to consider data ready */
|
|
23617
|
+
RESET_DATA_MIN_TIME: 300,
|
|
23618
|
+
/** Maximum time since resetData was called to consider data ready */
|
|
23619
|
+
RESET_DATA_MAX_TIME: 2000,
|
|
23620
|
+
/** Fallback timeout for scroll loading (10 seconds) */
|
|
23621
|
+
SCROLL_LOADING_TIMEOUT: 10000,
|
|
23622
|
+
/** Delay before setting up scroll container listener */
|
|
23623
|
+
SCROLL_CONTAINER_DELAY: 100
|
|
23624
|
+
};
|
|
23625
|
+
|
|
23626
|
+
/**
|
|
23627
|
+
* Default values for component props
|
|
23628
|
+
*/
|
|
23629
|
+
const DEFAULTS = exports.DEFAULTS = {
|
|
23630
|
+
/** Default placeholder text */
|
|
23631
|
+
PLACEHOLDER: 'Select an option',
|
|
23632
|
+
/** Default upload button label */
|
|
23633
|
+
UPLOAD_LABEL: 'Upload',
|
|
23634
|
+
/** Default clear button text */
|
|
23635
|
+
CLEAR_TEXT: 'Clear',
|
|
23636
|
+
/** Default no results message */
|
|
23637
|
+
NO_RESULT_TEXT: 'No results found',
|
|
23638
|
+
/** Default no results icon */
|
|
23639
|
+
NO_RESULT_ICON: 'warning',
|
|
23640
|
+
/** Default virtual row height in pixels */
|
|
23641
|
+
VIRTUAL_ROW_HEIGHT: 32,
|
|
23642
|
+
/** Default list height in pixels */
|
|
23643
|
+
LIST_HEIGHT: 256
|
|
23644
|
+
};
|
|
23645
|
+
|
|
23542
23646
|
/***/ }),
|
|
23543
23647
|
|
|
23544
23648
|
/***/ 9819:
|