@sheinx/base 3.7.5-beta.7 → 3.7.5-beta.9
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/cjs/cascader/node.d.ts.map +1 -1
- package/cjs/cascader/node.js +7 -3
- package/cjs/select/result-more.d.ts.map +1 -1
- package/cjs/select/result-more.js +21 -50
- package/cjs/select/result-more.type.d.ts +0 -1
- package/cjs/select/result-more.type.d.ts.map +1 -1
- package/cjs/select/result.d.ts.map +1 -1
- package/cjs/select/result.js +18 -5
- package/cjs/tree/tree-virtual-node.d.ts.map +1 -1
- package/cjs/tree/tree-virtual-node.js +13 -1
- package/esm/cascader/node.d.ts.map +1 -1
- package/esm/cascader/node.js +7 -3
- package/esm/select/result-more.d.ts.map +1 -1
- package/esm/select/result-more.js +21 -50
- package/esm/select/result-more.type.d.ts +0 -1
- package/esm/select/result-more.type.d.ts.map +1 -1
- package/esm/select/result.d.ts.map +1 -1
- package/esm/select/result.js +18 -5
- package/esm/tree/tree-virtual-node.d.ts.map +1 -1
- package/esm/tree/tree-virtual-node.js +13 -1
- package/package.json +2 -2
|
@@ -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,
|
|
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"}
|
package/cjs/cascader/node.js
CHANGED
|
@@ -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);
|
|
54
53
|
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,13 +92,17 @@ var CascaderNode = function CascaderNode(props) {
|
|
|
92
92
|
}
|
|
93
93
|
if (isHoverAble) {
|
|
94
94
|
events.onMouseEnter = handlePathChange;
|
|
95
|
-
if (multiple)
|
|
95
|
+
if (multiple) {
|
|
96
|
+
events.onClick = handleSelect;
|
|
97
|
+
hasHandleSelectRef.current = true;
|
|
98
|
+
}
|
|
96
99
|
} else if (isRealLeafNode && multiple) {
|
|
97
100
|
// 非hover模式下: 末级节点支持整个节点区域点击选中checkbox
|
|
98
101
|
events.onClick = function (e) {
|
|
99
102
|
handleClick(e);
|
|
100
103
|
handleSelect(e);
|
|
101
104
|
};
|
|
105
|
+
hasHandleSelectRef.current = true;
|
|
102
106
|
}
|
|
103
107
|
return events;
|
|
104
108
|
};
|
|
@@ -154,7 +158,7 @@ var CascaderNode = function CascaderNode(props) {
|
|
|
154
158
|
className: styles.optionCheckbox,
|
|
155
159
|
checked: datum.getChecked(id),
|
|
156
160
|
disabled: isDisabled,
|
|
157
|
-
onChange:
|
|
161
|
+
onChange: hasHandleSelectRef.current ? undefined : handleChange
|
|
158
162
|
}), renderContent(), renderIcon()]
|
|
159
163
|
})
|
|
160
164
|
}));
|
|
@@ -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,
|
|
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"}
|
|
@@ -34,44 +34,25 @@ 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
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
}
|
|
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;
|
|
69
48
|
}
|
|
49
|
+
if (sumWidth > contentWidth - moreWidth) {
|
|
50
|
+
num = i;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
num = -1;
|
|
70
54
|
}
|
|
71
|
-
|
|
72
|
-
if (num === 0 && itemWidthArr[0]) {
|
|
73
|
-
num = 1;
|
|
74
|
-
}
|
|
55
|
+
;
|
|
75
56
|
return num;
|
|
76
57
|
}
|
|
77
58
|
var More = function More(props) {
|
|
@@ -93,16 +74,7 @@ var More = function More(props) {
|
|
|
93
74
|
var shouldShowMore = showNum < 0 || showNum >= data.length;
|
|
94
75
|
var before = [];
|
|
95
76
|
var after = [];
|
|
96
|
-
var
|
|
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
|
-
} : {};
|
|
77
|
+
var afterLength = 0;
|
|
106
78
|
if (!shouldShowMore) {
|
|
107
79
|
before = new Array(showNum).fill(undefined).map(function (_item, index) {
|
|
108
80
|
return data[index];
|
|
@@ -110,9 +82,9 @@ var More = function More(props) {
|
|
|
110
82
|
after = new Array(data.length - showNum).fill(undefined).map(function (_item, index) {
|
|
111
83
|
return data[showNum + index];
|
|
112
84
|
});
|
|
113
|
-
|
|
85
|
+
afterLength = after.length;
|
|
114
86
|
}
|
|
115
|
-
if (
|
|
87
|
+
if (shouldShowMore) {
|
|
116
88
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
|
|
117
89
|
children: [data, /*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, {
|
|
118
90
|
className: styles.tag,
|
|
@@ -139,10 +111,9 @@ var More = function More(props) {
|
|
|
139
111
|
className: styles.tag,
|
|
140
112
|
jssStyle: jssStyle,
|
|
141
113
|
size: size,
|
|
142
|
-
style: tagStyle,
|
|
143
114
|
mode: visible ? 'fill' : 'bright',
|
|
144
115
|
color: visible ? 'info' : 'default',
|
|
145
|
-
children: shouldShowMore ? '+' : "+".concat(
|
|
116
|
+
children: shouldShowMore ? '+' : "+".concat(afterLength)
|
|
146
117
|
}, 'more'), compressed !== 'hide-popover' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_popover.default, {
|
|
147
118
|
jssStyle: jssStyle,
|
|
148
119
|
className: compressedClassName,
|
|
@@ -4,7 +4,6 @@ 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;
|
|
8
7
|
showNum?: number;
|
|
9
8
|
onRemove?: (item: DataItem | UnMatchedData, key?: KeygenResult, index?: number) => void;
|
|
10
9
|
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,
|
|
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 +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,
|
|
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"}
|
package/cjs/select/result.js
CHANGED
|
@@ -84,7 +84,11 @@ 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
|
|
87
|
+
var _useRef = (0, _react.useRef)({
|
|
88
|
+
prevMore: more,
|
|
89
|
+
maxMore: 0
|
|
90
|
+
}),
|
|
91
|
+
context = _useRef.current;
|
|
88
92
|
var removeLock = (0, _react.useRef)(false);
|
|
89
93
|
var showInput = allowOnFilter;
|
|
90
94
|
var mounted = (0, _react.useRef)(false);
|
|
@@ -287,7 +291,6 @@ var Result = function Result(props) {
|
|
|
287
291
|
data: result,
|
|
288
292
|
datas: renderMultipleResult.datas,
|
|
289
293
|
size: size,
|
|
290
|
-
more: moreNumber,
|
|
291
294
|
compressed: compressed,
|
|
292
295
|
renderCompressed: renderCompressed,
|
|
293
296
|
compressedClassName: compressedClassName,
|
|
@@ -317,13 +320,22 @@ var Result = function Result(props) {
|
|
|
317
320
|
}
|
|
318
321
|
return result;
|
|
319
322
|
};
|
|
320
|
-
var handleResetMore = function handleResetMore() {
|
|
323
|
+
var handleResetMore = function handleResetMore(valueLength) {
|
|
321
324
|
if (!compressed) return;
|
|
322
325
|
if (isCompressedBound()) return;
|
|
323
326
|
if (removeLock.current) {
|
|
324
327
|
removeLock.current = false;
|
|
325
328
|
return;
|
|
326
329
|
}
|
|
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
|
+
}
|
|
327
339
|
setMore(-1);
|
|
328
340
|
setShouldResetMore(true);
|
|
329
341
|
};
|
|
@@ -380,7 +392,7 @@ var Result = function Result(props) {
|
|
|
380
392
|
}
|
|
381
393
|
}, [focus, multiple]);
|
|
382
394
|
(0, _react.useLayoutEffect)(function () {
|
|
383
|
-
handleResetMore();
|
|
395
|
+
handleResetMore((valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) || 0);
|
|
384
396
|
}, [valueProp, data]);
|
|
385
397
|
(0, _react.useEffect)(function () {
|
|
386
398
|
// datum.getDataByValues(value); 需要等待 useTree useEffect 执行完毕 才能获取到
|
|
@@ -391,7 +403,7 @@ var Result = function Result(props) {
|
|
|
391
403
|
var tagClassName = ".".concat(styles.tag.split(' ')[0]);
|
|
392
404
|
if (shouldResetMore && isArray(value) && (value || []).length) {
|
|
393
405
|
var newMore = (0, _resultMore.getResetMore)(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
|
|
394
|
-
prevMore
|
|
406
|
+
context.prevMore = newMore;
|
|
395
407
|
setMore(newMore);
|
|
396
408
|
setShouldResetMore(false);
|
|
397
409
|
} else {
|
|
@@ -405,6 +417,7 @@ var Result = function Result(props) {
|
|
|
405
417
|
if (!resultRef.current) return;
|
|
406
418
|
if (!compressed) return;
|
|
407
419
|
if (isCompressedBound()) return;
|
|
420
|
+
context.maxMore = Math.floor(resultRef.current.clientWidth / 20);
|
|
408
421
|
var cancelObserver = (0, _hooks.addResizeObserver)(resultRef.current, handleResetMore, {
|
|
409
422
|
direction: 'x'
|
|
410
423
|
});
|
|
@@ -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,
|
|
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"}
|
|
@@ -83,7 +83,19 @@ var VirtualNode = function VirtualNode(props) {
|
|
|
83
83
|
});
|
|
84
84
|
if (onToggle) onToggle(id, nextExpanded);
|
|
85
85
|
};
|
|
86
|
-
var
|
|
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();
|
|
87
99
|
var $indents;
|
|
88
100
|
if (line) {
|
|
89
101
|
$indents = Array.from({
|
|
@@ -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,
|
|
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"}
|
package/esm/cascader/node.js
CHANGED
|
@@ -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);
|
|
48
47
|
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,13 +86,17 @@ var CascaderNode = function CascaderNode(props) {
|
|
|
86
86
|
}
|
|
87
87
|
if (isHoverAble) {
|
|
88
88
|
events.onMouseEnter = handlePathChange;
|
|
89
|
-
if (multiple)
|
|
89
|
+
if (multiple) {
|
|
90
|
+
events.onClick = handleSelect;
|
|
91
|
+
hasHandleSelectRef.current = true;
|
|
92
|
+
}
|
|
90
93
|
} else if (isRealLeafNode && multiple) {
|
|
91
94
|
// 非hover模式下: 末级节点支持整个节点区域点击选中checkbox
|
|
92
95
|
events.onClick = function (e) {
|
|
93
96
|
handleClick(e);
|
|
94
97
|
handleSelect(e);
|
|
95
98
|
};
|
|
99
|
+
hasHandleSelectRef.current = true;
|
|
96
100
|
}
|
|
97
101
|
return events;
|
|
98
102
|
};
|
|
@@ -148,7 +152,7 @@ var CascaderNode = function CascaderNode(props) {
|
|
|
148
152
|
className: styles.optionCheckbox,
|
|
149
153
|
checked: datum.getChecked(id),
|
|
150
154
|
disabled: isDisabled,
|
|
151
|
-
onChange:
|
|
155
|
+
onChange: hasHandleSelectRef.current ? undefined : handleChange
|
|
152
156
|
}), renderContent(), renderIcon()]
|
|
153
157
|
})
|
|
154
158
|
}));
|
|
@@ -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,
|
|
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"}
|
|
@@ -24,44 +24,25 @@ 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
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
}
|
|
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;
|
|
59
38
|
}
|
|
39
|
+
if (sumWidth > contentWidth - moreWidth) {
|
|
40
|
+
num = i;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
num = -1;
|
|
60
44
|
}
|
|
61
|
-
|
|
62
|
-
if (num === 0 && itemWidthArr[0]) {
|
|
63
|
-
num = 1;
|
|
64
|
-
}
|
|
45
|
+
;
|
|
65
46
|
return num;
|
|
66
47
|
}
|
|
67
48
|
var More = function More(props) {
|
|
@@ -83,16 +64,7 @@ var More = function More(props) {
|
|
|
83
64
|
var shouldShowMore = showNum < 0 || showNum >= data.length;
|
|
84
65
|
var before = [];
|
|
85
66
|
var after = [];
|
|
86
|
-
var
|
|
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
|
-
} : {};
|
|
67
|
+
var afterLength = 0;
|
|
96
68
|
if (!shouldShowMore) {
|
|
97
69
|
before = new Array(showNum).fill(undefined).map(function (_item, index) {
|
|
98
70
|
return data[index];
|
|
@@ -100,9 +72,9 @@ var More = function More(props) {
|
|
|
100
72
|
after = new Array(data.length - showNum).fill(undefined).map(function (_item, index) {
|
|
101
73
|
return data[showNum + index];
|
|
102
74
|
});
|
|
103
|
-
|
|
75
|
+
afterLength = after.length;
|
|
104
76
|
}
|
|
105
|
-
if (
|
|
77
|
+
if (shouldShowMore) {
|
|
106
78
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
107
79
|
children: [data, /*#__PURE__*/_jsx(Tag, {
|
|
108
80
|
className: styles.tag,
|
|
@@ -129,10 +101,9 @@ var More = function More(props) {
|
|
|
129
101
|
className: styles.tag,
|
|
130
102
|
jssStyle: jssStyle,
|
|
131
103
|
size: size,
|
|
132
|
-
style: tagStyle,
|
|
133
104
|
mode: visible ? 'fill' : 'bright',
|
|
134
105
|
color: visible ? 'info' : 'default',
|
|
135
|
-
children: shouldShowMore ? '+' : "+".concat(
|
|
106
|
+
children: shouldShowMore ? '+' : "+".concat(afterLength)
|
|
136
107
|
}, 'more'), compressed !== 'hide-popover' && /*#__PURE__*/_jsx(Popover, {
|
|
137
108
|
jssStyle: jssStyle,
|
|
138
109
|
className: compressedClassName,
|
|
@@ -4,7 +4,6 @@ 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;
|
|
8
7
|
showNum?: number;
|
|
9
8
|
onRemove?: (item: DataItem | UnMatchedData, key?: KeygenResult, index?: number) => void;
|
|
10
9
|
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,
|
|
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 +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,
|
|
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"}
|
package/esm/select/result.js
CHANGED
|
@@ -76,7 +76,11 @@ var Result = function Result(props) {
|
|
|
76
76
|
setShouldResetMore = _useState4[1];
|
|
77
77
|
var render = useRender();
|
|
78
78
|
var resultRef = useRef(null);
|
|
79
|
-
var
|
|
79
|
+
var _useRef = useRef({
|
|
80
|
+
prevMore: more,
|
|
81
|
+
maxMore: 0
|
|
82
|
+
}),
|
|
83
|
+
context = _useRef.current;
|
|
80
84
|
var removeLock = useRef(false);
|
|
81
85
|
var showInput = allowOnFilter;
|
|
82
86
|
var mounted = useRef(false);
|
|
@@ -279,7 +283,6 @@ var Result = function Result(props) {
|
|
|
279
283
|
data: result,
|
|
280
284
|
datas: renderMultipleResult.datas,
|
|
281
285
|
size: size,
|
|
282
|
-
more: moreNumber,
|
|
283
286
|
compressed: compressed,
|
|
284
287
|
renderCompressed: renderCompressed,
|
|
285
288
|
compressedClassName: compressedClassName,
|
|
@@ -309,13 +312,22 @@ var Result = function Result(props) {
|
|
|
309
312
|
}
|
|
310
313
|
return result;
|
|
311
314
|
};
|
|
312
|
-
var handleResetMore = function handleResetMore() {
|
|
315
|
+
var handleResetMore = function handleResetMore(valueLength) {
|
|
313
316
|
if (!compressed) return;
|
|
314
317
|
if (isCompressedBound()) return;
|
|
315
318
|
if (removeLock.current) {
|
|
316
319
|
removeLock.current = false;
|
|
317
320
|
return;
|
|
318
321
|
}
|
|
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
|
+
}
|
|
319
331
|
setMore(-1);
|
|
320
332
|
setShouldResetMore(true);
|
|
321
333
|
};
|
|
@@ -372,7 +384,7 @@ var Result = function Result(props) {
|
|
|
372
384
|
}
|
|
373
385
|
}, [focus, multiple]);
|
|
374
386
|
useLayoutEffect(function () {
|
|
375
|
-
handleResetMore();
|
|
387
|
+
handleResetMore((valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) || 0);
|
|
376
388
|
}, [valueProp, data]);
|
|
377
389
|
useEffect(function () {
|
|
378
390
|
// datum.getDataByValues(value); 需要等待 useTree useEffect 执行完毕 才能获取到
|
|
@@ -383,7 +395,7 @@ var Result = function Result(props) {
|
|
|
383
395
|
var tagClassName = ".".concat(styles.tag.split(' ')[0]);
|
|
384
396
|
if (shouldResetMore && isArray(value) && (value || []).length) {
|
|
385
397
|
var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
|
|
386
|
-
prevMore
|
|
398
|
+
context.prevMore = newMore;
|
|
387
399
|
setMore(newMore);
|
|
388
400
|
setShouldResetMore(false);
|
|
389
401
|
} else {
|
|
@@ -397,6 +409,7 @@ var Result = function Result(props) {
|
|
|
397
409
|
if (!resultRef.current) return;
|
|
398
410
|
if (!compressed) return;
|
|
399
411
|
if (isCompressedBound()) return;
|
|
412
|
+
context.maxMore = Math.floor(resultRef.current.clientWidth / 20);
|
|
400
413
|
var cancelObserver = addResizeObserver(resultRef.current, handleResetMore, {
|
|
401
414
|
direction: 'x'
|
|
402
415
|
});
|
|
@@ -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,
|
|
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"}
|
|
@@ -77,7 +77,19 @@ var VirtualNode = function VirtualNode(props) {
|
|
|
77
77
|
});
|
|
78
78
|
if (onToggle) onToggle(id, nextExpanded);
|
|
79
79
|
};
|
|
80
|
-
var
|
|
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();
|
|
81
93
|
var $indents;
|
|
82
94
|
if (line) {
|
|
83
95
|
$indents = Array.from({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sheinx/base",
|
|
3
|
-
"version": "3.7.5-beta.
|
|
3
|
+
"version": "3.7.5-beta.9",
|
|
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.
|
|
13
|
+
"@sheinx/hooks": "3.7.5-beta.9",
|
|
14
14
|
"immer": "^10.0.0",
|
|
15
15
|
"classnames": "^2.0.0",
|
|
16
16
|
"@shined/reactive": "^0.1.3-alpha.0"
|