@pinnacle0/web-ui 0.3.12 → 0.3.15

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.
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
3
+ import type { StickyPosition } from "./useStickyPosition";
4
+ interface Props<RowType extends object> {
5
+ headersRef: React.RefObject<HTMLDivElement>;
6
+ headerHeight: number;
7
+ transformedColumns: VirtualTableColumn<RowType>[];
8
+ stickyPosition: React.MutableRefObject<Record<number, StickyPosition>>;
9
+ getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
10
+ }
11
+ export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight, transformedColumns, stickyPosition, getFixedColumnClassNames }: Props<RowType>) => JSX.Element) & {
12
+ displayName: string;
13
+ };
14
+ export {};
@@ -0,0 +1,44 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ import React from "react";
27
+ export var TableHeader = Object.assign(function (_a) {
28
+ var headersRef = _a.headersRef, headerHeight = _a.headerHeight, transformedColumns = _a.transformedColumns, stickyPosition = _a.stickyPosition, getFixedColumnClassNames = _a.getFixedColumnClassNames;
29
+ return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, transformedColumns.map(function (_a, columnIndex) {
30
+ var _b;
31
+ var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
32
+ var stickyPositionValue = ((_b = stickyPosition.current[columnIndex]) === null || _b === void 0 ? void 0 : _b.value) || 0;
33
+ return (React.createElement("div", { className: __spreadArray(["table-header"], __read(getFixedColumnClassNames(fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
34
+ display: display !== "hidden" ? "flex" : "none",
35
+ flex: "1 0 ".concat(width, "px"),
36
+ textAlign: align,
37
+ left: fixed === "left" ? stickyPositionValue : undefined,
38
+ right: fixed === "right" ? stickyPositionValue : undefined,
39
+ } }, title));
40
+ })));
41
+ }, {
42
+ displayName: "TableHeader",
43
+ });
44
+ //# sourceMappingURL=TableHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CACpC,UAAkC,EAAwG;QAAvG,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,kBAAkB,wBAAA,EAAE,cAAc,oBAAA,EAAE,wBAAwB,8BAAA;IACrH,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,kBAAkB,CAAC,GAAG,CAAC,UAAC,EAAqC,EAAE,WAAW;;YAAjD,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAAA;QACzD,IAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,0CAAE,KAAK,KAAI,CAAC,CAAC;QAC5E,OAAO,CACH,6BACI,SAAS,EAAE,eAAC,cAAc,UAAK,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,UAAE,IAAI,CAAC,GAAG,CAAC,EACtF,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;gBACH,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC/C,IAAI,EAAE,cAAO,KAAK,OAAI;gBACtB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;gBACxD,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aAC7D,IAEA,KAAK,CACJ,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,EACD;IACI,WAAW,EAAE,aAAa;CAC7B,CACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import type { VirtualItem } from "react-virtual";
3
+ import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
4
+ import type { StickyPosition } from "./useStickyPosition";
5
+ interface Props<RowType extends object> {
6
+ dataSource: RowType[];
7
+ transformedColumns: VirtualTableColumn<RowType>[];
8
+ virtualItem: VirtualItem;
9
+ columnWidths: React.MutableRefObject<number[]>;
10
+ lastShownColumnIndex: number;
11
+ scrollBarSize: number;
12
+ stickyPosition: React.MutableRefObject<Record<number, StickyPosition>>;
13
+ getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
14
+ rowClassName?: string;
15
+ onRowClick?: (record: RowType, rowIndex: number) => number;
16
+ }
17
+ export declare const TableRow: (<RowType extends object>({ virtualItem, getFixedColumnClassNames, dataSource, transformedColumns, columnWidths, scrollBarSize, stickyPosition, lastShownColumnIndex, rowClassName, onRowClick, }: Props<RowType>) => JSX.Element) & {
18
+ displayName: string;
19
+ };
20
+ export {};
@@ -0,0 +1,49 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ import React from "react";
27
+ export var TableRow = Object.assign(function (_a) {
28
+ var virtualItem = _a.virtualItem, getFixedColumnClassNames = _a.getFixedColumnClassNames, dataSource = _a.dataSource, transformedColumns = _a.transformedColumns, columnWidths = _a.columnWidths, scrollBarSize = _a.scrollBarSize, stickyPosition = _a.stickyPosition, lastShownColumnIndex = _a.lastShownColumnIndex, rowClassName = _a.rowClassName, onRowClick = _a.onRowClick;
29
+ var rowIndex = virtualItem.index;
30
+ var currentData = dataSource[rowIndex];
31
+ return (React.createElement("div", { key: rowIndex, className: ["table-row", rowClassName, rowIndex % 2 ? "odd" : "even"].join(" "), style: { height: virtualItem.size, transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(currentData, rowIndex); } }, transformedColumns.map(function (column, columnIndex) {
32
+ var _a;
33
+ var colSpan = column.colSpan ? column.colSpan(currentData, rowIndex, columnIndex) : 1;
34
+ // handle colspan > 1
35
+ var cellWidth = colSpan > 1 ? columnWidths.current.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths.current[columnIndex] || column.width;
36
+ var renderData = column.display !== "hidden" && column.renderData(currentData, 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 stickyPositionValue = ((_a = stickyPosition.current[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
40
+ return (renderData && (React.createElement("div", { className: __spreadArray(["table-cell"], __read(getFixedColumnClassNames(column.fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
41
+ height: "100%",
42
+ width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
43
+ textAlign: column.align,
44
+ left: column.fixed === "left" ? stickyPositionValue : undefined,
45
+ right: column.fixed === "right" ? stickyPositionValue - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
46
+ } }, renderData)));
47
+ })));
48
+ }, { displayName: "TableRow" });
49
+ //# sourceMappingURL=TableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
@@ -1,40 +1,7 @@
1
- import React from "react";
2
- import type { SafeReactChildren, SafeReactChild, StringKey } from "../../internal/type";
1
+ /// <reference types="react" />
2
+ import type { SafeReactChild, StringKey } from "../../internal/type";
3
+ import type { VirtualTableColumn, VirtualTableRowSelection } from "./type";
3
4
  import "./index.less";
4
- export declare type VirtualTableRowSelection<RowType extends object> = {
5
- width: number;
6
- selectedRowKeys: React.Key[];
7
- onChange: (selectedRowKeys: React.Key[], selectedRows: RowType[]) => void;
8
- /**
9
- * Can only sticky in left
10
- */
11
- fixed?: boolean;
12
- isDisabled?: (data: RowType, rowIndex: number) => boolean;
13
- isSelectAllDisabled?: boolean;
14
- /**
15
- * Attention:
16
- * If title is provided, the select all checkbox wil be overridden
17
- */
18
- title?: SafeReactChild;
19
- };
20
- export declare type VirtualTableColumn<RowType extends object> = {
21
- title: SafeReactChild;
22
- width: number;
23
- /**
24
- * Attention:
25
- * If renderData return null, the corresponding table cell will not render
26
- */
27
- renderData: (record: RowType, rowIndex: number) => SafeReactChildren | undefined;
28
- align?: "left" | "right" | "center";
29
- display?: "default" | "hidden";
30
- fixed?: "left" | "right";
31
- /**
32
- * Attention:
33
- * The overridden cell should return null in renderData props:
34
- * e.g. [{colSpan: 3, renderData: () => <div />}, {renderData: () => null}], {renderData: () => null}
35
- */
36
- colSpan?: (record: RowType, rowIndex: number, colIndex: number) => number;
37
- };
38
5
  export interface VirtualTableProps<RowType extends object> {
39
6
  dataSource: RowType[];
40
7
  columns: VirtualTableColumn<RowType>[];
@@ -55,7 +22,8 @@ export interface VirtualTableProps<RowType extends object> {
55
22
  * Default: index
56
23
  */
57
24
  rowKey?: StringKey<RowType> | "index";
25
+ headerHeight?: number;
58
26
  }
59
- export declare const VirtualTable: (<RowType extends object>({ columns, rowHeight, scrollY, dataSource, className, rowClassName, loading, emptyPlaceholder, rowSelection, onRowClick, scrollX, rowKey, }: VirtualTableProps<RowType>) => JSX.Element) & {
27
+ export declare const VirtualTable: (<RowType extends object>({ columns, rowHeight, scrollY, dataSource, className, rowClassName, loading, emptyPlaceholder, rowSelection, onRowClick, scrollX, rowKey, headerHeight, }: VirtualTableProps<RowType>) => JSX.Element) & {
60
28
  displayName: string;
61
29
  };
@@ -25,127 +25,59 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  };
26
26
  import React from "react";
27
27
  import { useVirtual } from "react-virtual";
28
- import { ArrayUtil } from "../../internal/ArrayUtil";
29
28
  import { Spin } from "../Spin";
30
29
  import { useRowSelection } from "./useRowSelection";
31
30
  import { useScrollToEdge } from "./useScrollToEdge";
31
+ import { useScrollBarSize } from "./useScrollBarSize";
32
+ import { useColumnWidths } from "./useColumnWidths";
33
+ import { useStickyPosition } from "./useStickyPosition";
34
+ import { TableRow } from "./TableRow";
35
+ import { TableHeader } from "./TableHeader";
32
36
  import "./index.less";
33
37
  export var VirtualTable = Object.assign(function (_a) {
34
- 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, _b = _a.rowKey, rowKey = _b === void 0 ? "index" : _b;
38
+ 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, _b = _a.rowKey, rowKey = _b === void 0 ? "index" : _b, _c = _a.headerHeight, headerHeight = _c === void 0 ? 50 : _c;
35
39
  var size = dataSource.length;
36
40
  var scrollContentRef = React.useRef(null);
37
41
  var headersRef = React.useRef(null);
42
+ var columnWidths = useColumnWidths(headersRef);
38
43
  var estimateSize = React.useCallback(function (rowIndex) { return (typeof rowHeight === "function" ? rowHeight(rowIndex) : rowHeight); }, [rowHeight]);
39
- var _c = __read(React.useState([]), 2), colWidths = _c[0], setColWidths = _c[1];
40
- var _d = __read(React.useState(0), 2), scrollBarSize = _d[0], setScrollBarSize = _d[1];
41
- var _e = useVirtual({ size: size, parentRef: scrollContentRef, estimateSize: estimateSize }), virtualItems = _e.virtualItems, totalSize = _e.totalSize;
42
- var _f = useScrollToEdge(scrollContentRef), isScrollToEdge = _f.onScroll, isScrollToLeft = _f.isScrollToLeft, isScrollToRight = _f.isScrollToRight;
44
+ var _d = useVirtual({ size: size, parentRef: scrollContentRef, estimateSize: estimateSize }), virtualItems = _d.virtualItems, totalSize = _d.totalSize;
45
+ var _e = useScrollToEdge(scrollContentRef), isScrollToEdge = _e.onScroll, isScrollToLeft = _e.isScrollToLeft, isScrollToRight = _e.isScrollToRight;
43
46
  var transformedColumns = useRowSelection({ columns: columns, dataSource: dataSource, rowSelection: rowSelection, rowKey: rowKey });
44
47
  var isScrollable = totalSize > scrollY;
45
- var headerHeight = 50;
46
48
  var tableHeight = scrollY + headerHeight;
47
49
  var tableBodyHeight = scrollY;
48
50
  var emptyElement = emptyPlaceholder || "暂无数据";
49
- var getScrollBarSize = function () {
50
- if (scrollContentRef.current) {
51
- var _a = scrollContentRef.current, clientWidth = _a.clientWidth, offsetWidth = _a.offsetWidth;
52
- setScrollBarSize(offsetWidth - clientWidth);
53
- }
54
- };
55
- var getColWidths = function () {
56
- if (headersRef.current) {
57
- var widths_1 = [];
58
- var headers = headersRef.current.querySelectorAll(".table-header");
59
- headers.forEach(function (header) {
60
- var width = header.getBoundingClientRect().width;
61
- widths_1.push(width);
62
- });
63
- setColWidths(widths_1);
64
- }
65
- };
66
- var stickyPosition = React.useMemo(function () {
67
- var result = {};
68
- var left = [];
69
- var right = [];
70
- var leftFixedCols = ArrayUtil.compactMap(transformedColumns, function (_, columnIndex) { return (_.fixed === "left" ? { columnIndex: columnIndex, width: colWidths[columnIndex] } : null); });
71
- // the right sticky value stack in reverse direction
72
- var rightFixedCols = ArrayUtil.compactMap(transformedColumns, function (_, columnIndex) { return (_.fixed === "right" ? { columnIndex: columnIndex, width: colWidths[columnIndex] } : null); }).reverse();
73
- leftFixedCols.forEach(function (column, idx) {
74
- var stackedPositionValue = left.reduce(function (acc, prev) { return acc + prev; }, 0);
75
- left.push(column.width);
76
- result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === leftFixedCols.length - 1 };
77
- });
78
- rightFixedCols.forEach(function (column, idx) {
79
- var stackedPositionValue = right.reduce(function (acc, prev) { return acc + prev; }, 0);
80
- right.unshift(column.width);
81
- result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === rightFixedCols.length - 1 };
82
- });
83
- return result;
84
- }, [colWidths, transformedColumns]);
51
+ var scrollBarSize = useScrollBarSize(scrollContentRef, isScrollable);
52
+ var stickyPosition = useStickyPosition(transformedColumns, columnWidths);
53
+ var lastShownColumnIndex = React.useMemo(function () { return columns.length - 1 - __spreadArray([], __read(columns), false).reverse().findIndex(function (_) { return _.display !== "hidden"; }); }, [columns]);
85
54
  // handle the edge position & shadow of the fixed columns
86
- var getFixedColClassNames = function (fixed, columnIndex) {
55
+ var getFixedColumnClassNames = React.useCallback(function (fixed, columnIndex) {
56
+ var _a;
87
57
  var isFixedClassName = fixed ? "fixed" : "";
88
- var isLastFixedClassName = fixed && stickyPosition[columnIndex].isLast ? "last" : "";
58
+ var isLastFixedClassName = fixed && ((_a = stickyPosition.current[columnIndex]) === null || _a === void 0 ? void 0 : _a.isLast) ? "last" : "";
89
59
  var fixedPositionClassName = fixed;
90
60
  var hideShadowClassName = (fixed === "left" && isScrollToLeft) || (fixed === "right" && isScrollToRight) ? "hide-shadow" : "";
91
61
  return [isFixedClassName, isLastFixedClassName, fixedPositionClassName, hideShadowClassName];
92
- };
62
+ }, [isScrollToLeft, isScrollToRight, stickyPosition]);
93
63
  var onScroll = React.useCallback(function () {
94
64
  requestAnimationFrame(function () {
95
65
  // only trigger in horizontal direction
96
- if (scrollContentRef.current && headersRef.current && scrollContentRef.current.scrollLeft !== headersRef.current.scrollLeft) {
97
- isScrollToEdge();
98
- // sync scrolling in header
99
- headersRef.current.scrollLeft = scrollContentRef.current.scrollLeft;
100
- }
66
+ if (!scrollContentRef.current || !headersRef.current || scrollContentRef.current.scrollLeft === headersRef.current.scrollLeft)
67
+ return;
68
+ isScrollToEdge();
69
+ // sync scrolling in header
70
+ headersRef.current.scrollLeft = scrollContentRef.current.scrollLeft;
101
71
  });
102
72
  }, [isScrollToEdge]);
103
- React.useEffect(function () {
104
- isScrollable && !scrollBarSize && getScrollBarSize();
105
- }, [isScrollable, scrollBarSize]);
106
- React.useEffect(function () {
107
- getColWidths();
108
- }, []);
109
73
  return (React.createElement("div", { className: ["g-virtual-table", className].join(" "), style: { width: scrollX || "100%", height: tableHeight } },
110
74
  loading && (React.createElement("div", { className: "mask" },
111
75
  React.createElement(Spin, { spinning: loading }))),
112
76
  React.createElement("div", { className: "scroll-content", ref: scrollContentRef, style: { height: tableBodyHeight, top: headerHeight }, onScroll: onScroll },
113
77
  React.createElement("div", { className: "table", style: { height: totalSize } },
114
- React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, transformedColumns.map(function (_a, columnIndex) {
115
- var _b;
116
- var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
117
- var stickyPositionValue = ((_b = stickyPosition[columnIndex]) === null || _b === void 0 ? void 0 : _b.value) || 0;
118
- var headerStyle = {
119
- display: display !== "hidden" ? "flex" : "none",
120
- flex: "1 0 ".concat(width, "px"),
121
- textAlign: align,
122
- left: fixed === "left" ? stickyPositionValue : undefined,
123
- right: fixed === "right" ? stickyPositionValue : undefined,
124
- };
125
- return (React.createElement("div", { className: __spreadArray(["table-header"], __read(getFixedColClassNames(fixed, columnIndex)), false).join(" "), key: columnIndex, style: headerStyle }, title));
126
- })),
78
+ React.createElement(TableHeader, { headersRef: headersRef, headerHeight: headerHeight, transformedColumns: transformedColumns, stickyPosition: stickyPosition, getFixedColumnClassNames: getFixedColumnClassNames }),
127
79
  React.createElement("div", { className: "table-body" }, dataSource.length === 0
128
80
  ? emptyElement
129
- : virtualItems.map(function (virtualItem) {
130
- var rowIndex = virtualItem.index;
131
- var currentData = dataSource[rowIndex];
132
- return (React.createElement("div", { key: rowIndex, className: ["table-row", rowClassName, rowIndex % 2 ? "odd" : "even"].join(" "), style: { height: virtualItem.size, transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(currentData, rowIndex); } }, transformedColumns.map(function (column, columnIndex) {
133
- var _a;
134
- var colSpan = column.colSpan ? column.colSpan(currentData, rowIndex, columnIndex) : 1;
135
- // handle colspan > 1
136
- var cellWidth = colSpan > 1 ? colWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : colWidths[columnIndex] || column.width;
137
- var renderData = column.display !== "hidden" && column.renderData(currentData, rowIndex);
138
- // minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
139
- var isLastColumn = columnIndex === transformedColumns.length - 1;
140
- var stickyPositionValue = ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
141
- return (renderData && (React.createElement("div", { className: __spreadArray(["table-cell"], __read(getFixedColClassNames(column.fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
142
- height: "100%",
143
- width: cellWidth - (isLastColumn ? scrollBarSize : 0),
144
- textAlign: column.align,
145
- left: column.fixed === "left" ? stickyPositionValue : undefined,
146
- right: column.fixed === "right" ? stickyPositionValue - (isLastColumn ? 0 : scrollBarSize) : undefined,
147
- } }, renderData)));
148
- })));
149
- }))))));
81
+ : virtualItems.map(function (virtualItem, rowIndex) { return (React.createElement(TableRow, { key: rowIndex, onRowClick: onRowClick, virtualItem: virtualItem, dataSource: dataSource, transformedColumns: transformedColumns, columnWidths: columnWidths, scrollBarSize: scrollBarSize, stickyPosition: stickyPosition, lastShownColumnIndex: lastShownColumnIndex, rowClassName: rowClassName, getFixedColumnClassNames: getFixedColumnClassNames })); }))))));
150
82
  }, { displayName: "VirtualTable" });
151
83
  //# 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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"}
@@ -0,0 +1,40 @@
1
+ /// <reference types="react" />
2
+ import type { SafeReactChild, SafeReactChildren } from "../../internal/type";
3
+ export declare type ColumnFixedPosition = "left" | "right";
4
+ /**
5
+ * Similar usage of Antd Table but only support partial features: fixed columns, row selection, on row click
6
+ */
7
+ export declare type VirtualTableRowSelection<RowType extends object> = {
8
+ width: number;
9
+ selectedRowKeys: React.Key[];
10
+ onChange: (selectedRowKeys: React.Key[], selectedRows: RowType[]) => void;
11
+ /**
12
+ * Can only sticky in left
13
+ */
14
+ fixed?: boolean;
15
+ isDisabled?: (data: RowType, rowIndex: number) => boolean;
16
+ isSelectAllDisabled?: boolean;
17
+ /**
18
+ * Attention:
19
+ * If title is provided, the select all checkbox wil be overridden
20
+ */
21
+ title?: SafeReactChild;
22
+ };
23
+ export declare type VirtualTableColumn<RowType extends object> = {
24
+ title: SafeReactChild;
25
+ width: number;
26
+ /**
27
+ * Attention:
28
+ * If renderData return null, the corresponding table cell will not render
29
+ */
30
+ renderData: (record: RowType, rowIndex: number) => SafeReactChildren | undefined;
31
+ align?: "left" | "right" | "center";
32
+ display?: "default" | "hidden";
33
+ fixed?: "left" | "right";
34
+ /**
35
+ * Attention:
36
+ * The overridden cell should return null in renderData props:
37
+ * e.g. [{colSpan: 3, renderData: () => <div />}, {renderData: () => null}], {renderData: () => null}
38
+ */
39
+ colSpan?: (record: RowType, rowIndex: number, colIndex: number) => number;
40
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
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>) => React.MutableRefObject<number[]>;
@@ -0,0 +1,23 @@
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 var useColumnWidths = function (headersRef) {
9
+ var colWidths = React.useRef([]);
10
+ var getColWidths = React.useCallback(function () {
11
+ if (!headersRef.current)
12
+ return;
13
+ var headers = headersRef.current.querySelectorAll(".table-header");
14
+ var widths = Array.prototype.slice.call(headers).map(function (header) {
15
+ var width = header.getBoundingClientRect().width;
16
+ return width;
17
+ });
18
+ colWidths.current = widths;
19
+ }, [headersRef]);
20
+ React.useLayoutEffect(getColWidths);
21
+ return colWidths;
22
+ };
23
+ //# sourceMappingURL=useColumnWidths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWidths.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/useColumnWidths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AAEH,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,UAA2C;IACvE,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAW,EAAE,CAAC,CAAC;IAE7C,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACnC,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,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAEpC,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { VirtualTableRowSelection, VirtualTableColumn } from "./index";
2
+ import type { VirtualTableColumn, VirtualTableRowSelection } from "./type";
3
3
  interface Props<RowType extends object> {
4
4
  columns: VirtualTableColumn<RowType>[];
5
5
  dataSource: RowType[];
@@ -62,7 +62,7 @@ export var useRowSelection = function (_a) {
62
62
  return val ? onChange(allSelectionRowKeys, allSelectionRows) : onChange(unAllSelectionRowKeys, unAllSelectionRows);
63
63
  };
64
64
  var isAllSelectionDisabled = isSelectAllDisabled || enabledRowKeys.length === 0;
65
- var isAllSelected = enabledRowKeys.length === enabledCheckedRowKeys.length;
65
+ var isAllSelected = enabledCheckedRowKeys.length > 0 && enabledRowKeys.length === enabledCheckedRowKeys.length;
66
66
  var isIndeterminate = enabledCheckedRowKeys.length > 0 && !isAllSelected;
67
67
  var rowSelectionColumn = {
68
68
  width: width,
@@ -1 +1 @@
1
- {"version":3,"file":"useRowSelection.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/useRowSelection.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useRowSelection.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/useRowSelection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const useScrollBarSize: (scrollContentRef: React.RefObject<HTMLDivElement>, isScrollable: boolean) => number;
@@ -0,0 +1,33 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ import React from "react";
18
+ 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 scrollBarSize;
32
+ };
33
+ //# sourceMappingURL=useScrollBarSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollBarSize.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/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,aAAa,CAAC;AACzB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import type { VirtualTableColumn } from "./type";
3
+ export interface StickyPosition {
4
+ value: number;
5
+ isLast: boolean;
6
+ }
7
+ export declare const useStickyPosition: <RowType extends object>(transformedColumns: VirtualTableColumn<RowType>[], columnWidths: React.MutableRefObject<number[]>) => React.MutableRefObject<Record<number, StickyPosition>>;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { ArrayUtil } from "../../internal/ArrayUtil";
3
+ export var useStickyPosition = function (transformedColumns, columnWidths) {
4
+ var stickyPosition = React.useRef({});
5
+ React.useLayoutEffect(function () {
6
+ var result = {};
7
+ var left = [];
8
+ var right = [];
9
+ var leftFixedCols = ArrayUtil.compactMap(transformedColumns, function (_, columnIndex) { return (_.fixed === "left" ? { columnIndex: columnIndex, width: columnWidths.current[columnIndex] } : null); });
10
+ // the right sticky value stack in reverse direction
11
+ var rightFixedCols = ArrayUtil.compactMap(transformedColumns, function (_, columnIndex) { return (_.fixed === "right" ? { columnIndex: columnIndex, width: columnWidths.current[columnIndex] } : null); }).reverse();
12
+ leftFixedCols.forEach(function (column, idx) {
13
+ var stackedPositionValue = left.reduce(function (acc, prev) { return acc + prev; }, 0);
14
+ left.push(column.width);
15
+ result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === leftFixedCols.length - 1 };
16
+ });
17
+ rightFixedCols.forEach(function (column, idx) {
18
+ var stackedPositionValue = right.reduce(function (acc, prev) { return acc + prev; }, 0);
19
+ right.unshift(column.width);
20
+ result[column.columnIndex] = { value: stackedPositionValue, isLast: idx === rightFixedCols.length - 1 };
21
+ });
22
+ stickyPosition.current = result;
23
+ });
24
+ return stickyPosition;
25
+ };
26
+ //# sourceMappingURL=useStickyPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStickyPosition.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/useStickyPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAQnD,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAyB,kBAAiD,EAAE,YAA8C;IACvJ,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAiC,EAAE,CAAC,CAAC;IAExE,KAAK,CAAC,eAAe,CAAC;QAClB,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,kBAAkB,EAAE,UAAC,CAAC,EAAE,WAAW,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAC,WAAW,aAAA,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAArF,CAAqF,CAAC,CAAC;QAC1K,oDAAoD;QACpD,IAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAC,CAAC,EAAE,WAAW,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAC,WAAW,aAAA,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAtF,CAAsF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEtL,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,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinnacle0/web-ui",
3
- "version": "0.3.12",
3
+ "version": "0.3.15",
4
4
  "author": "Pinnacle",
5
5
  "license": "MIT",
6
6
  "sideEffects": [