beautiful-grid 1.0.13 → 1.0.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.
- package/README.md +121 -6
- package/cjs/BGrid.js +388 -44
- package/cjs/components/CellNavigationDomSync.js +8 -0
- package/cjs/components/CellTextEditorGateway.js +13 -9
- package/cjs/components/ColResizer.js +13 -7
- package/cjs/components/MasterDetailCell.js +145 -0
- package/cjs/components/MasterDetailContext.js +42 -0
- package/cjs/components/Table.js +162 -52
- package/cjs/components/TableBody.js +7 -3
- package/cjs/components/TableBodyCell.js +2 -1
- package/cjs/components/TableSummary.js +25 -34
- package/cjs/components/TableSummaryFronzen.js +36 -34
- package/cjs/store/createAppStore.js +2 -0
- package/cjs/utils/cellSelectionGeometry.js +32 -6
- package/cjs/utils/columnVisibility.js +17 -14
- package/cjs/utils/index.js +1 -0
- package/cjs/utils/rowHeightMetrics.js +47 -6
- package/cjs/utils/summary.js +55 -0
- package/cjs/utils/useRowReorderController.js +5 -1
- package/esm/BGrid.js +387 -72
- package/esm/components/CellNavigationDomSync.js +8 -0
- package/esm/components/CellTextEditorGateway.js +12 -9
- package/esm/components/ColResizer.js +8 -2
- package/esm/components/MasterDetailCell.js +101 -0
- package/esm/components/MasterDetailContext.js +5 -0
- package/esm/components/Table.js +151 -42
- package/esm/components/TableBody.js +6 -2
- package/esm/components/TableBodyCell.js +2 -1
- package/esm/components/TableSummary.js +26 -29
- package/esm/components/TableSummaryFronzen.js +26 -29
- package/esm/store/createAppStore.js +2 -0
- package/esm/utils/cellSelectionGeometry.js +31 -5
- package/esm/utils/columnVisibility.js +21 -18
- package/esm/utils/index.js +1 -0
- package/esm/utils/rowHeightMetrics.js +46 -6
- package/esm/utils/summary.js +35 -0
- package/esm/utils/useRowReorderController.js +5 -1
- package/package.json +1 -1
- package/style.css +164 -14
- package/types/BGrid.d.ts +1 -1
- package/types/components/MasterDetailCell.d.ts +21 -0
- package/types/components/MasterDetailContext.d.ts +20 -0
- package/types/components/Table.d.ts +1 -0
- package/types/components/TableBody.d.ts +2 -1
- package/types/store/createAppStore.d.ts +1 -1
- package/types/types.d.ts +70 -4
- package/types/utils/cellSelectionGeometry.d.ts +3 -1
- package/types/utils/index.d.ts +1 -0
- package/types/utils/rowHeightMetrics.d.ts +15 -1
- package/types/utils/summary.d.ts +13 -0
|
@@ -64,61 +64,52 @@ var react_1 = require("react");
|
|
|
64
64
|
var React = __importStar(require("react"));
|
|
65
65
|
var shallow_1 = require("zustand/react/shallow");
|
|
66
66
|
var store_1 = require("../store");
|
|
67
|
+
var utils_1 = require("../utils");
|
|
67
68
|
var TableColGroup_1 = __importDefault(require("./TableColGroup"));
|
|
68
69
|
function TableSummary(_a) {
|
|
69
70
|
var position = _a.position;
|
|
70
71
|
// [Selector Group 1] Summary Configuration - 요약 설정
|
|
71
72
|
var _b = (0, store_1.useAppStore)((0, shallow_1.useShallow)(function (s) { return ({
|
|
72
73
|
summaryHeight: s.summaryHeight,
|
|
74
|
+
summaryRowHeight: s.summaryRowHeight,
|
|
73
75
|
summary: s.summary,
|
|
74
76
|
columns: s.columns,
|
|
75
|
-
columnsGroup: s.columnsGroup,
|
|
76
77
|
frozenColumnIndex: s.frozenColumnIndex,
|
|
77
78
|
variant: s.variant,
|
|
78
79
|
data: s.data,
|
|
79
|
-
}); })), summaryHeight = _b.summaryHeight,
|
|
80
|
-
var
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
else {
|
|
90
|
-
if (ignoreColumnCnt > 0) {
|
|
91
|
-
ignoreColumnCnt--;
|
|
92
|
-
return {};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return {
|
|
96
|
-
column: column,
|
|
97
|
-
columnIndex: columnIndex,
|
|
98
|
-
summaryColumn: summaryColumn,
|
|
99
|
-
};
|
|
100
|
-
});
|
|
101
|
-
}, [columns, frozenColumnIndex, summary]);
|
|
80
|
+
}); })), summaryHeight = _b.summaryHeight, summaryRowHeight = _b.summaryRowHeight, summary = _b.summary, columns = _b.columns, frozenColumnIndex = _b.frozenColumnIndex, variant = _b.variant, data = _b.data;
|
|
81
|
+
var summaryRows = (0, react_1.useMemo)(function () { return (0, utils_1.normalizeSummaryRows)(summary); }, [summary]);
|
|
82
|
+
var renderedRows = (0, react_1.useMemo)(function () {
|
|
83
|
+
var targetColumns = columns.slice(frozenColumnIndex);
|
|
84
|
+
return summaryRows.map(function (row, rowIndex) { return ({
|
|
85
|
+
row: row,
|
|
86
|
+
rowIndex: rowIndex,
|
|
87
|
+
cells: (0, utils_1.buildSummaryRowCells)(targetColumns, row.columns, frozenColumnIndex),
|
|
88
|
+
}); });
|
|
89
|
+
}, [summaryRows, columns, frozenColumnIndex]);
|
|
102
90
|
return (React.createElement(SummaryTable, { variant: variant, summaryHeight: summaryHeight, position: position },
|
|
103
91
|
React.createElement(TableColGroup_1.default, null),
|
|
104
|
-
React.createElement("tbody", { role: 'rfdg-summary' },
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
92
|
+
React.createElement("tbody", { role: 'rfdg-summary' }, renderedRows.map(function (_a) {
|
|
93
|
+
var _b, _c, _d;
|
|
94
|
+
var row = _a.row, rowIndex = _a.rowIndex, cells = _a.cells;
|
|
95
|
+
var rowHeight = (_b = row.height) !== null && _b !== void 0 ? _b : summaryRowHeight;
|
|
96
|
+
return (React.createElement("tr", { key: (_c = row.id) !== null && _c !== void 0 ? _c : rowIndex, className: ['bgrid-summary-row', (_d = row.className) !== null && _d !== void 0 ? _d : ''].filter(Boolean).join(' '), style: __assign(__assign({}, (rowHeight !== undefined ? { height: rowHeight } : {})), row.style) },
|
|
97
|
+
cells.map(function (cell, index) {
|
|
98
|
+
var _a, _b;
|
|
99
|
+
if (!cell || !cell.column)
|
|
110
100
|
return null;
|
|
101
|
+
var column = cell.column, summaryColumn = cell.summaryColumn, columnIndex = cell.columnIndex;
|
|
111
102
|
if (!summaryColumn)
|
|
112
103
|
return React.createElement("td", { key: index });
|
|
113
|
-
return (React.createElement("td", { key: index, style: {
|
|
114
|
-
textAlign: summaryColumn.align,
|
|
115
|
-
}, colSpan: (_b = summaryColumn.colSpan) !== null && _b !== void 0 ? _b : 1 }, (_c = summaryColumn.itemRender) === null || _c === void 0 ? void 0 : _c.call(summaryColumn, {
|
|
104
|
+
return (React.createElement("td", { key: index, className: summaryColumn.className, style: __assign({ textAlign: summaryColumn.align }, summaryColumn.style), colSpan: (_a = summaryColumn.colSpan) !== null && _a !== void 0 ? _a : 1 }, (_b = summaryColumn.itemRender) === null || _b === void 0 ? void 0 : _b.call(summaryColumn, {
|
|
116
105
|
column: column,
|
|
117
106
|
columnIndex: columnIndex,
|
|
107
|
+
rowIndex: rowIndex,
|
|
118
108
|
data: data,
|
|
119
109
|
})));
|
|
120
110
|
}),
|
|
121
|
-
React.createElement("td", { "data-none": true })))
|
|
111
|
+
React.createElement("td", { "data-none": true })));
|
|
112
|
+
}))));
|
|
122
113
|
}
|
|
123
114
|
function SummaryTable(_a) {
|
|
124
115
|
var summaryHeight = _a.summaryHeight, variant = _a.variant, position = _a.position, className = _a.className, children = _a.children, rest = __rest(_a, ["summaryHeight", "variant", "position", "className", "children"]);
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
14
|
if (k2 === undefined) k2 = k;
|
|
4
15
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -41,6 +52,7 @@ var React = __importStar(require("react"));
|
|
|
41
52
|
var react_1 = require("react");
|
|
42
53
|
var shallow_1 = require("zustand/react/shallow");
|
|
43
54
|
var store_1 = require("../store");
|
|
55
|
+
var utils_1 = require("../utils");
|
|
44
56
|
var TableColGroupFrozen_1 = __importDefault(require("./TableColGroupFrozen"));
|
|
45
57
|
var TableHead_1 = require("./TableHead");
|
|
46
58
|
var TableSummary_1 = require("./TableSummary");
|
|
@@ -49,57 +61,47 @@ function TableSummaryFrozen(_a) {
|
|
|
49
61
|
// [Selector Group 1] Summary Configuration - 요약 설정
|
|
50
62
|
var _b = (0, store_1.useAppStore)((0, shallow_1.useShallow)(function (s) { return ({
|
|
51
63
|
summaryHeight: s.summaryHeight,
|
|
64
|
+
summaryRowHeight: s.summaryRowHeight,
|
|
52
65
|
summary: s.summary,
|
|
53
66
|
columns: s.columns,
|
|
54
|
-
columnsGroup: s.columnsGroup,
|
|
55
67
|
frozenColumnIndex: s.frozenColumnIndex,
|
|
56
68
|
variant: s.variant,
|
|
57
69
|
data: s.data,
|
|
58
70
|
showLineNumber: s.showLineNumber,
|
|
59
71
|
rowChecked: s.rowChecked,
|
|
60
|
-
}); })), summaryHeight = _b.summaryHeight,
|
|
72
|
+
}); })), summaryHeight = _b.summaryHeight, summaryRowHeight = _b.summaryRowHeight, summary = _b.summary, columns = _b.columns, frozenColumnIndex = _b.frozenColumnIndex, variant = _b.variant, data = _b.data, showLineNumber = _b.showLineNumber, rowChecked = _b.rowChecked;
|
|
61
73
|
var hasRowSelection = !!rowChecked;
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
else {
|
|
72
|
-
if (ignoreColumnCnt > 0) {
|
|
73
|
-
ignoreColumnCnt--;
|
|
74
|
-
return {};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return {
|
|
78
|
-
column: column,
|
|
79
|
-
columnIndex: columnIndex,
|
|
80
|
-
summaryColumn: summaryColumn,
|
|
81
|
-
};
|
|
82
|
-
});
|
|
83
|
-
}, [columns, frozenColumnIndex, summary]);
|
|
74
|
+
var summaryRows = (0, react_1.useMemo)(function () { return (0, utils_1.normalizeSummaryRows)(summary); }, [summary]);
|
|
75
|
+
var renderedRows = (0, react_1.useMemo)(function () {
|
|
76
|
+
var targetColumns = columns.slice(0, frozenColumnIndex);
|
|
77
|
+
return summaryRows.map(function (row, rowIndex) { return ({
|
|
78
|
+
row: row,
|
|
79
|
+
rowIndex: rowIndex,
|
|
80
|
+
cells: (0, utils_1.buildSummaryRowCells)(targetColumns, row.columns, 0),
|
|
81
|
+
}); });
|
|
82
|
+
}, [summaryRows, columns, frozenColumnIndex]);
|
|
84
83
|
return (React.createElement(TableSummary_1.SummaryTable, { variant: variant, summaryHeight: summaryHeight, position: position },
|
|
85
84
|
React.createElement(TableColGroupFrozen_1.default, null),
|
|
86
|
-
React.createElement("tbody", { role: 'rfdg-summay-frozen' },
|
|
87
|
-
|
|
85
|
+
React.createElement("tbody", { role: 'rfdg-summay-frozen' }, renderedRows.map(function (_a) {
|
|
86
|
+
var _b, _c, _d;
|
|
87
|
+
var row = _a.row, rowIndex = _a.rowIndex, cells = _a.cells;
|
|
88
|
+
var rowHeight = (_b = row.height) !== null && _b !== void 0 ? _b : summaryRowHeight;
|
|
89
|
+
return (React.createElement("tr", { key: (_c = row.id) !== null && _c !== void 0 ? _c : rowIndex, className: ['bgrid-summary-row', (_d = row.className) !== null && _d !== void 0 ? _d : ''].filter(Boolean).join(' '), style: __assign(__assign({}, (rowHeight !== undefined ? { height: rowHeight } : {})), row.style) },
|
|
88
90
|
showLineNumber && React.createElement(TableHead_1.HeadTd, { className: !hasRowSelection ? 'bordered' : '' }, "\u00A0"),
|
|
89
91
|
hasRowSelection && React.createElement("td", { className: 'bordered' }, "\u00A0"),
|
|
90
|
-
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
if (!column)
|
|
92
|
+
cells.map(function (cell, index) {
|
|
93
|
+
var _a, _b;
|
|
94
|
+
if (!cell || !cell.column)
|
|
94
95
|
return null;
|
|
96
|
+
var column = cell.column, summaryColumn = cell.summaryColumn, columnIndex = cell.columnIndex;
|
|
95
97
|
if (!summaryColumn)
|
|
96
98
|
return React.createElement("td", { key: index });
|
|
97
|
-
return (React.createElement("td", { key: index, style: {
|
|
98
|
-
textAlign: summaryColumn.align,
|
|
99
|
-
}, colSpan: (_b = summaryColumn.colSpan) !== null && _b !== void 0 ? _b : 1 }, (_c = summaryColumn.itemRender) === null || _c === void 0 ? void 0 : _c.call(summaryColumn, {
|
|
99
|
+
return (React.createElement("td", { key: index, className: summaryColumn.className, style: __assign({ textAlign: summaryColumn.align }, summaryColumn.style), colSpan: (_a = summaryColumn.colSpan) !== null && _a !== void 0 ? _a : 1 }, (_b = summaryColumn.itemRender) === null || _b === void 0 ? void 0 : _b.call(summaryColumn, {
|
|
100
100
|
column: column,
|
|
101
101
|
columnIndex: columnIndex,
|
|
102
|
+
rowIndex: rowIndex,
|
|
102
103
|
data: data,
|
|
103
104
|
})));
|
|
104
|
-
})))
|
|
105
|
+
})));
|
|
106
|
+
}))));
|
|
105
107
|
}
|
|
@@ -223,6 +223,7 @@ function AppStoreProvider(_a) {
|
|
|
223
223
|
visible: true,
|
|
224
224
|
},
|
|
225
225
|
summaryHeight: (_j = initialState === null || initialState === void 0 ? void 0 : initialState.summaryHeight) !== null && _j !== void 0 ? _j : 30,
|
|
226
|
+
summaryRowHeight: initialState === null || initialState === void 0 ? void 0 : initialState.summaryRowHeight,
|
|
226
227
|
itemHeight: (_k = initialState === null || initialState === void 0 ? void 0 : initialState.itemHeight) !== null && _k !== void 0 ? _k : 15,
|
|
227
228
|
itemPadding: (_l = initialState === null || initialState === void 0 ? void 0 : initialState.itemPadding) !== null && _l !== void 0 ? _l : 7,
|
|
228
229
|
frozenColumnIndex: (_m = initialState === null || initialState === void 0 ? void 0 : initialState.frozenColumnIndex) !== null && _m !== void 0 ? _m : 0,
|
|
@@ -917,6 +918,7 @@ function AppStoreProvider(_a) {
|
|
|
917
918
|
setHeaderHeight: function (headerHeight) { return set({ headerHeight: headerHeight }); },
|
|
918
919
|
setFooterHeight: function (footerHeight) { return set({ footerHeight: footerHeight }); },
|
|
919
920
|
setSummaryHeight: function (summaryHeight) { return set({ summaryHeight: summaryHeight }); },
|
|
921
|
+
setSummaryRowHeight: function (summaryRowHeight) { return set({ summaryRowHeight: summaryRowHeight }); },
|
|
920
922
|
setItemHeight: function (itemHeight) { return set({ itemHeight: itemHeight }); },
|
|
921
923
|
setItemPadding: function (itemPadding) { return set({ itemPadding: itemPadding }); },
|
|
922
924
|
setFrozenColumnIndex: function (frozenColumnIndex) { return set({ frozenColumnIndex: frozenColumnIndex }); },
|
|
@@ -15,7 +15,7 @@ exports.getCellSelectionFragments = getCellSelectionFragments;
|
|
|
15
15
|
exports.clipCellSelectionFragment = clipCellSelectionFragment;
|
|
16
16
|
exports.normalizeCellSelectionRange = normalizeCellSelectionRange;
|
|
17
17
|
function getCellSelectionFragments(_a) {
|
|
18
|
-
var ranges = _a.ranges, columns = _a.columns, rowCount = _a.rowCount, rowHeight = _a.rowHeight, frozenColumnCount = _a.frozenColumnCount, frozenRowCount = _a.frozenRowCount, frozenColumnsWidth = _a.frozenColumnsWidth, rowOffsets = _a.rowOffsets;
|
|
18
|
+
var ranges = _a.ranges, columns = _a.columns, rowCount = _a.rowCount, rowHeight = _a.rowHeight, frozenColumnCount = _a.frozenColumnCount, frozenRowCount = _a.frozenRowCount, frozenColumnsWidth = _a.frozenColumnsWidth, rowOffsets = _a.rowOffsets, rowHeights = _a.rowHeights, detailHeights = _a.detailHeights;
|
|
19
19
|
var safeRowCount = Math.max(0, Math.floor(rowCount));
|
|
20
20
|
var safeColumnCount = columns.length;
|
|
21
21
|
var safeRowHeight = Math.max(1, rowHeight);
|
|
@@ -55,6 +55,8 @@ function getCellSelectionFragments(_a) {
|
|
|
55
55
|
selectedColumns: selectedColumns,
|
|
56
56
|
rowHeight: safeRowHeight,
|
|
57
57
|
rowOffsets: rowOffsets,
|
|
58
|
+
rowHeights: rowHeights,
|
|
59
|
+
detailHeights: detailHeights,
|
|
58
60
|
left: frozenDataOffset + getColumnsWidth(columns, 0, leftColumns.start - 1),
|
|
59
61
|
width: getColumnsWidth(columns, leftColumns.start, leftColumns.end),
|
|
60
62
|
top: getRowsTop(topRows.start, 0, safeRowHeight, rowOffsets),
|
|
@@ -70,6 +72,8 @@ function getCellSelectionFragments(_a) {
|
|
|
70
72
|
selectedColumns: selectedColumns,
|
|
71
73
|
rowHeight: safeRowHeight,
|
|
72
74
|
rowOffsets: rowOffsets,
|
|
75
|
+
rowHeights: rowHeights,
|
|
76
|
+
detailHeights: detailHeights,
|
|
73
77
|
left: getMainColumnLeft(columns, mainColumns.start, safeFrozenColumnCount),
|
|
74
78
|
width: getMainColumnRight(columns, mainColumns.end, safeFrozenColumnCount) -
|
|
75
79
|
getMainColumnLeft(columns, mainColumns.start, safeFrozenColumnCount),
|
|
@@ -86,6 +90,8 @@ function getCellSelectionFragments(_a) {
|
|
|
86
90
|
selectedColumns: selectedColumns,
|
|
87
91
|
rowHeight: safeRowHeight,
|
|
88
92
|
rowOffsets: rowOffsets,
|
|
93
|
+
rowHeights: rowHeights,
|
|
94
|
+
detailHeights: detailHeights,
|
|
89
95
|
left: frozenDataOffset + getColumnsWidth(columns, 0, leftColumns.start - 1),
|
|
90
96
|
width: getColumnsWidth(columns, leftColumns.start, leftColumns.end),
|
|
91
97
|
top: getRowsTop(bodyRows.start, safeFrozenRowCount, safeRowHeight, rowOffsets),
|
|
@@ -101,6 +107,8 @@ function getCellSelectionFragments(_a) {
|
|
|
101
107
|
selectedColumns: selectedColumns,
|
|
102
108
|
rowHeight: safeRowHeight,
|
|
103
109
|
rowOffsets: rowOffsets,
|
|
110
|
+
rowHeights: rowHeights,
|
|
111
|
+
detailHeights: detailHeights,
|
|
104
112
|
left: getMainColumnLeft(columns, mainColumns.start, safeFrozenColumnCount),
|
|
105
113
|
width: getMainColumnRight(columns, mainColumns.end, safeFrozenColumnCount) -
|
|
106
114
|
getMainColumnLeft(columns, mainColumns.start, safeFrozenColumnCount),
|
|
@@ -137,17 +145,14 @@ function normalizeCellSelectionRange(range) {
|
|
|
137
145
|
};
|
|
138
146
|
}
|
|
139
147
|
function createFragment(_a) {
|
|
140
|
-
var
|
|
141
|
-
var rangeIndex = _a.rangeIndex, quadrant = _a.quadrant, rows = _a.rows, columns = _a.columns, selectedRows = _a.selectedRows, selectedColumns = _a.selectedColumns, rowHeight = _a.rowHeight, rowOffsets = _a.rowOffsets, left = _a.left, top = _a.top, width = _a.width;
|
|
148
|
+
var rangeIndex = _a.rangeIndex, quadrant = _a.quadrant, rows = _a.rows, columns = _a.columns, selectedRows = _a.selectedRows, selectedColumns = _a.selectedColumns, rowHeight = _a.rowHeight, rowOffsets = _a.rowOffsets, rowHeights = _a.rowHeights, detailHeights = _a.detailHeights, left = _a.left, top = _a.top, width = _a.width;
|
|
142
149
|
return {
|
|
143
150
|
rangeIndex: rangeIndex,
|
|
144
151
|
quadrant: quadrant,
|
|
145
152
|
left: left,
|
|
146
153
|
top: top,
|
|
147
154
|
width: width,
|
|
148
|
-
height: rowOffsets
|
|
149
|
-
? ((_b = rowOffsets[rows.end + 1]) !== null && _b !== void 0 ? _b : 0) - ((_c = rowOffsets[rows.start]) !== null && _c !== void 0 ? _c : 0)
|
|
150
|
-
: (rows.end - rows.start + 1) * rowHeight,
|
|
155
|
+
height: getRowsHeight(rows.start, rows.end, rowHeight, rowOffsets, rowHeights, detailHeights),
|
|
151
156
|
edges: {
|
|
152
157
|
top: rows.start === selectedRows.start,
|
|
153
158
|
right: columns.end === selectedColumns.end,
|
|
@@ -156,6 +161,27 @@ function createFragment(_a) {
|
|
|
156
161
|
},
|
|
157
162
|
};
|
|
158
163
|
}
|
|
164
|
+
function getRowsHeight(start, end, rowHeight, rowOffsets, rowHeights, detailHeights) {
|
|
165
|
+
var _a, _b, _c, _d, _e, _f;
|
|
166
|
+
if (rowHeights && rowHeights[end] !== undefined) {
|
|
167
|
+
var endRowHeight = rowHeights[end];
|
|
168
|
+
if (start === end)
|
|
169
|
+
return endRowHeight;
|
|
170
|
+
var topStart = rowOffsets ? (_a = rowOffsets[start]) !== null && _a !== void 0 ? _a : 0 : start * rowHeight;
|
|
171
|
+
var topEnd = rowOffsets ? (_b = rowOffsets[end]) !== null && _b !== void 0 ? _b : 0 : end * rowHeight;
|
|
172
|
+
return topEnd + endRowHeight - topStart;
|
|
173
|
+
}
|
|
174
|
+
if (rowOffsets) {
|
|
175
|
+
var topStart = (_c = rowOffsets[start]) !== null && _c !== void 0 ? _c : 0;
|
|
176
|
+
var topEnd = (_d = rowOffsets[end]) !== null && _d !== void 0 ? _d : 0;
|
|
177
|
+
var detailEnd = (_e = detailHeights === null || detailHeights === void 0 ? void 0 : detailHeights[end]) !== null && _e !== void 0 ? _e : 0;
|
|
178
|
+
var endRowHeight = Math.max(((_f = rowOffsets[end + 1]) !== null && _f !== void 0 ? _f : (topEnd + rowHeight)) - topEnd - detailEnd, 0);
|
|
179
|
+
if (start === end)
|
|
180
|
+
return endRowHeight;
|
|
181
|
+
return topEnd + endRowHeight - topStart;
|
|
182
|
+
}
|
|
183
|
+
return (end - start + 1) * rowHeight;
|
|
184
|
+
}
|
|
159
185
|
function getRowsTop(start, base, rowHeight, rowOffsets) {
|
|
160
186
|
var _a, _b;
|
|
161
187
|
return rowOffsets ? ((_a = rowOffsets[start]) !== null && _a !== void 0 ? _a : 0) - ((_b = rowOffsets[base]) !== null && _b !== void 0 ? _b : 0) : (start - base) * rowHeight;
|
|
@@ -94,21 +94,24 @@ function projectCellMergeOptions(options, visibleIndexByOriginalIndex) {
|
|
|
94
94
|
}, {});
|
|
95
95
|
return __assign(__assign({}, options), { columnsMap: columnsMap });
|
|
96
96
|
}
|
|
97
|
-
function
|
|
97
|
+
function projectSummaryColumn(sc, vMap) {
|
|
98
|
+
var _a;
|
|
99
|
+
var end = sc.columnIndex + ((_a = sc.colSpan) !== null && _a !== void 0 ? _a : 1);
|
|
100
|
+
var idxs = [];
|
|
101
|
+
for (var i = sc.columnIndex; i < end; i++) {
|
|
102
|
+
var v = vMap.get(i);
|
|
103
|
+
if (v !== undefined)
|
|
104
|
+
idxs.push(v);
|
|
105
|
+
}
|
|
106
|
+
return idxs.length ? [__assign(__assign({}, sc), { columnIndex: idxs[0], colSpan: idxs.length })] : [];
|
|
107
|
+
}
|
|
108
|
+
function projectSummary(summary, vMap) {
|
|
98
109
|
if (!summary)
|
|
99
110
|
return undefined;
|
|
100
|
-
var
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (var index = summaryColumn.columnIndex; index < originalEnd; index += 1) {
|
|
105
|
-
var visibleIndex = visibleIndexByOriginalIndex.get(index);
|
|
106
|
-
if (visibleIndex !== undefined)
|
|
107
|
-
visibleIndexes.push(visibleIndex);
|
|
111
|
+
var projectCols = function (cols) { return cols.flatMap(function (c) { return projectSummaryColumn(c, vMap); }); };
|
|
112
|
+
return __assign(__assign(__assign({}, summary), (summary.columns ? { columns: projectCols(summary.columns) } : {})), (summary.rows
|
|
113
|
+
? {
|
|
114
|
+
rows: summary.rows.map(function (r) { return (Array.isArray(r) ? projectCols(r) : __assign(__assign({}, r), { columns: projectCols(r.columns) })); }),
|
|
108
115
|
}
|
|
109
|
-
|
|
110
|
-
return [];
|
|
111
|
-
return [__assign(__assign({}, summaryColumn), { columnIndex: visibleIndexes[0], colSpan: visibleIndexes.length })];
|
|
112
|
-
});
|
|
113
|
-
return __assign(__assign({}, summary), { columns: columns });
|
|
116
|
+
: {}));
|
|
114
117
|
}
|
package/cjs/utils/index.js
CHANGED
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createRowHeightMetrics = createRowHeightMetrics;
|
|
4
4
|
exports.getRowIndexAtOffset = getRowIndexAtOffset;
|
|
5
5
|
exports.lowerBoundRowOffset = lowerBoundRowOffset;
|
|
6
|
-
function createRowHeightMetrics(data, fallbackHeight, getRowHeight) {
|
|
6
|
+
function createRowHeightMetrics(data, fallbackHeight, getRowHeight, masterDetail) {
|
|
7
|
+
var _a, _b;
|
|
7
8
|
var safeFallback = Number.isFinite(fallbackHeight) && fallbackHeight > 0 ? fallbackHeight : 1;
|
|
8
|
-
|
|
9
|
+
var hasMasterDetail = Boolean(masterDetail && masterDetail.expandedKeysSet.size > 0);
|
|
10
|
+
if (!getRowHeight && !hasMasterDetail) {
|
|
9
11
|
return {
|
|
10
12
|
heights: new Float64Array(0),
|
|
11
13
|
offsets: new Float64Array(0),
|
|
@@ -15,17 +17,56 @@ function createRowHeightMetrics(data, fallbackHeight, getRowHeight) {
|
|
|
15
17
|
}
|
|
16
18
|
var heights = new Float64Array(data.length);
|
|
17
19
|
var offsets = new Float64Array(data.length + 1);
|
|
20
|
+
var detailHeights = hasMasterDetail ? new Float64Array(data.length) : undefined;
|
|
18
21
|
for (var index = 0; index < data.length; index += 1) {
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var item = data[index];
|
|
23
|
+
var sourceIndex = (_b = (_a = masterDetail === null || masterDetail === void 0 ? void 0 : masterDetail.sourceIndexByVisibleIndex) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : index;
|
|
24
|
+
var masterHeight = safeFallback;
|
|
25
|
+
if (getRowHeight) {
|
|
26
|
+
try {
|
|
27
|
+
var requestedHeight = getRowHeight(item.values, index);
|
|
28
|
+
masterHeight = Number.isFinite(requestedHeight) && requestedHeight > 0 ? requestedHeight : safeFallback;
|
|
29
|
+
}
|
|
30
|
+
catch (_c) {
|
|
31
|
+
masterHeight = safeFallback;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
heights[index] = masterHeight;
|
|
35
|
+
var detailHeight = 0;
|
|
36
|
+
if (hasMasterDetail && masterDetail) {
|
|
37
|
+
var rowKey = masterDetail.getRowKey(item.values, index);
|
|
38
|
+
if (rowKey !== undefined && rowKey !== null && masterDetail.expandedKeysSet.has(rowKey)) {
|
|
39
|
+
var isExpandable = true;
|
|
40
|
+
if (masterDetail.hasDetail) {
|
|
41
|
+
try {
|
|
42
|
+
isExpandable = masterDetail.hasDetail(item, sourceIndex);
|
|
43
|
+
}
|
|
44
|
+
catch (_d) {
|
|
45
|
+
isExpandable = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (isExpandable) {
|
|
49
|
+
try {
|
|
50
|
+
var requestedDetailHeight = masterDetail.getDetailHeight(item, sourceIndex);
|
|
51
|
+
detailHeight =
|
|
52
|
+
Number.isFinite(requestedDetailHeight) && requestedDetailHeight > 0 ? requestedDetailHeight : 200;
|
|
53
|
+
}
|
|
54
|
+
catch (_e) {
|
|
55
|
+
detailHeight = 200;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
detailHeights[index] = detailHeight;
|
|
60
|
+
}
|
|
61
|
+
var layoutHeight = masterHeight + detailHeight;
|
|
62
|
+
offsets[index + 1] = offsets[index] + layoutHeight;
|
|
23
63
|
}
|
|
24
64
|
return {
|
|
25
65
|
heights: heights,
|
|
26
66
|
offsets: offsets,
|
|
27
67
|
totalHeight: offsets[data.length],
|
|
28
68
|
variable: true,
|
|
69
|
+
detailHeights: detailHeights,
|
|
29
70
|
};
|
|
30
71
|
}
|
|
31
72
|
/** Returns the row containing offset, or rowCount when offset is at/after the end. */
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.DEFAULT_SUMMARY_ROW_HEIGHT = void 0;
|
|
15
|
+
exports.normalizeSummaryRows = normalizeSummaryRows;
|
|
16
|
+
exports.computeSummaryHeight = computeSummaryHeight;
|
|
17
|
+
exports.buildSummaryRowCells = buildSummaryRowCells;
|
|
18
|
+
exports.DEFAULT_SUMMARY_ROW_HEIGHT = 30;
|
|
19
|
+
function normalizeSummaryRows(summary) {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
if (!summary)
|
|
22
|
+
return [];
|
|
23
|
+
if ((_a = summary.rows) === null || _a === void 0 ? void 0 : _a.length) {
|
|
24
|
+
return summary.rows.map(function (row, idx) { var _a; return Array.isArray(row) ? { id: idx, columns: row } : __assign(__assign({}, row), { id: (_a = row.id) !== null && _a !== void 0 ? _a : idx }); });
|
|
25
|
+
}
|
|
26
|
+
return ((_b = summary.columns) === null || _b === void 0 ? void 0 : _b.length) ? [{ id: 0, columns: summary.columns }] : [];
|
|
27
|
+
}
|
|
28
|
+
function computeSummaryHeight(options) {
|
|
29
|
+
var summary = options.summary, summaryHeight = options.summaryHeight, _a = options.summaryRowHeight, summaryRowHeight = _a === void 0 ? exports.DEFAULT_SUMMARY_ROW_HEIGHT : _a;
|
|
30
|
+
if (!summary)
|
|
31
|
+
return 0;
|
|
32
|
+
var rows = normalizeSummaryRows(summary);
|
|
33
|
+
if (!rows.length)
|
|
34
|
+
return 0;
|
|
35
|
+
return summaryHeight !== undefined
|
|
36
|
+
? summaryHeight
|
|
37
|
+
: rows.reduce(function (acc, row) { var _a; return acc + ((_a = row.height) !== null && _a !== void 0 ? _a : summaryRowHeight); }, 0);
|
|
38
|
+
}
|
|
39
|
+
function buildSummaryRowCells(columns, summaryColumns, startIndex) {
|
|
40
|
+
if (startIndex === void 0) { startIndex = 0; }
|
|
41
|
+
var ignoreCnt = 0;
|
|
42
|
+
return columns.map(function (column, i) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
var columnIndex = startIndex + i;
|
|
45
|
+
var summaryColumn = summaryColumns === null || summaryColumns === void 0 ? void 0 : summaryColumns.find(function (sc) { return sc.columnIndex === columnIndex; });
|
|
46
|
+
if (summaryColumn && ((_a = summaryColumn.colSpan) !== null && _a !== void 0 ? _a : 1) > 1) {
|
|
47
|
+
ignoreCnt = ((_b = summaryColumn.colSpan) !== null && _b !== void 0 ? _b : 1) - 1;
|
|
48
|
+
}
|
|
49
|
+
else if (ignoreCnt > 0) {
|
|
50
|
+
ignoreCnt--;
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return { column: column, columnIndex: columnIndex, summaryColumn: summaryColumn };
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -387,7 +387,11 @@ function useRowReorderController(_a) {
|
|
|
387
387
|
container.style.setProperty('--bgrid-row-reorder-height', "".concat(session.rowHeight, "px"));
|
|
388
388
|
store.getState().clearCellSelection();
|
|
389
389
|
store.getState().closeTransientSurfaces();
|
|
390
|
-
container.querySelectorAll('.bgrid-row-hover').forEach(function (element) {
|
|
390
|
+
container.querySelectorAll('.bgrid-row-hover').forEach(function (element) {
|
|
391
|
+
if (element.closest('[role="grid"], [role="treegrid"]') !== container)
|
|
392
|
+
return;
|
|
393
|
+
element.classList.remove('bgrid-row-hover');
|
|
394
|
+
});
|
|
391
395
|
store.setState({
|
|
392
396
|
reorderingInfo: {
|
|
393
397
|
fromIndex: session.fromIndex,
|