@pinnacle0/web-ui 0.3.69 → 0.3.71
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/ResizeObserverPolyfill.d.ts +1 -0
- package/core/ResizeObserverPolyfill.js +53 -0
- package/core/ResizeObserverPolyfill.js.map +1 -0
- package/core/VirtualList.d.ts +25 -0
- package/core/VirtualList.js +49 -0
- package/core/VirtualList.js.map +1 -0
- package/core/VirtualTable/TableHeader.d.ts +4 -7
- package/core/VirtualTable/TableHeader.js +8 -35
- package/core/VirtualTable/TableHeader.js.map +1 -1
- package/core/VirtualTable/TableRow.d.ts +5 -10
- package/core/VirtualTable/TableRow.js +21 -30
- package/core/VirtualTable/TableRow.js.map +1 -1
- package/core/VirtualTable/hooks/useColumns.d.ts +32 -0
- package/core/VirtualTable/hooks/useColumns.js +112 -0
- package/core/VirtualTable/hooks/useColumns.js.map +1 -0
- package/core/VirtualTable/hooks/useScroll.d.ts +17 -0
- package/core/VirtualTable/hooks/useScroll.js +57 -0
- package/core/VirtualTable/hooks/useScroll.js.map +1 -0
- package/core/VirtualTable/index.d.ts +5 -7
- package/core/VirtualTable/index.js +38 -72
- package/core/VirtualTable/index.js.map +1 -1
- package/core/VirtualTable/index.less +18 -18
- package/core/VirtualTable/type.d.ts +0 -13
- package/{core/VirtualTable/hooks → hooks}/useDebounce.d.ts +0 -0
- package/{core/VirtualTable/hooks → hooks}/useDebounce.js +0 -0
- package/hooks/useDebounce.js.map +1 -0
- package/package.json +3 -1
- package/core/VirtualTable/hooks/useColumnWidths.d.ts +0 -11
- package/core/VirtualTable/hooks/useColumnWidths.js +0 -38
- package/core/VirtualTable/hooks/useColumnWidths.js.map +0 -1
- package/core/VirtualTable/hooks/useDebounce.js.map +0 -1
- package/core/VirtualTable/hooks/useLayout.d.ts +0 -17
- package/core/VirtualTable/hooks/useLayout.js +0 -44
- package/core/VirtualTable/hooks/useLayout.js.map +0 -1
- package/core/VirtualTable/hooks/useRowExpand.d.ts +0 -7
- package/core/VirtualTable/hooks/useRowExpand.js +0 -20
- package/core/VirtualTable/hooks/useRowExpand.js.map +0 -1
- package/core/VirtualTable/hooks/useScrollBarSize.d.ts +0 -5
- package/core/VirtualTable/hooks/useScrollBarSize.js +0 -36
- package/core/VirtualTable/hooks/useScrollBarSize.js.map +0 -1
- package/core/VirtualTable/hooks/useScrollToEdge.d.ts +0 -8
- package/core/VirtualTable/hooks/useScrollToEdge.js +0 -48
- package/core/VirtualTable/hooks/useScrollToEdge.js.map +0 -1
- package/core/VirtualTable/hooks/useStickyPosition.d.ts +0 -2
- package/core/VirtualTable/hooks/useStickyPosition.js +0 -24
- package/core/VirtualTable/hooks/useStickyPosition.js.map +0 -1
- package/core/VirtualTable/hooks/useTransformColumn.d.ts +0 -11
- package/core/VirtualTable/hooks/useTransformColumn.js +0 -9
- package/core/VirtualTable/hooks/useTransformColumn.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
38
|
+
var module_1;
|
|
39
|
+
return __generator(this, function (_a) {
|
|
40
|
+
switch (_a.label) {
|
|
41
|
+
case 0:
|
|
42
|
+
if (!("ResizeObserver" in window === false)) return [3 /*break*/, 2];
|
|
43
|
+
return [4 /*yield*/, import("@juggle/resize-observer")];
|
|
44
|
+
case 1:
|
|
45
|
+
module_1 = _a.sent();
|
|
46
|
+
window.ResizeObserver = module_1.ResizeObserver;
|
|
47
|
+
_a.label = 2;
|
|
48
|
+
case 2: return [2 /*return*/];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}); })();
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=ResizeObserverPolyfill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizeObserverPolyfill.js","sourceRoot":"","sources":["../../src/core/ResizeObserverPolyfill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,CAAC;;;;;qBACO,CAAA,gBAAgB,IAAI,MAAM,KAAK,KAAK,CAAA,EAApC,wBAAoC;gBAErB,qBAAM,MAAM,CAAC,yBAAyB,CAAC,EAAA;;gBAAhD,WAAS,SAAuC;gBACtD,MAAM,CAAC,cAAc,GAAG,QAAM,CAAC,cAAc,CAAC;;;;;KAErD,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { VirtualizerOptions } from "@tanstack/react-virtual";
|
|
2
|
+
import type { ComponentType } from "react";
|
|
3
|
+
import type { StringKey } from "../internal/type";
|
|
4
|
+
declare type Direction = "horizontal" | "vertical";
|
|
5
|
+
export interface ItemProps<T extends object> {
|
|
6
|
+
index: number;
|
|
7
|
+
data: T;
|
|
8
|
+
measure: (element: HTMLElement | null) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface Props<T extends object> {
|
|
11
|
+
initialRect?: {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
data: T[];
|
|
16
|
+
renderData: ComponentType<ItemProps<T>>;
|
|
17
|
+
rowKey?: StringKey<T> | "index";
|
|
18
|
+
direction?: Direction;
|
|
19
|
+
fixedSize?: (index: number) => number;
|
|
20
|
+
overscan?: number;
|
|
21
|
+
observeElementRect?: VirtualizerOptions<HTMLElement | null, HTMLElement>["observeElementRect"];
|
|
22
|
+
observeElementOffset?: VirtualizerOptions<HTMLElement | null, HTMLElement>["observeElementOffset"];
|
|
23
|
+
}
|
|
24
|
+
export declare function VirtualList<T extends object>({ data, rowKey, direction, renderData, overscan, initialRect, observeElementOffset, fixedSize, observeElementRect, }: Props<T>): JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { useVirtualizer, observeElementOffset as defaultObserveElementOffset, observeElementRect as defaultObserveElementRect } from "@tanstack/react-virtual";
|
|
14
|
+
var DEFAULT_ITEM_SIZE = 100;
|
|
15
|
+
export function VirtualList(_a) {
|
|
16
|
+
var data = _a.data, _b = _a.rowKey, rowKey = _b === void 0 ? "index" : _b, _c = _a.direction, direction = _c === void 0 ? "vertical" : _c, renderData = _a.renderData, _d = _a.overscan, overscan = _d === void 0 ? 5 : _d, _e = _a.initialRect, initialRect = _e === void 0 ? { width: 0, height: 0 } : _e, observeElementOffset = _a.observeElementOffset, fixedSize = _a.fixedSize, observeElementRect = _a.observeElementRect;
|
|
17
|
+
var Item = renderData;
|
|
18
|
+
var parentRef = React.useRef(null);
|
|
19
|
+
var horizontal = direction === "horizontal";
|
|
20
|
+
var sizeStyle = horizontal ? { height: "100%" } : { width: "100%" };
|
|
21
|
+
var virtualizer = useVirtualizer({
|
|
22
|
+
initialRect: initialRect,
|
|
23
|
+
horizontal: horizontal,
|
|
24
|
+
count: data.length,
|
|
25
|
+
getScrollElement: function () { return parentRef.current; },
|
|
26
|
+
estimateSize: fixedSize !== null && fixedSize !== void 0 ? fixedSize : (function () { return DEFAULT_ITEM_SIZE; }),
|
|
27
|
+
observeElementOffset: observeElementOffset !== null && observeElementOffset !== void 0 ? observeElementOffset : defaultObserveElementOffset,
|
|
28
|
+
observeElementRect: observeElementRect !== null && observeElementRect !== void 0 ? observeElementRect : defaultObserveElementRect,
|
|
29
|
+
overscan: overscan,
|
|
30
|
+
});
|
|
31
|
+
var virtualizerRef = React.useRef(virtualizer);
|
|
32
|
+
virtualizerRef.current = virtualizer;
|
|
33
|
+
// TODO/Alvis: This is temporary fix of issue: https://github.com/TanStack/virtual/issues/363, please remove the code after update
|
|
34
|
+
React.useLayoutEffect(function () {
|
|
35
|
+
var v = virtualizerRef.current;
|
|
36
|
+
v._didMount()();
|
|
37
|
+
v._willUpdate();
|
|
38
|
+
}, [data.length]);
|
|
39
|
+
var getItemKey = function (index) { return (rowKey === "index" ? index : data[index][rowKey]); };
|
|
40
|
+
return (React.createElement("div", { className: "g-virtual-list", ref: parentRef, style: { width: "100%", height: "100%", overflow: "auto" } },
|
|
41
|
+
React.createElement("div", { className: "g-virtual-list-inner", style: {
|
|
42
|
+
height: horizontal ? "100%" : virtualizer.getTotalSize(),
|
|
43
|
+
width: horizontal ? virtualizer.getTotalSize() : "100%",
|
|
44
|
+
position: "relative",
|
|
45
|
+
} }, virtualizer.getVirtualItems().map(function (virtualRow) { return (React.createElement("div", { className: "g-virtual-list-item", key: getItemKey(virtualRow.index), style: __assign({ position: "absolute", top: 0, left: 0, transform: horizontal ? "translateX(".concat(virtualRow.start, "px)") : "translateY(".concat(virtualRow.start, "px)") }, sizeStyle) },
|
|
46
|
+
React.createElement("div", { className: "g-virtual-list-item-wrapper", ref: virtualRow.measureElement, style: __assign({}, sizeStyle) },
|
|
47
|
+
React.createElement(Item, { data: data[virtualRow.index], index: virtualRow.index, measure: virtualRow.measureElement })))); }))));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=VirtualList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualList.js","sourceRoot":"","sources":["../../src/core/VirtualList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type {
|
|
2
|
+
import type { VirtualTableColumn, StickyPosition } from "./type";
|
|
3
3
|
interface Props<RowType extends object> {
|
|
4
|
-
|
|
4
|
+
headerRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
5
5
|
headerHeight: number;
|
|
6
6
|
columns: VirtualTableColumn<RowType>[];
|
|
7
|
-
|
|
8
|
-
getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
|
|
7
|
+
stickyPositionMap: Record<number, StickyPosition>;
|
|
9
8
|
}
|
|
10
|
-
export declare const TableHeader:
|
|
11
|
-
displayName: string;
|
|
12
|
-
};
|
|
9
|
+
export declare const TableHeader: <RowType extends object>({ headerRef, headerHeight, columns, stickyPositionMap }: Props<RowType>) => JSX.Element;
|
|
13
10
|
export {};
|
|
@@ -1,45 +1,18 @@
|
|
|
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
1
|
import React from "react";
|
|
2
|
+
import { ReactUtil } from "../../util/ReactUtil";
|
|
27
3
|
import { classNames } from "../../util/ClassNames";
|
|
28
|
-
export var TableHeader =
|
|
29
|
-
var
|
|
30
|
-
return (React.createElement("div", { className: "table-headers", ref:
|
|
31
|
-
var _b;
|
|
4
|
+
export var TableHeader = ReactUtil.memo("TableHeader", function (_a) {
|
|
5
|
+
var headerRef = _a.headerRef, headerHeight = _a.headerHeight, columns = _a.columns, stickyPositionMap = _a.stickyPositionMap;
|
|
6
|
+
return (React.createElement("div", { className: "table-headers", ref: headerRef, style: { height: headerHeight, width: scrollX || "100%" } }, columns.map(function (_a, columnIndex) {
|
|
32
7
|
var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
|
|
33
|
-
var
|
|
34
|
-
return (React.createElement("div", { className: classNames
|
|
8
|
+
var stickyPosition = stickyPositionMap[columnIndex];
|
|
9
|
+
return (React.createElement("div", { className: classNames("table-header", { fixed: fixed, left: fixed === "left", right: fixed === "right", last: stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.isLast }), key: columnIndex, style: {
|
|
35
10
|
display: display !== "hidden" ? "flex" : "none",
|
|
36
11
|
flex: "1 0 ".concat(width, "px"),
|
|
37
12
|
textAlign: align,
|
|
38
|
-
left: fixed === "left" ?
|
|
39
|
-
right: fixed === "right" ?
|
|
13
|
+
left: fixed === "left" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
|
|
14
|
+
right: fixed === "right" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
|
|
40
15
|
} }, title));
|
|
41
16
|
})));
|
|
42
|
-
}, {
|
|
43
|
-
displayName: "TableHeader",
|
|
44
17
|
});
|
|
45
18
|
//# sourceMappingURL=TableHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAUjD,MAAM,CAAC,IAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,UAAkC,EAAqE;QAApE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAA,EAAE,iBAAiB,uBAAA;IAC3I,OAAO,CACH,6BAAK,SAAS,EAAC,eAAe,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,EAAC,IACjG,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,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACtD,OAAO,CACH,6BACI,SAAS,EAAE,UAAU,CAAC,cAAc,EAAE,EAAC,KAAK,OAAA,EAAE,IAAI,EAAE,KAAK,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE,IAAI,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,EAAC,CAAC,EAC9H,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,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC1D,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,CAAC,CAAC,SAAS;aAC/D,IAEA,KAAK,CACJ,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { VirtualItem } from "react-virtual";
|
|
3
|
-
import type {
|
|
2
|
+
import type { VirtualItem } from "@tanstack/react-virtual";
|
|
3
|
+
import type { VirtualTableColumn, StickyPosition } from "./type";
|
|
4
4
|
interface Props<RowType extends object> {
|
|
5
5
|
data: RowType;
|
|
6
6
|
columns: VirtualTableColumn<RowType>[];
|
|
7
|
-
virtualItem: VirtualItem
|
|
7
|
+
virtualItem: VirtualItem<HTMLDivElement>;
|
|
8
8
|
columnWidths: number[];
|
|
9
9
|
rowHeight: number;
|
|
10
|
-
lastShownColumnIndex: number;
|
|
11
10
|
scrollBarSize: number;
|
|
12
|
-
|
|
13
|
-
getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
|
|
11
|
+
stickyPositionMap: Record<number, StickyPosition>;
|
|
14
12
|
rowClassName?: string;
|
|
15
13
|
onRowClick?: (record: RowType, rowIndex: number) => void;
|
|
16
|
-
rowExpand?: VirtualTableRowExpand<RowType>;
|
|
17
14
|
}
|
|
18
|
-
export declare const TableRow:
|
|
19
|
-
displayName: string;
|
|
20
|
-
};
|
|
15
|
+
export declare const TableRow: <RowType extends object>({ virtualItem, data, columns, columnWidths, rowHeight, scrollBarSize, stickyPositionMap, rowClassName, onRowClick }: Props<RowType>) => JSX.Element;
|
|
21
16
|
export {};
|
|
@@ -24,36 +24,27 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
24
24
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
25
|
};
|
|
26
26
|
import React from "react";
|
|
27
|
+
import { ReactUtil } from "../../util/ReactUtil";
|
|
27
28
|
import { classNames } from "../../util/ClassNames";
|
|
28
|
-
export var TableRow =
|
|
29
|
-
var virtualItem = _a.virtualItem,
|
|
30
|
-
var rowRef = React.useRef(null);
|
|
31
|
-
var _b = __read(React.useState((rowExpand === null || rowExpand === void 0 ? void 0 : rowExpand.isDefaultExpanded) || false), 2), isExpanded = _b[0], setIsExpanded = _b[1];
|
|
29
|
+
export var TableRow = ReactUtil.memo("TableRow", function (_a) {
|
|
30
|
+
var virtualItem = _a.virtualItem, data = _a.data, columns = _a.columns, columnWidths = _a.columnWidths, rowHeight = _a.rowHeight, scrollBarSize = _a.scrollBarSize, stickyPositionMap = _a.stickyPositionMap, rowClassName = _a.rowClassName, onRowClick = _a.onRowClick;
|
|
32
31
|
var rowIndex = virtualItem.index;
|
|
33
|
-
var
|
|
34
|
-
React.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
|
|
52
|
-
textAlign: column.align,
|
|
53
|
-
left: column.fixed === "left" ? stickyPositionValue : undefined,
|
|
54
|
-
right: column.fixed === "right" ? stickyPositionValue - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
|
|
55
|
-
} }, renderData)));
|
|
56
|
-
}),
|
|
57
|
-
rowExpand && React.createElement("div", { className: classNames("expand-row", { expanded: isExpanded }) }, rowExpand.renderExpandRow(data, rowIndex))));
|
|
58
|
-
}, { displayName: "TableRow" });
|
|
32
|
+
var lastShownColumnIndex = React.useMemo(function () { return columns.length - 1 - __spreadArray([], __read(columns), false).reverse().findIndex(function (_) { return _.display !== "hidden"; }); }, [columns]);
|
|
33
|
+
return (React.createElement("div", { key: rowIndex, className: classNames("table-row", rowClassName, rowIndex % 2 ? "odd" : "even"), style: { transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data, rowIndex); } }, columns.map(function (column, columnIndex) {
|
|
34
|
+
var colSpan = column.colSpan ? column.colSpan(data, rowIndex, columnIndex) : 1;
|
|
35
|
+
// handle colspan > 1
|
|
36
|
+
var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
|
|
37
|
+
var renderData = column.display !== "hidden" && column.renderData(data, rowIndex);
|
|
38
|
+
// minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
|
|
39
|
+
var isLastShownColumn = lastShownColumnIndex === columnIndex;
|
|
40
|
+
var stickyPosition = stickyPositionMap[columnIndex];
|
|
41
|
+
return (renderData && (React.createElement("div", { className: classNames("table-cell", { fixed: column.fixed, left: column.fixed === "left", right: column.fixed === "right", last: stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.isLast }), key: columnIndex, style: {
|
|
42
|
+
height: rowHeight,
|
|
43
|
+
width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
|
|
44
|
+
textAlign: column.align,
|
|
45
|
+
left: column.fixed === "left" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
|
|
46
|
+
right: column.fixed === "right" ? (stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value) - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
|
|
47
|
+
} }, renderData)));
|
|
48
|
+
})));
|
|
49
|
+
});
|
|
59
50
|
//# 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;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { VirtualTableColumn, StickyPosition } from "../type";
|
|
3
|
+
interface Props<RowType extends object> {
|
|
4
|
+
columns: VirtualTableColumn<RowType>[];
|
|
5
|
+
scrollContentRef: React.RefObject<HTMLDivElement>;
|
|
6
|
+
isScrollable: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function useColumns<RowType extends object>({ columns, scrollContentRef, isScrollable }: Props<RowType>): {
|
|
9
|
+
columnWidths: number[];
|
|
10
|
+
getColumnWidths: () => void;
|
|
11
|
+
stickyPositionMap: Record<number, StickyPosition>;
|
|
12
|
+
scrollBarSize: number;
|
|
13
|
+
headerRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* If the Virtual Table is render inside a container with open animation e.g. <Modal />,
|
|
18
|
+
* the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
|
|
19
|
+
* useLayoutEffect will be trigged in the transition process and get the final correct column widths
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export declare const useColumnWidths: () => {
|
|
23
|
+
columnWidths: number[];
|
|
24
|
+
getColumnWidths: () => void;
|
|
25
|
+
headerRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
26
|
+
};
|
|
27
|
+
export declare const useStickyPosition: <RowType extends object>(columns: VirtualTableColumn<RowType>[], columnWidths: number[]) => Record<number, StickyPosition>;
|
|
28
|
+
export declare const useScrollBar: (scrollContentRef: React.RefObject<HTMLDivElement>) => {
|
|
29
|
+
scrollBarSize: number;
|
|
30
|
+
calculateScrollBarSize: () => void;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
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 { useDebounce } from "../../../hooks/useDebounce";
|
|
19
|
+
import { ArrayUtil } from "../../../internal/ArrayUtil";
|
|
20
|
+
export function useColumns(_a) {
|
|
21
|
+
var columns = _a.columns, scrollContentRef = _a.scrollContentRef, isScrollable = _a.isScrollable;
|
|
22
|
+
var _b = useColumnWidths(), columnWidths = _b.columnWidths, headerRef = _b.headerRef, getColumnWidths = _b.getColumnWidths;
|
|
23
|
+
var stickyPositionMap = useStickyPosition(columns, columnWidths);
|
|
24
|
+
var _c = useScrollBar(scrollContentRef), scrollBarSize = _c.scrollBarSize, calculateScrollBarSize = _c.calculateScrollBarSize;
|
|
25
|
+
var debouncedGetColumnWidths = useDebounce(getColumnWidths);
|
|
26
|
+
var debouncedCalculateScrollBarSize = useDebounce(calculateScrollBarSize);
|
|
27
|
+
var handler = React.useCallback(function (event) {
|
|
28
|
+
if (event.currentTarget && "querySelector" in event.currentTarget && headerRef.current) {
|
|
29
|
+
var element = event.currentTarget;
|
|
30
|
+
var result = element.querySelector(".g-virtual-table");
|
|
31
|
+
if (result) {
|
|
32
|
+
debouncedGetColumnWidths();
|
|
33
|
+
debouncedCalculateScrollBarSize();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, [headerRef, debouncedGetColumnWidths, debouncedCalculateScrollBarSize]);
|
|
37
|
+
React.useEffect(function () {
|
|
38
|
+
document.body.addEventListener("transitionend", handler);
|
|
39
|
+
document.body.addEventListener("animationend", handler);
|
|
40
|
+
return function () {
|
|
41
|
+
document.body.removeEventListener("transitionend", handler);
|
|
42
|
+
document.body.removeEventListener("animationend", handler);
|
|
43
|
+
};
|
|
44
|
+
}, [handler]);
|
|
45
|
+
React.useEffect(function () {
|
|
46
|
+
calculateScrollBarSize();
|
|
47
|
+
}, [isScrollable, columnWidths, calculateScrollBarSize]);
|
|
48
|
+
return {
|
|
49
|
+
columnWidths: columnWidths,
|
|
50
|
+
getColumnWidths: getColumnWidths,
|
|
51
|
+
stickyPositionMap: stickyPositionMap,
|
|
52
|
+
scrollBarSize: scrollBarSize,
|
|
53
|
+
headerRef: headerRef,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* If the Virtual Table is render inside a container with open animation e.g. <Modal />,
|
|
59
|
+
* the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
|
|
60
|
+
* useLayoutEffect will be trigged in the transition process and get the final correct column widths
|
|
61
|
+
*
|
|
62
|
+
*/
|
|
63
|
+
export var useColumnWidths = function () {
|
|
64
|
+
var headerRef = React.useRef(null);
|
|
65
|
+
var _a = __read(React.useState([]), 2), columnWidths = _a[0], setColumnWidths = _a[1];
|
|
66
|
+
var getColumnWidths = React.useCallback(function () {
|
|
67
|
+
if (!headerRef.current)
|
|
68
|
+
return;
|
|
69
|
+
var headers = headerRef.current.querySelectorAll(".table-header");
|
|
70
|
+
var widths = Array.prototype.slice.call(headers).map(function (header) {
|
|
71
|
+
var width = header.getBoundingClientRect().width;
|
|
72
|
+
return width;
|
|
73
|
+
});
|
|
74
|
+
setColumnWidths(widths);
|
|
75
|
+
}, [headerRef]);
|
|
76
|
+
return { columnWidths: columnWidths, getColumnWidths: getColumnWidths, headerRef: headerRef };
|
|
77
|
+
};
|
|
78
|
+
export var useStickyPosition = function (columns, columnWidths) {
|
|
79
|
+
return React.useMemo(function () {
|
|
80
|
+
var stickyPositionMap = {};
|
|
81
|
+
var left = [];
|
|
82
|
+
var right = [];
|
|
83
|
+
var leftFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "left" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] || 0 } : null); });
|
|
84
|
+
// the right sticky value stack in reverse direction
|
|
85
|
+
var rightFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "right" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] || 0 } : null); }).reverse();
|
|
86
|
+
leftFixedCols.forEach(function (column, idx) {
|
|
87
|
+
var stackedPositionValue = left.reduce(function (acc, prev) { return acc + prev; }, 0);
|
|
88
|
+
left.push(column.width);
|
|
89
|
+
stickyPositionMap[column.columnIndex] = { value: stackedPositionValue, isLast: idx === leftFixedCols.length - 1 };
|
|
90
|
+
});
|
|
91
|
+
rightFixedCols.forEach(function (column, idx) {
|
|
92
|
+
var stackedPositionValue = right.reduce(function (acc, prev) { return acc + prev; }, 0);
|
|
93
|
+
right.unshift(column.width);
|
|
94
|
+
stickyPositionMap[column.columnIndex] = { value: stackedPositionValue, isLast: idx === rightFixedCols.length - 1 };
|
|
95
|
+
});
|
|
96
|
+
return stickyPositionMap;
|
|
97
|
+
}, [columnWidths, columns]);
|
|
98
|
+
};
|
|
99
|
+
export var useScrollBar = function (scrollContentRef) {
|
|
100
|
+
var _a = __read(React.useState(0), 2), scrollBarSize = _a[0], setScrollBarSize = _a[1];
|
|
101
|
+
var calculateScrollBarSize = React.useCallback(function () {
|
|
102
|
+
if (scrollContentRef.current) {
|
|
103
|
+
var _a = scrollContentRef.current, clientWidth = _a.clientWidth, offsetWidth = _a.offsetWidth;
|
|
104
|
+
setScrollBarSize(offsetWidth - clientWidth);
|
|
105
|
+
}
|
|
106
|
+
}, [scrollContentRef, setScrollBarSize]);
|
|
107
|
+
return {
|
|
108
|
+
scrollBarSize: scrollBarSize,
|
|
109
|
+
calculateScrollBarSize: calculateScrollBarSize,
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=useColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColumns.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useColumns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAStD,MAAM,UAAU,UAAU,CAAyB,EAAyD;QAAxD,OAAO,aAAA,EAAE,gBAAgB,sBAAA,EAAE,YAAY,kBAAA;IACjF,IAAA,KAA6C,eAAe,EAAE,EAA7D,YAAY,kBAAA,EAAE,SAAS,eAAA,EAAE,eAAe,qBAAqB,CAAC;IACrE,IAAM,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAA,KAA0C,YAAY,CAAC,gBAAgB,CAAC,EAAvE,aAAa,mBAAA,EAAE,sBAAsB,4BAAkC,CAAC;IAE/E,IAAM,wBAAwB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAC9D,IAAM,+BAA+B,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAE5E,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC7B,UAAC,KAAuC;QACpC,IAAI,KAAK,CAAC,aAAa,IAAI,eAAe,IAAI,KAAK,CAAC,aAAa,IAAI,SAAS,CAAC,OAAO,EAAE;YACpF,IAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;YACnD,IAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE;gBACR,wBAAwB,EAAE,CAAC;gBAC3B,+BAA+B,EAAE,CAAC;aACrC;SACJ;IACL,CAAC,EACD,CAAC,SAAS,EAAE,wBAAwB,EAAE,+BAA+B,CAAC,CACzE,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC;QACZ,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO;YACH,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,KAAK,CAAC,SAAS,CAAC;QACZ,sBAAsB,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEzD,OAAO;QACH,YAAY,cAAA;QACZ,eAAe,iBAAA;QACf,iBAAiB,mBAAA;QACjB,aAAa,eAAA;QACb,SAAS,WAAA;KACZ,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,CAAC,IAAM,eAAe,GAAG;IAC3B,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IACtD,IAAA,KAAA,OAAkC,KAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,IAAA,EAA7D,YAAY,QAAA,EAAE,eAAe,QAAgC,CAAC;IAErE,IAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAC/B,IAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACpE,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,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,EAAC,YAAY,cAAA,EAAE,eAAe,iBAAA,EAAE,SAAS,WAAA,EAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAyB,OAAsC,EAAE,YAAsB;IACpH,OAAO,KAAK,CAAC,OAAO,CAAC;QACjB,IAAM,iBAAiB,GAAmC,EAAE,CAAC;QAC7D,IAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,UAAC,CAAC,EAAE,WAAW,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAC,WAAW,aAAA,EAAE,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAlF,CAAkF,CAAC,CAAC;QAC5J,oDAAoD;QACpD,IAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,UAAC,CAAC,EAAE,WAAW,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAC,WAAW,aAAA,EAAE,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAnF,CAAmF,CAAC,CAAC,OAAO,EAAE,CAAC;QAExK,aAAa,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,GAAG;YAC9B,IAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,EAAV,CAAU,EAAE,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;QACpH,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,GAAG;YAC/B,IAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,EAAV,CAAU,EAAE,CAAC,CAAC,CAAC;YACxE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;QACrH,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC7B,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,gBAAiD;IACpE,IAAA,KAAA,OAAoC,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,IAAA,EAA5D,aAAa,QAAA,EAAE,gBAAgB,QAA6B,CAAC;IAEpE,IAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC;QAC7C,IAAI,gBAAgB,CAAC,OAAO,EAAE;YACpB,IAAA,KAA6B,gBAAgB,CAAC,OAAO,EAApD,WAAW,iBAAA,EAAE,WAAW,iBAA4B,CAAC;YAC5D,gBAAgB,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;SAC/C;IACL,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzC,OAAO;QACH,aAAa,eAAA;QACb,sBAAsB,wBAAA;KACzB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface Props {
|
|
3
|
+
scrollContentRef: React.RefObject<HTMLDivElement>;
|
|
4
|
+
headerRef: React.RefObject<HTMLDivElement>;
|
|
5
|
+
}
|
|
6
|
+
export declare const useScroll: ({ scrollContentRef, headerRef }: Props) => {
|
|
7
|
+
onScroll: () => void;
|
|
8
|
+
isScrollToLeft: boolean;
|
|
9
|
+
isScrollToRight: boolean;
|
|
10
|
+
tableBodyRef: (node: HTMLDivElement) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare const useScrollToEdge: (scrollContentRef: React.RefObject<HTMLDivElement>) => {
|
|
13
|
+
isScrollToLeft: boolean;
|
|
14
|
+
isScrollToRight: boolean;
|
|
15
|
+
checkIsScrollToEdge: () => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
export var useScroll = function (_a) {
|
|
19
|
+
var scrollContentRef = _a.scrollContentRef, headerRef = _a.headerRef;
|
|
20
|
+
var tableBodyRef = function (node) {
|
|
21
|
+
if (node) {
|
|
22
|
+
checkIsScrollToEdge();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
var _b = useScrollToEdge(scrollContentRef), isScrollToLeft = _b.isScrollToLeft, isScrollToRight = _b.isScrollToRight, checkIsScrollToEdge = _b.checkIsScrollToEdge;
|
|
26
|
+
var onScroll = React.useCallback(function () {
|
|
27
|
+
requestAnimationFrame(function () {
|
|
28
|
+
if (scrollContentRef.current && headerRef.current && scrollContentRef.current.scrollLeft !== headerRef.current.scrollLeft) {
|
|
29
|
+
headerRef.current.scrollLeft = scrollContentRef.current.scrollLeft;
|
|
30
|
+
checkIsScrollToEdge();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}, [scrollContentRef, headerRef, checkIsScrollToEdge]);
|
|
34
|
+
return {
|
|
35
|
+
onScroll: onScroll,
|
|
36
|
+
isScrollToLeft: isScrollToLeft,
|
|
37
|
+
isScrollToRight: isScrollToRight,
|
|
38
|
+
tableBodyRef: tableBodyRef,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export var useScrollToEdge = function (scrollContentRef) {
|
|
42
|
+
var _a = __read(React.useState(false), 2), isScrollToLeft = _a[0], setIsScrollToLeft = _a[1];
|
|
43
|
+
var _b = __read(React.useState(false), 2), isScrollToRight = _b[0], setIsScrollToRight = _b[1];
|
|
44
|
+
var checkIsScrollToEdge = React.useCallback(function () {
|
|
45
|
+
if (scrollContentRef.current) {
|
|
46
|
+
var _a = scrollContentRef.current, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, offsetWidth = _a.offsetWidth;
|
|
47
|
+
setIsScrollToLeft(scrollLeft <= 1);
|
|
48
|
+
setIsScrollToRight(scrollLeft >= scrollWidth - offsetWidth);
|
|
49
|
+
}
|
|
50
|
+
}, [scrollContentRef]);
|
|
51
|
+
return {
|
|
52
|
+
isScrollToLeft: isScrollToLeft,
|
|
53
|
+
isScrollToRight: isScrollToRight,
|
|
54
|
+
checkIsScrollToEdge: checkIsScrollToEdge,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=useScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScroll.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useScroll.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,CAAC,IAAM,SAAS,GAAG,UAAC,EAAoC;QAAnC,gBAAgB,sBAAA,EAAE,SAAS,eAAA;IAClD,IAAM,YAAY,GAAG,UAAC,IAAoB;QACtC,IAAI,IAAI,EAAE;YACN,mBAAmB,EAAE,CAAC;SACzB;IACL,CAAC,CAAC;IACI,IAAA,KAAyD,eAAe,CAAC,gBAAgB,CAAC,EAAzF,cAAc,oBAAA,EAAE,eAAe,qBAAA,EAAE,mBAAmB,yBAAqC,CAAC;IACjG,IAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/B,qBAAqB,CAAC;YAClB,IAAI,gBAAgB,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvH,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnE,mBAAmB,EAAE,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEvD,OAAO;QACH,QAAQ,UAAA;QACR,cAAc,gBAAA;QACd,eAAe,iBAAA;QACf,YAAY,cAAA;KACf,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,gBAAiD;IACvE,IAAA,KAAA,OAAsC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA1D,cAAc,QAAA,EAAE,iBAAiB,QAAyB,CAAC;IAC5D,IAAA,KAAA,OAAwC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA5D,eAAe,QAAA,EAAE,kBAAkB,QAAyB,CAAC;IAEpE,IAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAAC;QAC1C,IAAI,gBAAgB,CAAC,OAAO,EAAE;YACpB,IAAA,KAAyC,gBAAgB,CAAC,OAAO,EAAhE,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,WAAW,iBAA4B,CAAC;YACxE,iBAAiB,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YACnC,kBAAkB,CAAC,UAAU,IAAI,WAAW,GAAG,WAAW,CAAC,CAAC;SAC/D;IACL,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO;QACH,cAAc,gBAAA;QACd,eAAe,iBAAA;QACf,mBAAmB,qBAAA;KACtB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { SafeReactChild, StringKey } from "../../internal/type";
|
|
3
|
-
import type { VirtualTableColumn,
|
|
3
|
+
import type { VirtualTableColumn, VirtualTableRowSelection } from "./type";
|
|
4
4
|
import "./index.less";
|
|
5
5
|
export interface VirtualTableProps<RowType extends object> {
|
|
6
6
|
dataSource: RowType[];
|
|
7
7
|
columns: VirtualTableColumn<RowType>[];
|
|
8
|
-
scrollY: number;
|
|
9
8
|
rowHeight: number;
|
|
10
9
|
className?: string;
|
|
11
10
|
rowClassName?: string;
|
|
12
11
|
/**
|
|
13
|
-
* if scrollX is not provided, width: 100% will be used
|
|
14
|
-
* if width: 100% is used, please wrap the table with a container
|
|
12
|
+
* if scrollX and scrollY is not provided, height: 100% and width: 100% will be used and please wrap the table with a container
|
|
15
13
|
*/
|
|
14
|
+
scrollY?: number;
|
|
16
15
|
scrollX?: number;
|
|
17
16
|
loading?: boolean;
|
|
18
17
|
emptyPlaceholder?: SafeReactChild;
|
|
19
|
-
rowSelection?: VirtualTableRowSelection<RowType>;
|
|
20
18
|
onRowClick?: (record: RowType, rowIndex: number) => void;
|
|
21
19
|
/**
|
|
22
20
|
* Default: index
|
|
23
21
|
*/
|
|
24
22
|
rowKey?: StringKey<RowType> | "index";
|
|
25
23
|
headerHeight?: number;
|
|
26
|
-
|
|
24
|
+
rowSelection?: VirtualTableRowSelection<RowType>;
|
|
27
25
|
}
|
|
28
|
-
export declare const VirtualTable: (<RowType extends object>({ columns, rowHeight,
|
|
26
|
+
export declare const VirtualTable: (<RowType extends object>({ columns, rowHeight, dataSource, className, rowClassName, loading, emptyPlaceholder, onRowClick, scrollY, scrollX, rowSelection, headerHeight, rowKey, }: VirtualTableProps<RowType>) => JSX.Element) & {
|
|
29
27
|
displayName: string;
|
|
30
28
|
};
|