@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
|
@@ -773,6 +773,7 @@ var _CapRow = _interopRequireDefault(__webpack_require__(7375));
|
|
|
773
773
|
var _CapSpin = _interopRequireDefault(__webpack_require__(1549));
|
|
774
774
|
var _CapTooltip = _interopRequireDefault(__webpack_require__(5636));
|
|
775
775
|
var _CapTooltipWithInfo = _interopRequireDefault(__webpack_require__(2608));
|
|
776
|
+
var _constants = __webpack_require__(9788);
|
|
776
777
|
var _styles = _interopRequireDefault(__webpack_require__(8263));
|
|
777
778
|
var _jsxRuntime = __webpack_require__(4848);
|
|
778
779
|
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"];
|
|
@@ -780,12 +781,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
780
781
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
781
782
|
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; }
|
|
782
783
|
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 */
|
|
783
|
-
const SELECT_TYPES = {
|
|
784
|
-
SELECT: 'select',
|
|
785
|
-
MULTI_SELECT: 'multiSelect',
|
|
786
|
-
TREE_SELECT: 'treeSelect',
|
|
787
|
-
MULTI_TREE_SELECT: 'multiTreeSelect'
|
|
788
|
-
};
|
|
789
784
|
const NoResult = _ref => {
|
|
790
785
|
let {
|
|
791
786
|
noResultCustomText,
|
|
@@ -803,7 +798,7 @@ const NoResult = _ref => {
|
|
|
803
798
|
size: "m"
|
|
804
799
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
805
800
|
className: _styles.default['cap-unified-select-no-result-text'],
|
|
806
|
-
children: showUpload && (options == null ? void 0 : options.length) === 0 ? noResultCustomText :
|
|
801
|
+
children: showUpload && (options == null ? void 0 : options.length) === 0 ? noResultCustomText : _constants.DEFAULTS.NO_RESULT_TEXT
|
|
807
802
|
})]
|
|
808
803
|
});
|
|
809
804
|
};
|
|
@@ -919,11 +914,11 @@ const filterTreeData = function (data, search, searchBasedOn, selectedValues) {
|
|
|
919
914
|
};
|
|
920
915
|
const CapUnifiedSelect = _ref4 => {
|
|
921
916
|
let {
|
|
922
|
-
type = SELECT_TYPES.SELECT,
|
|
917
|
+
type = _constants.SELECT_TYPES.SELECT,
|
|
923
918
|
options = [],
|
|
924
919
|
value,
|
|
925
920
|
onChange,
|
|
926
|
-
placeholder =
|
|
921
|
+
placeholder = _constants.DEFAULTS.PLACEHOLDER,
|
|
927
922
|
className = '',
|
|
928
923
|
style,
|
|
929
924
|
isError = false,
|
|
@@ -933,7 +928,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
933
928
|
allowClear = false,
|
|
934
929
|
headerLabel,
|
|
935
930
|
onUpload,
|
|
936
|
-
uploadLabel =
|
|
931
|
+
uploadLabel = _constants.DEFAULTS.UPLOAD_LABEL,
|
|
937
932
|
tooltip,
|
|
938
933
|
bylineText,
|
|
939
934
|
disabled = false,
|
|
@@ -942,18 +937,18 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
942
937
|
showSearch = true,
|
|
943
938
|
searchBasedOn = 'label',
|
|
944
939
|
onSearch,
|
|
945
|
-
searchDebounce =
|
|
940
|
+
searchDebounce = _constants.TIMEOUTS.DEFAULT_SEARCH_DEBOUNCE,
|
|
946
941
|
onConfirm,
|
|
947
|
-
clearText =
|
|
948
|
-
noResultCustomText =
|
|
949
|
-
noResultCustomIcon =
|
|
942
|
+
clearText = _constants.DEFAULTS.CLEAR_TEXT,
|
|
943
|
+
noResultCustomText = _constants.DEFAULTS.NO_RESULT_TEXT,
|
|
944
|
+
noResultCustomIcon = _constants.DEFAULTS.NO_RESULT_ICON,
|
|
950
945
|
readOnly = false,
|
|
951
946
|
staticValue = true,
|
|
952
947
|
onFooterDownloadChange,
|
|
953
948
|
onPopupScroll,
|
|
954
949
|
enableVirtualization = false,
|
|
955
|
-
virtualRowHeight =
|
|
956
|
-
resetSearch =
|
|
950
|
+
virtualRowHeight = _constants.DEFAULTS.VIRTUAL_ROW_HEIGHT,
|
|
951
|
+
resetSearch = true,
|
|
957
952
|
resetData
|
|
958
953
|
} = _ref4,
|
|
959
954
|
rest = _objectWithoutPropertiesLoose(_ref4, _excluded);
|
|
@@ -968,6 +963,12 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
968
963
|
const searchTimeoutRef = (0, _react.useRef)(null);
|
|
969
964
|
const scrollContainerRef = (0, _react.useRef)(null);
|
|
970
965
|
const scrollLoadingTimeoutRef = (0, _react.useRef)(null);
|
|
966
|
+
// Track if scroll handler is currently processing to prevent duplicate calls
|
|
967
|
+
const isScrollProcessingRef = (0, _react.useRef)(false);
|
|
968
|
+
// Throttle ref for scroll events
|
|
969
|
+
const scrollThrottleTimeoutRef = (0, _react.useRef)(null);
|
|
970
|
+
// Ref to track options for scroll handler (avoids recreating handleScroll)
|
|
971
|
+
const optionsRef = (0, _react.useRef)(options);
|
|
971
972
|
// Cache of selected items from async results to preserve them during search
|
|
972
973
|
const selectedItemsCacheRef = (0, _react.useRef)(new Map());
|
|
973
974
|
// Track the last search query to detect when options update after search
|
|
@@ -1068,7 +1069,12 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1068
1069
|
}, [options, orderedOptions, tempValue]);
|
|
1069
1070
|
|
|
1070
1071
|
// Extract debounce timeout (extracted early for use in useEffects)
|
|
1071
|
-
const debounceTimeout = searchDebounce != null ? searchDebounce :
|
|
1072
|
+
const debounceTimeout = searchDebounce != null ? searchDebounce : _constants.TIMEOUTS.DEFAULT_SEARCH_DEBOUNCE;
|
|
1073
|
+
|
|
1074
|
+
// Keep optionsRef in sync with options
|
|
1075
|
+
(0, _react.useEffect)(() => {
|
|
1076
|
+
optionsRef.current = options;
|
|
1077
|
+
}, [options]);
|
|
1072
1078
|
|
|
1073
1079
|
// Cleanup timeouts on unmount
|
|
1074
1080
|
(0, _react.useEffect)(() => {
|
|
@@ -1079,6 +1085,9 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1079
1085
|
if (scrollLoadingTimeoutRef.current) {
|
|
1080
1086
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1081
1087
|
}
|
|
1088
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
1089
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
1090
|
+
}
|
|
1082
1091
|
};
|
|
1083
1092
|
}, []);
|
|
1084
1093
|
|
|
@@ -1101,8 +1110,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1101
1110
|
const searchCleared = lastSearchQueryRef.current === '';
|
|
1102
1111
|
const timeSinceCleared = searchClearedTimeRef.current ? Date.now() - searchClearedTimeRef.current : Infinity;
|
|
1103
1112
|
const hasOptionsData = options.length > 0;
|
|
1104
|
-
// Wait at least
|
|
1105
|
-
const clearedSearchReady = searchCleared && hasOptionsData && timeSinceCleared >
|
|
1113
|
+
// Wait at least SEARCH_CLEARED_TIMEOUT after search is cleared to allow API call to complete
|
|
1114
|
+
const clearedSearchReady = searchCleared && hasOptionsData && timeSinceCleared > _constants.TIMEOUTS.SEARCH_CLEARED_TIMEOUT;
|
|
1106
1115
|
if (optionsChanged || clearedSearchReady) {
|
|
1107
1116
|
// Options updated after search - data has arrived
|
|
1108
1117
|
// Use a small delay to ensure state updates are processed
|
|
@@ -1113,7 +1122,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1113
1122
|
if (searchCleared) {
|
|
1114
1123
|
searchClearedTimeRef.current = null;
|
|
1115
1124
|
}
|
|
1116
|
-
},
|
|
1125
|
+
}, _constants.TIMEOUTS.SEARCH_STATE_UPDATE_DELAY);
|
|
1117
1126
|
return () => clearTimeout(timeoutId);
|
|
1118
1127
|
}
|
|
1119
1128
|
prevOptionsRef.current = options;
|
|
@@ -1132,8 +1141,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1132
1141
|
// For cleared search (empty string), use a shorter timeout since it should reload initial data quickly
|
|
1133
1142
|
// For regular search, use debounce timeout + buffer
|
|
1134
1143
|
const searchCleared = lastSearchQueryRef.current === '';
|
|
1135
|
-
const timeoutDuration = searchCleared ? debounceTimeout +
|
|
1136
|
-
: debounceTimeout +
|
|
1144
|
+
const timeoutDuration = searchCleared ? debounceTimeout + _constants.TIMEOUTS.SEARCH_CLEARED_BUFFER // Shorter timeout for cleared search
|
|
1145
|
+
: debounceTimeout + _constants.TIMEOUTS.SEARCH_REGULAR_BUFFER; // Longer timeout for regular search
|
|
1137
1146
|
|
|
1138
1147
|
// Calculate timeout: debounce timeout + a small buffer for API response
|
|
1139
1148
|
// This ensures we wait for the API call to complete before showing "No results"
|
|
@@ -1171,7 +1180,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1171
1180
|
// Additional check: if enough time has passed since resetData was called
|
|
1172
1181
|
// and we have options data, assume data has loaded even if comparison didn't detect change
|
|
1173
1182
|
const timeSinceReset = resetDataCalledTimeRef.current ? Date.now() - resetDataCalledTimeRef.current : Infinity;
|
|
1174
|
-
const hasDataAfterTimeout = currentOptions.length > 0 && timeSinceReset >
|
|
1183
|
+
const hasDataAfterTimeout = currentOptions.length > 0 && timeSinceReset > _constants.TIMEOUTS.RESET_DATA_MIN_TIME && timeSinceReset < _constants.TIMEOUTS.RESET_DATA_MAX_TIME;
|
|
1175
1184
|
|
|
1176
1185
|
// If options changed or enough time has passed with data, clear the loading state
|
|
1177
1186
|
if (optionsChanged || hasDataAfterTimeout) {
|
|
@@ -1198,8 +1207,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1198
1207
|
prevOptionsBeforeResetRef.current = options;
|
|
1199
1208
|
// Clear timestamp
|
|
1200
1209
|
resetDataCalledTimeRef.current = null;
|
|
1201
|
-
},
|
|
1202
|
-
|
|
1210
|
+
}, _constants.TIMEOUTS.RESET_DATA_TIMEOUT);
|
|
1203
1211
|
return () => clearTimeout(fallbackTimeout);
|
|
1204
1212
|
}, [isResettingData, options]);
|
|
1205
1213
|
|
|
@@ -1252,6 +1260,8 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1252
1260
|
if (optionsCountIncreased || optionsContentChanged) {
|
|
1253
1261
|
// Options updated after scroll - data has arrived, clear loading overlay
|
|
1254
1262
|
setIsLoadingOnScroll(false);
|
|
1263
|
+
// Reset processing flag to allow next scroll event
|
|
1264
|
+
isScrollProcessingRef.current = false;
|
|
1255
1265
|
if (scrollLoadingTimeoutRef.current) {
|
|
1256
1266
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1257
1267
|
scrollLoadingTimeoutRef.current = null;
|
|
@@ -1312,11 +1322,11 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1312
1322
|
// Clear loading state after a short delay (filtering is instant but we show feedback)
|
|
1313
1323
|
searchTimeoutRef.current = setTimeout(() => {
|
|
1314
1324
|
setIsSearching(false);
|
|
1315
|
-
},
|
|
1325
|
+
}, _constants.TIMEOUTS.STATIC_SEARCH_DELAY);
|
|
1316
1326
|
}
|
|
1317
1327
|
}, [onSearch, staticValue, debounceTimeout]);
|
|
1318
|
-
const isMulti = (0, _react.useMemo)(() => type === SELECT_TYPES.MULTI_SELECT || type === SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
1319
|
-
const isTree = (0, _react.useMemo)(() => type === SELECT_TYPES.TREE_SELECT || type === SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
1328
|
+
const isMulti = (0, _react.useMemo)(() => type === _constants.SELECT_TYPES.MULTI_SELECT || type === _constants.SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
1329
|
+
const isTree = (0, _react.useMemo)(() => type === _constants.SELECT_TYPES.TREE_SELECT || type === _constants.SELECT_TYPES.MULTI_TREE_SELECT, [type]);
|
|
1320
1330
|
|
|
1321
1331
|
// Use options directly since pagination is handled by the developer
|
|
1322
1332
|
const mergedOptions = (0, _react.useMemo)(() => {
|
|
@@ -1677,10 +1687,15 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1677
1687
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1678
1688
|
scrollLoadingTimeoutRef.current = null;
|
|
1679
1689
|
}
|
|
1690
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
1691
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
1692
|
+
scrollThrottleTimeoutRef.current = null;
|
|
1693
|
+
}
|
|
1680
1694
|
// Reset loading states
|
|
1681
1695
|
setIsSearching(false);
|
|
1682
1696
|
searchClearedTimeRef.current = null; // Clear search cleared timestamp
|
|
1683
1697
|
setIsLoadingOnScroll(false);
|
|
1698
|
+
isScrollProcessingRef.current = false;
|
|
1684
1699
|
// Safety check: Clear isResettingData if it's still true when opening
|
|
1685
1700
|
// This handles cases where options updated while dropdown was closed
|
|
1686
1701
|
if (isResettingData) {
|
|
@@ -1706,10 +1721,15 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1706
1721
|
}
|
|
1707
1722
|
// Reset scroll loading state
|
|
1708
1723
|
setIsLoadingOnScroll(false);
|
|
1724
|
+
isScrollProcessingRef.current = false;
|
|
1709
1725
|
if (scrollLoadingTimeoutRef.current) {
|
|
1710
1726
|
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1711
1727
|
scrollLoadingTimeoutRef.current = null;
|
|
1712
1728
|
}
|
|
1729
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
1730
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
1731
|
+
scrollThrottleTimeoutRef.current = null;
|
|
1732
|
+
}
|
|
1713
1733
|
scrollContainerRef.current = null;
|
|
1714
1734
|
|
|
1715
1735
|
// Only call resetData if user actually interacted (selected, searched, etc.)
|
|
@@ -1769,6 +1789,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1769
1789
|
|
|
1770
1790
|
// Handle scroll event - automatically checks if scroll is near bottom
|
|
1771
1791
|
// Developer handles hasMore and isLoading conditions in onPopupScroll callback
|
|
1792
|
+
// Using refs to avoid recreating the callback when options change
|
|
1772
1793
|
const handleScroll = (0, _react.useCallback)(event => {
|
|
1773
1794
|
if (!onPopupScroll) return;
|
|
1774
1795
|
const target = event.target;
|
|
@@ -1779,74 +1800,83 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1779
1800
|
|
|
1780
1801
|
// Only call onPopupScroll if scroll is near bottom
|
|
1781
1802
|
// Developer will handle hasMore and isLoading checks inside the callback
|
|
1782
|
-
if (!isNearBottom)
|
|
1803
|
+
if (!isNearBottom) {
|
|
1804
|
+
// Reset processing flag when not near bottom
|
|
1805
|
+
isScrollProcessingRef.current = false;
|
|
1806
|
+
return;
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
// Prevent multiple scroll triggers while already processing
|
|
1810
|
+
// This ensures we don't trigger multiple API calls simultaneously
|
|
1811
|
+
if (isScrollProcessingRef.current) return;
|
|
1783
1812
|
|
|
1784
1813
|
// Prevent multiple scroll triggers while already loading
|
|
1785
1814
|
// This ensures loading state is managed properly and data loading completes
|
|
1786
1815
|
if (isLoadingOnScroll) return;
|
|
1787
1816
|
|
|
1788
|
-
//
|
|
1789
|
-
//
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
prevOptionsRefForScroll.current = options;
|
|
1793
|
-
// Also store the count at scroll trigger time for orderedOptions update
|
|
1794
|
-
scrollTriggerOptionsCountRef.current = options.length;
|
|
1795
|
-
|
|
1796
|
-
// Show loading indicator when scrolling near bottom
|
|
1797
|
-
// This happens before calling onPopupScroll to provide immediate feedback
|
|
1798
|
-
setIsLoadingOnScroll(true);
|
|
1799
|
-
|
|
1800
|
-
// Clear any existing timeout
|
|
1801
|
-
if (scrollLoadingTimeoutRef.current) {
|
|
1802
|
-
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1803
|
-
scrollLoadingTimeoutRef.current = null;
|
|
1817
|
+
// Throttle scroll events to prevent rapid-fire API calls
|
|
1818
|
+
// Clear any existing throttle timeout
|
|
1819
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
1820
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
1804
1821
|
}
|
|
1805
1822
|
|
|
1806
|
-
//
|
|
1807
|
-
|
|
1808
|
-
// target: target,
|
|
1809
|
-
// currentTarget: target,
|
|
1810
|
-
// nativeEvent: event,
|
|
1811
|
-
// bubbles: false,
|
|
1812
|
-
// cancelable: false,
|
|
1813
|
-
// defaultPrevented: false,
|
|
1814
|
-
// eventPhase: 0,
|
|
1815
|
-
// isTrusted: false,
|
|
1816
|
-
// timeStamp: Date.now(),
|
|
1817
|
-
// type: 'scroll',
|
|
1818
|
-
// detail: 0,
|
|
1819
|
-
// view: null,
|
|
1820
|
-
// preventDefault: () => { },
|
|
1821
|
-
// stopPropagation: () => { },
|
|
1822
|
-
// stopImmediatePropagation: () => { },
|
|
1823
|
-
// isDefaultPrevented: () => false,
|
|
1824
|
-
// isPropagationStopped: () => false,
|
|
1825
|
-
// } as unknown as React.UIEvent<HTMLElement>;
|
|
1826
|
-
|
|
1827
|
-
// Mark as interacted when user scrolls (triggers data loading)
|
|
1828
|
-
hasInteractedRef.current = true;
|
|
1823
|
+
// Set processing flag immediately to prevent duplicate calls
|
|
1824
|
+
isScrollProcessingRef.current = true;
|
|
1829
1825
|
|
|
1830
|
-
//
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
//
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1826
|
+
// Throttle the actual API call to prevent multiple rapid triggers
|
|
1827
|
+
scrollThrottleTimeoutRef.current = setTimeout(() => {
|
|
1828
|
+
// Double-check we're still near bottom and not loading
|
|
1829
|
+
const stillNearBottom = Math.floor(target.scrollHeight - target.scrollTop) <= target.clientHeight;
|
|
1830
|
+
if (!stillNearBottom || isLoadingOnScroll) {
|
|
1831
|
+
isScrollProcessingRef.current = false;
|
|
1832
|
+
return;
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1835
|
+
// Store current options count and options reference before triggering load
|
|
1836
|
+
// This helps detect when new data arrives
|
|
1837
|
+
// Use ref to get current options without depending on options.length
|
|
1838
|
+
const currentOptions = optionsRef.current;
|
|
1839
|
+
prevOptionsCountRef.current = currentOptions.length;
|
|
1840
|
+
prevOptionsRefForScroll.current = currentOptions;
|
|
1841
|
+
// Also store the count at scroll trigger time for orderedOptions update
|
|
1842
|
+
scrollTriggerOptionsCountRef.current = currentOptions.length;
|
|
1843
|
+
|
|
1844
|
+
// Show loading indicator when scrolling near bottom
|
|
1845
|
+
// This happens before calling onPopupScroll to provide immediate feedback
|
|
1846
|
+
setIsLoadingOnScroll(true);
|
|
1847
|
+
|
|
1848
|
+
// Clear any existing timeout
|
|
1849
|
+
if (scrollLoadingTimeoutRef.current) {
|
|
1850
|
+
clearTimeout(scrollLoadingTimeoutRef.current);
|
|
1851
|
+
scrollLoadingTimeoutRef.current = null;
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1854
|
+
// Mark as interacted when user scrolls (triggers data loading)
|
|
1855
|
+
hasInteractedRef.current = true;
|
|
1856
|
+
|
|
1857
|
+
// Call the developer's scroll handler - component already checked scroll position
|
|
1858
|
+
// Developer should check hasMore and isLoading inside the callback
|
|
1859
|
+
// This triggers the async data loading
|
|
1860
|
+
onPopupScroll();
|
|
1861
|
+
|
|
1862
|
+
// Set a fallback timeout to clear loading if options don't change
|
|
1863
|
+
// This prevents loading from staying forever if data never arrives
|
|
1864
|
+
// Using a longer timeout (10 seconds) to give enough time for slow API calls
|
|
1865
|
+
scrollLoadingTimeoutRef.current = setTimeout(() => {
|
|
1866
|
+
// Only clear if still loading (options change detection might have cleared it already)
|
|
1867
|
+
setIsLoadingOnScroll(prev => {
|
|
1868
|
+
if (prev) {
|
|
1869
|
+
// Clear the timeout reference when clearing loading state
|
|
1870
|
+
scrollLoadingTimeoutRef.current = null;
|
|
1871
|
+
// Reset processing flag when loading times out
|
|
1872
|
+
isScrollProcessingRef.current = false;
|
|
1873
|
+
return false;
|
|
1874
|
+
}
|
|
1875
|
+
return prev;
|
|
1876
|
+
});
|
|
1877
|
+
}, _constants.TIMEOUTS.SCROLL_LOADING_TIMEOUT);
|
|
1878
|
+
}, 150); // 150ms throttle to prevent rapid-fire events
|
|
1879
|
+
}, [onPopupScroll, isLoadingOnScroll]);
|
|
1850
1880
|
|
|
1851
1881
|
// Setup scroll listener for onPopupScroll
|
|
1852
1882
|
(0, _react.useEffect)(() => {
|
|
@@ -1890,13 +1920,20 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
1890
1920
|
passive: true
|
|
1891
1921
|
});
|
|
1892
1922
|
}
|
|
1893
|
-
},
|
|
1923
|
+
}, _constants.TIMEOUTS.SCROLL_CONTAINER_DELAY);
|
|
1894
1924
|
return () => {
|
|
1895
1925
|
clearTimeout(timeoutId);
|
|
1926
|
+
// Clear throttle timeout when cleaning up
|
|
1927
|
+
if (scrollThrottleTimeoutRef.current) {
|
|
1928
|
+
clearTimeout(scrollThrottleTimeoutRef.current);
|
|
1929
|
+
scrollThrottleTimeoutRef.current = null;
|
|
1930
|
+
}
|
|
1896
1931
|
if (scrollContainerRef.current) {
|
|
1897
1932
|
scrollContainerRef.current.removeEventListener('scroll', handleScroll);
|
|
1898
1933
|
scrollContainerRef.current = null;
|
|
1899
1934
|
}
|
|
1935
|
+
// Reset processing flag when listener is removed
|
|
1936
|
+
isScrollProcessingRef.current = false;
|
|
1900
1937
|
};
|
|
1901
1938
|
}, [onPopupScroll, dropdownOpen, handleScroll]);
|
|
1902
1939
|
const renderHeader = (0, _react.useMemo)(() => {
|
|
@@ -2051,7 +2088,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
2051
2088
|
})]
|
|
2052
2089
|
})]
|
|
2053
2090
|
})
|
|
2054
|
-
}), (type === SELECT_TYPES.SELECT || type === SELECT_TYPES.TREE_SELECT) && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapRow.default, {
|
|
2091
|
+
}), (type === _constants.SELECT_TYPES.SELECT || type === _constants.SELECT_TYPES.TREE_SELECT) && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapRow.default, {
|
|
2055
2092
|
className: _styles.default['cap-unified-select-tree-clear-container'],
|
|
2056
2093
|
onClick: handleClearAll,
|
|
2057
2094
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
@@ -2139,7 +2176,7 @@ const CapUnifiedSelect = _ref4 => {
|
|
|
2139
2176
|
popupMatchSelectWidth: false,
|
|
2140
2177
|
disabled: disabled,
|
|
2141
2178
|
filterTreeNode: false,
|
|
2142
|
-
listHeight:
|
|
2179
|
+
listHeight: _constants.DEFAULTS.LIST_HEIGHT,
|
|
2143
2180
|
listItemHeight: virtualRowHeight,
|
|
2144
2181
|
popupRender: renderCustomDropdown
|
|
2145
2182
|
}, rest)), isError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CapLabel.default, {
|
|
@@ -2945,7 +2982,7 @@ var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(1601);
|
|
|
2945
2982
|
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(6314);
|
|
2946
2983
|
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);
|
|
2947
2984
|
// Module
|
|
2948
|
-
___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}`, ""]);
|
|
2985
|
+
___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}`, ""]);
|
|
2949
2986
|
// Exports
|
|
2950
2987
|
___CSS_LOADER_EXPORT___.locals = {
|
|
2951
2988
|
"cap-unified-select-header-wrapper": `blaze-ui-cap-unified-select-header-wrapper`,
|
|
@@ -2993,6 +3030,73 @@ ___CSS_LOADER_EXPORT___.locals = {
|
|
|
2993
3030
|
module.exports = ___CSS_LOADER_EXPORT___;
|
|
2994
3031
|
|
|
2995
3032
|
|
|
3033
|
+
/***/ }),
|
|
3034
|
+
|
|
3035
|
+
/***/ 9788:
|
|
3036
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
3037
|
+
|
|
3038
|
+
"use strict";
|
|
3039
|
+
|
|
3040
|
+
|
|
3041
|
+
exports.__esModule = true;
|
|
3042
|
+
exports.TIMEOUTS = exports.SELECT_TYPES = exports.DEFAULTS = void 0;
|
|
3043
|
+
/**
|
|
3044
|
+
* Select type constants for CapUnifiedSelect component
|
|
3045
|
+
*/
|
|
3046
|
+
const SELECT_TYPES = exports.SELECT_TYPES = {
|
|
3047
|
+
SELECT: 'select',
|
|
3048
|
+
MULTI_SELECT: 'multiSelect',
|
|
3049
|
+
TREE_SELECT: 'treeSelect',
|
|
3050
|
+
MULTI_TREE_SELECT: 'multiTreeSelect'
|
|
3051
|
+
};
|
|
3052
|
+
/**
|
|
3053
|
+
* Timeout constants (in milliseconds)
|
|
3054
|
+
*/
|
|
3055
|
+
const TIMEOUTS = exports.TIMEOUTS = {
|
|
3056
|
+
/** Default search debounce timeout */
|
|
3057
|
+
DEFAULT_SEARCH_DEBOUNCE: 300,
|
|
3058
|
+
/** Delay for state updates after search */
|
|
3059
|
+
SEARCH_STATE_UPDATE_DELAY: 100,
|
|
3060
|
+
/** Minimum time since search was cleared to consider data ready */
|
|
3061
|
+
SEARCH_CLEARED_TIMEOUT: 200,
|
|
3062
|
+
/** Buffer time added to debounce for cleared search */
|
|
3063
|
+
SEARCH_CLEARED_BUFFER: 300,
|
|
3064
|
+
/** Buffer time added to debounce for regular search */
|
|
3065
|
+
SEARCH_REGULAR_BUFFER: 500,
|
|
3066
|
+
/** Brief delay to show loading indicator for static search */
|
|
3067
|
+
STATIC_SEARCH_DELAY: 150,
|
|
3068
|
+
/** Timeout for resetData fallback (1 second) */
|
|
3069
|
+
RESET_DATA_TIMEOUT: 1000,
|
|
3070
|
+
/** Minimum time since resetData was called to consider data ready */
|
|
3071
|
+
RESET_DATA_MIN_TIME: 300,
|
|
3072
|
+
/** Maximum time since resetData was called to consider data ready */
|
|
3073
|
+
RESET_DATA_MAX_TIME: 2000,
|
|
3074
|
+
/** Fallback timeout for scroll loading (10 seconds) */
|
|
3075
|
+
SCROLL_LOADING_TIMEOUT: 10000,
|
|
3076
|
+
/** Delay before setting up scroll container listener */
|
|
3077
|
+
SCROLL_CONTAINER_DELAY: 100
|
|
3078
|
+
};
|
|
3079
|
+
|
|
3080
|
+
/**
|
|
3081
|
+
* Default values for component props
|
|
3082
|
+
*/
|
|
3083
|
+
const DEFAULTS = exports.DEFAULTS = {
|
|
3084
|
+
/** Default placeholder text */
|
|
3085
|
+
PLACEHOLDER: 'Select an option',
|
|
3086
|
+
/** Default upload button label */
|
|
3087
|
+
UPLOAD_LABEL: 'Upload',
|
|
3088
|
+
/** Default clear button text */
|
|
3089
|
+
CLEAR_TEXT: 'Clear',
|
|
3090
|
+
/** Default no results message */
|
|
3091
|
+
NO_RESULT_TEXT: 'No results found',
|
|
3092
|
+
/** Default no results icon */
|
|
3093
|
+
NO_RESULT_ICON: 'warning',
|
|
3094
|
+
/** Default virtual row height in pixels */
|
|
3095
|
+
VIRTUAL_ROW_HEIGHT: 32,
|
|
3096
|
+
/** Default list height in pixels */
|
|
3097
|
+
LIST_HEIGHT: 256
|
|
3098
|
+
};
|
|
3099
|
+
|
|
2996
3100
|
/***/ })
|
|
2997
3101
|
|
|
2998
3102
|
/******/ });
|