@pinnacle0/web-ui 0.3.17 → 0.3.18-beta0
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 +80 -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 +33 -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 +12 -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 +28 -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,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { FooterData } from "../type";
|
|
3
|
+
import type { ItemRenderer, Measure } from "./type";
|
|
4
|
+
export interface Gap {
|
|
5
|
+
top?: number;
|
|
6
|
+
bottom?: number;
|
|
7
|
+
left?: number;
|
|
8
|
+
right?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ListItemProps<T> {
|
|
11
|
+
measure: Measure;
|
|
12
|
+
data: (T | FooterData)[];
|
|
13
|
+
index: number;
|
|
14
|
+
itemRenderer: ItemRenderer<T>;
|
|
15
|
+
gap?: Gap;
|
|
16
|
+
}
|
|
17
|
+
export declare const Item: <T>(props: ListItemProps<T>) => JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
import React from "react";
|
|
13
|
+
import { Footer } from "../shared/Footer";
|
|
14
|
+
export var Item = function (props) {
|
|
15
|
+
var data = props.data, index = props.index, ItemRenderer = props.itemRenderer, gap = props.gap, measure = props.measure;
|
|
16
|
+
var padding = React.useMemo(function () { return (gap ? { paddingLeft: gap.left, paddingRight: gap.right, paddingBottom: gap.bottom, paddingTop: gap.top } : {}); }, [gap]);
|
|
17
|
+
if (index === data.length - 1) {
|
|
18
|
+
var _a = data[index], loading = _a.loading, loadingMessage = _a.loadingMessage, endMessage = _a.endMessage, ended = _a.ended;
|
|
19
|
+
return React.createElement(Footer, { loading: loading, ended: ended, loadingMessage: loadingMessage, endMessage: endMessage, measure: measure });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return (React.createElement("div", { className: "g-virtual-flat-list-item", style: __assign({}, padding) },
|
|
23
|
+
React.createElement(ItemRenderer, { data: data[index], index: index, measure: measure })));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=Item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../src/core/FlatList/VirtualFlatList/Item.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAmBxC,MAAM,CAAC,IAAM,IAAI,GAAG,UAAa,KAAuB;IAC7C,IAAA,IAAI,GAAqD,KAAK,KAA1D,EAAE,KAAK,GAA8C,KAAK,MAAnD,EAAgB,YAAY,GAAkB,KAAK,aAAvB,EAAE,GAAG,GAAa,KAAK,IAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IAEtE,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAA2B,OAAA,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAA7G,CAA6G,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/K,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,IAAA,KAA+C,IAAI,CAAC,KAAK,CAAe,EAAvE,OAAO,aAAA,EAAE,cAAc,oBAAA,EAAE,UAAU,gBAAA,EAAE,KAAK,WAA6B,CAAC;QAC/E,OAAO,oBAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;KAC/H;SAAM;QACH,OAAO,CACH,6BAAK,SAAS,EAAC,0BAA0B,EAAC,KAAK,eAAM,OAAO;YACxD,oBAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CACtE,CACT,CAAC;KACL;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ItemRenderer } from "./type";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export interface Props<T> {
|
|
5
|
+
data: T[];
|
|
6
|
+
renderItem: ItemRenderer<T>;
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
onPullUpLoading?: () => void;
|
|
11
|
+
onPullDownRefresh?: () => void;
|
|
12
|
+
autoLoad?: boolean | number;
|
|
13
|
+
overscan?: number;
|
|
14
|
+
emptyPlaceholder?: string | React.ReactElement;
|
|
15
|
+
contentStyle?: React.CSSProperties;
|
|
16
|
+
gap?: {
|
|
17
|
+
top?: number;
|
|
18
|
+
bottom?: number;
|
|
19
|
+
left?: number;
|
|
20
|
+
right?: number;
|
|
21
|
+
};
|
|
22
|
+
bounceEffect?: boolean;
|
|
23
|
+
pullUpLoadingMessage?: string;
|
|
24
|
+
endOfListMessage?: string;
|
|
25
|
+
pullDownRefreshMessage?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* VirtualizedFlatList currently only work with item without and size related animation and transition since it break the layout. This will be improve in the future
|
|
29
|
+
*/
|
|
30
|
+
export declare function VirtualFlatList<T>(props: Props<T>): JSX.Element;
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
18
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
19
|
+
if (ar || !(i in from)) {
|
|
20
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
21
|
+
ar[i] = from[i];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
|
+
};
|
|
26
|
+
import React from "react";
|
|
27
|
+
import { defaultRangeExtractor, useVirtual } from "react-virtual";
|
|
28
|
+
import { Item } from "./Item";
|
|
29
|
+
import { Wrapper } from "../shared/Wrapper";
|
|
30
|
+
import "./index.less";
|
|
31
|
+
/**
|
|
32
|
+
* VirtualizedFlatList currently only work with item without and size related animation and transition since it break the layout. This will be improve in the future
|
|
33
|
+
*/
|
|
34
|
+
export function VirtualFlatList(props) {
|
|
35
|
+
var data = props.data, renderItem = props.renderItem, _a = props.loading, loading = _a === void 0 ? false : _a, className = props.className, style = props.style, onPullDownRefresh = props.onPullDownRefresh, onPullUpLoading = props.onPullUpLoading, emptyPlaceholder = props.emptyPlaceholder, contentStyle = props.contentStyle, gap = props.gap, _b = props.autoLoad, autoLoad = _b === void 0 ? true : _b, _c = props.overscan, overscan = _c === void 0 ? 3 : _c, _d = props.bounceEffect, bounceEffect = _d === void 0 ? true : _d, pullUpLoadingMessage = props.pullUpLoadingMessage, endOfListMessage = props.endOfListMessage, pullDownRefreshMessage = props.pullDownRefreshMessage;
|
|
36
|
+
var parentRef = React.useRef(null);
|
|
37
|
+
var _e = __read(React.useState(null), 2), loadingType = _e[0], setLoadingType = _e[1];
|
|
38
|
+
var currentRangeRef = React.useRef();
|
|
39
|
+
var previousRangeRef = React.useRef();
|
|
40
|
+
// the reason why onScroll event is used to simulate auto loading instead of rangeExtractor is rangeExtractor return a wrong range when on mount
|
|
41
|
+
var onAutoLoad = function () {
|
|
42
|
+
var previousRange = previousRangeRef.current;
|
|
43
|
+
var currentRange = currentRangeRef.current;
|
|
44
|
+
if (previousRange &&
|
|
45
|
+
currentRange &&
|
|
46
|
+
autoLoad &&
|
|
47
|
+
onPullUpLoading &&
|
|
48
|
+
!loading &&
|
|
49
|
+
// check going downward
|
|
50
|
+
previousRange.end < currentRange.end &&
|
|
51
|
+
currentRange.end > data.length - 2 - (typeof autoLoad === "number" ? autoLoad : 3)) {
|
|
52
|
+
onPullUpLoading();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var rangeExtractor = React.useCallback(function (range) {
|
|
56
|
+
var _a;
|
|
57
|
+
previousRangeRef.current = (_a = currentRangeRef.current) !== null && _a !== void 0 ? _a : range;
|
|
58
|
+
currentRangeRef.current = range;
|
|
59
|
+
return defaultRangeExtractor(range);
|
|
60
|
+
}, []);
|
|
61
|
+
var listData = React.useMemo(function () { return __spreadArray(__spreadArray([], __read(data), false), [{ loading: loading && loadingType === "loading", ended: !onPullUpLoading, endMessage: endOfListMessage, loadingMessage: pullUpLoadingMessage }], false); }, [loading, loadingType, endOfListMessage, onPullUpLoading, pullUpLoadingMessage, data]);
|
|
62
|
+
var rowVirtualizer = useVirtual({
|
|
63
|
+
size: listData.length,
|
|
64
|
+
parentRef: parentRef,
|
|
65
|
+
overscan: overscan,
|
|
66
|
+
rangeExtractor: rangeExtractor,
|
|
67
|
+
});
|
|
68
|
+
var rowVirtualizerRef = React.useRef(rowVirtualizer);
|
|
69
|
+
rowVirtualizerRef.current = rowVirtualizer;
|
|
70
|
+
React.useEffect(function () {
|
|
71
|
+
rowVirtualizerRef.current.measure();
|
|
72
|
+
}, [data]);
|
|
73
|
+
// TODO/Alvis loading more when item can not fill the whole viewport
|
|
74
|
+
return (React.createElement(Wrapper, { bounceEffect: bounceEffect, contentRef: parentRef, loading: loading, className: "g-virtual-flat-list", innerStyle: contentStyle, style: style, onPullDownRefresh: onPullDownRefresh, onPullUpLoading: onPullUpLoading, onLoadingTypeChange: setLoadingType, pullDownRefreshMessage: pullDownRefreshMessage }, data.length === 0 ? (emptyPlaceholder) : (React.createElement("div", { className: "list-wrapper", ref: parentRef, onScroll: onAutoLoad },
|
|
75
|
+
React.createElement("div", { className: "list", style: { height: rowVirtualizer.totalSize } }, rowVirtualizer.virtualItems.map(function (virtualItem) {
|
|
76
|
+
return (React.createElement("div", { key: virtualItem.index, className: "g-virtual-flat-list-item-wrapper", style: { transform: "translateY(".concat(virtualItem.start, "px)") }, ref: virtualItem.measureRef },
|
|
77
|
+
React.createElement(Item, { data: listData, index: virtualItem.index, itemRenderer: renderItem, measure: virtualItem.measureRef, gap: gap })));
|
|
78
|
+
}))))));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/FlatList/VirtualFlatList/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
.g-virtual-flat-list {
|
|
2
|
+
.list-wrapper {
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 100%;
|
|
5
|
+
|
|
6
|
+
.list {
|
|
7
|
+
width: 100%;
|
|
8
|
+
position: relative;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.g-virtual-flat-list-item-wrapper {
|
|
13
|
+
width: 100%;
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 0;
|
|
16
|
+
left: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.g-virtual-flat-list-item {
|
|
20
|
+
width: 100%;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { FlatListItemProps } from "../type";
|
|
3
|
+
export declare type Measure = (node: HTMLElement | null) => void;
|
|
4
|
+
export interface VirtualFlatListProps<T> extends FlatListItemProps<T> {
|
|
5
|
+
overscan?: number;
|
|
6
|
+
gap?: {
|
|
7
|
+
top?: number;
|
|
8
|
+
bottom?: number;
|
|
9
|
+
left?: number;
|
|
10
|
+
right?: number;
|
|
11
|
+
};
|
|
12
|
+
renderItem: ItemRenderer<T>;
|
|
13
|
+
}
|
|
14
|
+
export interface VirtualFlatListItemProps<T> extends FlatListItemProps<T> {
|
|
15
|
+
measure: Measure;
|
|
16
|
+
}
|
|
17
|
+
export declare type ItemRenderer<T> = React.FunctionComponent<VirtualFlatListItemProps<T>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../src/core/FlatList/VirtualFlatList/type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 classNames from "classnames";
|
|
19
|
+
import { Wrapper } from "./shared/Wrapper";
|
|
20
|
+
import { Footer } from "./shared/Footer";
|
|
21
|
+
export var FlatList = function (props) {
|
|
22
|
+
var data = props.data, ItemRenderer = props.renderItem,
|
|
23
|
+
// TODO/Alvis add auto load to flat list
|
|
24
|
+
autoLoad = props.autoLoad, _a = props.loading, loading = _a === void 0 ? false : _a, _b = props.bounceEffect, bounceEffect = _b === void 0 ? true : _b, className = props.className, style = props.style, onPullDownRefresh = props.onPullDownRefresh, onPullUpLoading = props.onPullUpLoading, pullDownRefreshMessage = props.pullDownRefreshMessage, pullUpLoadingMessage = props.pullUpLoadingMessage, contentStyle = props.contentStyle, emptyPlaceholder = props.emptyPlaceholder, endOfListMessage = props.endOfListMessage;
|
|
25
|
+
var contentRef = React.useRef(null);
|
|
26
|
+
var _c = __read(React.useState(null), 2), loadingType = _c[0], setLoadingType = _c[1];
|
|
27
|
+
return (React.createElement(Wrapper, { contentRef: contentRef, bounceEffect: bounceEffect, innerStyle: contentStyle, className: classNames("g-flat-list", className), style: style, onPullDownRefresh: onPullDownRefresh, onPullUpLoading: onPullUpLoading, loading: loading, onLoadingTypeChange: setLoadingType, pullDownRefreshMessage: pullDownRefreshMessage }, data.length === 0 ? (emptyPlaceholder) : (React.createElement("div", { className: "list", ref: contentRef },
|
|
28
|
+
data.map(function (d, i) {
|
|
29
|
+
return React.createElement(ItemRenderer, { data: d, index: i });
|
|
30
|
+
}),
|
|
31
|
+
React.createElement(Footer, { loading: loading && loadingType === "loading", ended: !onPullUpLoading, endMessage: endOfListMessage, loadingMessage: pullUpLoadingMessage })))));
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/FlatList/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAa,KAAuB;IAEpD,IAAA,IAAI,GAeJ,KAAK,KAfD,EACQ,YAAY,GAcxB,KAAK,WAdmB;IACxB,wCAAwC;IACxC,QAAQ,GAYR,KAAK,SAZG,EACR,KAWA,KAAK,QAXU,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,KAUA,KAAK,aAVc,EAAnB,YAAY,mBAAG,IAAI,KAAA,EACnB,SAAS,GAST,KAAK,UATI,EACT,KAAK,GAQL,KAAK,MARA,EACL,iBAAiB,GAOjB,KAAK,kBAPY,EACjB,eAAe,GAMf,KAAK,gBANU,EACf,sBAAsB,GAKtB,KAAK,uBALiB,EACtB,oBAAoB,GAIpB,KAAK,qBAJe,EACpB,YAAY,GAGZ,KAAK,aAHO,EACZ,gBAAgB,GAEhB,KAAK,iBAFW,EAChB,gBAAgB,GAChB,KAAK,iBADW,CACV;IAEV,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAChD,IAAA,KAAA,OAAgC,KAAK,CAAC,QAAQ,CAAc,IAAI,CAAC,IAAA,EAAhE,WAAW,QAAA,EAAE,cAAc,QAAqC,CAAC;IAExE,OAAO,CACH,oBAAC,OAAO,IACJ,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,EAC/C,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,cAAc,EACnC,sBAAsB,EAAE,sBAAsB,IAE7C,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACjB,gBAAgB,CACnB,CAAC,CAAC,CAAC,CACA,6BAAK,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,UAAU;QAChC,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC;YACX,OAAO,oBAAC,YAAY,IAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAI,CAAC;QAC/C,CAAC,CAAC;QACF,oBAAC,MAAM,IAAC,OAAO,EAAE,OAAO,IAAI,WAAW,KAAK,SAAS,EAAE,KAAK,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,GAAI,CACpJ,CACT,CACK,CACb,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Measure } from "../../VirtualFlatList/type";
|
|
3
|
+
import type { FooterData } from "../../type";
|
|
4
|
+
import "./index.less";
|
|
5
|
+
export interface Props extends FooterData {
|
|
6
|
+
measure?: Measure;
|
|
7
|
+
}
|
|
8
|
+
export declare const Footer: (props: Props) => JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spinner } from "../Spinner";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export var Footer = function (props) {
|
|
5
|
+
var loading = props.loading, ended = props.ended, loadingMessage = props.loadingMessage, endMessage = props.endMessage, measure = props.measure;
|
|
6
|
+
var measureRef = React.useRef(measure);
|
|
7
|
+
measureRef.current = measure;
|
|
8
|
+
return (React.createElement("div", { className: "g-flat-list-footer", ref: measure },
|
|
9
|
+
loading && React.createElement(Spinner, { loading: true, message: loadingMessage !== null && loadingMessage !== void 0 ? loadingMessage : "loading..." }),
|
|
10
|
+
ended && !loading && (endMessage !== null && endMessage !== void 0 ? endMessage : "All data loaded"),
|
|
11
|
+
!ended && !loading && "Pull up to loading more "));
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Footer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,cAAc,CAAC;AAMtB,MAAM,CAAC,IAAM,MAAM,GAAG,UAAC,KAAY;IACxB,IAAA,OAAO,GAAgD,KAAK,QAArD,EAAE,KAAK,GAAyC,KAAK,MAA9C,EAAE,cAAc,GAAyB,KAAK,eAA9B,EAAE,UAAU,GAAa,KAAK,WAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IACpE,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,OAAO,CACH,6BAAK,SAAS,EAAC,oBAAoB,EAAC,GAAG,EAAE,OAAO;QAC3C,OAAO,IAAI,oBAAC,OAAO,IAAC,OAAO,QAAC,OAAO,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,YAAY,GAAI;QACvE,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,iBAAiB,CAAC;QACtD,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,0BAA0B,CAC/C,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spin } from "../../../Spin";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export var Spinner = function (props) {
|
|
5
|
+
var loading = props.loading, message = props.message;
|
|
6
|
+
return (React.createElement("div", { className: "g-flat-list-spinner" },
|
|
7
|
+
React.createElement(Spin, { spinning: loading, size: "small" }),
|
|
8
|
+
React.createElement("div", { className: "message" }, message)));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Spinner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AACnC,OAAO,cAAc,CAAC;AAOtB,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAY;IACzB,IAAA,OAAO,GAAa,KAAK,QAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IACjC,OAAO,CACH,6BAAK,SAAS,EAAC,qBAAqB;QAChC,oBAAC,IAAI,IAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,GAAG;QACxC,6BAAK,SAAS,EAAC,SAAS,IAAE,OAAO,CAAO,CACtC,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spinner } from "../Spinner";
|
|
3
|
+
export var Loading = function (props) {
|
|
4
|
+
var loading = props.loading, message = props.message;
|
|
5
|
+
return (React.createElement("div", { className: "g-flat-list-loading" },
|
|
6
|
+
React.createElement(Spinner, { loading: loading, message: message !== null && message !== void 0 ? message : "Release to refresh" })));
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=Loading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Wrapper/Loading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AAOnC,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAY;IACzB,IAAA,OAAO,GAAa,KAAK,QAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IAEjC,OAAO,CACH,6BAAK,SAAS,EAAC,qBAAqB;QAChC,oBAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,oBAAoB,GAAI,CACrE,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { FlatListProps, LoadingType } from "../../type";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
interface Props<T> extends Pick<FlatListProps<T>, "loading" | "bounceEffect" | "onPullUpLoading" | "onPullDownRefresh" | "className" | "style" | "pullDownRefreshMessage"> {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
contentRef: React.MutableRefObject<HTMLElement | null>;
|
|
7
|
+
onLoadingTypeChange?: (type: LoadingType) => void;
|
|
8
|
+
innerClassName?: string;
|
|
9
|
+
innerStyle?: React.CSSProperties;
|
|
10
|
+
}
|
|
11
|
+
export declare const Wrapper: <T>(props: Props<T>) => JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -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 { Direction } from "../../../../hooks/useSwipe";
|
|
30
|
+
import { useTransform } from "../../../../hooks/useTransform";
|
|
31
|
+
import { useBounceSwipe } from "../hooks/useBounceSwipe";
|
|
32
|
+
import { useElementScrollState } from "../hooks/useElementScrollState";
|
|
33
|
+
import { PULL_DOWN_REFRESH_THRESHOLD } from "../../type";
|
|
34
|
+
import { Loading } from "./Loading";
|
|
35
|
+
import { useLoadingWithDelay } from "../hooks/useLoadingWithDelay";
|
|
36
|
+
import "./index.less";
|
|
37
|
+
export var Wrapper = function (props) {
|
|
38
|
+
var children = props.children, bounceEffect = props.bounceEffect, _a = props.loading, loading = _a === void 0 ? false : _a, contentRef = props.contentRef, onPullDownRefresh = props.onPullDownRefresh, onPullUpLoading = props.onPullUpLoading, className = props.className, innerClassName = props.innerClassName, style = props.style, innerStyle = props.innerStyle, pullDownRefreshMessage = props.pullDownRefreshMessage, onLoadingTypeChange = props.onLoadingTypeChange;
|
|
39
|
+
var startOffsetRef = React.useRef(0);
|
|
40
|
+
var animatedRef = React.useRef(null);
|
|
41
|
+
var loadingWithDelay = useLoadingWithDelay(loading, 250);
|
|
42
|
+
var _b = __read(React.useState(null), 2), loadingType = _b[0], setLoadingType = _b[1];
|
|
43
|
+
var loadingTypeRef = React.useRef(null);
|
|
44
|
+
loadingTypeRef.current = loadingType;
|
|
45
|
+
var onLoadingTypeChangeRef = React.useRef(onLoadingTypeChange);
|
|
46
|
+
onLoadingTypeChangeRef.current = onLoadingTypeChange;
|
|
47
|
+
var isScrollable = useElementScrollState(contentRef).isScrollable;
|
|
48
|
+
var transit = useTransform(animatedRef);
|
|
49
|
+
var transitRef = React.useRef(transit);
|
|
50
|
+
transitRef.current = transit;
|
|
51
|
+
var reset = React.useCallback(function () {
|
|
52
|
+
startOffsetRef.current = 0;
|
|
53
|
+
}, []);
|
|
54
|
+
var handlers = useBounceSwipe({
|
|
55
|
+
axis: "vertical",
|
|
56
|
+
contentRef: contentRef,
|
|
57
|
+
animatedRef: animatedRef,
|
|
58
|
+
onStart: function (_a) {
|
|
59
|
+
var _b = __read(_a.delta, 2), y = _b[1];
|
|
60
|
+
startOffsetRef.current = y;
|
|
61
|
+
},
|
|
62
|
+
onEnd: function (_a) {
|
|
63
|
+
var delta = _a.delta, direction = _a.direction, boundary = _a.boundary;
|
|
64
|
+
if (loadingWithDelay) {
|
|
65
|
+
if (boundary !== "upper") {
|
|
66
|
+
transit.to({
|
|
67
|
+
y: PULL_DOWN_REFRESH_THRESHOLD,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (Math.abs(startOffsetRef.current - delta[1]) >= PULL_DOWN_REFRESH_THRESHOLD) {
|
|
73
|
+
var scrollable = isScrollable("vertical");
|
|
74
|
+
if (boundary === "upper" || (!scrollable && direction === Direction.DOWN)) {
|
|
75
|
+
setLoadingType("refresh");
|
|
76
|
+
onPullDownRefresh === null || onPullDownRefresh === void 0 ? void 0 : onPullDownRefresh();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
setLoadingType("loading");
|
|
80
|
+
onPullUpLoading === null || onPullUpLoading === void 0 ? void 0 : onPullUpLoading();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
reset();
|
|
85
|
+
},
|
|
86
|
+
onCancel: reset,
|
|
87
|
+
});
|
|
88
|
+
React.useEffect(function () {
|
|
89
|
+
if (loadingWithDelay) {
|
|
90
|
+
if (loadingTypeRef.current === "refresh") {
|
|
91
|
+
transitRef.current.to({
|
|
92
|
+
y: PULL_DOWN_REFRESH_THRESHOLD,
|
|
93
|
+
immediate: false,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
transitRef.current.clear();
|
|
99
|
+
setLoadingType(null);
|
|
100
|
+
}
|
|
101
|
+
}, [loadingWithDelay]);
|
|
102
|
+
React.useEffect(function () {
|
|
103
|
+
var _a;
|
|
104
|
+
(_a = onLoadingTypeChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onLoadingTypeChangeRef, loadingType);
|
|
105
|
+
}, [loadingType]);
|
|
106
|
+
return (React.createElement("div", __assign({ className: "g-flat-list-wrapper".concat(className ? " ".concat(className) : ""), style: style }, (bounceEffect ? handlers : {})),
|
|
107
|
+
React.createElement("div", { className: "inner-container".concat(innerClassName ? " ".concat(innerClassName) : ""), style: innerStyle, ref: animatedRef },
|
|
108
|
+
React.createElement(Loading, { loading: loadingWithDelay && loadingType === "refresh", message: pullDownRefreshMessage }),
|
|
109
|
+
children)));
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Wrapper/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
.g-flat-list-wrapper {
|
|
2
|
+
flex: 1;
|
|
3
|
+
overflow: hidden;
|
|
4
|
+
position: relative;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-flow: column;
|
|
7
|
+
will-change: contents;
|
|
8
|
+
|
|
9
|
+
.inner-container {
|
|
10
|
+
flex: 1;
|
|
11
|
+
transition: all 300ms cubic-bezier(0, 0.61, 0.28, 1.22);
|
|
12
|
+
max-height: 100%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.g-flat-list-loading {
|
|
16
|
+
width: 100%;
|
|
17
|
+
padding: 8px;
|
|
18
|
+
display: flex;
|
|
19
|
+
justify-content: center;
|
|
20
|
+
align-items: center;
|
|
21
|
+
position: fixed;
|
|
22
|
+
left: 0;
|
|
23
|
+
min-height: 50px;
|
|
24
|
+
will-change: transform;
|
|
25
|
+
transform: translateY(-100%);
|
|
26
|
+
z-index: 2;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SwipeHookResult, SwipeState } from "../../../../hooks/useSwipe";
|
|
3
|
+
export declare type Boundary = "upper" | "lower" | null;
|
|
4
|
+
interface BounceSwipeState extends SwipeState {
|
|
5
|
+
boundary: Boundary;
|
|
6
|
+
}
|
|
7
|
+
export declare type BounceSwipeHandler = (state: BounceSwipeState) => void;
|
|
8
|
+
declare type BounceSwipeHookResult = SwipeHookResult;
|
|
9
|
+
interface BounceSwipeHandlers {
|
|
10
|
+
onMove?: BounceSwipeHandler;
|
|
11
|
+
onStart?: BounceSwipeHandler;
|
|
12
|
+
onEnd?: BounceSwipeHandler;
|
|
13
|
+
onCancel?: BounceSwipeHandler;
|
|
14
|
+
}
|
|
15
|
+
interface BounceSwipeOption extends BounceSwipeHandlers {
|
|
16
|
+
axis: "vertical" | "horizontal";
|
|
17
|
+
contentRef: React.RefObject<HTMLElement>;
|
|
18
|
+
animatedRef: React.RefObject<HTMLElement>;
|
|
19
|
+
baseOffset?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const useBounceSwipe: (options: BounceSwipeOption) => BounceSwipeHookResult;
|
|
22
|
+
export {};
|