@pinnacle0/web-ui 0.3.17 → 0.3.18-beta2
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/core/FlatList/VirtualFlatList/Item.d.ts +17 -0
- package/core/FlatList/VirtualFlatList/Item.js +26 -0
- package/core/FlatList/VirtualFlatList/Item.js.map +1 -0
- package/core/FlatList/VirtualFlatList/index.d.ts +30 -0
- package/core/FlatList/VirtualFlatList/index.js +81 -0
- package/core/FlatList/VirtualFlatList/index.js.map +1 -0
- package/core/FlatList/VirtualFlatList/index.less +22 -0
- package/core/FlatList/VirtualFlatList/type.d.ts +17 -0
- package/core/FlatList/VirtualFlatList/type.js +2 -0
- package/core/FlatList/VirtualFlatList/type.js.map +1 -0
- package/core/FlatList/index.d.ts +3 -0
- package/core/FlatList/index.js +32 -0
- package/core/FlatList/index.js.map +1 -0
- package/core/FlatList/shared/Footer/index.d.ts +8 -0
- package/core/FlatList/shared/Footer/index.js +13 -0
- package/core/FlatList/shared/Footer/index.js.map +1 -0
- package/core/FlatList/shared/Footer/index.less +8 -0
- package/core/FlatList/shared/Spinner/index.d.ts +8 -0
- package/core/FlatList/shared/Spinner/index.js +10 -0
- package/core/FlatList/shared/Spinner/index.js.map +1 -0
- package/core/FlatList/shared/Spinner/index.less +13 -0
- package/core/FlatList/shared/Wrapper/Loading.d.ts +7 -0
- package/core/FlatList/shared/Wrapper/Loading.js +8 -0
- package/core/FlatList/shared/Wrapper/Loading.js.map +1 -0
- package/core/FlatList/shared/Wrapper/index.d.ts +13 -0
- package/core/FlatList/shared/Wrapper/index.js +111 -0
- package/core/FlatList/shared/Wrapper/index.js.map +1 -0
- package/core/FlatList/shared/Wrapper/index.less +33 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.d.ts +22 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.js +111 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.js.map +1 -0
- package/core/FlatList/shared/hooks/useElementScrollState.d.ts +8 -0
- package/core/FlatList/shared/hooks/useElementScrollState.js +38 -0
- package/core/FlatList/shared/hooks/useElementScrollState.js.map +1 -0
- package/core/FlatList/shared/hooks/useFlatList.d.ts +14 -0
- package/core/FlatList/shared/hooks/useFlatList.js +86 -0
- package/core/FlatList/shared/hooks/useFlatList.js.map +1 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.d.ts +9 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.js +52 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.js.map +1 -0
- package/core/FlatList/type.d.ts +34 -0
- package/core/FlatList/type.js +2 -0
- package/core/FlatList/type.js.map +1 -0
- package/core/VirtualTable/TableHeader.d.ts +3 -4
- package/core/VirtualTable/TableHeader.js +2 -2
- package/core/VirtualTable/TableHeader.js.map +1 -1
- package/core/VirtualTable/TableRow.d.ts +7 -6
- package/core/VirtualTable/TableRow.js +28 -19
- package/core/VirtualTable/TableRow.js.map +1 -1
- package/core/VirtualTable/{useColumnWidths.d.ts → hooks/useColumnWidths.d.ts} +0 -0
- package/core/VirtualTable/{useColumnWidths.js → hooks/useColumnWidths.js} +0 -0
- package/core/VirtualTable/hooks/useColumnWidths.js.map +1 -0
- package/core/VirtualTable/{useDebounce.d.ts → hooks/useDebounce.d.ts} +0 -0
- package/core/VirtualTable/{useDebounce.js → hooks/useDebounce.js} +0 -0
- package/core/VirtualTable/hooks/useDebounce.js.map +1 -0
- package/core/VirtualTable/{useLayout.d.ts → hooks/useLayout.d.ts} +5 -2
- package/core/VirtualTable/{useLayout.js → hooks/useLayout.js} +8 -1
- package/core/VirtualTable/hooks/useLayout.js.map +1 -0
- package/core/VirtualTable/hooks/useRowExpand.d.ts +7 -0
- package/core/VirtualTable/hooks/useRowExpand.js +20 -0
- package/core/VirtualTable/hooks/useRowExpand.js.map +1 -0
- package/core/VirtualTable/{useRowSelection.d.ts → hooks/useRowSelection.d.ts} +1 -1
- package/core/VirtualTable/{useRowSelection.js → hooks/useRowSelection.js} +2 -2
- package/core/VirtualTable/hooks/useRowSelection.js.map +1 -0
- package/core/VirtualTable/{useScrollBarSize.d.ts → hooks/useScrollBarSize.d.ts} +0 -0
- package/core/VirtualTable/{useScrollBarSize.js → hooks/useScrollBarSize.js} +0 -0
- package/core/VirtualTable/hooks/useScrollBarSize.js.map +1 -0
- package/core/VirtualTable/{useScrollToEdge.d.ts → hooks/useScrollToEdge.d.ts} +1 -1
- package/core/VirtualTable/{useScrollToEdge.js → hooks/useScrollToEdge.js} +1 -1
- package/core/VirtualTable/hooks/useScrollToEdge.js.map +1 -0
- package/core/VirtualTable/{useStickyPosition.d.ts → hooks/useStickyPosition.d.ts} +1 -5
- package/core/VirtualTable/{useStickyPosition.js → hooks/useStickyPosition.js} +1 -1
- package/core/VirtualTable/hooks/useStickyPosition.js.map +1 -0
- package/core/VirtualTable/hooks/useTransformColumn.d.ts +11 -0
- package/core/VirtualTable/hooks/useTransformColumn.js +9 -0
- package/core/VirtualTable/hooks/useTransformColumn.js.map +1 -0
- package/core/VirtualTable/index.d.ts +5 -4
- package/core/VirtualTable/index.js +15 -11
- package/core/VirtualTable/index.js.map +1 -1
- package/core/VirtualTable/index.less +14 -2
- package/core/VirtualTable/type.d.ts +17 -0
- package/hooks/useSwipe/controller.d.ts +20 -0
- package/hooks/useSwipe/controller.js +126 -0
- package/hooks/useSwipe/controller.js.map +1 -0
- package/hooks/useSwipe/index.d.ts +3 -0
- package/hooks/useSwipe/index.js +9 -0
- package/hooks/useSwipe/index.js.map +1 -0
- package/hooks/useSwipe/type.d.ts +38 -0
- package/hooks/useSwipe/type.js +8 -0
- package/hooks/useSwipe/type.js.map +1 -0
- package/hooks/useTransform.d.ts +18 -0
- package/hooks/useTransform.js +50 -0
- package/hooks/useTransform.js.map +1 -0
- package/package.json +5 -1
- package/util/SwipeUtil.d.ts +8 -0
- package/util/SwipeUtil.js +26 -0
- package/util/SwipeUtil.js.map +1 -0
- package/core/VirtualTable/useColumnWidths.js.map +0 -1
- package/core/VirtualTable/useDebounce.js.map +0 -1
- package/core/VirtualTable/useLayout.js.map +0 -1
- package/core/VirtualTable/useRowSelection.js.map +0 -1
- package/core/VirtualTable/useScrollBarSize.js.map +0 -1
- package/core/VirtualTable/useScrollToEdge.js.map +0 -1
- package/core/VirtualTable/useStickyPosition.js.map +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
+
if (!m) return o;
|
|
15
|
+
var i = m.call(o), r, ar = [], e;
|
|
16
|
+
try {
|
|
17
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) { e = { error: error }; }
|
|
20
|
+
finally {
|
|
21
|
+
try {
|
|
22
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
+
}
|
|
24
|
+
finally { if (e) throw e.error; }
|
|
25
|
+
}
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
import React from "react";
|
|
29
|
+
import { useElementScrollState } from "./useElementScrollState";
|
|
30
|
+
import { Direction, useSwipe } from "../../../../hooks/useSwipe";
|
|
31
|
+
import { useTransform } from "../../../../hooks/useTransform";
|
|
32
|
+
export var useBounceSwipe = function (options) {
|
|
33
|
+
var contentRef = options.contentRef, animatedRef = options.animatedRef, axis = options.axis, _a = options.baseOffset, baseOffset = _a === void 0 ? 0 : _a, onStart = options.onStart, onMove = options.onMove, onEnd = options.onEnd, onCancel = options.onCancel;
|
|
34
|
+
var _b = __read(React.useState(null), 2), boundary = _b[0], setBoundary = _b[1];
|
|
35
|
+
var transit = useTransform(animatedRef, { duration: 300, timingFunction: "cubic-bezier(0, 0.61, 0.28, 1.22)", property: "transform" });
|
|
36
|
+
var startOffsetRef = React.useRef(0);
|
|
37
|
+
var isX = React.useMemo(function () { return axis === "horizontal"; }, [axis]);
|
|
38
|
+
var isY = React.useMemo(function () { return axis === "vertical"; }, [axis]);
|
|
39
|
+
var _c = useElementScrollState(contentRef), isScrollable = _c.isScrollable, isScrollTop = _c.isScrollTop, isScrollBottom = _c.isScrollBottom, isScrollLeft = _c.isScrollLeft, isScrollRight = _c.isScrollRight;
|
|
40
|
+
var threshold = function (_a) {
|
|
41
|
+
var direction = _a.direction;
|
|
42
|
+
if (isY) {
|
|
43
|
+
return (direction === Direction.DOWN && isScrollTop()) || (direction === Direction.UP && isScrollBottom());
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return (direction === Direction.RIGHT && isScrollLeft()) || (direction === Direction.LEFT && isScrollRight());
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var clearSwipe = function () {
|
|
50
|
+
startOffsetRef.current = 0;
|
|
51
|
+
setBoundary(null);
|
|
52
|
+
};
|
|
53
|
+
React.useEffect(function () {
|
|
54
|
+
// Changing overflow style to fixed laggy bounce swipe in chrome
|
|
55
|
+
if (contentRef.current) {
|
|
56
|
+
if (boundary) {
|
|
57
|
+
contentRef.current.style.overflow = "hidden";
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
contentRef.current.style.overflow = "auto";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, [boundary, contentRef]);
|
|
64
|
+
var getOffset = function (delta, boundary) {
|
|
65
|
+
var resultOffset = [0, 0];
|
|
66
|
+
var limitedOffset = delta[isX ? 0 : 1] - startOffsetRef.current + baseOffset;
|
|
67
|
+
var computeResultOffset = function (value) { return [isX ? value : 0, isY ? value : 0]; };
|
|
68
|
+
if (boundary === "upper") {
|
|
69
|
+
resultOffset = limitedOffset < 0 ? null : computeResultOffset(limitedOffset);
|
|
70
|
+
}
|
|
71
|
+
else if (boundary === "lower") {
|
|
72
|
+
resultOffset = limitedOffset > 0 ? null : computeResultOffset(limitedOffset);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
resultOffset = computeResultOffset(limitedOffset);
|
|
76
|
+
}
|
|
77
|
+
return resultOffset;
|
|
78
|
+
};
|
|
79
|
+
var handlers = useSwipe({
|
|
80
|
+
onStart: function (state) {
|
|
81
|
+
var _a = __read(state.delta, 2), x = _a[0], y = _a[1], direction = state.direction;
|
|
82
|
+
isScrollable(axis) && setBoundary(direction === Direction.DOWN ? "upper" : "lower");
|
|
83
|
+
startOffsetRef.current = isX ? x : y;
|
|
84
|
+
onStart === null || onStart === void 0 ? void 0 : onStart(__assign(__assign({}, state), { boundary: boundary }));
|
|
85
|
+
},
|
|
86
|
+
onMove: function (state) {
|
|
87
|
+
var delta = state.delta, cancel = state.cancel;
|
|
88
|
+
var offset = getOffset(delta, boundary);
|
|
89
|
+
if (!offset) {
|
|
90
|
+
cancel();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
var _a = __read(offset, 2), x = _a[0], y = _a[1];
|
|
94
|
+
transit.to({ x: x, y: y, immediate: true });
|
|
95
|
+
onMove === null || onMove === void 0 ? void 0 : onMove(__assign(__assign({}, state), { boundary: boundary }));
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
onEnd: function (state) {
|
|
99
|
+
onEnd === null || onEnd === void 0 ? void 0 : onEnd(__assign(__assign({}, state), { boundary: boundary }));
|
|
100
|
+
transit.clear();
|
|
101
|
+
clearSwipe();
|
|
102
|
+
},
|
|
103
|
+
onCancel: function (state) {
|
|
104
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel(__assign(__assign({}, state), { boundary: boundary }));
|
|
105
|
+
transit.clear();
|
|
106
|
+
clearSwipe();
|
|
107
|
+
},
|
|
108
|
+
}, { threshold: threshold });
|
|
109
|
+
return handlers;
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=useBounceSwipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBounceSwipe.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useBounceSwipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const useElementScrollState: (ref: React.RefObject<HTMLElement | null>) => {
|
|
3
|
+
isScrollTop: () => boolean;
|
|
4
|
+
isScrollBottom: () => boolean;
|
|
5
|
+
isScrollLeft: () => boolean;
|
|
6
|
+
isScrollRight: () => boolean;
|
|
7
|
+
isScrollable: (direction: "vertical" | "horizontal") => boolean;
|
|
8
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
// need to cache scrollable results
|
|
3
|
+
// only change when window resize, data change, and css change
|
|
4
|
+
export var useElementScrollState = function (ref) {
|
|
5
|
+
var isScrollable = React.useCallback(function (direction) {
|
|
6
|
+
if (ref.current) {
|
|
7
|
+
var element = ref.current;
|
|
8
|
+
return direction === "vertical" ? element.scrollHeight > element.clientHeight : element.scrollWidth > element.clientWidth;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}, [ref]);
|
|
14
|
+
var isScrollTop = React.useCallback(function () { var _a; return ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollTop) === 0; }, [ref]);
|
|
15
|
+
var isScrollBottom = React.useCallback(function () {
|
|
16
|
+
var element = ref.current;
|
|
17
|
+
if (element) {
|
|
18
|
+
var scrollHeight = element.scrollHeight, scrollTop = element.scrollTop, clientHeight = element.clientHeight;
|
|
19
|
+
return Math.ceil(scrollTop) + clientHeight >= scrollHeight;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}, [ref]);
|
|
25
|
+
var isScrollLeft = React.useCallback(function () { var _a; return ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) === 0; }, [ref]);
|
|
26
|
+
var isScrollRight = React.useCallback(function () {
|
|
27
|
+
var element = ref.current;
|
|
28
|
+
if (element) {
|
|
29
|
+
var scrollWidth = element.scrollWidth, scrollLeft = element.scrollLeft, clientWidth = element.clientWidth;
|
|
30
|
+
return Math.ceil(scrollLeft) + clientWidth >= scrollWidth;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}, [ref]);
|
|
36
|
+
return { isScrollTop: isScrollTop, isScrollBottom: isScrollBottom, isScrollLeft: isScrollLeft, isScrollRight: isScrollRight, isScrollable: isScrollable };
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=useElementScrollState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElementScrollState.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useElementScrollState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,mCAAmC;AAEnC,8DAA8D;AAE9D,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,GAAwC;IAC1E,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAClC,UAAC,SAAoC;QACjC,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;SAC7H;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EACD,CAAC,GAAG,CAAC,CACR,CAAC;IAEF,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,sBAAM,OAAA,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,SAAS,MAAK,CAAC,CAAA,EAAA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE;YACF,IAAA,YAAY,GAA6B,OAAO,aAApC,EAAE,SAAS,GAAkB,OAAO,UAAzB,EAAE,YAAY,GAAI,OAAO,aAAX,CAAY;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,YAAY,IAAI,YAAY,CAAC;SAC9D;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,sBAAM,OAAA,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,UAAU,MAAK,CAAC,CAAA,EAAA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE;YACF,IAAA,WAAW,GAA6B,OAAO,YAApC,EAAE,UAAU,GAAiB,OAAO,WAAxB,EAAE,WAAW,GAAI,OAAO,YAAX,CAAY;YACvD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,IAAI,WAAW,CAAC;SAC7D;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,EAAC,WAAW,aAAA,EAAE,cAAc,gBAAA,EAAE,YAAY,cAAA,EAAE,aAAa,eAAA,EAAE,YAAY,cAAA,EAAC,CAAC;AACpF,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { LoadingType } from "../../type";
|
|
3
|
+
interface Options {
|
|
4
|
+
contentRef: React.RefObject<HTMLElement>;
|
|
5
|
+
animatedRef: React.RefObject<HTMLElement>;
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
onPullDownRefresh?: () => void;
|
|
8
|
+
onPullUpLoading?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const useFlatList: (options: Options) => {
|
|
11
|
+
handlers: import("../../../../hooks/useSwipe").SwipeHookResult;
|
|
12
|
+
loadingType: LoadingType;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
+
if (!m) return o;
|
|
4
|
+
var i = m.call(o), r, ar = [], e;
|
|
5
|
+
try {
|
|
6
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
+
}
|
|
8
|
+
catch (error) { e = { error: error }; }
|
|
9
|
+
finally {
|
|
10
|
+
try {
|
|
11
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
+
}
|
|
13
|
+
finally { if (e) throw e.error; }
|
|
14
|
+
}
|
|
15
|
+
return ar;
|
|
16
|
+
};
|
|
17
|
+
import React from "react";
|
|
18
|
+
import { Direction } from "../../../../hooks/useSwipe";
|
|
19
|
+
import { useTransform } from "../../../../hooks/useTransform";
|
|
20
|
+
import { PULL_DOWN_REFRESH_THRESHOLD } from "../../type";
|
|
21
|
+
import { useBounceSwipe } from "./useBounceSwipe";
|
|
22
|
+
import { useElementScrollState } from "./useElementScrollState";
|
|
23
|
+
export var useFlatList = function (options) {
|
|
24
|
+
var contentRef = options.contentRef, animatedRef = options.animatedRef, isLoading = options.isLoading, onPullDownRefresh = options.onPullDownRefresh, onPullUpLoading = options.onPullUpLoading;
|
|
25
|
+
var startOffsetRef = React.useRef(0);
|
|
26
|
+
var _a = __read(React.useState(null), 2), loadingType = _a[0], setLoadingType = _a[1];
|
|
27
|
+
var loadingTypeRef = React.useRef(null);
|
|
28
|
+
loadingTypeRef.current = loadingType;
|
|
29
|
+
var isScrollable = useElementScrollState(contentRef).isScrollable;
|
|
30
|
+
var transit = useTransform(animatedRef);
|
|
31
|
+
var transitRef = React.useRef(transit);
|
|
32
|
+
transitRef.current = transit;
|
|
33
|
+
var reset = React.useCallback(function () {
|
|
34
|
+
startOffsetRef.current = 0;
|
|
35
|
+
}, []);
|
|
36
|
+
var handlers = useBounceSwipe({
|
|
37
|
+
axis: "vertical",
|
|
38
|
+
contentRef: contentRef,
|
|
39
|
+
animatedRef: animatedRef,
|
|
40
|
+
onStart: function (_a) {
|
|
41
|
+
var _b = __read(_a.delta, 2), y = _b[1];
|
|
42
|
+
startOffsetRef.current = y;
|
|
43
|
+
},
|
|
44
|
+
onEnd: function (_a) {
|
|
45
|
+
var delta = _a.delta, direction = _a.direction, boundary = _a.boundary;
|
|
46
|
+
if (isLoading) {
|
|
47
|
+
if (boundary !== "upper") {
|
|
48
|
+
transit.to({
|
|
49
|
+
y: PULL_DOWN_REFRESH_THRESHOLD,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (Math.abs(startOffsetRef.current - delta[1]) >= PULL_DOWN_REFRESH_THRESHOLD) {
|
|
55
|
+
var scrollable = isScrollable("vertical");
|
|
56
|
+
if (boundary === "upper" || (!scrollable && direction === Direction.DOWN)) {
|
|
57
|
+
setLoadingType("refresh");
|
|
58
|
+
onPullDownRefresh === null || onPullDownRefresh === void 0 ? void 0 : onPullDownRefresh();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
setLoadingType("loading");
|
|
62
|
+
onPullUpLoading === null || onPullUpLoading === void 0 ? void 0 : onPullUpLoading();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
reset();
|
|
67
|
+
},
|
|
68
|
+
onCancel: reset,
|
|
69
|
+
});
|
|
70
|
+
React.useEffect(function () {
|
|
71
|
+
if (isLoading) {
|
|
72
|
+
if (loadingTypeRef.current === "refresh") {
|
|
73
|
+
transitRef.current.to({
|
|
74
|
+
y: PULL_DOWN_REFRESH_THRESHOLD,
|
|
75
|
+
immediate: false,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
transitRef.current.clear();
|
|
81
|
+
setLoadingType(null);
|
|
82
|
+
}
|
|
83
|
+
}, [isLoading]);
|
|
84
|
+
return { handlers: handlers, loadingType: loadingType };
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=useFlatList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlatList.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useFlatList.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This hook prevent loading state causing ui to flash
|
|
3
|
+
* For instance, in real life loading only last for 50ms, so it make loading ui appear in a blink of an eye, which is not good
|
|
4
|
+
* Hook will only delay the loading state change from true to false, it force loading ui at least appear for a period of time
|
|
5
|
+
* @param loading
|
|
6
|
+
* @param delay
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const useLoadingWithDelay: (loading: boolean, delay: number) => Readonly<boolean>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
+
if (!m) return o;
|
|
4
|
+
var i = m.call(o), r, ar = [], e;
|
|
5
|
+
try {
|
|
6
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
+
}
|
|
8
|
+
catch (error) { e = { error: error }; }
|
|
9
|
+
finally {
|
|
10
|
+
try {
|
|
11
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
+
}
|
|
13
|
+
finally { if (e) throw e.error; }
|
|
14
|
+
}
|
|
15
|
+
return ar;
|
|
16
|
+
};
|
|
17
|
+
import React from "react";
|
|
18
|
+
/**
|
|
19
|
+
* This hook prevent loading state causing ui to flash
|
|
20
|
+
* For instance, in real life loading only last for 50ms, so it make loading ui appear in a blink of an eye, which is not good
|
|
21
|
+
* Hook will only delay the loading state change from true to false, it force loading ui at least appear for a period of time
|
|
22
|
+
* @param loading
|
|
23
|
+
* @param delay
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export var useLoadingWithDelay = function (loading, delay) {
|
|
27
|
+
var _a = __read(React.useState(loading), 2), loadingWithDelay = _a[0], setLoadingWithDelay = _a[1];
|
|
28
|
+
var startTimeRef = React.useRef(null);
|
|
29
|
+
var setLoadingRef = React.useRef();
|
|
30
|
+
var setLoading = React.useCallback(function (value) {
|
|
31
|
+
if (value) {
|
|
32
|
+
setLoadingWithDelay(true);
|
|
33
|
+
startTimeRef.current = Date.now();
|
|
34
|
+
setTimeout(function () { return (startTimeRef.current = null); }, delay);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (startTimeRef.current) {
|
|
38
|
+
setTimeout(function () { return setLoadingWithDelay(false); }, Math.abs(delay - (Date.now() - startTimeRef.current)));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
setLoadingWithDelay(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, [delay]);
|
|
45
|
+
setLoadingRef.current = setLoading;
|
|
46
|
+
React.useEffect(function () {
|
|
47
|
+
var _a;
|
|
48
|
+
(_a = setLoadingRef.current) === null || _a === void 0 ? void 0 : _a.call(setLoadingRef, loading);
|
|
49
|
+
}, [loading]);
|
|
50
|
+
return loadingWithDelay;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=useLoadingWithDelay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLoadingWithDelay.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useLoadingWithDelay.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,OAAgB,EAAE,KAAa;IACzD,IAAA,KAAA,OAA0C,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAA,EAAhE,gBAAgB,QAAA,EAAE,mBAAmB,QAA2B,CAAC;IACxE,IAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACvD,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAE/D,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,UAAC,KAAc;QACX,IAAI,KAAK,EAAE;YACP,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,UAAU,CAAC,cAAM,OAAA,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,EAA7B,CAA6B,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACH,IAAI,YAAY,CAAC,OAAO,EAAE;gBACtB,UAAU,CAAC,cAAM,OAAA,mBAAmB,CAAC,KAAK,CAAC,EAA1B,CAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACvG;iBAAM;gBACH,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;IACL,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IAEnC,KAAK,CAAC,SAAS,CAAC;;QACZ,MAAA,aAAa,CAAC,OAAO,8DAAG,OAAO,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const PULL_DOWN_REFRESH_THRESHOLD = 50;
|
|
3
|
+
export declare type LoadingType = "refresh" | "loading" | null;
|
|
4
|
+
export interface FlatListItemProps<T> {
|
|
5
|
+
data: T;
|
|
6
|
+
index: number;
|
|
7
|
+
}
|
|
8
|
+
export declare type ItemRenderer<T> = React.FunctionComponent<FlatListItemProps<T>>;
|
|
9
|
+
export interface FlatListProps<T> {
|
|
10
|
+
data: T[];
|
|
11
|
+
renderItem: ItemRenderer<T>;
|
|
12
|
+
loading?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
onPullUpLoading?: () => void;
|
|
16
|
+
onPullDownRefresh?: () => void;
|
|
17
|
+
autoLoad?: boolean | number;
|
|
18
|
+
emptyPlaceholder?: string | React.ReactElement;
|
|
19
|
+
contentStyle?: React.CSSProperties;
|
|
20
|
+
bounceEffect?: boolean;
|
|
21
|
+
pullUpLoadingMessage?: string;
|
|
22
|
+
endOfListMessage?: string;
|
|
23
|
+
pullDownRefreshMessage?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface FlatListItemProps<T> {
|
|
26
|
+
data: T;
|
|
27
|
+
index: number;
|
|
28
|
+
}
|
|
29
|
+
export interface FooterData {
|
|
30
|
+
loading: boolean;
|
|
31
|
+
ended: boolean;
|
|
32
|
+
loadingMessage?: string;
|
|
33
|
+
endMessage?: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/core/FlatList/type.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,2BAA2B,GAAG,EAAE,CAAC"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
|
|
3
|
-
import type { StickyPosition } from "./useStickyPosition";
|
|
2
|
+
import type { ColumnFixedPosition, VirtualTableColumn, StickyPosition } from "./type";
|
|
4
3
|
interface Props<RowType extends object> {
|
|
5
4
|
headersRef: React.RefObject<HTMLDivElement>;
|
|
6
5
|
headerHeight: number;
|
|
7
|
-
|
|
6
|
+
columns: VirtualTableColumn<RowType>[];
|
|
8
7
|
stickyPosition: Record<number, StickyPosition>;
|
|
9
8
|
getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
|
|
10
9
|
}
|
|
11
|
-
export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight,
|
|
10
|
+
export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight, columns, stickyPosition, getFixedColumnClassNames }: Props<RowType>) => JSX.Element) & {
|
|
12
11
|
displayName: string;
|
|
13
12
|
};
|
|
14
13
|
export {};
|
|
@@ -25,8 +25,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
25
|
};
|
|
26
26
|
import React from "react";
|
|
27
27
|
export var TableHeader = Object.assign(function (_a) {
|
|
28
|
-
var headersRef = _a.headersRef, headerHeight = _a.headerHeight,
|
|
29
|
-
return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } },
|
|
28
|
+
var headersRef = _a.headersRef, headerHeight = _a.headerHeight, columns = _a.columns, stickyPosition = _a.stickyPosition, getFixedColumnClassNames = _a.getFixedColumnClassNames;
|
|
29
|
+
return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, columns.map(function (_a, columnIndex) {
|
|
30
30
|
var _b;
|
|
31
31
|
var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
|
|
32
32
|
var stickyPositionValue = ((_b = stickyPosition[columnIndex]) === null || _b === void 0 ? void 0 : _b.value) || 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CACpC,UAAkC,EAA6F;QAA5F,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAA,EAAE,cAAc,oBAAA,EAAE,wBAAwB,8BAAA;IAC1G,OAAO,CACH,6BAAK,SAAS,EAAC,eAAe,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,EAAC,IAClG,OAAO,CAAC,GAAG,CAAC,UAAC,EAAqC,EAAE,WAAW;;YAAjD,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAAA;QAC9C,IAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,WAAW,CAAC,0CAAE,KAAK,KAAI,CAAC,CAAC;QACpE,OAAO,CACH,6BACI,SAAS,EAAE,eAAC,cAAc,UAAK,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,UAAE,IAAI,CAAC,GAAG,CAAC,EACtF,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;gBACH,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC/C,IAAI,EAAE,cAAO,KAAK,OAAI;gBACtB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;gBACxD,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aAC7D,IAEA,KAAK,CACJ,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,EACD;IACI,WAAW,EAAE,aAAa;CAC7B,CACJ,CAAC"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { VirtualItem } from "react-virtual";
|
|
3
|
-
import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
|
|
4
|
-
import type { StickyPosition } from "./useStickyPosition";
|
|
3
|
+
import type { ColumnFixedPosition, VirtualTableColumn, VirtualTableRowExpand, StickyPosition } from "./type";
|
|
5
4
|
interface Props<RowType extends object> {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
data: RowType;
|
|
6
|
+
columns: VirtualTableColumn<RowType>[];
|
|
8
7
|
virtualItem: VirtualItem;
|
|
9
8
|
columnWidths: number[];
|
|
9
|
+
rowHeight: number;
|
|
10
10
|
lastShownColumnIndex: number;
|
|
11
11
|
scrollBarSize: number;
|
|
12
12
|
stickyPosition: Record<number, StickyPosition>;
|
|
13
13
|
getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
|
|
14
14
|
rowClassName?: string;
|
|
15
|
-
onRowClick?: (record: RowType, rowIndex: number) =>
|
|
15
|
+
onRowClick?: (record: RowType, rowIndex: number) => void;
|
|
16
|
+
rowExpand?: VirtualTableRowExpand<RowType>;
|
|
16
17
|
}
|
|
17
|
-
export declare const TableRow: (<RowType extends object>({ virtualItem, getFixedColumnClassNames,
|
|
18
|
+
export declare const TableRow: (<RowType extends object>({ virtualItem, getFixedColumnClassNames, data, columns, columnWidths, rowHeight, scrollBarSize, stickyPosition, lastShownColumnIndex, rowClassName, onRowClick, rowExpand, }: Props<RowType>) => JSX.Element) & {
|
|
18
19
|
displayName: string;
|
|
19
20
|
};
|
|
20
21
|
export {};
|
|
@@ -25,25 +25,34 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
25
|
};
|
|
26
26
|
import React from "react";
|
|
27
27
|
export var TableRow = Object.assign(function (_a) {
|
|
28
|
-
var virtualItem = _a.virtualItem, getFixedColumnClassNames = _a.getFixedColumnClassNames,
|
|
28
|
+
var virtualItem = _a.virtualItem, getFixedColumnClassNames = _a.getFixedColumnClassNames, data = _a.data, columns = _a.columns, columnWidths = _a.columnWidths, rowHeight = _a.rowHeight, scrollBarSize = _a.scrollBarSize, stickyPosition = _a.stickyPosition, lastShownColumnIndex = _a.lastShownColumnIndex, rowClassName = _a.rowClassName, onRowClick = _a.onRowClick, rowExpand = _a.rowExpand;
|
|
29
|
+
var rowRef = React.useRef(null);
|
|
30
|
+
var _b = __read(React.useState((rowExpand === null || rowExpand === void 0 ? void 0 : rowExpand.isDefaultExpanded) || false), 2), isExpanded = _b[0], setIsExpanded = _b[1];
|
|
29
31
|
var rowIndex = virtualItem.index;
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
32
|
+
var toggleExpendRow = React.useCallback(function () { return setIsExpanded(!isExpanded); }, [isExpanded]);
|
|
33
|
+
React.useEffect(function () {
|
|
34
|
+
if (rowRef.current) {
|
|
35
|
+
virtualItem.measureRef(rowRef.current);
|
|
36
|
+
}
|
|
37
|
+
}, [isExpanded, virtualItem]);
|
|
38
|
+
return (React.createElement("div", { ref: rowRef, key: rowIndex, className: ["table-row", rowClassName, rowIndex % 2 ? "odd" : "even"].join(" "), style: { transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data, rowIndex); } },
|
|
39
|
+
columns.map(function (column, columnIndex) {
|
|
40
|
+
var _a;
|
|
41
|
+
var colSpan = column.colSpan ? column.colSpan(data, rowIndex, columnIndex) : 1;
|
|
42
|
+
// handle colspan > 1
|
|
43
|
+
var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
|
|
44
|
+
var renderData = column.display !== "hidden" && (rowExpand && columnIndex === columns.length - 1 ? React.createElement(rowExpand.ExpandButton, { onClick: toggleExpendRow }) : column.renderData(data, rowIndex));
|
|
45
|
+
// minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
|
|
46
|
+
var isLastShownColumn = lastShownColumnIndex === columnIndex;
|
|
47
|
+
var stickyPositionValue = ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
|
|
48
|
+
return (renderData && (React.createElement("div", { className: __spreadArray(["table-cell"], __read(getFixedColumnClassNames(column.fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
|
|
49
|
+
height: rowHeight,
|
|
50
|
+
width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
|
|
51
|
+
textAlign: column.align,
|
|
52
|
+
left: column.fixed === "left" ? stickyPositionValue : undefined,
|
|
53
|
+
right: column.fixed === "right" ? stickyPositionValue - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
|
|
54
|
+
} }, renderData)));
|
|
55
|
+
}),
|
|
56
|
+
rowExpand && React.createElement("div", { className: "expand-row ".concat(isExpanded ? "expanded" : "") }, rowExpand.renderExpandRow(data, rowIndex))));
|
|
48
57
|
}, { displayName: "TableRow" });
|
|
49
58
|
//# sourceMappingURL=TableRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColumnWidths.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useColumnWidths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AAEH,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,UAA2C;IACjE,IAAA,KAAA,OAA4B,KAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,IAAA,EAAvD,SAAS,QAAA,EAAE,YAAY,QAAgC,CAAC;IAE/D,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAChC,IAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACrE,IAAM,MAAM,GAAa,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,MAAM;YAC5D,IAAA,KAAK,GAAI,MAAM,CAAC,qBAAqB,EAAE,MAAlC,CAAmC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,oBAAA,EAAC,CAAC;AACzD,CAAC,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useDebounce.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,IAAM,WAAW,GAAG,UAA+B,QAAkC;IACxF,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAU,CAAC;IAErC,IAAM,QAAQ,GAAG;QACb,OAAO;YAAU,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAC3B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC9B,QAAQ,wCAAI,IAAI,WAAE;YACtB,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,cAAM,OAAA,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAA3B,CAA2B,EAAjC,CAAiC,EAAE,EAAE,CAAC,CAAC;IAC7D,2FAA2F;IAC3F,OAAO,KAAK,CAAC,OAAO,CAAC,cAAM,OAAA,QAAQ,EAAE,EAAV,CAAU,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { VirtualTableColumn } from "
|
|
2
|
+
import type { VirtualTableColumn } from "../type";
|
|
3
3
|
interface Props<RowType extends object> {
|
|
4
4
|
headersRef: React.RefObject<HTMLDivElement>;
|
|
5
5
|
scrollContentRef: React.RefObject<HTMLDivElement>;
|
|
@@ -9,6 +9,9 @@ interface Props<RowType extends object> {
|
|
|
9
9
|
export declare const useLayout: <RowType extends object>({ headersRef, scrollContentRef, isScrollable, columns }: Props<RowType>) => {
|
|
10
10
|
columnWidths: number[];
|
|
11
11
|
scrollBarSize: number;
|
|
12
|
-
stickyPosition: Record<number, import("
|
|
12
|
+
stickyPosition: Record<number, import("../type").StickyPosition>;
|
|
13
|
+
isScrollToEdge: () => void;
|
|
14
|
+
isScrollToLeft: boolean;
|
|
15
|
+
isScrollToRight: boolean;
|
|
13
16
|
};
|
|
14
17
|
export {};
|
|
@@ -3,13 +3,16 @@ import { useDebounce } from "./useDebounce";
|
|
|
3
3
|
import { useScrollBarSize } from "./useScrollBarSize";
|
|
4
4
|
import { useColumnWidths } from "./useColumnWidths";
|
|
5
5
|
import { useStickyPosition } from "./useStickyPosition";
|
|
6
|
+
import { useScrollToEdge } from "./useScrollToEdge";
|
|
6
7
|
export var useLayout = function (_a) {
|
|
7
8
|
var headersRef = _a.headersRef, scrollContentRef = _a.scrollContentRef, isScrollable = _a.isScrollable, columns = _a.columns;
|
|
8
9
|
var _b = useColumnWidths(headersRef), calculateColWidths = _b.calculateColWidths, columnWidths = _b.columnWidths;
|
|
9
10
|
var _c = useScrollBarSize(scrollContentRef, isScrollable), calculateScrollBarSize = _c.calculateScrollBarSize, scrollBarSize = _c.scrollBarSize;
|
|
11
|
+
var _d = useScrollToEdge(scrollContentRef), isScrollToEdge = _d.isScrollToEdge, isScrollToLeft = _d.isScrollToLeft, isScrollToRight = _d.isScrollToRight;
|
|
10
12
|
var stickyPosition = useStickyPosition(columns, columnWidths);
|
|
11
13
|
var debouncedCalculateColWidths = useDebounce(calculateColWidths);
|
|
12
14
|
var debouncedCalculateScrollBarSize = useDebounce(calculateScrollBarSize);
|
|
15
|
+
var debouncedIsScrollToEdge = useDebounce(isScrollToEdge);
|
|
13
16
|
var handler = React.useCallback(function (event) {
|
|
14
17
|
if (event.currentTarget && "querySelector" in event.currentTarget && headersRef.current) {
|
|
15
18
|
var element = event.currentTarget;
|
|
@@ -17,9 +20,10 @@ export var useLayout = function (_a) {
|
|
|
17
20
|
if (result) {
|
|
18
21
|
debouncedCalculateColWidths();
|
|
19
22
|
debouncedCalculateScrollBarSize();
|
|
23
|
+
debouncedIsScrollToEdge();
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
|
-
}, [debouncedCalculateColWidths, debouncedCalculateScrollBarSize, headersRef]);
|
|
26
|
+
}, [debouncedCalculateColWidths, debouncedCalculateScrollBarSize, headersRef, debouncedIsScrollToEdge]);
|
|
23
27
|
React.useEffect(function () {
|
|
24
28
|
document.body.addEventListener("transitionend", handler);
|
|
25
29
|
document.body.addEventListener("animationend", handler);
|
|
@@ -32,6 +36,9 @@ export var useLayout = function (_a) {
|
|
|
32
36
|
columnWidths: columnWidths,
|
|
33
37
|
scrollBarSize: scrollBarSize,
|
|
34
38
|
stickyPosition: stickyPosition,
|
|
39
|
+
isScrollToEdge: isScrollToEdge,
|
|
40
|
+
isScrollToLeft: isScrollToLeft,
|
|
41
|
+
isScrollToRight: isScrollToRight,
|
|
35
42
|
};
|
|
36
43
|
};
|
|
37
44
|
//# sourceMappingURL=useLayout.js.map
|