@pinnacle0/web-ui 0.3.69 → 0.3.70

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.
Files changed (46) hide show
  1. package/core/VirtualList.d.ts +25 -0
  2. package/core/VirtualList.js +49 -0
  3. package/core/VirtualList.js.map +1 -0
  4. package/core/VirtualTable/TableHeader.d.ts +4 -5
  5. package/core/VirtualTable/TableHeader.js +6 -32
  6. package/core/VirtualTable/TableHeader.js.map +1 -1
  7. package/core/VirtualTable/TableRow.d.ts +5 -8
  8. package/core/VirtualTable/TableRow.js +18 -28
  9. package/core/VirtualTable/TableRow.js.map +1 -1
  10. package/core/VirtualTable/hooks/useColumns.d.ts +30 -0
  11. package/core/VirtualTable/hooks/useColumns.js +91 -0
  12. package/core/VirtualTable/hooks/useColumns.js.map +1 -0
  13. package/core/VirtualTable/hooks/useScroll.d.ts +17 -0
  14. package/core/VirtualTable/hooks/useScroll.js +56 -0
  15. package/core/VirtualTable/hooks/useScroll.js.map +1 -0
  16. package/core/VirtualTable/index.d.ts +5 -7
  17. package/core/VirtualTable/index.js +39 -71
  18. package/core/VirtualTable/index.js.map +1 -1
  19. package/core/VirtualTable/index.less +18 -18
  20. package/core/VirtualTable/type.d.ts +0 -13
  21. package/{core/VirtualTable/hooks → hooks}/useDebounce.d.ts +0 -0
  22. package/{core/VirtualTable/hooks → hooks}/useDebounce.js +0 -0
  23. package/hooks/useDebounce.js.map +1 -0
  24. package/package.json +2 -1
  25. package/core/VirtualTable/hooks/useColumnWidths.d.ts +0 -11
  26. package/core/VirtualTable/hooks/useColumnWidths.js +0 -38
  27. package/core/VirtualTable/hooks/useColumnWidths.js.map +0 -1
  28. package/core/VirtualTable/hooks/useDebounce.js.map +0 -1
  29. package/core/VirtualTable/hooks/useLayout.d.ts +0 -17
  30. package/core/VirtualTable/hooks/useLayout.js +0 -44
  31. package/core/VirtualTable/hooks/useLayout.js.map +0 -1
  32. package/core/VirtualTable/hooks/useRowExpand.d.ts +0 -7
  33. package/core/VirtualTable/hooks/useRowExpand.js +0 -20
  34. package/core/VirtualTable/hooks/useRowExpand.js.map +0 -1
  35. package/core/VirtualTable/hooks/useScrollBarSize.d.ts +0 -5
  36. package/core/VirtualTable/hooks/useScrollBarSize.js +0 -36
  37. package/core/VirtualTable/hooks/useScrollBarSize.js.map +0 -1
  38. package/core/VirtualTable/hooks/useScrollToEdge.d.ts +0 -8
  39. package/core/VirtualTable/hooks/useScrollToEdge.js +0 -48
  40. package/core/VirtualTable/hooks/useScrollToEdge.js.map +0 -1
  41. package/core/VirtualTable/hooks/useStickyPosition.d.ts +0 -2
  42. package/core/VirtualTable/hooks/useStickyPosition.js +0 -24
  43. package/core/VirtualTable/hooks/useStickyPosition.js.map +0 -1
  44. package/core/VirtualTable/hooks/useTransformColumn.d.ts +0 -11
  45. package/core/VirtualTable/hooks/useTransformColumn.js +0 -9
  46. package/core/VirtualTable/hooks/useTransformColumn.js.map +0 -1
@@ -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,12 @@
1
1
  import React from "react";
2
- import type { ColumnFixedPosition, VirtualTableColumn, StickyPosition } from "./type";
2
+ import type { VirtualTableColumn, StickyPosition } from "./type";
3
3
  interface Props<RowType extends object> {
4
- headersRef: React.RefObject<HTMLDivElement>;
4
+ headerRef: React.MutableRefObject<HTMLDivElement | null>;
5
5
  headerHeight: number;
6
6
  columns: VirtualTableColumn<RowType>[];
7
- stickyPosition: Record<number, StickyPosition>;
8
- getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
7
+ stickyPositionMap: Record<number, StickyPosition>;
9
8
  }
10
- export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight, columns, stickyPosition, getFixedColumnClassNames }: Props<RowType>) => JSX.Element) & {
9
+ export declare const TableHeader: (<RowType extends object>({ headerRef, headerHeight, columns, stickyPositionMap }: Props<RowType>) => JSX.Element) & {
11
10
  displayName: string;
12
11
  };
13
12
  export {};
@@ -1,42 +1,16 @@
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";
27
2
  import { classNames } from "../../util/ClassNames";
28
3
  export var TableHeader = Object.assign(function (_a) {
29
- var headersRef = _a.headersRef, headerHeight = _a.headerHeight, columns = _a.columns, stickyPosition = _a.stickyPosition, getFixedColumnClassNames = _a.getFixedColumnClassNames;
30
- return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, columns.map(function (_a, columnIndex) {
31
- var _b;
4
+ var headerRef = _a.headerRef, headerHeight = _a.headerHeight, columns = _a.columns, stickyPositionMap = _a.stickyPositionMap;
5
+ return (React.createElement("div", { className: "table-headers", ref: headerRef, style: { height: headerHeight, width: scrollX || "100%" } }, columns.map(function (_a, columnIndex) {
32
6
  var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
33
- var stickyPositionValue = ((_b = stickyPosition[columnIndex]) === null || _b === void 0 ? void 0 : _b.value) || 0;
34
- return (React.createElement("div", { className: classNames.apply(void 0, __spreadArray(["table-header"], __read(getFixedColumnClassNames(fixed, columnIndex)), false)), key: columnIndex, style: {
7
+ var stickyPosition = stickyPositionMap[columnIndex];
8
+ 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
9
  display: display !== "hidden" ? "flex" : "none",
36
10
  flex: "1 0 ".concat(width, "px"),
37
11
  textAlign: align,
38
- left: fixed === "left" ? stickyPositionValue : undefined,
39
- right: fixed === "right" ? stickyPositionValue : undefined,
12
+ left: fixed === "left" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
13
+ right: fixed === "right" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
40
14
  } }, title));
41
15
  })));
42
16
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAWjD,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,UAAU,8BAAC,cAAc,UAAK,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,YACrF,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
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAUjD,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CACpC,UAAkC,EAAqE;QAApE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAA,EAAE,iBAAiB,uBAAA;IAClF,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,EACD;IACI,WAAW,EAAE,aAAa;CAC7B,CACJ,CAAC"}
@@ -1,21 +1,18 @@
1
1
  /// <reference types="react" />
2
- import type { VirtualItem } from "react-virtual";
3
- import type { ColumnFixedPosition, VirtualTableColumn, VirtualTableRowExpand, StickyPosition } from "./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
- stickyPosition: Record<number, StickyPosition>;
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: (<RowType extends object>({ virtualItem, getFixedColumnClassNames, data, columns, columnWidths, rowHeight, scrollBarSize, stickyPosition, lastShownColumnIndex, rowClassName, onRowClick, rowExpand, }: Props<RowType>) => JSX.Element) & {
15
+ export declare const TableRow: (<RowType extends object>({ virtualItem, data, columns, columnWidths, rowHeight, scrollBarSize, stickyPositionMap, rowClassName, onRowClick }: Props<RowType>) => JSX.Element) & {
19
16
  displayName: string;
20
17
  };
21
18
  export {};
@@ -26,34 +26,24 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
26
  import React from "react";
27
27
  import { classNames } from "../../util/ClassNames";
28
28
  export var TableRow = Object.assign(function (_a) {
29
- 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;
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
+ 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
30
  var rowIndex = virtualItem.index;
33
- var toggleExpendRow = React.useCallback(function () { return setIsExpanded(!isExpanded); }, [isExpanded]);
34
- React.useEffect(function () {
35
- if (rowRef.current) {
36
- virtualItem.measureRef(rowRef.current);
37
- }
38
- }, [isExpanded, virtualItem]);
39
- return (React.createElement("div", { ref: rowRef, 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); } },
40
- columns.map(function (column, columnIndex) {
41
- var _a;
42
- var colSpan = column.colSpan ? column.colSpan(data, rowIndex, columnIndex) : 1;
43
- // handle colspan > 1
44
- var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
45
- var renderData = column.display !== "hidden" && (rowExpand && columnIndex === columns.length - 1 ? React.createElement(rowExpand.ExpandButton, { onClick: toggleExpendRow }) : column.renderData(data, rowIndex));
46
- // minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
47
- var isLastShownColumn = lastShownColumnIndex === columnIndex;
48
- var stickyPositionValue = ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
49
- return (renderData && (React.createElement("div", { className: classNames.apply(void 0, __spreadArray(["table-cell"], __read(getFixedColumnClassNames(column.fixed, columnIndex)), false)), key: columnIndex, style: {
50
- height: rowHeight,
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))));
31
+ var lastShownColumnIndex = React.useMemo(function () { return columns.length - 1 - __spreadArray([], __read(columns), false).reverse().findIndex(function (_) { return _.display !== "hidden"; }); }, [columns]);
32
+ 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) {
33
+ var colSpan = column.colSpan ? column.colSpan(data, rowIndex, columnIndex) : 1;
34
+ // handle colspan > 1
35
+ var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
36
+ var renderData = column.display !== "hidden" && column.renderData(data, rowIndex);
37
+ // minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
38
+ var isLastShownColumn = lastShownColumnIndex === columnIndex;
39
+ var stickyPosition = stickyPositionMap[columnIndex];
40
+ 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: {
41
+ height: rowHeight,
42
+ width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
43
+ textAlign: column.align,
44
+ left: column.fixed === "left" ? stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value : undefined,
45
+ right: column.fixed === "right" ? (stickyPosition === null || stickyPosition === void 0 ? void 0 : stickyPosition.value) - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
46
+ } }, renderData)));
47
+ })));
58
48
  }, { displayName: "TableRow" });
59
49
  //# sourceMappingURL=TableRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import type { VirtualTableColumn, StickyPosition } from "../type";
3
+ interface Props<RowType extends object> {
4
+ columns: VirtualTableColumn<RowType>[];
5
+ headerRef: React.RefObject<HTMLDivElement>;
6
+ scrollContentRef: React.RefObject<HTMLDivElement>;
7
+ isScrollable: boolean;
8
+ }
9
+ export declare function useColumns<RowType extends object>({ columns, headerRef, scrollContentRef, isScrollable }: Props<RowType>): {
10
+ isReady: boolean;
11
+ columnWidths: React.MutableRefObject<number[]>;
12
+ getColumnWidths: () => void;
13
+ stickyPositionMap: Record<number, StickyPosition>;
14
+ scrollBarSize: number;
15
+ };
16
+ /**
17
+ *
18
+ * If the Virtual Table is render inside a container with open animation e.g. <Modal />,
19
+ * the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
20
+ * useLayoutEffect will be trigged in the transition process and get the final correct column widths
21
+ *
22
+ */
23
+ export declare const useColumnWidths: (headerRef: React.RefObject<HTMLDivElement>) => {
24
+ columnWidths: React.MutableRefObject<number[]>;
25
+ isColumnWidthsReady: boolean;
26
+ getColumnWidths: () => void;
27
+ };
28
+ export declare const useStickyPosition: <RowType extends object>(columns: VirtualTableColumn<RowType>[], columnWidths: number[]) => Record<number, StickyPosition>;
29
+ export declare const useScrollBar: (scrollContentRef: React.RefObject<HTMLDivElement>, isReady: boolean, isScrollable: boolean) => number;
30
+ export {};
@@ -0,0 +1,91 @@
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 { ArrayUtil } from "../../../internal/ArrayUtil";
19
+ export function useColumns(_a) {
20
+ var columns = _a.columns, headerRef = _a.headerRef, scrollContentRef = _a.scrollContentRef, isScrollable = _a.isScrollable;
21
+ var _b = useColumnWidths(headerRef), columnWidths = _b.columnWidths, isColumnWidthsReady = _b.isColumnWidthsReady, getColumnWidths = _b.getColumnWidths;
22
+ var stickyPositionMap = useStickyPosition(columns, isColumnWidthsReady ? columnWidths.current : []);
23
+ var scrollBarSize = useScrollBar(scrollContentRef, isColumnWidthsReady, isScrollable);
24
+ return {
25
+ isReady: isColumnWidthsReady,
26
+ columnWidths: columnWidths,
27
+ getColumnWidths: getColumnWidths,
28
+ stickyPositionMap: stickyPositionMap,
29
+ scrollBarSize: scrollBarSize,
30
+ };
31
+ }
32
+ /**
33
+ *
34
+ * If the Virtual Table is render inside a container with open animation e.g. <Modal />,
35
+ * the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
36
+ * useLayoutEffect will be trigged in the transition process and get the final correct column widths
37
+ *
38
+ */
39
+ export var useColumnWidths = function (headerRef) {
40
+ var _a = __read(React.useState(false), 2), isColumnWidthsReady = _a[0], setIsColumnWidthsReady = _a[1];
41
+ var columnWidths = React.useRef([]);
42
+ var getColumnWidths = React.useCallback(function () {
43
+ if (headerRef.current) {
44
+ setIsColumnWidthsReady(false);
45
+ var headers = headerRef.current.querySelectorAll(".table-header");
46
+ columnWidths.current = Array.prototype.slice.call(headers).map(function (header) {
47
+ var width = header.getBoundingClientRect().width;
48
+ return width;
49
+ });
50
+ setIsColumnWidthsReady(true);
51
+ }
52
+ }, [headerRef]);
53
+ return { columnWidths: columnWidths, isColumnWidthsReady: isColumnWidthsReady, getColumnWidths: getColumnWidths };
54
+ };
55
+ export var useStickyPosition = function (columns, columnWidths) {
56
+ return React.useMemo(function () {
57
+ var stickyPositionMap = {};
58
+ var left = [];
59
+ var right = [];
60
+ var leftFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "left" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] || 0 } : null); });
61
+ // the right sticky value stack in reverse direction
62
+ var rightFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "right" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] || 0 } : null); }).reverse();
63
+ leftFixedCols.forEach(function (column, idx) {
64
+ var stackedPositionValue = left.reduce(function (acc, prev) { return acc + prev; }, 0);
65
+ left.push(column.width);
66
+ stickyPositionMap[column.columnIndex] = { value: stackedPositionValue, isLast: idx === leftFixedCols.length - 1 };
67
+ });
68
+ rightFixedCols.forEach(function (column, idx) {
69
+ var stackedPositionValue = right.reduce(function (acc, prev) { return acc + prev; }, 0);
70
+ right.unshift(column.width);
71
+ stickyPositionMap[column.columnIndex] = { value: stackedPositionValue, isLast: idx === rightFixedCols.length - 1 };
72
+ });
73
+ return stickyPositionMap;
74
+ }, [columnWidths, columns]);
75
+ };
76
+ export var useScrollBar = function (scrollContentRef, isReady, isScrollable) {
77
+ var _a = __read(React.useState(0), 2), scrollBarSize = _a[0], setScrollBarSize = _a[1];
78
+ var calculateScrollBarSize = React.useCallback(function () {
79
+ if (scrollContentRef.current) {
80
+ var _a = scrollContentRef.current, clientWidth = _a.clientWidth, offsetWidth = _a.offsetWidth;
81
+ setScrollBarSize(offsetWidth - clientWidth);
82
+ }
83
+ }, [scrollContentRef, setScrollBarSize]);
84
+ React.useEffect(function () {
85
+ if (isReady) {
86
+ calculateScrollBarSize();
87
+ }
88
+ }, [isScrollable, isReady, calculateScrollBarSize]);
89
+ return scrollBarSize;
90
+ };
91
+ //# sourceMappingURL=useColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumns.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useColumns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ interface Props {
3
+ scrollContentRef: React.RefObject<HTMLDivElement>;
4
+ headerRef: React.RefObject<HTMLDivElement>;
5
+ isReady: boolean;
6
+ }
7
+ export declare const useScroll: ({ scrollContentRef, headerRef, isReady }: Props) => {
8
+ onScroll: () => void;
9
+ isScrollToLeft: boolean;
10
+ isScrollToRight: boolean;
11
+ };
12
+ export declare const useScrollToEdge: (scrollContentRef: React.RefObject<HTMLDivElement>, isReady: boolean) => {
13
+ isScrollToLeft: boolean;
14
+ isScrollToRight: boolean;
15
+ checkIsScrollToEdge: () => void;
16
+ };
17
+ export {};
@@ -0,0 +1,56 @@
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, isReady = _a.isReady;
20
+ var _b = useScrollToEdge(scrollContentRef, isReady), isScrollToLeft = _b.isScrollToLeft, isScrollToRight = _b.isScrollToRight, checkIsScrollToEdge = _b.checkIsScrollToEdge;
21
+ var onScroll = React.useCallback(function () {
22
+ requestAnimationFrame(function () {
23
+ if (scrollContentRef.current && headerRef.current && scrollContentRef.current.scrollLeft !== headerRef.current.scrollLeft) {
24
+ headerRef.current.scrollLeft = scrollContentRef.current.scrollLeft;
25
+ checkIsScrollToEdge();
26
+ }
27
+ });
28
+ }, [scrollContentRef, headerRef, checkIsScrollToEdge]);
29
+ return {
30
+ onScroll: onScroll,
31
+ isScrollToLeft: isScrollToLeft,
32
+ isScrollToRight: isScrollToRight,
33
+ };
34
+ };
35
+ export var useScrollToEdge = function (scrollContentRef, isReady) {
36
+ var _a = __read(React.useState(false), 2), isScrollToLeft = _a[0], setIsScrollToLeft = _a[1];
37
+ var _b = __read(React.useState(false), 2), isScrollToRight = _b[0], setIsScrollToRight = _b[1];
38
+ var checkIsScrollToEdge = React.useCallback(function () {
39
+ if (scrollContentRef.current) {
40
+ var _a = scrollContentRef.current, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, offsetWidth = _a.offsetWidth;
41
+ setIsScrollToLeft(scrollLeft <= 1);
42
+ setIsScrollToRight(scrollLeft >= scrollWidth - offsetWidth);
43
+ }
44
+ }, [scrollContentRef]);
45
+ React.useEffect(function () {
46
+ if (isReady) {
47
+ checkIsScrollToEdge();
48
+ }
49
+ }, [isReady, checkIsScrollToEdge]);
50
+ return {
51
+ isScrollToLeft: isScrollToLeft,
52
+ isScrollToRight: isScrollToRight,
53
+ checkIsScrollToEdge: checkIsScrollToEdge,
54
+ };
55
+ };
56
+ //# 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;AAQ1B,MAAM,CAAC,IAAM,SAAS,GAAG,UAAC,EAA6C;QAA5C,gBAAgB,sBAAA,EAAE,SAAS,eAAA,EAAE,OAAO,aAAA;IACrD,IAAA,KAAyD,eAAe,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAlG,cAAc,oBAAA,EAAE,eAAe,qBAAA,EAAE,mBAAmB,yBAA8C,CAAC;IAC1G,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;KAClB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,gBAAiD,EAAE,OAAgB;IACzF,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,KAAK,CAAC,SAAS,CAAC;QACZ,IAAI,OAAO,EAAE;YACT,mBAAmB,EAAE,CAAC;SACzB;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEnC,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, VirtualTableRowExpand, VirtualTableRowSelection } from "./type";
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
- rowExpand?: VirtualTableRowExpand<RowType>;
24
+ rowSelection?: VirtualTableRowSelection<RowType>;
27
25
  }
28
- export declare const VirtualTable: (<RowType extends object>({ columns, rowHeight, scrollY, dataSource, className, rowClassName, loading, emptyPlaceholder, rowSelection, onRowClick, scrollX, rowExpand, rowKey, headerHeight, }: VirtualTableProps<RowType>) => JSX.Element) & {
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
  };
@@ -1,87 +1,55 @@
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";
27
- import { useVirtual } from "react-virtual";
2
+ import { useVirtualizer, observeElementRect } from "@tanstack/react-virtual";
28
3
  import { classNames } from "../../util/ClassNames";
29
4
  import { Spin } from "../Spin";
30
- import { useLayout } from "./hooks/useLayout";
31
- import { useTransformColumn } from "./hooks/useTransformColumn";
32
5
  import { TableRow } from "./TableRow";
33
6
  import { TableHeader } from "./TableHeader";
7
+ import { useRowSelection } from "./hooks/useRowSelection";
8
+ import { useColumns } from "./hooks/useColumns";
9
+ import { useScroll } from "./hooks/useScroll";
34
10
  import "./index.less";
35
- var HORIZONTAL_SCROLL_BAR_HEIGHT = 20;
11
+ var HORIZONTAL_SCROLL_BAR_HEIGHT = 15;
36
12
  export var VirtualTable = Object.assign(function (_a) {
37
- var columns = _a.columns, rowHeight = _a.rowHeight, scrollY = _a.scrollY, dataSource = _a.dataSource, className = _a.className, rowClassName = _a.rowClassName, loading = _a.loading, emptyPlaceholder = _a.emptyPlaceholder, rowSelection = _a.rowSelection, onRowClick = _a.onRowClick, scrollX = _a.scrollX, rowExpand = _a.rowExpand, _b = _a.rowKey, rowKey = _b === void 0 ? "index" : _b, _c = _a.headerHeight, headerHeight = _c === void 0 ? 50 : _c;
38
- var size = dataSource.length;
13
+ var columns = _a.columns, rowHeight = _a.rowHeight, dataSource = _a.dataSource, className = _a.className, rowClassName = _a.rowClassName, loading = _a.loading, emptyPlaceholder = _a.emptyPlaceholder, onRowClick = _a.onRowClick, scrollY = _a.scrollY, scrollX = _a.scrollX, rowSelection = _a.rowSelection, _b = _a.headerHeight, headerHeight = _b === void 0 ? 50 : _b, _c = _a.rowKey, rowKey = _c === void 0 ? "index" : _c;
14
+ var count = dataSource.length;
39
15
  var scrollContentRef = React.useRef(null);
40
- var headersRef = React.useRef(null);
41
- var estimateSize = React.useCallback(function () { return rowHeight; }, [rowHeight]);
42
- var overscan = rowExpand ? Math.floor(scrollY / rowHeight) : 1;
43
- var _d = useVirtual({
44
- size: size,
45
- parentRef: scrollContentRef,
46
- estimateSize: estimateSize,
47
- overscan: overscan,
48
- }), virtualItems = _d.virtualItems, totalSize = _d.totalSize;
49
- var transformedColumns = useTransformColumn({ columns: columns, dataSource: dataSource, rowSelection: rowSelection, rowKey: rowKey, rowExpand: rowExpand });
50
- var isScrollable = totalSize > scrollY;
51
- var _e = useLayout({ headersRef: headersRef, scrollContentRef: scrollContentRef, isScrollable: isScrollable, columns: transformedColumns }), scrollBarSize = _e.scrollBarSize, stickyPosition = _e.stickyPosition, columnWidths = _e.columnWidths, isScrollToEdge = _e.isScrollToEdge, isScrollToLeft = _e.isScrollToLeft, isScrollToRight = _e.isScrollToRight;
52
- var isHorizontalScrollable = React.useMemo(function () { return (scrollContentRef.current ? columnWidths.reduce(function (acc, curr) { return acc + curr; }, 0) > scrollContentRef.current.offsetWidth : false); }, [columnWidths]);
53
- var tableHeight = scrollY + headerHeight + (isHorizontalScrollable ? HORIZONTAL_SCROLL_BAR_HEIGHT : 0);
54
- var tableBodyHeight = scrollY + (isHorizontalScrollable ? HORIZONTAL_SCROLL_BAR_HEIGHT : 0);
16
+ var headerRef = React.useRef(null);
17
+ var totalSize = count * rowHeight;
18
+ var isVerticalScrollable = scrollContentRef.current ? totalSize > scrollContentRef.current.clientHeight : false;
19
+ var isHorizontalScrollable = scrollContentRef.current ? scrollContentRef.current.scrollWidth > scrollContentRef.current.offsetWidth : false;
20
+ var containerHeight = scrollY ? scrollY + headerHeight + (isHorizontalScrollable ? HORIZONTAL_SCROLL_BAR_HEIGHT : 0) : "100%";
55
21
  var emptyElement = emptyPlaceholder || "暂无数据";
56
- var lastShownColumnIndex = React.useMemo(function () { return transformedColumns.length - 1 - __spreadArray([], __read(transformedColumns), false).reverse().findIndex(function (_) { return _.display !== "hidden"; }); }, [transformedColumns]);
57
- // handle the edge position & shadow of the fixed columns
58
- var getFixedColumnClassNames = React.useCallback(function (fixed, columnIndex) {
59
- var _a;
60
- var isFixedClassName = fixed ? "fixed" : "";
61
- var isLastFixedClassName = fixed && ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.isLast) ? "last" : "";
62
- var fixedPositionClassName = fixed;
63
- var hideShadowClassName = (fixed === "left" && isScrollToLeft) || (fixed === "right" && isScrollToRight) ? "hide-shadow" : "";
64
- return [isFixedClassName, isLastFixedClassName, fixedPositionClassName, hideShadowClassName];
65
- }, [isScrollToLeft, isScrollToRight, stickyPosition]);
66
- var onScroll = React.useCallback(function () {
67
- requestAnimationFrame(function () {
68
- // only trigger in horizontal direction
69
- if (!scrollContentRef.current || !headersRef.current || scrollContentRef.current.scrollLeft === headersRef.current.scrollLeft)
70
- return;
71
- isScrollToEdge();
72
- // sync scrolling in header
73
- headersRef.current.scrollLeft = scrollContentRef.current.scrollLeft;
74
- });
75
- }, [isScrollToEdge]);
76
- return (React.createElement("div", { className: classNames("g-virtual-table", className), style: { width: scrollX || "100%", height: tableHeight } },
22
+ var transformedColumns = useRowSelection({ columns: columns, dataSource: dataSource, rowKey: rowKey, rowSelection: rowSelection });
23
+ var rowVirtualizer = useVirtualizer({
24
+ count: count,
25
+ getScrollElement: function () { return scrollContentRef.current; },
26
+ estimateSize: function () { return rowHeight; },
27
+ observeElementRect: function (instance, cb) {
28
+ observeElementRect(instance, cb);
29
+ getColumnWidths();
30
+ },
31
+ });
32
+ var _d = useColumns({ headerRef: headerRef, columns: transformedColumns, scrollContentRef: scrollContentRef, isScrollable: isVerticalScrollable }), isReady = _d.isReady, columnWidths = _d.columnWidths, getColumnWidths = _d.getColumnWidths, stickyPositionMap = _d.stickyPositionMap, scrollBarSize = _d.scrollBarSize;
33
+ var _e = useScroll({ scrollContentRef: scrollContentRef, headerRef: headerRef, isReady: isReady }), isScrollToLeft = _e.isScrollToLeft, isScrollToRight = _e.isScrollToRight, onScroll = _e.onScroll;
34
+ // TODO/David: This is temporary fix of issue: https://github.com/TanStack/virtual/issues/363, please remove the code after update
35
+ var virtualizerRef = React.useRef(rowVirtualizer);
36
+ virtualizerRef.current = rowVirtualizer;
37
+ React.useLayoutEffect(function () {
38
+ var v = virtualizerRef.current;
39
+ v._didMount()();
40
+ v._willUpdate();
41
+ }, [dataSource.length]);
42
+ return (React.createElement("div", { className: classNames("g-virtual-table", className), style: { width: scrollX || "100%", height: containerHeight } },
77
43
  loading && (React.createElement("div", { className: "mask" },
78
44
  React.createElement(Spin, { spinning: loading }))),
79
- React.createElement("div", { className: "scroll-content", ref: scrollContentRef, style: { height: tableBodyHeight, top: headerHeight }, onScroll: onScroll },
45
+ React.createElement("div", { className: classNames("scroll-content", { "scroll-to-left": isScrollToLeft, "scroll-to-right": isScrollToRight }), ref: scrollContentRef, style: { height: "calc(100% - ".concat(headerHeight, "px)"), top: headerHeight }, onScroll: onScroll },
80
46
  React.createElement("div", { className: "table", style: { height: totalSize } },
81
- React.createElement(TableHeader, { headersRef: headersRef, headerHeight: headerHeight, columns: transformedColumns, stickyPosition: stickyPosition, getFixedColumnClassNames: getFixedColumnClassNames }),
47
+ React.createElement(TableHeader, { headerRef: headerRef, headerHeight: headerHeight, columns: transformedColumns, stickyPositionMap: stickyPositionMap }),
82
48
  React.createElement("div", { className: "table-body" }, dataSource.length === 0
83
49
  ? emptyElement
84
- : columnWidths.length > 0 &&
85
- virtualItems.map(function (virtualItem) { return (React.createElement(TableRow, { key: virtualItem.index, rowHeight: rowHeight, onRowClick: onRowClick, virtualItem: virtualItem, data: dataSource[virtualItem.index], columns: transformedColumns, columnWidths: columnWidths, scrollBarSize: scrollBarSize, stickyPosition: stickyPosition, lastShownColumnIndex: lastShownColumnIndex, rowClassName: rowClassName, getFixedColumnClassNames: getFixedColumnClassNames, rowExpand: rowExpand })); }))))));
50
+ : isReady &&
51
+ rowVirtualizer
52
+ .getVirtualItems()
53
+ .map(function (virtualItem) { return (React.createElement(TableRow, { key: virtualItem.key, rowHeight: rowHeight, onRowClick: onRowClick, virtualItem: virtualItem, data: dataSource[virtualItem.index], columns: transformedColumns, columnWidths: columnWidths.current, scrollBarSize: scrollBarSize, stickyPositionMap: stickyPositionMap, rowClassName: rowClassName })); }))))));
86
54
  }, { displayName: "VirtualTable" });
87
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/index.tsx"],"names":[],"mappings":"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"}
@@ -44,6 +44,24 @@
44
44
  overflow: auto;
45
45
  scrollbar-width: thin;
46
46
 
47
+ &.scroll-to-left {
48
+ .table-header.fixed,
49
+ .table-cell.fixed {
50
+ &.last.left::after {
51
+ box-shadow: none !important;
52
+ }
53
+ }
54
+ }
55
+
56
+ &.scroll-to-right {
57
+ .table-header.fixed,
58
+ .table-cell.fixed {
59
+ &.last.right::after {
60
+ box-shadow: none !important;
61
+ }
62
+ }
63
+ }
64
+
47
65
  .table {
48
66
  min-height: 100%;
49
67
 
@@ -92,10 +110,6 @@
92
110
  .fixed-column-shadow("right");
93
111
  }
94
112
  }
95
-
96
- &.hide-shadow::after {
97
- box-shadow: none;
98
- }
99
113
  }
100
114
  }
101
115
  }
@@ -138,23 +152,9 @@
138
152
  .fixed-column-shadow("right");
139
153
  }
140
154
  }
141
-
142
- &.hide-shadow::after {
143
- box-shadow: none;
144
- }
145
155
  }
146
156
  }
147
157
  }
148
-
149
- .expand-row {
150
- display: block;
151
- width: 100%;
152
- max-height: 0;
153
-
154
- &.expanded {
155
- max-height: 400px;
156
- }
157
- }
158
158
  }
159
159
  }
160
160
  }
@@ -24,19 +24,6 @@ export declare type VirtualTableRowSelection<RowType extends object> = {
24
24
  */
25
25
  title?: SafeReactChild;
26
26
  };
27
- export declare type VirtualTableRowExpand<RowType extends object> = {
28
- width: number;
29
- renderExpandRow: (record: RowType, rowIndex: number) => SafeReactChild;
30
- ExpandButton: React.ComponentType<{
31
- onClick: () => void;
32
- }>;
33
- title?: SafeReactChild;
34
- /**
35
- * Can only sticky in right
36
- */
37
- fixed?: boolean;
38
- isDefaultExpanded?: boolean;
39
- };
40
27
  export declare type VirtualTableColumn<RowType extends object> = {
41
28
  title: SafeReactChild;
42
29
  width: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../src/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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinnacle0/web-ui",
3
- "version": "0.3.69",
3
+ "version": "0.3.70",
4
4
  "author": "Pinnacle",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@ant-design/icons": "4.7.0",
20
+ "@tanstack/react-virtual": "3.0.0-beta.18",
20
21
  "antd": "4.23.6",
21
22
  "classnames": "2.3.2",
22
23
  "moment": "2.29.4",
@@ -1,11 +0,0 @@
1
- import React from "react";
2
- /**
3
- *
4
- * If the Virtual Table is render inside a container with open animation e.g. <Modal />,
5
- * the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
6
- * useLayoutEffect will be trigged in the transition process and get the final correct column widths
7
- */
8
- export declare const useColumnWidths: (headersRef: React.RefObject<HTMLDivElement>) => {
9
- columnWidths: number[];
10
- calculateColWidths: () => void;
11
- };
@@ -1,38 +0,0 @@
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
- *
20
- * If the Virtual Table is render inside a container with open animation e.g. <Modal />,
21
- * the colWidths may be calculated during the transition and get the wrong width with useState & useEffect
22
- * useLayoutEffect will be trigged in the transition process and get the final correct column widths
23
- */
24
- export var useColumnWidths = function (headersRef) {
25
- var _a = __read(React.useState([]), 2), colWidths = _a[0], setColWidths = _a[1];
26
- var calculateColWidths = React.useCallback(function () {
27
- if (!headersRef.current)
28
- return;
29
- var headers = headersRef.current.querySelectorAll(".table-header");
30
- var widths = Array.prototype.slice.call(headers).map(function (header) {
31
- var width = header.getBoundingClientRect().width;
32
- return width;
33
- });
34
- setColWidths(widths);
35
- }, [headersRef]);
36
- return { columnWidths: colWidths, calculateColWidths: calculateColWidths };
37
- };
38
- //# sourceMappingURL=useColumnWidths.js.map
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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,17 +0,0 @@
1
- import React from "react";
2
- import type { VirtualTableColumn } from "../type";
3
- interface Props<RowType extends object> {
4
- headersRef: React.RefObject<HTMLDivElement>;
5
- scrollContentRef: React.RefObject<HTMLDivElement>;
6
- isScrollable: boolean;
7
- columns: VirtualTableColumn<RowType>[];
8
- }
9
- export declare const useLayout: <RowType extends object>({ headersRef, scrollContentRef, isScrollable, columns }: Props<RowType>) => {
10
- columnWidths: number[];
11
- scrollBarSize: number;
12
- stickyPosition: Record<number, import("../type").StickyPosition>;
13
- isScrollToEdge: () => void;
14
- isScrollToLeft: boolean;
15
- isScrollToRight: boolean;
16
- };
17
- export {};
@@ -1,44 +0,0 @@
1
- import React from "react";
2
- import { useDebounce } from "./useDebounce";
3
- import { useScrollBarSize } from "./useScrollBarSize";
4
- import { useColumnWidths } from "./useColumnWidths";
5
- import { useStickyPosition } from "./useStickyPosition";
6
- import { useScrollToEdge } from "./useScrollToEdge";
7
- export var useLayout = function (_a) {
8
- var headersRef = _a.headersRef, scrollContentRef = _a.scrollContentRef, isScrollable = _a.isScrollable, columns = _a.columns;
9
- var _b = useColumnWidths(headersRef), calculateColWidths = _b.calculateColWidths, columnWidths = _b.columnWidths;
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;
12
- var stickyPosition = useStickyPosition(columns, columnWidths);
13
- var debouncedCalculateColWidths = useDebounce(calculateColWidths);
14
- var debouncedCalculateScrollBarSize = useDebounce(calculateScrollBarSize);
15
- var debouncedIsScrollToEdge = useDebounce(isScrollToEdge);
16
- var handler = React.useCallback(function (event) {
17
- if (event.currentTarget && "querySelector" in event.currentTarget && headersRef.current) {
18
- var element = event.currentTarget;
19
- var result = element.querySelector(".g-virtual-table");
20
- if (result) {
21
- debouncedCalculateColWidths();
22
- debouncedCalculateScrollBarSize();
23
- debouncedIsScrollToEdge();
24
- }
25
- }
26
- }, [debouncedCalculateColWidths, debouncedCalculateScrollBarSize, headersRef, debouncedIsScrollToEdge]);
27
- React.useEffect(function () {
28
- document.body.addEventListener("transitionend", handler);
29
- document.body.addEventListener("animationend", handler);
30
- return function () {
31
- document.body.removeEventListener("transitionend", handler);
32
- document.body.removeEventListener("animationend", handler);
33
- };
34
- }, [handler]);
35
- return {
36
- columnWidths: columnWidths,
37
- scrollBarSize: scrollBarSize,
38
- stickyPosition: stickyPosition,
39
- isScrollToEdge: isScrollToEdge,
40
- isScrollToLeft: isScrollToLeft,
41
- isScrollToRight: isScrollToRight,
42
- };
43
- };
44
- //# sourceMappingURL=useLayout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLayout.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAUlD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAkC,EAAqE;QAApE,UAAU,gBAAA,EAAE,gBAAgB,sBAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAA;IACrG,IAAA,KAAqC,eAAe,CAAC,UAAU,CAAC,EAA/D,kBAAkB,wBAAA,EAAE,YAAY,kBAA+B,CAAC;IACjE,IAAA,KAA0C,gBAAgB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAzF,sBAAsB,4BAAA,EAAE,aAAa,mBAAoD,CAAC;IAC3F,IAAA,KAAoD,eAAe,CAAC,gBAAgB,CAAC,EAApF,cAAc,oBAAA,EAAE,cAAc,oBAAA,EAAE,eAAe,qBAAqC,CAAC;IAC5F,IAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEhE,IAAM,2BAA2B,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpE,IAAM,+BAA+B,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC5E,IAAM,uBAAuB,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAE5D,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC7B,UAAC,KAAuC;QACpC,IAAI,KAAK,CAAC,aAAa,IAAI,eAAe,IAAI,KAAK,CAAC,aAAa,IAAI,UAAU,CAAC,OAAO,EAAE;YACrF,IAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;YACnD,IAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE;gBACR,2BAA2B,EAAE,CAAC;gBAC9B,+BAA+B,EAAE,CAAC;gBAClC,uBAAuB,EAAE,CAAC;aAC7B;SACJ;IACL,CAAC,EACD,CAAC,2BAA2B,EAAE,+BAA+B,EAAE,UAAU,EAAE,uBAAuB,CAAC,CACtG,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,OAAO;QACH,YAAY,cAAA;QACZ,aAAa,eAAA;QACb,cAAc,gBAAA;QACd,cAAc,gBAAA;QACd,cAAc,gBAAA;QACd,eAAe,iBAAA;KAClB,CAAC;AACN,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { VirtualTableRowExpand, VirtualTableColumn } from "../type";
2
- interface Props<RowType extends object> {
3
- columns: VirtualTableColumn<RowType>[];
4
- rowExpand?: VirtualTableRowExpand<RowType>;
5
- }
6
- export declare const useRowExpand: <RowType extends object>({ columns, rowExpand }: Props<RowType>) => VirtualTableColumn<RowType>[];
7
- export {};
@@ -1,20 +0,0 @@
1
- import React from "react";
2
- export var useRowExpand = function (_a) {
3
- var columns = _a.columns, rowExpand = _a.rowExpand;
4
- var transformedColumns = React.useMemo(function () {
5
- var resultColumns = columns;
6
- if (rowExpand) {
7
- var width = rowExpand.width, fixed = rowExpand.fixed, title = rowExpand.title;
8
- var rowExpandColumn = {
9
- width: width,
10
- title: title || "",
11
- fixed: fixed ? "right" : undefined,
12
- renderData: function () { return null; },
13
- };
14
- resultColumns.push(rowExpandColumn);
15
- }
16
- return resultColumns;
17
- }, [columns, rowExpand]);
18
- return transformedColumns;
19
- };
20
- //# sourceMappingURL=useRowExpand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRowExpand.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useRowExpand.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,IAAM,YAAY,GAAG,UAAkC,EAAoC;QAAnC,OAAO,aAAA,EAAE,SAAS,eAAA;IAC7E,IAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC;QACrC,IAAM,aAAa,GAAG,OAAO,CAAC;QAC9B,IAAI,SAAS,EAAE;YACJ,IAAA,KAAK,GAAkB,SAAS,MAA3B,EAAE,KAAK,GAAW,SAAS,MAApB,EAAE,KAAK,GAAI,SAAS,MAAb,CAAc;YAExC,IAAM,eAAe,GAAgC;gBACjD,KAAK,OAAA;gBACL,KAAK,EAAE,KAAK,IAAI,EAAE;gBAClB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAClC,UAAU,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;aACzB,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACvC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzB,OAAO,kBAAkB,CAAC;AAC9B,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- import React from "react";
2
- export declare const useScrollBarSize: (scrollContentRef: React.RefObject<HTMLDivElement>, isScrollable: boolean) => {
3
- calculateScrollBarSize: () => void;
4
- scrollBarSize: number;
5
- };
@@ -1,36 +0,0 @@
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 useScrollBarSize = function (scrollContentRef, isScrollable) {
19
- var _a = __read(React.useState(0), 2), scrollBarSize = _a[0], setScrollBarSize = _a[1];
20
- var calculateScrollBarSize = React.useCallback(function () {
21
- if (scrollContentRef.current) {
22
- var _a = scrollContentRef.current, clientWidth = _a.clientWidth, offsetWidth = _a.offsetWidth;
23
- setScrollBarSize(offsetWidth - clientWidth);
24
- }
25
- }, [scrollContentRef, setScrollBarSize]);
26
- React.useEffect(function () {
27
- if (isScrollable && !scrollBarSize) {
28
- calculateScrollBarSize();
29
- }
30
- }, [calculateScrollBarSize, isScrollable, scrollBarSize]);
31
- return {
32
- calculateScrollBarSize: calculateScrollBarSize,
33
- scrollBarSize: scrollBarSize,
34
- };
35
- };
36
- //# sourceMappingURL=useScrollBarSize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useScrollBarSize.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useScrollBarSize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,gBAAiD,EAAE,YAAqB;IAC/F,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,KAAK,CAAC,SAAS,CAAC;QACZ,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE;YAChC,sBAAsB,EAAE,CAAC;SAC5B;IACL,CAAC,EAAE,CAAC,sBAAsB,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1D,OAAO;QACH,sBAAsB,wBAAA;QACtB,aAAa,eAAA;KAChB,CAAC;AACN,CAAC,CAAC"}
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- export declare const useScrollToEdge: (scrollContentRef: React.RefObject<HTMLElement>) => {
3
- isScrollToEdge: () => void;
4
- isScrollToLeft: boolean;
5
- isScrollToRight: boolean;
6
- isScrollToTop: boolean;
7
- isScrollToBottom: boolean;
8
- };
@@ -1,48 +0,0 @@
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, { useEffect } from "react";
18
- export var useScrollToEdge = function (scrollContentRef) {
19
- var _a = __read(React.useState(false), 2), isScrollToLeft = _a[0], setIsScrollToLeft = _a[1];
20
- var _b = __read(React.useState(false), 2), isScrollToRight = _b[0], setIsScrollToRight = _b[1];
21
- var _c = __read(React.useState(false), 2), isScrollToTop = _c[0], setIsScrollToTop = _c[1];
22
- var _d = __read(React.useState(false), 2), isScrollToBottom = _d[0], setIsScrollToBottom = _d[1];
23
- var isScrollToEdge = React.useCallback(function () {
24
- if (scrollContentRef.current) {
25
- var _a = scrollContentRef.current, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
26
- var isScrollLeft = scrollLeft <= 1;
27
- var isScrollRight = scrollLeft >= scrollWidth - clientWidth;
28
- var isScrollTop = scrollTop <= 1;
29
- var isScrollBottom = scrollTop >= scrollHeight - clientHeight;
30
- setIsScrollToLeft(isScrollLeft);
31
- setIsScrollToRight(isScrollRight);
32
- setIsScrollToTop(isScrollTop);
33
- setIsScrollToBottom(isScrollBottom);
34
- }
35
- }, [scrollContentRef]);
36
- // initialize
37
- useEffect(function () {
38
- isScrollToEdge();
39
- }, [isScrollToEdge]);
40
- return {
41
- isScrollToEdge: isScrollToEdge,
42
- isScrollToLeft: isScrollToLeft,
43
- isScrollToRight: isScrollToRight,
44
- isScrollToTop: isScrollToTop,
45
- isScrollToBottom: isScrollToBottom,
46
- };
47
- };
48
- //# sourceMappingURL=useScrollToEdge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useScrollToEdge.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useScrollToEdge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,gBAA8C;IACpE,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;IAC9D,IAAA,KAAA,OAAoC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAAxD,aAAa,QAAA,EAAE,gBAAgB,QAAyB,CAAC;IAC1D,IAAA,KAAA,OAA0C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA9D,gBAAgB,QAAA,EAAE,mBAAmB,QAAyB,CAAC;IAEtE,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,gBAAgB,CAAC,OAAO,EAAE;YACpB,IAAA,KAAgF,gBAAgB,CAAC,OAAO,EAAvG,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,WAAW,iBAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,YAAY,kBAA4B,CAAC;YAC/G,IAAM,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC;YACrC,IAAM,aAAa,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,CAAC;YAE9D,IAAM,WAAW,GAAG,SAAS,IAAI,CAAC,CAAC;YACnC,IAAM,cAAc,GAAG,SAAS,IAAI,YAAY,GAAG,YAAY,CAAC;YAChE,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAClC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC9B,mBAAmB,CAAC,cAAc,CAAC,CAAC;SACvC;IACL,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,aAAa;IACb,SAAS,CAAC;QACN,cAAc,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO;QACH,cAAc,gBAAA;QACd,cAAc,gBAAA;QACd,eAAe,iBAAA;QACf,aAAa,eAAA;QACb,gBAAgB,kBAAA;KACnB,CAAC;AACN,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { VirtualTableColumn, StickyPosition } from "../type";
2
- export declare const useStickyPosition: <RowType extends object>(columns: VirtualTableColumn<RowType>[], columnWidths: number[]) => Record<number, StickyPosition>;
@@ -1,24 +0,0 @@
1
- import React from "react";
2
- import { ArrayUtil } from "../../../internal/ArrayUtil";
3
- export var useStickyPosition = function (columns, columnWidths) {
4
- return React.useMemo(function () {
5
- var result = {};
6
- var left = [];
7
- var right = [];
8
- var leftFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "left" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] } : null); });
9
- // the right sticky value stack in reverse direction
10
- var rightFixedCols = ArrayUtil.compactMap(columns, function (_, columnIndex) { return (_.fixed === "right" ? { columnIndex: columnIndex, width: columnWidths[columnIndex] } : null); }).reverse();
11
- leftFixedCols.forEach(function (column, idx) {
12
- var stackedPositionValue = left.reduce(function (acc, prev) { return acc + prev; }, 0);
13
- left.push(column.width);
14
- result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === leftFixedCols.length - 1 };
15
- });
16
- rightFixedCols.forEach(function (column, idx) {
17
- var stackedPositionValue = right.reduce(function (acc, prev) { return acc + prev; }, 0);
18
- right.unshift(column.width);
19
- result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === rightFixedCols.length - 1 };
20
- });
21
- return result;
22
- }, [columnWidths, columns]);
23
- };
24
- //# sourceMappingURL=useStickyPosition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStickyPosition.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useStickyPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAGtD,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAyB,OAAsC,EAAE,YAAsB;IACpH,OAAO,KAAK,CAAC,OAAO,CAAC;QACjB,IAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,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,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA7E,CAA6E,CAAC,CAAC;QACvJ,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,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9E,CAA8E,CAAC,CAAC,OAAO,EAAE,CAAC;QAEnK,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,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;QACzG,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,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import type React from "react";
2
- import type { VirtualTableColumn, VirtualTableRowExpand, VirtualTableRowSelection } from "../type";
3
- interface Props<RowType extends object> {
4
- columns: VirtualTableColumn<RowType>[];
5
- dataSource: RowType[];
6
- rowKey: "index" | React.Key;
7
- rowSelection?: VirtualTableRowSelection<RowType>;
8
- rowExpand?: VirtualTableRowExpand<RowType>;
9
- }
10
- export declare const useTransformColumn: <RowType extends object>({ columns, dataSource, rowKey, rowExpand, rowSelection }: Props<RowType>) => VirtualTableColumn<RowType>[];
11
- export {};
@@ -1,9 +0,0 @@
1
- import { useRowExpand } from "./useRowExpand";
2
- import { useRowSelection } from "./useRowSelection";
3
- export var useTransformColumn = function (_a) {
4
- var columns = _a.columns, dataSource = _a.dataSource, rowKey = _a.rowKey, rowExpand = _a.rowExpand, rowSelection = _a.rowSelection;
5
- var columnsWithRowSelection = useRowSelection({ columns: columns, dataSource: dataSource, rowSelection: rowSelection, rowKey: rowKey });
6
- var transformedColumns = useRowExpand({ columns: columnsWithRowSelection, rowExpand: rowExpand });
7
- return transformedColumns;
8
- };
9
- //# sourceMappingURL=useTransformColumn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTransformColumn.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useTransformColumn.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAWlD,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAkC,EAAsE;QAArE,OAAO,aAAA,EAAE,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAA;IACrH,IAAM,uBAAuB,GAAG,eAAe,CAAC,EAAC,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,YAAY,cAAA,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;IAC7F,IAAM,kBAAkB,GAAG,YAAY,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAE,SAAS,WAAA,EAAC,CAAC,CAAC;IAEvF,OAAO,kBAAkB,CAAC;AAC9B,CAAC,CAAC"}