@sheinx/base 3.4.0-beta.1 → 3.4.0-beta.11
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/absolute-list/absolute-list.d.ts.map +1 -1
- package/cjs/absolute-list/absolute-list.js +25 -14
- package/cjs/absolute-list/absolute-list.type.d.ts +4 -0
- package/cjs/absolute-list/absolute-list.type.d.ts.map +1 -1
- package/cjs/animation-list/animation-list.d.ts.map +1 -1
- package/cjs/animation-list/animation-list.js +4 -2
- package/cjs/animation-list/animation-list.type.d.ts +1 -0
- package/cjs/animation-list/animation-list.type.d.ts.map +1 -1
- package/cjs/badge/badge.d.ts +5 -0
- package/cjs/badge/badge.d.ts.map +1 -0
- package/cjs/badge/badge.js +100 -0
- package/cjs/badge/badge.type.d.ts +81 -0
- package/cjs/badge/badge.type.d.ts.map +1 -0
- package/cjs/badge/badge.type.js +5 -0
- package/cjs/badge/index.d.ts +3 -0
- package/cjs/badge/index.d.ts.map +1 -0
- package/cjs/badge/index.js +20 -0
- package/cjs/cascader/cascader.js +2 -2
- package/cjs/cascader/cascader.type.d.ts +3 -2
- package/cjs/cascader/cascader.type.d.ts.map +1 -1
- package/cjs/checkbox/checkbox-group.d.ts.map +1 -1
- package/cjs/checkbox/checkbox-group.js +4 -0
- package/cjs/checkbox/simple-checkbox.js +1 -0
- package/cjs/date-picker/confirm.d.ts +5 -0
- package/cjs/date-picker/confirm.d.ts.map +1 -0
- package/cjs/date-picker/confirm.js +31 -0
- package/cjs/date-picker/confirm.type.d.ts +5 -0
- package/cjs/date-picker/confirm.type.d.ts.map +1 -0
- package/cjs/date-picker/confirm.type.js +5 -0
- package/cjs/date-picker/date-picker.d.ts.map +1 -1
- package/cjs/date-picker/date-picker.js +47 -7
- package/cjs/date-picker/date-picker.type.d.ts +23 -2
- package/cjs/date-picker/date-picker.type.d.ts.map +1 -1
- package/cjs/date-picker/day.d.ts.map +1 -1
- package/cjs/date-picker/day.js +37 -13
- package/cjs/date-picker/month.d.ts.map +1 -1
- package/cjs/date-picker/month.js +5 -1
- package/cjs/date-picker/picker.d.ts.map +1 -1
- package/cjs/date-picker/picker.js +27 -4
- package/cjs/date-picker/picker.type.d.ts +6 -2
- package/cjs/date-picker/picker.type.d.ts.map +1 -1
- package/cjs/date-picker/quarter.d.ts.map +1 -1
- package/cjs/date-picker/quarter.js +5 -1
- package/cjs/date-picker/quick.d.ts.map +1 -1
- package/cjs/date-picker/quick.js +23 -5
- package/cjs/date-picker/quick.type.d.ts +1 -0
- package/cjs/date-picker/quick.type.d.ts.map +1 -1
- package/cjs/date-picker/result.d.ts +6 -0
- package/cjs/date-picker/result.d.ts.map +1 -1
- package/cjs/date-picker/result.js +14 -1
- package/cjs/date-picker/time.d.ts.map +1 -1
- package/cjs/date-picker/time.js +14 -6
- package/cjs/date-picker/year.d.ts.map +1 -1
- package/cjs/date-picker/year.js +5 -1
- package/cjs/dropdown/Item.d.ts.map +1 -1
- package/cjs/dropdown/Item.js +7 -2
- package/cjs/dropdown/dropdown.type.d.ts +6 -0
- package/cjs/dropdown/dropdown.type.d.ts.map +1 -1
- package/cjs/dropdown/dropdownIn.d.ts.map +1 -1
- package/cjs/dropdown/dropdownIn.js +3 -1
- package/cjs/form/form-footer-context.d.ts.map +1 -1
- package/cjs/form/form-footer-context.js +6 -2
- package/cjs/form/form.d.ts.map +1 -1
- package/cjs/form/form.js +3 -1
- package/cjs/icons/config.d.ts +3 -0
- package/cjs/icons/config.d.ts.map +1 -1
- package/cjs/icons/config.js +3 -0
- package/cjs/icons/icons.d.ts +1 -0
- package/cjs/icons/icons.d.ts.map +1 -1
- package/cjs/icons/icons.js +3 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +24 -0
- package/cjs/link/index.d.ts +3 -0
- package/cjs/link/index.d.ts.map +1 -0
- package/cjs/link/index.js +20 -0
- package/cjs/link/link.d.ts +5 -0
- package/cjs/link/link.d.ts.map +1 -0
- package/cjs/link/link.js +52 -0
- package/cjs/link/link.type.d.ts +50 -0
- package/cjs/link/link.type.d.ts.map +1 -0
- package/cjs/link/link.type.js +5 -0
- package/cjs/popover/popover.d.ts.map +1 -1
- package/cjs/popover/popover.js +4 -0
- package/cjs/select/list-columns.js +1 -1
- package/cjs/select/list-option.d.ts.map +1 -1
- package/cjs/select/list-option.js +27 -3
- package/cjs/select/list-option.type.d.ts +3 -0
- package/cjs/select/list-option.type.d.ts.map +1 -1
- package/cjs/select/list.d.ts.map +1 -1
- package/cjs/select/list.js +11 -18
- package/cjs/select/result-input.d.ts.map +1 -1
- package/cjs/select/result-input.js +9 -2
- package/cjs/select/result-input.type.d.ts +1 -0
- package/cjs/select/result-input.type.d.ts.map +1 -1
- package/cjs/select/result-more.d.ts +2 -2
- package/cjs/select/result-more.d.ts.map +1 -1
- package/cjs/select/result-more.js +2 -2
- package/cjs/select/result-more.type.d.ts +1 -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 +7 -9
- package/cjs/select/result.type.d.ts +1 -0
- package/cjs/select/result.type.d.ts.map +1 -1
- package/cjs/select/select.d.ts.map +1 -1
- package/cjs/select/select.js +24 -3
- package/cjs/select/select.type.d.ts +14 -8
- package/cjs/select/select.type.d.ts.map +1 -1
- package/cjs/table/table.d.ts.map +1 -1
- package/cjs/table/table.js +13 -5
- package/cjs/table/table.type.d.ts +7 -5
- package/cjs/table/table.type.d.ts.map +1 -1
- package/cjs/table/tbody.d.ts.map +1 -1
- package/cjs/table/tbody.js +1 -0
- package/cjs/table/tr.d.ts +1 -0
- package/cjs/table/tr.d.ts.map +1 -1
- package/cjs/table/tr.js +21 -8
- package/cjs/tabs/tab.d.ts.map +1 -1
- package/cjs/tabs/tab.js +27 -16
- package/cjs/tabs/tabs-header.d.ts.map +1 -1
- package/cjs/tabs/tabs-header.js +27 -6
- package/cjs/tabs/tabs.d.ts.map +1 -1
- package/cjs/tabs/tabs.js +18 -14
- package/cjs/tabs/tabs.type.d.ts +1 -0
- package/cjs/tabs/tabs.type.d.ts.map +1 -1
- package/cjs/tag/tag.js +2 -2
- package/cjs/tag/use-tag.js +2 -2
- package/cjs/tooltip/tooltip.d.ts.map +1 -1
- package/cjs/tooltip/tooltip.js +18 -6
- package/cjs/tooltip/tooltip.type.d.ts +4 -0
- package/cjs/tooltip/tooltip.type.d.ts.map +1 -1
- package/cjs/transfer/transfer-list-item.d.ts.map +1 -1
- package/cjs/transfer/transfer-list.type.d.ts +1 -1
- package/cjs/transfer/transfer-list.type.d.ts.map +1 -1
- package/cjs/transfer/transfer.d.ts.map +1 -1
- package/cjs/transfer/transfer.js +2 -1
- package/cjs/transfer/transfer.type.d.ts +7 -1
- package/cjs/transfer/transfer.type.d.ts.map +1 -1
- package/cjs/tree/tree.d.ts.map +1 -1
- package/cjs/tree/tree.js +24 -8
- package/cjs/tree/tree.type.d.ts +5 -0
- package/cjs/tree/tree.type.d.ts.map +1 -1
- package/cjs/tree-select/tree-select.type.d.ts +3 -2
- package/cjs/tree-select/tree-select.type.d.ts.map +1 -1
- package/cjs/virtual-scroll/scroll.d.ts.map +1 -1
- package/cjs/virtual-scroll/scroll.js +11 -1
- package/cjs/virtual-scroll/virtual-scroll-list.d.ts.map +1 -1
- package/cjs/virtual-scroll/virtual-scroll-list.js +148 -21
- package/cjs/virtual-scroll/virtual-scroll-list.type.d.ts +2 -0
- package/cjs/virtual-scroll/virtual-scroll-list.type.d.ts.map +1 -1
- package/esm/absolute-list/absolute-list.d.ts.map +1 -1
- package/esm/absolute-list/absolute-list.js +25 -14
- package/esm/absolute-list/absolute-list.type.d.ts +4 -0
- package/esm/absolute-list/absolute-list.type.d.ts.map +1 -1
- package/esm/animation-list/animation-list.d.ts.map +1 -1
- package/esm/animation-list/animation-list.js +4 -2
- package/esm/animation-list/animation-list.type.d.ts +1 -0
- package/esm/animation-list/animation-list.type.d.ts.map +1 -1
- package/esm/badge/badge.d.ts +5 -0
- package/esm/badge/badge.d.ts.map +1 -0
- package/esm/badge/badge.js +95 -0
- package/esm/badge/badge.type.d.ts +81 -0
- package/esm/badge/badge.type.d.ts.map +1 -0
- package/esm/badge/badge.type.js +1 -0
- package/esm/badge/index.d.ts +3 -0
- package/esm/badge/index.d.ts.map +1 -0
- package/esm/badge/index.js +2 -0
- package/esm/cascader/cascader.js +2 -2
- package/esm/cascader/cascader.type.d.ts +3 -2
- package/esm/cascader/cascader.type.d.ts.map +1 -1
- package/esm/checkbox/checkbox-group.d.ts.map +1 -1
- package/esm/checkbox/checkbox-group.js +6 -2
- package/esm/checkbox/simple-checkbox.js +1 -0
- package/esm/date-picker/confirm.d.ts +5 -0
- package/esm/date-picker/confirm.d.ts.map +1 -0
- package/esm/date-picker/confirm.js +24 -0
- package/esm/date-picker/confirm.type.d.ts +5 -0
- package/esm/date-picker/confirm.type.d.ts.map +1 -0
- package/esm/date-picker/confirm.type.js +1 -0
- package/esm/date-picker/date-picker.d.ts.map +1 -1
- package/esm/date-picker/date-picker.js +48 -8
- package/esm/date-picker/date-picker.type.d.ts +23 -2
- package/esm/date-picker/date-picker.type.d.ts.map +1 -1
- package/esm/date-picker/day.d.ts.map +1 -1
- package/esm/date-picker/day.js +37 -13
- package/esm/date-picker/month.d.ts.map +1 -1
- package/esm/date-picker/month.js +5 -1
- package/esm/date-picker/picker.d.ts.map +1 -1
- package/esm/date-picker/picker.js +27 -4
- package/esm/date-picker/picker.type.d.ts +6 -2
- package/esm/date-picker/picker.type.d.ts.map +1 -1
- package/esm/date-picker/quarter.d.ts.map +1 -1
- package/esm/date-picker/quarter.js +5 -1
- package/esm/date-picker/quick.d.ts.map +1 -1
- package/esm/date-picker/quick.js +20 -5
- package/esm/date-picker/quick.type.d.ts +1 -0
- package/esm/date-picker/quick.type.d.ts.map +1 -1
- package/esm/date-picker/result.d.ts +6 -0
- package/esm/date-picker/result.d.ts.map +1 -1
- package/esm/date-picker/result.js +14 -1
- package/esm/date-picker/time.d.ts.map +1 -1
- package/esm/date-picker/time.js +14 -6
- package/esm/date-picker/year.d.ts.map +1 -1
- package/esm/date-picker/year.js +5 -1
- package/esm/dropdown/Item.d.ts.map +1 -1
- package/esm/dropdown/Item.js +7 -2
- package/esm/dropdown/dropdown.type.d.ts +6 -0
- package/esm/dropdown/dropdown.type.d.ts.map +1 -1
- package/esm/dropdown/dropdownIn.d.ts.map +1 -1
- package/esm/dropdown/dropdownIn.js +3 -1
- package/esm/form/form-footer-context.d.ts.map +1 -1
- package/esm/form/form-footer-context.js +6 -2
- package/esm/form/form.d.ts.map +1 -1
- package/esm/form/form.js +3 -1
- package/esm/icons/config.d.ts +3 -0
- package/esm/icons/config.d.ts.map +1 -1
- package/esm/icons/config.js +3 -0
- package/esm/icons/icons.d.ts +1 -0
- package/esm/icons/icons.d.ts.map +1 -1
- package/esm/icons/icons.js +3 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/link/index.d.ts +3 -0
- package/esm/link/index.d.ts.map +1 -0
- package/esm/link/index.js +2 -0
- package/esm/link/link.d.ts +5 -0
- package/esm/link/link.d.ts.map +1 -0
- package/esm/link/link.js +47 -0
- package/esm/link/link.type.d.ts +50 -0
- package/esm/link/link.type.d.ts.map +1 -0
- package/esm/link/link.type.js +1 -0
- package/esm/popover/popover.d.ts.map +1 -1
- package/esm/popover/popover.js +4 -0
- package/esm/select/list-columns.js +1 -1
- package/esm/select/list-option.d.ts.map +1 -1
- package/esm/select/list-option.js +27 -3
- package/esm/select/list-option.type.d.ts +3 -0
- package/esm/select/list-option.type.d.ts.map +1 -1
- package/esm/select/list.d.ts.map +1 -1
- package/esm/select/list.js +11 -19
- package/esm/select/result-input.d.ts.map +1 -1
- package/esm/select/result-input.js +9 -2
- package/esm/select/result-input.type.d.ts +1 -0
- package/esm/select/result-input.type.d.ts.map +1 -1
- package/esm/select/result-more.d.ts +2 -2
- package/esm/select/result-more.d.ts.map +1 -1
- package/esm/select/result-more.js +2 -2
- package/esm/select/result-more.type.d.ts +1 -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 +9 -11
- package/esm/select/result.type.d.ts +1 -0
- package/esm/select/result.type.d.ts.map +1 -1
- package/esm/select/select.d.ts.map +1 -1
- package/esm/select/select.js +24 -3
- package/esm/select/select.type.d.ts +14 -8
- package/esm/select/select.type.d.ts.map +1 -1
- package/esm/table/table.d.ts.map +1 -1
- package/esm/table/table.js +14 -6
- package/esm/table/table.type.d.ts +7 -5
- package/esm/table/table.type.d.ts.map +1 -1
- package/esm/table/tbody.d.ts.map +1 -1
- package/esm/table/tbody.js +1 -0
- package/esm/table/tr.d.ts +1 -0
- package/esm/table/tr.d.ts.map +1 -1
- package/esm/table/tr.js +22 -8
- package/esm/tabs/tab.d.ts.map +1 -1
- package/esm/tabs/tab.js +28 -16
- package/esm/tabs/tabs-header.d.ts.map +1 -1
- package/esm/tabs/tabs-header.js +27 -6
- package/esm/tabs/tabs.d.ts.map +1 -1
- package/esm/tabs/tabs.js +18 -14
- package/esm/tabs/tabs.type.d.ts +1 -0
- package/esm/tabs/tabs.type.d.ts.map +1 -1
- package/esm/tag/tag.js +2 -2
- package/esm/tag/use-tag.js +2 -2
- package/esm/tooltip/tooltip.d.ts.map +1 -1
- package/esm/tooltip/tooltip.js +20 -8
- package/esm/tooltip/tooltip.type.d.ts +4 -0
- package/esm/tooltip/tooltip.type.d.ts.map +1 -1
- package/esm/transfer/transfer-list-item.d.ts.map +1 -1
- package/esm/transfer/transfer-list.type.d.ts +1 -1
- package/esm/transfer/transfer-list.type.d.ts.map +1 -1
- package/esm/transfer/transfer.d.ts.map +1 -1
- package/esm/transfer/transfer.js +2 -1
- package/esm/transfer/transfer.type.d.ts +7 -1
- package/esm/transfer/transfer.type.d.ts.map +1 -1
- package/esm/tree/tree.d.ts.map +1 -1
- package/esm/tree/tree.js +25 -9
- package/esm/tree/tree.type.d.ts +5 -0
- package/esm/tree/tree.type.d.ts.map +1 -1
- package/esm/tree-select/tree-select.type.d.ts +3 -2
- package/esm/tree-select/tree-select.type.d.ts.map +1 -1
- package/esm/virtual-scroll/scroll.d.ts.map +1 -1
- package/esm/virtual-scroll/scroll.js +12 -2
- package/esm/virtual-scroll/virtual-scroll-list.d.ts.map +1 -1
- package/esm/virtual-scroll/virtual-scroll-list.js +149 -22
- package/esm/virtual-scroll/virtual-scroll-list.type.d.ts +2 -0
- package/esm/virtual-scroll/virtual-scroll-list.type.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -10,7 +10,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
10
10
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
11
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
-
import React, { useState, useEffect, useRef } from 'react';
|
|
13
|
+
import React, { useState, useEffect, useLayoutEffect, useRef } from 'react';
|
|
14
14
|
import { usePersistFn } from '@sheinx/hooks';
|
|
15
15
|
import Scroll from "./scroll";
|
|
16
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -28,30 +28,110 @@ var VirtualList = function VirtualList(props) {
|
|
|
28
28
|
_props$tag = props.tag,
|
|
29
29
|
tag = _props$tag === void 0 ? 'div' : _props$tag,
|
|
30
30
|
tagClassName = props.tagClassName,
|
|
31
|
+
dynamicVirtual = props.dynamicVirtual,
|
|
31
32
|
virtualRef = props.virtualRef,
|
|
32
33
|
onControlTypeChange = props.onControlTypeChange;
|
|
33
34
|
var _useState = useState(0),
|
|
34
35
|
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
top = _useState2[0],
|
|
37
|
+
setTop = _useState2[1];
|
|
37
38
|
var _useState3 = useState(0),
|
|
38
39
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
offsetY = _useState4[0],
|
|
41
|
+
setOffsetY = _useState4[1];
|
|
42
|
+
var _useState5 = useState(props.data.length * lineHeight),
|
|
43
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
44
|
+
scrollHeight = _useState6[0],
|
|
45
|
+
setHeight = _useState6[1];
|
|
46
|
+
var _useState7 = useState(0),
|
|
47
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
48
|
+
startIndex = _useState8[0],
|
|
49
|
+
setStartIndex = _useState8[1];
|
|
41
50
|
var wrapperRef = useRef(null);
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
var _useRef = useRef({
|
|
52
|
+
cachedHeight: [],
|
|
53
|
+
controlScrollRate: null,
|
|
54
|
+
heightCallback: null,
|
|
55
|
+
preIndex: null,
|
|
56
|
+
topTimer: null,
|
|
57
|
+
rateTimer: null,
|
|
58
|
+
shouldUpdateHeight: true
|
|
59
|
+
}),
|
|
60
|
+
context = _useRef.current;
|
|
61
|
+
var getContentHeight = function getContentHeight(index) {
|
|
62
|
+
var sum = 0;
|
|
63
|
+
for (var i = 0; i <= index; i++) {
|
|
64
|
+
sum += context.cachedHeight[i] || lineHeight;
|
|
65
|
+
}
|
|
66
|
+
return sum;
|
|
45
67
|
};
|
|
46
68
|
var getCurrentIndex = usePersistFn(function () {
|
|
47
|
-
return
|
|
69
|
+
return startIndex;
|
|
48
70
|
});
|
|
49
71
|
var getTop = usePersistFn(function () {
|
|
50
72
|
return top;
|
|
51
73
|
});
|
|
74
|
+
var setRowHeight = usePersistFn(function (index, height) {
|
|
75
|
+
var beforeHeight = context.cachedHeight[index];
|
|
76
|
+
if (beforeHeight && beforeHeight === height) return;
|
|
77
|
+
context.cachedHeight[index] = height;
|
|
78
|
+
if (context.shouldUpdateHeight) {
|
|
79
|
+
setHeight(getContentHeight(props.data.length - 1));
|
|
80
|
+
}
|
|
81
|
+
var preIndex = context.preIndex;
|
|
82
|
+
// 解决: 从下往上滚 由于高度变化会导致滚动条跳动
|
|
83
|
+
if (preIndex && preIndex > startIndex && startIndex === index) {
|
|
84
|
+
// 发生在顶部
|
|
85
|
+
if (context.heightCallback) return;
|
|
86
|
+
var offset = height - (beforeHeight || lineHeight);
|
|
87
|
+
setOffsetY(function (s) {
|
|
88
|
+
return s + offset;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
var updateRateScroll = usePersistFn(function (rate) {
|
|
93
|
+
var sumHeight = getContentHeight(props.data.length - 1);
|
|
94
|
+
if (sumHeight === scrollHeight) return;
|
|
95
|
+
context.shouldUpdateHeight = true;
|
|
96
|
+
context.heightCallback = function () {
|
|
97
|
+
if (wrapperRef && wrapperRef.current) {
|
|
98
|
+
var _scrollHeight = wrapperRef.current.scrollHeight;
|
|
99
|
+
var clientHeight = wrapperRef.current.clientHeight;
|
|
100
|
+
var nowTop = wrapperRef.current.scrollTop;
|
|
101
|
+
var max = _scrollHeight - clientHeight;
|
|
102
|
+
var _top = rate * max;
|
|
103
|
+
if (Math.abs(nowTop - _top) < 1) {
|
|
104
|
+
context.controlScrollRate = null;
|
|
105
|
+
} else {
|
|
106
|
+
context.controlScrollRate = rate;
|
|
107
|
+
wrapperRef.current.scrollTop = _top;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
setHeight(sumHeight);
|
|
112
|
+
});
|
|
113
|
+
var updateIndexAndTopFromTop = function updateIndexAndTopFromTop(scrollTop) {
|
|
114
|
+
var sum = 0;
|
|
115
|
+
var nextCurrentIndex = 0;
|
|
116
|
+
var top = 0;
|
|
117
|
+
var maxIndex = Math.max(props.data.length - rowsInView, 0);
|
|
118
|
+
for (var i = 0; i <= maxIndex; i++) {
|
|
119
|
+
sum += context.cachedHeight[i] || lineHeight;
|
|
120
|
+
if (scrollTop < sum || i === maxIndex) {
|
|
121
|
+
nextCurrentIndex = i;
|
|
122
|
+
var beforeHeight = i === 0 ? 0 : sum - (context.cachedHeight[i] || lineHeight);
|
|
123
|
+
top = scrollTop - beforeHeight;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (nextCurrentIndex !== startIndex) {
|
|
128
|
+
setStartIndex(nextCurrentIndex);
|
|
129
|
+
}
|
|
130
|
+
setTop(top);
|
|
131
|
+
};
|
|
52
132
|
var handleScrollByStep = usePersistFn(function (step, top) {
|
|
53
133
|
var _wrapperRef$current;
|
|
54
|
-
var next =
|
|
134
|
+
var next = startIndex + step;
|
|
55
135
|
(_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 || _wrapperRef$current.scrollTo({
|
|
56
136
|
top: next * lineHeight + (top || 0)
|
|
57
137
|
});
|
|
@@ -61,21 +141,35 @@ var VirtualList = function VirtualList(props) {
|
|
|
61
141
|
};
|
|
62
142
|
var handleScroll = function handleScroll(info) {
|
|
63
143
|
var _props$onScroll;
|
|
64
|
-
var
|
|
65
|
-
|
|
144
|
+
var height = info.height,
|
|
145
|
+
y = info.y,
|
|
146
|
+
fromDrag = info.fromDrag;
|
|
147
|
+
var scrollTop = info.scrollTop;
|
|
148
|
+
context.shouldUpdateHeight = !fromDrag;
|
|
149
|
+
var sumHeight = getContentHeight(props.data.length - 1);
|
|
150
|
+
var max = sumHeight - height;
|
|
151
|
+
if (scrollTop > max) {
|
|
152
|
+
scrollTop = max;
|
|
153
|
+
}
|
|
154
|
+
if (fromDrag) {
|
|
155
|
+
var _top2 = y * max;
|
|
156
|
+
updateIndexAndTopFromTop(_top2);
|
|
157
|
+
if (context.rateTimer) clearTimeout(context.rateTimer);
|
|
158
|
+
context.rateTimer = setTimeout(function () {
|
|
159
|
+
updateRateScroll(y);
|
|
160
|
+
}, 120);
|
|
161
|
+
} else {
|
|
162
|
+
updateIndexAndTopFromTop(scrollTop);
|
|
163
|
+
}
|
|
66
164
|
(_props$onScroll = props.onScroll) === null || _props$onScroll === void 0 || _props$onScroll.call(props, info);
|
|
67
|
-
setTop(top);
|
|
68
|
-
setCurrentIndex(current);
|
|
69
165
|
};
|
|
70
|
-
var scrollHeight = getScrollHeight();
|
|
71
166
|
var renderList = function renderList() {
|
|
72
|
-
var
|
|
73
|
-
var end = currentIndex + rowsInView;
|
|
74
|
-
var items = data.slice(start, end);
|
|
167
|
+
var items = data.slice(startIndex, startIndex + rowsInView);
|
|
75
168
|
var Tag = tag;
|
|
76
|
-
var shouldScroll = data.length
|
|
169
|
+
var shouldScroll = getContentHeight(data.length - 1) > height;
|
|
77
170
|
var nextStyle = _objectSpread({}, style);
|
|
78
171
|
if (shouldScroll) nextStyle.height = height;
|
|
172
|
+
var scrollHeight = getContentHeight(data.length - 1);
|
|
79
173
|
return /*#__PURE__*/_jsx(Scroll, {
|
|
80
174
|
className: className,
|
|
81
175
|
style: nextStyle,
|
|
@@ -96,16 +190,49 @@ var VirtualList = function VirtualList(props) {
|
|
|
96
190
|
children: items.map(function (d, i) {
|
|
97
191
|
if (d[groupKey]) {
|
|
98
192
|
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
99
|
-
children: customRenderItem(d,
|
|
193
|
+
children: customRenderItem(d, startIndex + i, i)
|
|
100
194
|
}, i);
|
|
101
195
|
}
|
|
102
196
|
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
103
|
-
children: renderItem(d,
|
|
104
|
-
}, i);
|
|
197
|
+
children: renderItem(d, startIndex + i, i, setRowHeight)
|
|
198
|
+
}, dynamicVirtual ? startIndex + i : i);
|
|
105
199
|
})
|
|
106
200
|
})
|
|
107
201
|
});
|
|
108
202
|
};
|
|
203
|
+
useEffect(function () {
|
|
204
|
+
// 记录preIndex
|
|
205
|
+
context.preIndex = startIndex;
|
|
206
|
+
}, [startIndex]);
|
|
207
|
+
useLayoutEffect(function () {
|
|
208
|
+
// 数据变化的时候清空掉 preIndex, 如果之前有缓存的index, setRowHeight 会有问题
|
|
209
|
+
setTop(0);
|
|
210
|
+
setStartIndex(0);
|
|
211
|
+
return function () {
|
|
212
|
+
context.preIndex = null;
|
|
213
|
+
};
|
|
214
|
+
}, [data.length]);
|
|
215
|
+
useEffect(function () {
|
|
216
|
+
if (offsetY) {
|
|
217
|
+
if (wrapperRef.current) {
|
|
218
|
+
setOffsetY(0);
|
|
219
|
+
setTop(function (s) {
|
|
220
|
+
return s + offsetY;
|
|
221
|
+
});
|
|
222
|
+
wrapperRef.current.scrollTop += offsetY;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}, [offsetY, startIndex]);
|
|
226
|
+
useEffect(function () {
|
|
227
|
+
setHeight(getContentHeight(props.data.length - 1));
|
|
228
|
+
}, [data.length]);
|
|
229
|
+
useEffect(function () {
|
|
230
|
+
if (context.heightCallback) {
|
|
231
|
+
var cb = context.heightCallback;
|
|
232
|
+
context.heightCallback = null;
|
|
233
|
+
cb();
|
|
234
|
+
}
|
|
235
|
+
}, [scrollHeight]);
|
|
109
236
|
useEffect(function () {
|
|
110
237
|
if (virtualRef !== null && virtualRef !== void 0 && virtualRef.current) {
|
|
111
238
|
virtualRef.current.scrollByStep = handleScrollByStep;
|
|
@@ -6,6 +6,7 @@ export type VirtualListType = {
|
|
|
6
6
|
getCurrentIndex?: () => number;
|
|
7
7
|
getTop?: () => number;
|
|
8
8
|
getHoverIndex?: () => number;
|
|
9
|
+
setStartIndex?: (index: number) => void;
|
|
9
10
|
};
|
|
10
11
|
export interface VirtualListProps<DataItem> extends Pick<CommonType, 'className' | 'style'> {
|
|
11
12
|
data: DataItem[];
|
|
@@ -21,6 +22,7 @@ export interface VirtualListProps<DataItem> extends Pick<CommonType, 'className'
|
|
|
21
22
|
tagClassName?: string;
|
|
22
23
|
virtualRef?: React.MutableRefObject<VirtualListType>;
|
|
23
24
|
scrollerStyle?: React.CSSProperties;
|
|
25
|
+
dynamicVirtual?: boolean;
|
|
24
26
|
onControlTypeChange?: React.Dispatch<React.SetStateAction<'mouse' | 'keyboard'>>;
|
|
25
27
|
onScroll?: (info: {
|
|
26
28
|
scrollLeft: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-scroll-list.type.d.ts","sourceRoot":"","sources":["virtual-scroll-list.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"virtual-scroll-list.type.d.ts","sourceRoot":"","sources":["virtual-scroll-list.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAAC,QAAQ,CAAE,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC;IACzF,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACrD,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,IAAI,CAAC;CACZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sheinx/base",
|
|
3
|
-
"version": "3.4.0-beta.
|
|
3
|
+
"version": "3.4.0-beta.11",
|
|
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.4.0-beta.
|
|
13
|
+
"@sheinx/hooks": "3.4.0-beta.11",
|
|
14
14
|
"immer": "^10.0.0",
|
|
15
15
|
"classnames": "^2.0.0",
|
|
16
16
|
"@shined/reactive": "^0.1.3-alpha.0"
|