es-grid-template 1.7.33 → 1.7.34
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/es/table-component/InternalTable.js +9 -3
- package/es/table-component/TableContainer.d.ts +1 -0
- package/es/table-component/TableContainer.js +4 -2
- package/es/table-component/TableContainerEdit.d.ts +1 -0
- package/es/table-component/TableContainerEdit.js +3 -1
- package/es/table-component/body/EditableCell.js +3 -2
- package/es/table-component/body/TableBodyCell.js +165 -9
- package/es/table-component/body/TableBodyCellEdit.js +14 -13
- package/es/table-component/body/TableBodyRow.js +0 -8
- package/es/table-component/header/TableHeadCell.js +2 -2
- package/es/table-component/hook/utils.d.ts +1 -0
- package/es/table-component/hook/utils.js +20 -2
- package/es/table-component/style.scss +20 -14
- package/es/table-component/table/Grid.d.ts +1 -0
- package/es/table-component/type.d.ts +9 -1
- package/es/table-component/useContext.d.ts +4 -2
- package/es/table-component/useContext.js +1 -0
- package/lib/table-component/InternalTable.js +8 -2
- package/lib/table-component/TableContainer.d.ts +1 -0
- package/lib/table-component/TableContainer.js +4 -2
- package/lib/table-component/TableContainerEdit.d.ts +1 -0
- package/lib/table-component/TableContainerEdit.js +3 -1
- package/lib/table-component/body/EditableCell.js +3 -2
- package/lib/table-component/body/TableBodyCell.js +165 -9
- package/lib/table-component/body/TableBodyCellEdit.js +14 -13
- package/lib/table-component/body/TableBodyRow.js +0 -8
- package/lib/table-component/header/TableHeadCell.js +2 -2
- package/lib/table-component/hook/utils.d.ts +1 -0
- package/lib/table-component/hook/utils.js +21 -2
- package/lib/table-component/style.scss +20 -14
- package/lib/table-component/table/Grid.d.ts +1 -0
- package/lib/table-component/type.d.ts +9 -1
- package/lib/table-component/useContext.d.ts +4 -2
- package/lib/table-component/useContext.js +1 -0
- package/package.json +1 -1
|
@@ -33,7 +33,7 @@ import { addRowIdArray, convertToObj,
|
|
|
33
33
|
// convertFilters,
|
|
34
34
|
filterDataByColumns, flatColumns2,
|
|
35
35
|
// filterDataByColumns,
|
|
36
|
-
getAllRowKey, getDiffent2Array, getFixedFields, getInvisibleColumns, groupArrayByColumns } from "./hook/utils";
|
|
36
|
+
getAllRowKey, getDiffent2Array, getFixedFields, getInvisibleColumns, groupArrayByColumns, isTree } from "./hook/utils";
|
|
37
37
|
// import GridEdit from './table/GridEdit'
|
|
38
38
|
import { convertToTanStackColumns } from "./hook/useColumns";
|
|
39
39
|
import { convertColumns } from "./hook/convert";
|
|
@@ -146,6 +146,9 @@ const InternalTable = props => {
|
|
|
146
146
|
|
|
147
147
|
// return convertToTanStackColumns<RecordType>(columns, expanded, setExpanded, expandable)
|
|
148
148
|
}, [t, columns, format, editAble]);
|
|
149
|
+
const isDataTree = React.useMemo(() => {
|
|
150
|
+
return isTree(dataSource);
|
|
151
|
+
}, [dataSource]);
|
|
149
152
|
const columnPinning = React.useMemo(() => {
|
|
150
153
|
return {
|
|
151
154
|
left: getFixedFields(columns, 'left'),
|
|
@@ -277,7 +280,9 @@ const InternalTable = props => {
|
|
|
277
280
|
setExpanded: setExpanded,
|
|
278
281
|
isFullScreen: isFullScreen,
|
|
279
282
|
setIsFullScreen: setIsFullScreen,
|
|
280
|
-
windowSize: windowSize
|
|
283
|
+
windowSize: windowSize,
|
|
284
|
+
height: height,
|
|
285
|
+
isDataTree: isDataTree
|
|
281
286
|
})), /*#__PURE__*/React.createElement(Modal, {
|
|
282
287
|
open: isFullScreen,
|
|
283
288
|
footer: null,
|
|
@@ -340,7 +345,8 @@ const InternalTable = props => {
|
|
|
340
345
|
isFullScreen: isFullScreen,
|
|
341
346
|
setIsFullScreen: setIsFullScreen,
|
|
342
347
|
height: windowSize.innerHeight - 70,
|
|
343
|
-
windowSize: windowSize
|
|
348
|
+
windowSize: windowSize,
|
|
349
|
+
isDataTree: isDataTree
|
|
344
350
|
})))));
|
|
345
351
|
};
|
|
346
352
|
export default InternalTable;
|
|
@@ -31,6 +31,7 @@ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
|
|
|
31
31
|
columnHidden: any;
|
|
32
32
|
isFullScreen: boolean;
|
|
33
33
|
setIsFullScreen: Dispatch<SetStateAction<boolean>>;
|
|
34
|
+
isDataTree: boolean;
|
|
34
35
|
};
|
|
35
36
|
declare const TableContainer: <RecordType extends object>(props: TableContainerProps<RecordType>) => React.JSX.Element;
|
|
36
37
|
export default TableContainer;
|
|
@@ -69,7 +69,8 @@ const TableContainer = props => {
|
|
|
69
69
|
contextMenuClick,
|
|
70
70
|
contextMenuHidden,
|
|
71
71
|
isFullScreen,
|
|
72
|
-
setIsFullScreen
|
|
72
|
+
setIsFullScreen,
|
|
73
|
+
isDataTree
|
|
73
74
|
} = props;
|
|
74
75
|
const tableContainerRef = React.useRef(null);
|
|
75
76
|
const containerRef = React.useRef(null);
|
|
@@ -207,7 +208,8 @@ const TableContainer = props => {
|
|
|
207
208
|
onContextMenu,
|
|
208
209
|
setSorterChange,
|
|
209
210
|
setFilterChange,
|
|
210
|
-
windowSize
|
|
211
|
+
windowSize,
|
|
212
|
+
isDataTree
|
|
211
213
|
}
|
|
212
214
|
}, /*#__PURE__*/React.createElement(TableWrapper, {
|
|
213
215
|
contextMenuItems: contextMenuItems,
|
|
@@ -18,6 +18,7 @@ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
|
|
|
18
18
|
setFilterChange: Dispatch<SetStateAction<boolean>>;
|
|
19
19
|
onContextMenu?: (data: T) => (event: any) => void;
|
|
20
20
|
tableHeight?: number;
|
|
21
|
+
isDataTree: boolean;
|
|
21
22
|
windowSize: {
|
|
22
23
|
innerHeight: number;
|
|
23
24
|
innerWidth: number;
|
|
@@ -115,7 +115,8 @@ const TableContainerEdit = props => {
|
|
|
115
115
|
contextMenuClick,
|
|
116
116
|
contextMenuHidden,
|
|
117
117
|
showDefaultContext,
|
|
118
|
-
commandSettings
|
|
118
|
+
commandSettings,
|
|
119
|
+
isDataTree
|
|
119
120
|
} = props;
|
|
120
121
|
const containerRef = React.useRef(null);
|
|
121
122
|
const bottomToolbarRef = React.useRef(null);
|
|
@@ -1503,6 +1504,7 @@ const TableContainerEdit = props => {
|
|
|
1503
1504
|
}, /*#__PURE__*/React.createElement(TableContext.Provider, {
|
|
1504
1505
|
value: {
|
|
1505
1506
|
t,
|
|
1507
|
+
isDataTree,
|
|
1506
1508
|
locale,
|
|
1507
1509
|
prefix,
|
|
1508
1510
|
id,
|
|
@@ -48,7 +48,7 @@ const filterTreeNode = (input, treeNode) => {
|
|
|
48
48
|
};
|
|
49
49
|
const EditableCell = props => {
|
|
50
50
|
const {
|
|
51
|
-
t,
|
|
51
|
+
// t,
|
|
52
52
|
// editing,
|
|
53
53
|
dataIndex,
|
|
54
54
|
editType,
|
|
@@ -69,7 +69,8 @@ const EditableCell = props => {
|
|
|
69
69
|
errors,
|
|
70
70
|
id,
|
|
71
71
|
startCell,
|
|
72
|
-
rowKey
|
|
72
|
+
rowKey,
|
|
73
|
+
t
|
|
73
74
|
} = useContext(TableContext);
|
|
74
75
|
const datePickerRef = React.useRef(null);
|
|
75
76
|
const dateTimePickerRef = React.useRef(null);
|
|
@@ -11,11 +11,48 @@ import ReactDOMServer from 'react-dom/server';
|
|
|
11
11
|
const renderCellIndex = props => {
|
|
12
12
|
const {
|
|
13
13
|
parrents,
|
|
14
|
-
cell
|
|
14
|
+
cell,
|
|
15
|
+
expanded,
|
|
16
|
+
isDataTree,
|
|
17
|
+
setExpanded,
|
|
18
|
+
expandIconColumnIndex
|
|
15
19
|
} = props;
|
|
16
20
|
return /*#__PURE__*/React.createElement("span", {
|
|
17
21
|
className: "ui-rc_cell-content"
|
|
18
|
-
},
|
|
22
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
23
|
+
className: "ui-rc-table-row-expand-trigger",
|
|
24
|
+
style: {
|
|
25
|
+
paddingLeft: `${cell.row.depth * 25}px`
|
|
26
|
+
}
|
|
27
|
+
}, /*#__PURE__*/React.createElement("div", null, cell.row.getCanExpand() ? /*#__PURE__*/React.createElement("button", {
|
|
28
|
+
// onClick: row.getToggleExpandedHandler(),
|
|
29
|
+
onClick: () => {
|
|
30
|
+
const keys = Object.keys(expanded);
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
const tmp = {
|
|
33
|
+
...expanded
|
|
34
|
+
};
|
|
35
|
+
if (keys.includes(cell.row.id)) {
|
|
36
|
+
delete tmp[cell.row.id];
|
|
37
|
+
setExpanded(tmp);
|
|
38
|
+
} else {
|
|
39
|
+
setExpanded(old => ({
|
|
40
|
+
...old,
|
|
41
|
+
[cell.row.id]: true
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
style: {
|
|
46
|
+
cursor: "pointer"
|
|
47
|
+
},
|
|
48
|
+
className: "ui-rc-table-row-expand"
|
|
49
|
+
}, cell.row.getIsExpanded() ? /*#__PURE__*/React.createElement("span", {
|
|
50
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded"
|
|
51
|
+
}) : /*#__PURE__*/React.createElement("span", {
|
|
52
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
53
|
+
})) : /*#__PURE__*/React.createElement("span", {
|
|
54
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
55
|
+
}))), parrents.map(pr => {
|
|
19
56
|
return `${pr.index + 1}.`;
|
|
20
57
|
}), cell.row.index + 1);
|
|
21
58
|
};
|
|
@@ -61,6 +98,13 @@ const renderSelection = args => {
|
|
|
61
98
|
const {
|
|
62
99
|
row
|
|
63
100
|
} = args.cell;
|
|
101
|
+
const {
|
|
102
|
+
cell,
|
|
103
|
+
expandIconColumnIndex,
|
|
104
|
+
isDataTree,
|
|
105
|
+
expanded,
|
|
106
|
+
setExpanded
|
|
107
|
+
} = args;
|
|
64
108
|
const {
|
|
65
109
|
selectionSettings,
|
|
66
110
|
setIsSelectionChange
|
|
@@ -70,7 +114,40 @@ const renderSelection = args => {
|
|
|
70
114
|
|
|
71
115
|
// paddingLeft: `${row.depth * 2}rem`,
|
|
72
116
|
}
|
|
73
|
-
},
|
|
117
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
118
|
+
className: "ui-rc-table-row-expand-trigger",
|
|
119
|
+
style: {
|
|
120
|
+
paddingLeft: `${cell.row.depth * 25}px`
|
|
121
|
+
}
|
|
122
|
+
}, /*#__PURE__*/React.createElement("div", null, cell.row.getCanExpand() ? /*#__PURE__*/React.createElement("button", {
|
|
123
|
+
// onClick: row.getToggleExpandedHandler(),
|
|
124
|
+
onClick: () => {
|
|
125
|
+
const keys = Object.keys(expanded);
|
|
126
|
+
// @ts-ignore
|
|
127
|
+
const tmp = {
|
|
128
|
+
...expanded
|
|
129
|
+
};
|
|
130
|
+
if (keys.includes(cell.row.id)) {
|
|
131
|
+
delete tmp[cell.row.id];
|
|
132
|
+
setExpanded(tmp);
|
|
133
|
+
} else {
|
|
134
|
+
setExpanded(old => ({
|
|
135
|
+
...old,
|
|
136
|
+
[cell.row.id]: true
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
style: {
|
|
141
|
+
cursor: "pointer"
|
|
142
|
+
},
|
|
143
|
+
className: "ui-rc-table-row-expand"
|
|
144
|
+
}, cell.row.getIsExpanded() ? /*#__PURE__*/React.createElement("span", {
|
|
145
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded"
|
|
146
|
+
}) : /*#__PURE__*/React.createElement("span", {
|
|
147
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
148
|
+
})) : /*#__PURE__*/React.createElement("span", {
|
|
149
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
150
|
+
}))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Checkbox, {
|
|
74
151
|
checked: row.getIsSelected() || row.getIsAllSubRowsSelected(),
|
|
75
152
|
indeterminate: row.getIsSomeSelected() && selectionSettings && selectionSettings.mode === 'checkbox' && selectionSettings.type !== 'single'
|
|
76
153
|
// indeterminate={row.getIsSomeSelected() }
|
|
@@ -102,10 +179,15 @@ const TableBodyCell = props => {
|
|
|
102
179
|
selectionSettings,
|
|
103
180
|
id,
|
|
104
181
|
originData,
|
|
105
|
-
wrapSettings
|
|
182
|
+
wrapSettings,
|
|
183
|
+
expanded,
|
|
184
|
+
setExpanded,
|
|
185
|
+
expandable,
|
|
186
|
+
isDataTree
|
|
106
187
|
} = useContext(TableContext);
|
|
107
188
|
const columnMeta = cell.column.columnDef.meta ?? {};
|
|
108
189
|
const parrents = cell.row.getParentRows();
|
|
190
|
+
const expandIconColumnIndex = expandable?.expandIconColumnIndex;
|
|
109
191
|
const isPinned = cell.column.getIsPinned();
|
|
110
192
|
const isLastLeftPinnedColumn = isPinned === "left" && cell.column.getIsLastColumn("left");
|
|
111
193
|
const isFirstRightPinnedColumn = isPinned === "right" && cell.column.getIsFirstColumn("right");
|
|
@@ -119,8 +201,8 @@ const TableBodyCell = props => {
|
|
|
119
201
|
[`${prefix}-grid-cell-wrap`]: wrapSettings && (wrapSettings.wrapMode === 'Both' || wrapSettings.wrapMode === 'Content'),
|
|
120
202
|
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
121
203
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
122
|
-
[`${prefix}-grid-cell-text-center`]: columnMeta?.
|
|
123
|
-
[`${prefix}-grid-cell-text-right`]: columnMeta?.
|
|
204
|
+
[`${prefix}-grid-cell-text-center`]: columnMeta?.textAlign === 'center',
|
|
205
|
+
[`${prefix}-grid-cell-text-right`]: columnMeta?.textAlign === 'right' || columnMeta.type === 'number'
|
|
124
206
|
}),
|
|
125
207
|
style: {
|
|
126
208
|
display: 'flex',
|
|
@@ -146,7 +228,11 @@ const TableBodyCell = props => {
|
|
|
146
228
|
}
|
|
147
229
|
}, cell.column.id === "#" && renderCellIndex({
|
|
148
230
|
parrents,
|
|
149
|
-
cell
|
|
231
|
+
cell,
|
|
232
|
+
expanded,
|
|
233
|
+
isDataTree,
|
|
234
|
+
setExpanded,
|
|
235
|
+
expandIconColumnIndex
|
|
150
236
|
}), cell.column.id === "command" && renderCommand({
|
|
151
237
|
cell,
|
|
152
238
|
commandClick,
|
|
@@ -156,9 +242,79 @@ const TableBodyCell = props => {
|
|
|
156
242
|
cell,
|
|
157
243
|
table,
|
|
158
244
|
selectionSettings,
|
|
159
|
-
setIsSelectionChange
|
|
245
|
+
setIsSelectionChange,
|
|
246
|
+
expanded,
|
|
247
|
+
isDataTree,
|
|
248
|
+
setExpanded,
|
|
249
|
+
expandIconColumnIndex
|
|
160
250
|
}), !nonActionColumn.includes(cell.column.id) && (isFirstRightPinnedColumn ? /*#__PURE__*/React.createElement("span", {
|
|
161
251
|
className: "ui-rc_cell-content"
|
|
162
|
-
},
|
|
252
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
253
|
+
className: "ui-rc-table-row-expand-trigger",
|
|
254
|
+
style: {
|
|
255
|
+
paddingLeft: `${cell.row.depth * 25}px`
|
|
256
|
+
}
|
|
257
|
+
}, /*#__PURE__*/React.createElement("div", null, cell.row.getCanExpand() ? /*#__PURE__*/React.createElement("button", {
|
|
258
|
+
// onClick: row.getToggleExpandedHandler(),
|
|
259
|
+
onClick: () => {
|
|
260
|
+
const keys = Object.keys(expanded);
|
|
261
|
+
// @ts-ignore
|
|
262
|
+
const tmp = {
|
|
263
|
+
...expanded
|
|
264
|
+
};
|
|
265
|
+
if (keys.includes(cell.row.id)) {
|
|
266
|
+
delete tmp[cell.row.id];
|
|
267
|
+
setExpanded(tmp);
|
|
268
|
+
} else {
|
|
269
|
+
setExpanded(old => ({
|
|
270
|
+
...old,
|
|
271
|
+
[cell.row.id]: true
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
style: {
|
|
276
|
+
cursor: "pointer"
|
|
277
|
+
},
|
|
278
|
+
className: "ui-rc-table-row-expand"
|
|
279
|
+
}, cell.row.getIsExpanded() ? /*#__PURE__*/React.createElement("span", {
|
|
280
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded"
|
|
281
|
+
}) : /*#__PURE__*/React.createElement("span", {
|
|
282
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
283
|
+
})) : /*#__PURE__*/React.createElement("span", {
|
|
284
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
285
|
+
}))), flexRender(cell.column.columnDef.cell, cell.getContext())) : /*#__PURE__*/React.createElement(React.Fragment, null, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
286
|
+
className: "ui-rc-table-row-expand-trigger",
|
|
287
|
+
style: {
|
|
288
|
+
paddingLeft: `${cell.row.depth * 25}px`
|
|
289
|
+
}
|
|
290
|
+
}, /*#__PURE__*/React.createElement("div", null, cell.row.getCanExpand() ? /*#__PURE__*/React.createElement("button", {
|
|
291
|
+
// onClick: row.getToggleExpandedHandler(),
|
|
292
|
+
onClick: () => {
|
|
293
|
+
const keys = Object.keys(expanded);
|
|
294
|
+
// @ts-ignore
|
|
295
|
+
const tmp = {
|
|
296
|
+
...expanded
|
|
297
|
+
};
|
|
298
|
+
if (keys.includes(cell.row.id)) {
|
|
299
|
+
delete tmp[cell.row.id];
|
|
300
|
+
setExpanded(tmp);
|
|
301
|
+
} else {
|
|
302
|
+
setExpanded(old => ({
|
|
303
|
+
...old,
|
|
304
|
+
[cell.row.id]: true
|
|
305
|
+
}));
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
style: {
|
|
309
|
+
cursor: "pointer"
|
|
310
|
+
},
|
|
311
|
+
className: "ui-rc-table-row-expand"
|
|
312
|
+
}, cell.row.getIsExpanded() ? /*#__PURE__*/React.createElement("span", {
|
|
313
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded"
|
|
314
|
+
}) : /*#__PURE__*/React.createElement("span", {
|
|
315
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
316
|
+
})) : /*#__PURE__*/React.createElement("span", {
|
|
317
|
+
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
318
|
+
}))), flexRender(cell.column.columnDef.cell, cell.getContext()))));
|
|
163
319
|
};
|
|
164
320
|
export default TableBodyCell;
|
|
@@ -127,9 +127,10 @@ const TableBodyCellEdit = props => {
|
|
|
127
127
|
dataErrors,
|
|
128
128
|
expanded,
|
|
129
129
|
setExpanded,
|
|
130
|
-
expandable
|
|
130
|
+
expandable,
|
|
131
|
+
isDataTree
|
|
131
132
|
} = React.useContext(TableContext);
|
|
132
|
-
const expandIconColumnIndex = expandable?.expandIconColumnIndex
|
|
133
|
+
const expandIconColumnIndex = expandable?.expandIconColumnIndex;
|
|
133
134
|
const record = cell.row.original;
|
|
134
135
|
const columnMeta = cell.column.columnDef.meta ?? {};
|
|
135
136
|
const cellContent = columnMeta.type === 'checkbox' ? '' : flexRender(cell.column.columnDef.cell, cell.getContext());
|
|
@@ -652,8 +653,8 @@ const TableBodyCellEdit = props => {
|
|
|
652
653
|
[`${prefix}-grid-cell-ellipsis`]: true,
|
|
653
654
|
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
654
655
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
655
|
-
[`${prefix}-grid-cell-text-center`]: columnMeta?.
|
|
656
|
-
[`${prefix}-grid-cell-text-right`]: columnMeta?.
|
|
656
|
+
[`${prefix}-grid-cell-text-center`]: columnMeta?.textAlign === 'center',
|
|
657
|
+
[`${prefix}-grid-cell-text-right`]: columnMeta?.textAlign === 'right',
|
|
657
658
|
// [`${prefix}-grid-cell-index-selected`]: rowRange?.includes(cell.row.id),
|
|
658
659
|
[`${prefix}-grid-cell-index-selected`]: selectRowIds?.includes(cell.row.id)
|
|
659
660
|
}),
|
|
@@ -684,7 +685,7 @@ const TableBodyCellEdit = props => {
|
|
|
684
685
|
// reset?.()
|
|
685
686
|
}
|
|
686
687
|
}
|
|
687
|
-
}, cell.column.getIndex() === expandIconColumnIndex && /*#__PURE__*/React.createElement("div", {
|
|
688
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
688
689
|
className: "ui-rc-table-row-expand-trigger",
|
|
689
690
|
style: {
|
|
690
691
|
paddingLeft: `${cell.row.depth * 25}px`
|
|
@@ -729,8 +730,8 @@ const TableBodyCellEdit = props => {
|
|
|
729
730
|
[`${prefix}-grid-cell-ellipsis`]: true,
|
|
730
731
|
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
731
732
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
732
|
-
[`${prefix}-grid-cell-text-center`]: columnMeta?.
|
|
733
|
-
[`${prefix}-grid-cell-text-right`]: columnMeta?.
|
|
733
|
+
[`${prefix}-grid-cell-text-center`]: columnMeta?.textAlign === 'center',
|
|
734
|
+
[`${prefix}-grid-cell-text-right`]: columnMeta?.textAlign === 'right'
|
|
734
735
|
}),
|
|
735
736
|
style: {
|
|
736
737
|
display: 'flex',
|
|
@@ -754,8 +755,8 @@ const TableBodyCellEdit = props => {
|
|
|
754
755
|
[`${prefix}-grid-cell-ellipsis`]: true,
|
|
755
756
|
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
756
757
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
757
|
-
[`${prefix}-grid-cell-text-center`]: columnMeta?.
|
|
758
|
-
[`${prefix}-grid-cell-text-right`]: columnMeta?.
|
|
758
|
+
[`${prefix}-grid-cell-text-center`]: columnMeta?.textAlign === 'center',
|
|
759
|
+
[`${prefix}-grid-cell-text-right`]: columnMeta?.textAlign === 'right'
|
|
759
760
|
}),
|
|
760
761
|
style: {
|
|
761
762
|
display: 'flex',
|
|
@@ -765,7 +766,7 @@ const TableBodyCellEdit = props => {
|
|
|
765
766
|
// maxWidth: cell.column.getSize(),
|
|
766
767
|
...getCommonPinningStyles(cell.column)
|
|
767
768
|
}
|
|
768
|
-
}, cell.column.getIndex() === expandIconColumnIndex && /*#__PURE__*/React.createElement("div", {
|
|
769
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
769
770
|
className: "ui-rc-table-row-expand-trigger",
|
|
770
771
|
style: {
|
|
771
772
|
paddingLeft: `${cell.row.depth * 25}px`
|
|
@@ -856,8 +857,8 @@ const TableBodyCellEdit = props => {
|
|
|
856
857
|
'cell-paste-border-left': isInRangePaste && isLeftPaste,
|
|
857
858
|
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
858
859
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
859
|
-
[`${prefix}-grid-cell-text-center`]: columnMeta?.
|
|
860
|
-
[`${prefix}-grid-cell-text-right`]: columnMeta?.
|
|
860
|
+
[`${prefix}-grid-cell-text-center`]: columnMeta?.textAlign === 'center',
|
|
861
|
+
[`${prefix}-grid-cell-text-right`]: columnMeta?.textAlign === 'right' || columnMeta.type === 'number'
|
|
861
862
|
}),
|
|
862
863
|
style: {
|
|
863
864
|
display: 'flex',
|
|
@@ -991,7 +992,7 @@ const TableBodyCellEdit = props => {
|
|
|
991
992
|
className: classNames('ui-rc_cell-content', {
|
|
992
993
|
'select-cell': ['select', 'selectTable', 'asyncSelect'].includes(getEditType(columnMeta, record))
|
|
993
994
|
})
|
|
994
|
-
}, cell.column.getIndex() === expandIconColumnIndex && /*#__PURE__*/React.createElement("div", {
|
|
995
|
+
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
995
996
|
className: "ui-rc-table-row-expand-trigger",
|
|
996
997
|
style: {
|
|
997
998
|
paddingLeft: `${cell.row.depth * 25}px`
|
|
@@ -27,15 +27,7 @@ const TableBodyRow = ({
|
|
|
27
27
|
recordDoubleClick
|
|
28
28
|
} = React.useContext(TableContext);
|
|
29
29
|
const visibleCells = row.getVisibleCells();
|
|
30
|
-
|
|
31
|
-
// console.log('visibleCells', visibleCells)
|
|
32
|
-
|
|
33
30
|
const virtualColumns = columnVirtualizer.getVirtualItems();
|
|
34
|
-
|
|
35
|
-
// console.log('virtualColumns', virtualColumns)
|
|
36
|
-
|
|
37
|
-
// table.options.set
|
|
38
|
-
|
|
39
31
|
return /*#__PURE__*/React.createElement("tr", {
|
|
40
32
|
"data-index": virtualRow.index //needed for dynamic row height measurement
|
|
41
33
|
,
|
|
@@ -41,7 +41,7 @@ const TableHeadCell = props => {
|
|
|
41
41
|
locale
|
|
42
42
|
} = useContext(TableContext);
|
|
43
43
|
const isPinned = header.column.getIsPinned();
|
|
44
|
-
|
|
44
|
+
const isLastLeftPinnedColumn = isPinned === 'left' && header.column.getIsLastColumn('left');
|
|
45
45
|
const isFirstRightPinnedColumn = isPinned === 'right' && header.column.getIsFirstColumn('right');
|
|
46
46
|
const [selectedKeys, setSelectedKeys] = React.useState([]);
|
|
47
47
|
const [visible, setVisible] = React.useState(false);
|
|
@@ -212,7 +212,7 @@ const TableHeadCell = props => {
|
|
|
212
212
|
className: classNames(`${prefix}-grid-cell`, {
|
|
213
213
|
[`${prefix}-grid-cell-ellipsis`]: !wrapSettings || !(wrapSettings && (wrapSettings.wrapMode === 'Both' || wrapSettings.wrapMode === 'Header')),
|
|
214
214
|
[`${prefix}-grid-cell-wrap`]: wrapSettings && (wrapSettings.wrapMode === 'Both' || wrapSettings.wrapMode === 'Header'),
|
|
215
|
-
|
|
215
|
+
[`${prefix}-grid-cell-fix-left-last`]: isLastLeftPinnedColumn,
|
|
216
216
|
[`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
|
|
217
217
|
[`${prefix}-grid-cell-text-center`]: originalColumn?.headerTextAlign === 'center',
|
|
218
218
|
[`${prefix}-grid-cell-text-right`]: originalColumn?.headerTextAlign === 'right'
|
|
@@ -309,7 +309,7 @@ export function getFixedFields(columns, type) {
|
|
|
309
309
|
const result = [];
|
|
310
310
|
function traverse(cols) {
|
|
311
311
|
for (const col of cols) {
|
|
312
|
-
if ((col.fixed ?? col.fixedType) === type && col.field && (col.visible !== false || col.hidden
|
|
312
|
+
if ((col.fixed ?? col.fixedType) === type && col.field && (col.visible !== false || col.hidden)) {
|
|
313
313
|
result.push(col.field);
|
|
314
314
|
}
|
|
315
315
|
if (col.children && col.children.length > 0) {
|
|
@@ -1865,4 +1865,22 @@ export const convertToObj = arr => {
|
|
|
1865
1865
|
};
|
|
1866
1866
|
export const getDiffent2Array = (a, b) => {
|
|
1867
1867
|
return [...a.filter(x => !b.includes(x)), ...b.filter(x => !a.includes(x))];
|
|
1868
|
-
};
|
|
1868
|
+
};
|
|
1869
|
+
export function isTree(arr) {
|
|
1870
|
+
if (!Array.isArray(arr)) return false;
|
|
1871
|
+
function checkNode(node) {
|
|
1872
|
+
if (typeof node !== "object" || node === null) return false;
|
|
1873
|
+
if ("children" in node) {
|
|
1874
|
+
if (!Array.isArray(node.children)) return false;
|
|
1875
|
+
if (node.children.length === 0) return false;
|
|
1876
|
+
for (const child of node.children) {
|
|
1877
|
+
if (!checkNode(child)) return false;
|
|
1878
|
+
}
|
|
1879
|
+
}
|
|
1880
|
+
return true;
|
|
1881
|
+
}
|
|
1882
|
+
for (const item of arr) {
|
|
1883
|
+
if (!checkNode(item)) return false;
|
|
1884
|
+
}
|
|
1885
|
+
return true;
|
|
1886
|
+
}
|
|
@@ -35,7 +35,8 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
35
35
|
font-size: 14px;
|
|
36
36
|
|
|
37
37
|
table {
|
|
38
|
-
border-collapse: collapse;
|
|
38
|
+
// border-collapse: collapse;
|
|
39
|
+
border-collapse: separate;
|
|
39
40
|
border-spacing: 0;
|
|
40
41
|
table-layout: fixed;
|
|
41
42
|
// border: 1px solid $tableBorderColor;
|
|
@@ -133,9 +134,7 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
133
134
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
|
-
|
|
137
|
-
border-bottom: 1px solid lightgray;
|
|
138
|
-
}
|
|
137
|
+
|
|
139
138
|
|
|
140
139
|
|
|
141
140
|
.#{$prefix}-grid-thead {
|
|
@@ -143,18 +142,20 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
143
142
|
|
|
144
143
|
.#{$prefix}-grid-cell {
|
|
145
144
|
font-weight: 500;
|
|
145
|
+
color: #000000E0;
|
|
146
146
|
|
|
147
147
|
background-color: $body-color;
|
|
148
|
-
|
|
148
|
+
border-inline-end: 1px solid $tableBorderColor;
|
|
149
|
+
border-bottom: 1px solid $tableBorderColor;
|
|
149
150
|
|
|
150
|
-
&::before {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
151
|
+
// &::before {
|
|
152
|
+
// content: "";
|
|
153
|
+
// position: absolute;
|
|
154
|
+
// inset-block: 0;
|
|
155
|
+
// right: 0;
|
|
156
|
+
// inset-inline-start: 0px;
|
|
157
|
+
// border-inline-end: 1px solid #e0e0e0;
|
|
158
|
+
// }
|
|
158
159
|
|
|
159
160
|
&.ui-rc-grid-cell-ellipsis {
|
|
160
161
|
|
|
@@ -256,6 +257,10 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
256
257
|
|
|
257
258
|
.#{$prefix}-grid-tbody {
|
|
258
259
|
|
|
260
|
+
tr.#{$prefix}-grid-row {
|
|
261
|
+
border-bottom: 1px solid lightgray;
|
|
262
|
+
}
|
|
263
|
+
|
|
259
264
|
.#{$prefix}-grid-row {
|
|
260
265
|
display: flex;
|
|
261
266
|
position: absolute;
|
|
@@ -544,6 +549,7 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
544
549
|
|
|
545
550
|
&.#{$prefix}-grid-cell-command {
|
|
546
551
|
padding: 2px 8px;
|
|
552
|
+
|
|
547
553
|
.ui-rc_cell-content {
|
|
548
554
|
display: flex;
|
|
549
555
|
}
|
|
@@ -983,7 +989,7 @@ $fontFamily: "Montserrat", Helvetica, Arial, serif !default;
|
|
|
983
989
|
.ui-rc-table-row-expand-icon::before,
|
|
984
990
|
.ui-rc-table-row-expand-icon::after {
|
|
985
991
|
position: absolute;
|
|
986
|
-
background:
|
|
992
|
+
background: #000000de;
|
|
987
993
|
transition: transform 0.3s ease-out;
|
|
988
994
|
content: "";
|
|
989
995
|
|
|
@@ -22,6 +22,7 @@ type Props<T> = Omit<TableProps<T>, 'columns'> & {
|
|
|
22
22
|
onContextMenu?: (data: T) => (event: any) => void;
|
|
23
23
|
triggerChangeColumns?: (args: any, keys: any) => void;
|
|
24
24
|
windowSize: any;
|
|
25
|
+
isDataTree: boolean;
|
|
25
26
|
};
|
|
26
27
|
declare const Grid: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
|
|
27
28
|
export default Grid;
|
|
@@ -85,7 +85,6 @@ export type ColumnTable<RecordType = AnyObject> = {
|
|
|
85
85
|
width?: number;
|
|
86
86
|
maxWidth?: number;
|
|
87
87
|
minWidth?: number;
|
|
88
|
-
align?: ITextAlign;
|
|
89
88
|
type?: IColumnType;
|
|
90
89
|
haveSum?: boolean;
|
|
91
90
|
isSummary?: boolean;
|
|
@@ -114,6 +113,11 @@ export type ColumnTable<RecordType = AnyObject> = {
|
|
|
114
113
|
visible?: boolean;
|
|
115
114
|
headerTooltip?: boolean | string | (() => ReactNode | ReactElement);
|
|
116
115
|
columnGroupText?: string;
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated Please use `textAlign` instead.
|
|
118
|
+
* @since 1.7.34
|
|
119
|
+
*/
|
|
120
|
+
align?: ITextAlign;
|
|
117
121
|
textAlign?: ITextAlign;
|
|
118
122
|
headerTextAlign?: ITextAlign;
|
|
119
123
|
template?: ReactNode | ReactElement | ((args: ColumnTemplate<RecordType>) => ReactNode | ReactElement);
|
|
@@ -140,6 +144,10 @@ export type ColumnTable<RecordType = AnyObject> = {
|
|
|
140
144
|
*/
|
|
141
145
|
fixedType?: FixedType;
|
|
142
146
|
fixed?: FixedType;
|
|
147
|
+
/**
|
|
148
|
+
* @deprecated Please use `wrapSettings` instead.
|
|
149
|
+
* @since 1.7.34
|
|
150
|
+
*/
|
|
143
151
|
headerTextWrap?: boolean;
|
|
144
152
|
ellipsis?: boolean;
|
|
145
153
|
allowResizing?: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import type { ExpandableConfig, IFormat, IWrapSettings, Locale, RangeState, RecordDoubleClickEventArgs, SelectionSettings } from "./type";
|
|
3
3
|
import type { SubmitHandler } from "react-hook-form";
|
|
4
|
+
import type { ExpandedState } from '@tanstack/react-table';
|
|
4
5
|
export type IPositionCell = {
|
|
5
6
|
rowId: string;
|
|
6
7
|
colId: string;
|
|
@@ -15,8 +16,8 @@ export interface IContext<T> {
|
|
|
15
16
|
format?: IFormat;
|
|
16
17
|
expandable?: ExpandableConfig<T>;
|
|
17
18
|
wrapSettings?: IWrapSettings;
|
|
18
|
-
setExpanded:
|
|
19
|
-
expanded:
|
|
19
|
+
setExpanded: Dispatch<SetStateAction<ExpandedState>>;
|
|
20
|
+
expanded: ExpandedState;
|
|
20
21
|
recordDoubleClick?: (args: RecordDoubleClickEventArgs<T>) => void;
|
|
21
22
|
selectionSettings?: SelectionSettings;
|
|
22
23
|
setIsSelectionChange: Dispatch<SetStateAction<{
|
|
@@ -64,6 +65,7 @@ export interface IContext<T> {
|
|
|
64
65
|
handleDeleteContent?: () => void;
|
|
65
66
|
handleAddMulti?: (item: any, n: number, id?: string) => void;
|
|
66
67
|
dataErrors?: any[];
|
|
68
|
+
isDataTree: boolean;
|
|
67
69
|
}
|
|
68
70
|
export declare const TableContext: import("react").Context<IContext<any>>;
|
|
69
71
|
export type ContextCellChange = {
|