@sheinx/base 3.7.5-beta.10 → 3.7.5-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAWxD,QAAA,MAAM,KAAK,UAAW,UAAU,mDA2H/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAWxD,QAAA,MAAM,KAAK,UAAW,UAAU,mDA4H/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -128,7 +128,7 @@ var Alert = function Alert(props) {
128
128
  if (dismiss === HIDE) {
129
129
  return null;
130
130
  }
131
- if (title) {
131
+ if ('title' in props && title !== undefined) {
132
132
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({
133
133
  className: rootClass
134
134
  }, getRootProps()), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["node.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,QAAA,MAAM,YAAY,gIAqJjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["node.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,QAAA,MAAM,YAAY,gIAiJjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -50,8 +50,8 @@ var CascaderNode = function CascaderNode(props) {
50
50
  _useState2 = _slicedToArray(_useState, 2),
51
51
  loading = _useState2[0],
52
52
  setLoading = _useState2[1];
53
+ // const [activeState, setActiveState] = useState(false);
53
54
  var checkboxRef = (0, _react.useRef)();
54
- var hasHandleSelectRef = (0, _react.useRef)(false);
55
55
  var isDisabled = datum.isDisabled(id);
56
56
  var children = data[childrenKey];
57
57
  var hasChildren = children && children.length > 0;
@@ -92,17 +92,13 @@ var CascaderNode = function CascaderNode(props) {
92
92
  }
93
93
  if (isHoverAble) {
94
94
  events.onMouseEnter = handlePathChange;
95
- if (multiple) {
96
- events.onClick = handleSelect;
97
- hasHandleSelectRef.current = true;
98
- }
95
+ if (multiple) events.onClick = handleSelect;
99
96
  } else if (isRealLeafNode && multiple) {
100
97
  // 非hover模式下: 末级节点支持整个节点区域点击选中checkbox
101
98
  events.onClick = function (e) {
102
99
  handleClick(e);
103
100
  handleSelect(e);
104
101
  };
105
- hasHandleSelectRef.current = true;
106
102
  }
107
103
  return events;
108
104
  };
@@ -158,7 +154,7 @@ var CascaderNode = function CascaderNode(props) {
158
154
  className: styles.optionCheckbox,
159
155
  checked: datum.getChecked(id),
160
156
  disabled: isDisabled,
161
- onChange: hasHandleSelectRef.current ? undefined : handleChange
157
+ onChange: isRealLeafNode && multiple ? undefined : handleChange
162
158
  }), renderContent(), renderIcon()]
163
159
  })
164
160
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"result-more.d.ts","sourceRoot":"","sources":["result-more.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UA4C9B;;AA0GD,wBAAyC"}
1
+ {"version":3,"file":"result-more.d.ts","sourceRoot":"","sources":["result-more.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UA6D9B;;AAsHD,wBAAyC"}
@@ -34,25 +34,44 @@ function getResetMore(onFilter, container, doms) {
34
34
  var hideMargin = (0, _hooks.parsePxToNumber)(hideElStyle.marginLeft) + (0, _hooks.parsePxToNumber)(hideElStyle.marginRight);
35
35
  var num = 0;
36
36
  var sumWidth = 0;
37
- for (var i = 0; i < doms.length; i++) {
38
- var _item2 = doms[i];
39
- var itemStyle = getComputedStyle(_item2);
40
- var itemWidth = _item2.offsetWidth + (0, _hooks.parsePxToNumber)(itemStyle.marginLeft) + (0, _hooks.parsePxToNumber)(itemStyle.marginRight);
41
- sumWidth += itemWidth;
42
- var moreWidth = 0;
43
- var resetNum = items.length - 1 - i;
44
- if (resetNum > 0) {
45
- var reset = "+".concat(resetNum);
46
- hideEl.childNodes[0].innerText = reset;
47
- moreWidth = hideEl.offsetWidth + hideMargin;
48
- }
49
- if (sumWidth > contentWidth - moreWidth) {
50
- num = i;
51
- break;
52
- }
37
+ var itemWidthArr = items.map(function (item) {
38
+ var itemStyle = getComputedStyle(item);
39
+ var itemLen = item.offsetWidth + (0, _hooks.parsePxToNumber)(itemStyle.marginLeft) + (0, _hooks.parsePxToNumber)(itemStyle.marginRight);
40
+ sumWidth += itemLen;
41
+ return itemLen;
42
+ });
43
+ if (sumWidth <= contentWidth) {
53
44
  num = -1;
45
+ } else {
46
+ var len = 0;
47
+ for (var i = 0; i < itemWidthArr.length; i++) {
48
+ var itemLen = itemWidthArr[i];
49
+ // number length
50
+ var resetNum = items.length - 1 - i;
51
+ var moreWidth = void 0;
52
+ if (resetNum <= 0) {
53
+ moreWidth = 0;
54
+ } else {
55
+ var reset = "+".concat(resetNum);
56
+ hideEl.childNodes[0].innerText = reset;
57
+ // (+num) width
58
+ moreWidth = hideEl.offsetWidth + hideMargin;
59
+ }
60
+ len += itemLen;
61
+ if (len > contentWidth - moreWidth) {
62
+ break;
63
+ }
64
+ num += 1;
65
+ if (i === items.length - 1) {
66
+ // not show more
67
+ num = -1;
68
+ }
69
+ }
70
+ }
71
+ // at least show one
72
+ if (num === 0 && itemWidthArr[0]) {
73
+ num = 1;
54
74
  }
55
- ;
56
75
  return num;
57
76
  }
58
77
  var More = function More(props) {
@@ -74,7 +93,16 @@ var More = function More(props) {
74
93
  var shouldShowMore = showNum < 0 || showNum >= data.length;
75
94
  var before = [];
76
95
  var after = [];
77
- var afterLength = 0;
96
+ var itemsLength = 0;
97
+ var tagStyle = shouldShowMore ? {
98
+ position: 'absolute',
99
+ zIndex: -100,
100
+ userSelect: 'none',
101
+ msUserSelect: 'none',
102
+ contain: 'layout',
103
+ opacity: 0,
104
+ pointerEvents: 'none'
105
+ } : {};
78
106
  if (!shouldShowMore) {
79
107
  before = new Array(showNum).fill(undefined).map(function (_item, index) {
80
108
  return data[index];
@@ -82,9 +110,9 @@ var More = function More(props) {
82
110
  after = new Array(data.length - showNum).fill(undefined).map(function (_item, index) {
83
111
  return data[showNum + index];
84
112
  });
85
- afterLength = after.length;
113
+ itemsLength = after.length;
86
114
  }
87
- if (shouldShowMore) {
115
+ if (showNum < 0 || showNum >= data.length) {
88
116
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
89
117
  children: [data, /*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, {
90
118
  className: styles.tag,
@@ -111,9 +139,10 @@ var More = function More(props) {
111
139
  className: styles.tag,
112
140
  jssStyle: jssStyle,
113
141
  size: size,
142
+ style: tagStyle,
114
143
  mode: visible ? 'fill' : 'bright',
115
144
  color: visible ? 'info' : 'default',
116
- children: shouldShowMore ? '+' : "+".concat(afterLength)
145
+ children: shouldShowMore ? '+' : "+".concat(itemsLength)
117
146
  }, 'more'), compressed !== 'hide-popover' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_popover.default, {
118
147
  jssStyle: jssStyle,
119
148
  className: compressedClassName,
@@ -4,6 +4,7 @@ import { SelectProps } from './select.type';
4
4
  export interface ResultMoreProps<DataItem, Value> extends Pick<SelectProps<DataItem, Value>, 'jssStyle' | 'size' | 'multiple' | 'placeholder' | 'keygen' | 'value' | 'compressed' | 'compressedBound' | 'renderCompressed' | 'compressedClassName' | 'disabled' | 'onFilter'> {
5
5
  data: React.ReactNode[];
6
6
  datas?: (DataItem | UnMatchedData)[];
7
+ more?: number;
7
8
  showNum?: number;
8
9
  onRemove?: (item: DataItem | UnMatchedData, key?: KeygenResult, index?: number) => void;
9
10
  classes: {
@@ -1 +1 @@
1
- {"version":3,"file":"result-more.type.d.ts","sourceRoot":"","sources":["result-more.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,eAAe,CAAC,QAAQ,EAAE,KAAK,CAC9C,SAAQ,IAAI,CACV,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1B,UAAU,GACV,MAAM,GACN,UAAU,GACV,aAAa,GACb,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,UAAU,GACV,UAAU,CACb;IACD,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
1
+ {"version":3,"file":"result-more.type.d.ts","sourceRoot":"","sources":["result-more.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,eAAe,CAAC,QAAQ,EAAE,KAAK,CAC9C,SAAQ,IAAI,CACV,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1B,UAAU,GACV,MAAM,GACN,UAAU,GACV,aAAa,GACb,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,UAAU,GACV,UAAU,CACb;IACD,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["result.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,QAAA,MAAM,MAAM,mGAucX,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["result.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,QAAA,MAAM,MAAM,mGAybX,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -84,11 +84,7 @@ var Result = function Result(props) {
84
84
  setShouldResetMore = _useState4[1];
85
85
  var render = (0, _hooks.useRender)();
86
86
  var resultRef = (0, _react.useRef)(null);
87
- var _useRef = (0, _react.useRef)({
88
- prevMore: more,
89
- maxMore: 0
90
- }),
91
- context = _useRef.current;
87
+ var prevMore = (0, _react.useRef)(more);
92
88
  var removeLock = (0, _react.useRef)(false);
93
89
  var showInput = allowOnFilter;
94
90
  var mounted = (0, _react.useRef)(false);
@@ -291,6 +287,7 @@ var Result = function Result(props) {
291
287
  data: result,
292
288
  datas: renderMultipleResult.datas,
293
289
  size: size,
290
+ more: moreNumber,
294
291
  compressed: compressed,
295
292
  renderCompressed: renderCompressed,
296
293
  compressedClassName: compressedClassName,
@@ -320,22 +317,13 @@ var Result = function Result(props) {
320
317
  }
321
318
  return result;
322
319
  };
323
- var handleResetMore = function handleResetMore(valueLength) {
320
+ var handleResetMore = function handleResetMore() {
324
321
  if (!compressed) return;
325
322
  if (isCompressedBound()) return;
326
323
  if (removeLock.current) {
327
324
  removeLock.current = false;
328
325
  return;
329
326
  }
330
-
331
- // 性能优化:当选项数量远超容器承载能力时,跳过昂贵的DOM计算
332
- // 在1000+选项时,重新计算会导致INP超过1000ms
333
- var hasExistingCompression = context.prevMore > 0;
334
- var hasValidEstimate = context.maxMore > 0;
335
- var exceedsCapacity = valueLength && valueLength > context.maxMore;
336
- if (hasExistingCompression && hasValidEstimate && exceedsCapacity) {
337
- return; // 跳过重新计算,保持现有的压缩状态
338
- }
339
327
  setMore(-1);
340
328
  setShouldResetMore(true);
341
329
  };
@@ -392,7 +380,7 @@ var Result = function Result(props) {
392
380
  }
393
381
  }, [focus, multiple]);
394
382
  (0, _react.useLayoutEffect)(function () {
395
- handleResetMore((valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) || 0);
383
+ handleResetMore();
396
384
  }, [valueProp, data]);
397
385
  (0, _react.useEffect)(function () {
398
386
  // datum.getDataByValues(value); 需要等待 useTree useEffect 执行完毕 才能获取到
@@ -403,7 +391,7 @@ var Result = function Result(props) {
403
391
  var tagClassName = ".".concat(styles.tag.split(' ')[0]);
404
392
  if (shouldResetMore && isArray(value) && (value || []).length) {
405
393
  var newMore = (0, _resultMore.getResetMore)(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
406
- context.prevMore = newMore;
394
+ prevMore.current = newMore;
407
395
  setMore(newMore);
408
396
  setShouldResetMore(false);
409
397
  } else {
@@ -417,7 +405,6 @@ var Result = function Result(props) {
417
405
  if (!resultRef.current) return;
418
406
  if (!compressed) return;
419
407
  if (isCompressedBound()) return;
420
- context.maxMore = Math.floor(resultRef.current.clientWidth / 20);
421
408
  var cancelObserver = (0, _hooks.addResizeObserver)(resultRef.current, handleResetMore, {
422
409
  direction: 'x'
423
410
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tree-virtual-node.d.ts","sourceRoot":"","sources":["tree-virtual-node.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvE,QAAA,MAAM,WAAW,mIAwJhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"tree-virtual-node.d.ts","sourceRoot":"","sources":["tree-virtual-node.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvE,QAAA,MAAM,WAAW,mIA2IhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -83,19 +83,7 @@ var VirtualNode = function VirtualNode(props) {
83
83
  });
84
84
  if (onToggle) onToggle(id, nextExpanded);
85
85
  };
86
- var getIndent = function getIndent() {
87
- if (size === "large") {
88
- if (line && level === 1) {
89
- return 16;
90
- }
91
- return 32;
92
- }
93
- if (line && level === 1) {
94
- return 8;
95
- }
96
- return 24;
97
- };
98
- var indent = getIndent();
86
+ var indent = size === "large" ? 32 : 24;
99
87
  var $indents;
100
88
  if (line) {
101
89
  $indents = Array.from({
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAWxD,QAAA,MAAM,KAAK,UAAW,UAAU,mDA2H/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAWxD,QAAA,MAAM,KAAK,UAAW,UAAU,mDA4H/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -120,7 +120,7 @@ var Alert = function Alert(props) {
120
120
  if (dismiss === HIDE) {
121
121
  return null;
122
122
  }
123
- if (title) {
123
+ if ('title' in props && title !== undefined) {
124
124
  return /*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({
125
125
  className: rootClass
126
126
  }, getRootProps()), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["node.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,QAAA,MAAM,YAAY,gIAqJjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["node.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,QAAA,MAAM,YAAY,gIAiJjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -44,8 +44,8 @@ var CascaderNode = function CascaderNode(props) {
44
44
  _useState2 = _slicedToArray(_useState, 2),
45
45
  loading = _useState2[0],
46
46
  setLoading = _useState2[1];
47
+ // const [activeState, setActiveState] = useState(false);
47
48
  var checkboxRef = useRef();
48
- var hasHandleSelectRef = useRef(false);
49
49
  var isDisabled = datum.isDisabled(id);
50
50
  var children = data[childrenKey];
51
51
  var hasChildren = children && children.length > 0;
@@ -86,17 +86,13 @@ var CascaderNode = function CascaderNode(props) {
86
86
  }
87
87
  if (isHoverAble) {
88
88
  events.onMouseEnter = handlePathChange;
89
- if (multiple) {
90
- events.onClick = handleSelect;
91
- hasHandleSelectRef.current = true;
92
- }
89
+ if (multiple) events.onClick = handleSelect;
93
90
  } else if (isRealLeafNode && multiple) {
94
91
  // 非hover模式下: 末级节点支持整个节点区域点击选中checkbox
95
92
  events.onClick = function (e) {
96
93
  handleClick(e);
97
94
  handleSelect(e);
98
95
  };
99
- hasHandleSelectRef.current = true;
100
96
  }
101
97
  return events;
102
98
  };
@@ -152,7 +148,7 @@ var CascaderNode = function CascaderNode(props) {
152
148
  className: styles.optionCheckbox,
153
149
  checked: datum.getChecked(id),
154
150
  disabled: isDisabled,
155
- onChange: hasHandleSelectRef.current ? undefined : handleChange
151
+ onChange: isRealLeafNode && multiple ? undefined : handleChange
156
152
  }), renderContent(), renderIcon()]
157
153
  })
158
154
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"result-more.d.ts","sourceRoot":"","sources":["result-more.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UA4C9B;;AA0GD,wBAAyC"}
1
+ {"version":3,"file":"result-more.d.ts","sourceRoot":"","sources":["result-more.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UA6D9B;;AAsHD,wBAAyC"}
@@ -24,25 +24,44 @@ export function getResetMore(onFilter, container, doms) {
24
24
  var hideMargin = parsePxToNumber(hideElStyle.marginLeft) + parsePxToNumber(hideElStyle.marginRight);
25
25
  var num = 0;
26
26
  var sumWidth = 0;
27
- for (var i = 0; i < doms.length; i++) {
28
- var _item2 = doms[i];
29
- var itemStyle = getComputedStyle(_item2);
30
- var itemWidth = _item2.offsetWidth + parsePxToNumber(itemStyle.marginLeft) + parsePxToNumber(itemStyle.marginRight);
31
- sumWidth += itemWidth;
32
- var moreWidth = 0;
33
- var resetNum = items.length - 1 - i;
34
- if (resetNum > 0) {
35
- var reset = "+".concat(resetNum);
36
- hideEl.childNodes[0].innerText = reset;
37
- moreWidth = hideEl.offsetWidth + hideMargin;
38
- }
39
- if (sumWidth > contentWidth - moreWidth) {
40
- num = i;
41
- break;
42
- }
27
+ var itemWidthArr = items.map(function (item) {
28
+ var itemStyle = getComputedStyle(item);
29
+ var itemLen = item.offsetWidth + parsePxToNumber(itemStyle.marginLeft) + parsePxToNumber(itemStyle.marginRight);
30
+ sumWidth += itemLen;
31
+ return itemLen;
32
+ });
33
+ if (sumWidth <= contentWidth) {
43
34
  num = -1;
35
+ } else {
36
+ var len = 0;
37
+ for (var i = 0; i < itemWidthArr.length; i++) {
38
+ var itemLen = itemWidthArr[i];
39
+ // number length
40
+ var resetNum = items.length - 1 - i;
41
+ var moreWidth = void 0;
42
+ if (resetNum <= 0) {
43
+ moreWidth = 0;
44
+ } else {
45
+ var reset = "+".concat(resetNum);
46
+ hideEl.childNodes[0].innerText = reset;
47
+ // (+num) width
48
+ moreWidth = hideEl.offsetWidth + hideMargin;
49
+ }
50
+ len += itemLen;
51
+ if (len > contentWidth - moreWidth) {
52
+ break;
53
+ }
54
+ num += 1;
55
+ if (i === items.length - 1) {
56
+ // not show more
57
+ num = -1;
58
+ }
59
+ }
60
+ }
61
+ // at least show one
62
+ if (num === 0 && itemWidthArr[0]) {
63
+ num = 1;
44
64
  }
45
- ;
46
65
  return num;
47
66
  }
48
67
  var More = function More(props) {
@@ -64,7 +83,16 @@ var More = function More(props) {
64
83
  var shouldShowMore = showNum < 0 || showNum >= data.length;
65
84
  var before = [];
66
85
  var after = [];
67
- var afterLength = 0;
86
+ var itemsLength = 0;
87
+ var tagStyle = shouldShowMore ? {
88
+ position: 'absolute',
89
+ zIndex: -100,
90
+ userSelect: 'none',
91
+ msUserSelect: 'none',
92
+ contain: 'layout',
93
+ opacity: 0,
94
+ pointerEvents: 'none'
95
+ } : {};
68
96
  if (!shouldShowMore) {
69
97
  before = new Array(showNum).fill(undefined).map(function (_item, index) {
70
98
  return data[index];
@@ -72,9 +100,9 @@ var More = function More(props) {
72
100
  after = new Array(data.length - showNum).fill(undefined).map(function (_item, index) {
73
101
  return data[showNum + index];
74
102
  });
75
- afterLength = after.length;
103
+ itemsLength = after.length;
76
104
  }
77
- if (shouldShowMore) {
105
+ if (showNum < 0 || showNum >= data.length) {
78
106
  return /*#__PURE__*/_jsxs(React.Fragment, {
79
107
  children: [data, /*#__PURE__*/_jsx(Tag, {
80
108
  className: styles.tag,
@@ -101,9 +129,10 @@ var More = function More(props) {
101
129
  className: styles.tag,
102
130
  jssStyle: jssStyle,
103
131
  size: size,
132
+ style: tagStyle,
104
133
  mode: visible ? 'fill' : 'bright',
105
134
  color: visible ? 'info' : 'default',
106
- children: shouldShowMore ? '+' : "+".concat(afterLength)
135
+ children: shouldShowMore ? '+' : "+".concat(itemsLength)
107
136
  }, 'more'), compressed !== 'hide-popover' && /*#__PURE__*/_jsx(Popover, {
108
137
  jssStyle: jssStyle,
109
138
  className: compressedClassName,
@@ -4,6 +4,7 @@ import { SelectProps } from './select.type';
4
4
  export interface ResultMoreProps<DataItem, Value> extends Pick<SelectProps<DataItem, Value>, 'jssStyle' | 'size' | 'multiple' | 'placeholder' | 'keygen' | 'value' | 'compressed' | 'compressedBound' | 'renderCompressed' | 'compressedClassName' | 'disabled' | 'onFilter'> {
5
5
  data: React.ReactNode[];
6
6
  datas?: (DataItem | UnMatchedData)[];
7
+ more?: number;
7
8
  showNum?: number;
8
9
  onRemove?: (item: DataItem | UnMatchedData, key?: KeygenResult, index?: number) => void;
9
10
  classes: {
@@ -1 +1 @@
1
- {"version":3,"file":"result-more.type.d.ts","sourceRoot":"","sources":["result-more.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,eAAe,CAAC,QAAQ,EAAE,KAAK,CAC9C,SAAQ,IAAI,CACV,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1B,UAAU,GACV,MAAM,GACN,UAAU,GACV,aAAa,GACb,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,UAAU,GACV,UAAU,CACb;IACD,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
1
+ {"version":3,"file":"result-more.type.d.ts","sourceRoot":"","sources":["result-more.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,eAAe,CAAC,QAAQ,EAAE,KAAK,CAC9C,SAAQ,IAAI,CACV,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC1B,UAAU,GACV,MAAM,GACN,UAAU,GACV,aAAa,GACb,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,UAAU,GACV,UAAU,CACb;IACD,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["result.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,QAAA,MAAM,MAAM,mGAucX,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["result.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,QAAA,MAAM,MAAM,mGAybX,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -76,11 +76,7 @@ var Result = function Result(props) {
76
76
  setShouldResetMore = _useState4[1];
77
77
  var render = useRender();
78
78
  var resultRef = useRef(null);
79
- var _useRef = useRef({
80
- prevMore: more,
81
- maxMore: 0
82
- }),
83
- context = _useRef.current;
79
+ var prevMore = useRef(more);
84
80
  var removeLock = useRef(false);
85
81
  var showInput = allowOnFilter;
86
82
  var mounted = useRef(false);
@@ -283,6 +279,7 @@ var Result = function Result(props) {
283
279
  data: result,
284
280
  datas: renderMultipleResult.datas,
285
281
  size: size,
282
+ more: moreNumber,
286
283
  compressed: compressed,
287
284
  renderCompressed: renderCompressed,
288
285
  compressedClassName: compressedClassName,
@@ -312,22 +309,13 @@ var Result = function Result(props) {
312
309
  }
313
310
  return result;
314
311
  };
315
- var handleResetMore = function handleResetMore(valueLength) {
312
+ var handleResetMore = function handleResetMore() {
316
313
  if (!compressed) return;
317
314
  if (isCompressedBound()) return;
318
315
  if (removeLock.current) {
319
316
  removeLock.current = false;
320
317
  return;
321
318
  }
322
-
323
- // 性能优化:当选项数量远超容器承载能力时,跳过昂贵的DOM计算
324
- // 在1000+选项时,重新计算会导致INP超过1000ms
325
- var hasExistingCompression = context.prevMore > 0;
326
- var hasValidEstimate = context.maxMore > 0;
327
- var exceedsCapacity = valueLength && valueLength > context.maxMore;
328
- if (hasExistingCompression && hasValidEstimate && exceedsCapacity) {
329
- return; // 跳过重新计算,保持现有的压缩状态
330
- }
331
319
  setMore(-1);
332
320
  setShouldResetMore(true);
333
321
  };
@@ -384,7 +372,7 @@ var Result = function Result(props) {
384
372
  }
385
373
  }, [focus, multiple]);
386
374
  useLayoutEffect(function () {
387
- handleResetMore((valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) || 0);
375
+ handleResetMore();
388
376
  }, [valueProp, data]);
389
377
  useEffect(function () {
390
378
  // datum.getDataByValues(value); 需要等待 useTree useEffect 执行完毕 才能获取到
@@ -395,7 +383,7 @@ var Result = function Result(props) {
395
383
  var tagClassName = ".".concat(styles.tag.split(' ')[0]);
396
384
  if (shouldResetMore && isArray(value) && (value || []).length) {
397
385
  var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
398
- context.prevMore = newMore;
386
+ prevMore.current = newMore;
399
387
  setMore(newMore);
400
388
  setShouldResetMore(false);
401
389
  } else {
@@ -409,7 +397,6 @@ var Result = function Result(props) {
409
397
  if (!resultRef.current) return;
410
398
  if (!compressed) return;
411
399
  if (isCompressedBound()) return;
412
- context.maxMore = Math.floor(resultRef.current.clientWidth / 20);
413
400
  var cancelObserver = addResizeObserver(resultRef.current, handleResetMore, {
414
401
  direction: 'x'
415
402
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tree-virtual-node.d.ts","sourceRoot":"","sources":["tree-virtual-node.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvE,QAAA,MAAM,WAAW,mIAwJhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"tree-virtual-node.d.ts","sourceRoot":"","sources":["tree-virtual-node.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvE,QAAA,MAAM,WAAW,mIA2IhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -77,19 +77,7 @@ var VirtualNode = function VirtualNode(props) {
77
77
  });
78
78
  if (onToggle) onToggle(id, nextExpanded);
79
79
  };
80
- var getIndent = function getIndent() {
81
- if (size === "large") {
82
- if (line && level === 1) {
83
- return 16;
84
- }
85
- return 32;
86
- }
87
- if (line && level === 1) {
88
- return 8;
89
- }
90
- return 24;
91
- };
92
- var indent = getIndent();
80
+ var indent = size === "large" ? 32 : 24;
93
81
  var $indents;
94
82
  if (line) {
95
83
  $indents = Array.from({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/base",
3
- "version": "3.7.5-beta.10",
3
+ "version": "3.7.5-beta.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -10,7 +10,7 @@
10
10
  "module": "./esm/index.js",
11
11
  "typings": "./cjs/index.d.ts",
12
12
  "dependencies": {
13
- "@sheinx/hooks": "3.7.5-beta.10",
13
+ "@sheinx/hooks": "3.7.5-beta.2",
14
14
  "immer": "^10.0.0",
15
15
  "classnames": "^2.0.0",
16
16
  "@shined/reactive": "^0.1.3-alpha.0"