es-grid-template 1.7.48 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/es/grid-component/TempTable.js +1 -3
  2. package/es/table-component/ColumnsChoose.js +9 -2
  3. package/es/table-component/InternalTable.js +1 -0
  4. package/es/table-component/TableContainer.d.ts +5 -1
  5. package/es/table-component/TableContainer.js +33 -3
  6. package/es/table-component/TableContainerEdit.js +87 -62
  7. package/es/table-component/body/TableBody.js +1 -1
  8. package/es/table-component/body/TableBodyCell.d.ts +7 -3
  9. package/es/table-component/body/TableBodyCell.js +268 -135
  10. package/es/table-component/body/TableBodyCellEdit.d.ts +2 -2
  11. package/es/table-component/body/TableBodyCellEdit.js +18 -13
  12. package/es/table-component/body/TableBodyRow.d.ts +2 -2
  13. package/es/table-component/body/TableBodyRow.js +45 -16
  14. package/es/table-component/components/command/Command.js +2 -0
  15. package/es/table-component/footer/TableFooter.js +1 -1
  16. package/es/table-component/footer/TableFooterCell.js +3 -2
  17. package/es/table-component/footer/TableFooterRow.js +4 -3
  18. package/es/table-component/header/TableHead.d.ts +1 -1
  19. package/es/table-component/header/TableHead.js +83 -20
  20. package/es/table-component/header/TableHeadCell.js +13 -8
  21. package/es/table-component/header/TableHeadCell2.d.ts +17 -0
  22. package/es/table-component/header/TableHeadCell2.js +331 -0
  23. package/es/table-component/header/TableHeadGroupCell.d.ts +17 -0
  24. package/es/table-component/header/TableHeadGroupCell.js +327 -0
  25. package/es/table-component/header/TableHeadRow.js +1 -1
  26. package/es/table-component/hook/utils.js +5 -2
  27. package/es/table-component/style.scss +26 -4
  28. package/es/table-component/table/Grid.js +19 -19
  29. package/es/table-component/table/TableWrapper.js +1 -1
  30. package/lib/grid-component/TempTable.js +1 -3
  31. package/lib/table-component/ColumnsChoose.js +9 -2
  32. package/lib/table-component/InternalTable.js +1 -0
  33. package/lib/table-component/TableContainer.d.ts +5 -1
  34. package/lib/table-component/TableContainer.js +32 -2
  35. package/lib/table-component/TableContainerEdit.js +87 -62
  36. package/lib/table-component/body/TableBody.js +1 -1
  37. package/lib/table-component/body/TableBodyCell.d.ts +7 -3
  38. package/lib/table-component/body/TableBodyCell.js +267 -136
  39. package/lib/table-component/body/TableBodyCellEdit.d.ts +2 -2
  40. package/lib/table-component/body/TableBodyCellEdit.js +18 -13
  41. package/lib/table-component/body/TableBodyRow.d.ts +2 -2
  42. package/lib/table-component/body/TableBodyRow.js +45 -16
  43. package/lib/table-component/components/command/Command.js +2 -0
  44. package/lib/table-component/footer/TableFooter.js +1 -1
  45. package/lib/table-component/footer/TableFooterCell.js +3 -2
  46. package/lib/table-component/footer/TableFooterRow.js +4 -3
  47. package/lib/table-component/header/TableHead.d.ts +1 -1
  48. package/lib/table-component/header/TableHead.js +84 -20
  49. package/lib/table-component/header/TableHeadCell.js +13 -8
  50. package/lib/table-component/header/TableHeadCell2.d.ts +17 -0
  51. package/lib/table-component/header/TableHeadCell2.js +340 -0
  52. package/lib/table-component/header/TableHeadGroupCell.d.ts +17 -0
  53. package/lib/table-component/header/TableHeadGroupCell.js +336 -0
  54. package/lib/table-component/header/TableHeadRow.js +1 -1
  55. package/lib/table-component/hook/utils.js +5 -2
  56. package/lib/table-component/style.scss +26 -4
  57. package/lib/table-component/table/Grid.js +19 -19
  58. package/lib/table-component/table/TableWrapper.js +1 -1
  59. package/package.json +1 -1
@@ -24,29 +24,45 @@ const TableBodyRow = ({
24
24
  }) => {
25
25
  const {
26
26
  prefix,
27
- recordDoubleClick
27
+ recordDoubleClick,
28
+ focusedCell
28
29
  } = React.useContext(TableContext);
29
30
  const visibleCells = row.getVisibleCells();
30
31
  const virtualColumns = columnVirtualizer.getVirtualItems();
31
- return /*#__PURE__*/React.createElement("tr", {
32
+ const centerCOlumns = virtualColumns.filter(vc => !(table.getState().columnPinning.left?.includes(visibleCells[vc.index].column.id) || table.getState().columnPinning.right?.includes(visibleCells[vc.index].column.id)));
33
+ const leftTemplate = fixedLeftColumns.length > 0 ? fixedLeftColumns.map(it => row.getVisibleCells().find(c => c.column.id === it.id).column.getSize()) : [];
34
+ const rightTemplate = fixedRightColumns.length > 0 ? fixedRightColumns.map(it => row.getVisibleCells().find(c => c.column.id === it.id).column.getSize()) : [];
35
+ const centerTemplate = centerCOlumns.map(it => it.size);
36
+ const virtualLeft = virtualPaddingLeft ? [virtualPaddingLeft] : [];
37
+ const virtualRight = virtualPaddingRight ? [virtualPaddingRight] : [];
38
+ const templateColumns = [...leftTemplate, ...virtualLeft, ...centerTemplate, ...virtualRight, ...rightTemplate];
39
+ return /*#__PURE__*/React.createElement("div", {
32
40
  "data-index": virtualRow.index //needed for dynamic row height measurement
33
41
  ,
34
42
  ref: node => rowVirtualizer.measureElement(node) //measure dynamic row height
35
43
  ,
36
44
  key: row.id
45
+ // data-row-key={cell.row.id}
46
+ ,
47
+ "data-row-key": row.id
37
48
 
38
49
  // className={} ui-rc-table-row-selected
39
50
  ,
40
51
  className: classNames(`${prefix}-grid-row`, {
41
- [`${prefix}-grid-row-selected`]: row.getIsSelected()
52
+ [`${prefix}-grid-row-selected`]: row.getIsSelected(),
53
+ [`${prefix}-grid-row-focus`]: row.id === focusedCell?.rowId && !editAble
54
+ // [`${prefix}-grid-row-focus`]: true,
42
55
  }),
43
56
  style: {
44
57
  // display: 'flex',
58
+ display: 'grid',
45
59
  // position: 'absolute',
46
60
  transform: `translateY(${virtualRow.start}px)`,
47
61
  //this should always be a `style` as it changes on scroll
48
62
  // width: '100%',
49
63
  // height: isEditing ? '36px' : undefined,
64
+ gridTemplateColumns: `${templateColumns.map(n => `${n}fr`).join(" ")}`,
65
+ // gridTemplateColumns: `repeat(${centerCOlumns.length + fixedLeftColumns.length + fixedRightColumns.length}, minmax(0, 1fr))`,
50
66
  height: isEditing ? virtualRow.size : undefined
51
67
  // minHeight: isEditing ? undefined : virtualRow.size
52
68
  },
@@ -77,14 +93,18 @@ const TableBodyRow = ({
77
93
  columnVirtualizer: columnVirtualizer
78
94
  }));
79
95
  }
80
- return /*#__PURE__*/React.createElement(TableBodyCell, {
81
- key: column.id,
96
+ return /*#__PURE__*/React.createElement(TableBodyCell, _extends({}, rest, {
82
97
  table: table,
83
- cell: row.getVisibleCells().find(c => c.column.id === column.id),
98
+ tableId: tableId,
99
+ key: cell.id,
100
+ cell: cell,
84
101
  commandClick: commandClick,
85
- virtualRow: virtualRow
86
- });
87
- }) : null, virtualPaddingLeft ? /*#__PURE__*/React.createElement("td", {
102
+ virtualRow: virtualRow,
103
+ isEditing: false,
104
+ rowVirtualizer: rowVirtualizer,
105
+ columnVirtualizer: columnVirtualizer
106
+ }));
107
+ }) : null, virtualPaddingLeft ? /*#__PURE__*/React.createElement("div", {
88
108
  className: "",
89
109
  style: {
90
110
  display: "flex",
@@ -107,13 +127,17 @@ const TableBodyRow = ({
107
127
  virtualRow: virtualRow
108
128
  }));
109
129
  }
110
- return /*#__PURE__*/React.createElement(TableBodyCell, {
130
+ return /*#__PURE__*/React.createElement(TableBodyCell, _extends({}, rest, {
111
131
  table: table,
112
132
  key: cell.id,
133
+ tableId: tableId,
113
134
  cell: cell,
114
135
  commandClick: commandClick,
136
+ isEditing: false,
137
+ rowVirtualizer: rowVirtualizer,
138
+ columnVirtualizer: columnVirtualizer,
115
139
  virtualRow: virtualRow
116
- });
140
+ }));
117
141
  }
118
142
  }), fixedRightColumns.length > 0 ? fixedRightColumns.map(column => {
119
143
  if (editAble) {
@@ -129,13 +153,18 @@ const TableBodyRow = ({
129
153
  virtualRow: virtualRow
130
154
  }));
131
155
  }
132
- return /*#__PURE__*/React.createElement(TableBodyCell, {
133
- key: column.id,
156
+ return /*#__PURE__*/React.createElement(TableBodyCell, _extends({}, rest, {
134
157
  table: table,
158
+ key: column.id,
159
+ tableId: tableId,
135
160
  cell: row.getVisibleCells().find(c => c.column.id === column.id),
136
- commandClick: commandClick
137
- });
138
- }) : null, virtualPaddingRight ? /*#__PURE__*/React.createElement("td", {
161
+ commandClick: commandClick,
162
+ isEditing: false,
163
+ rowVirtualizer: rowVirtualizer,
164
+ columnVirtualizer: columnVirtualizer,
165
+ virtualRow: virtualRow
166
+ }));
167
+ }) : null, virtualPaddingRight ? /*#__PURE__*/React.createElement("div", {
139
168
  className: "",
140
169
  style: {
141
170
  display: "flex",
@@ -10,11 +10,13 @@ const Command = props => {
10
10
  return /*#__PURE__*/React.createElement(Fragment, null, item.template ? /*#__PURE__*/React.createElement("div", {
11
11
  "data-tooltip-id": `${id}-tooltip-content`,
12
12
  "data-tooltip-content": item.tooltip || item.title,
13
+ "data-tooltip-delay-show": 500,
13
14
  id: item.id,
14
15
  onClick: onClick
15
16
  }, typeof item.template === 'function' ? item.template(record) : item.template) : /*#__PURE__*/React.createElement("div", {
16
17
  tabIndex: -1,
17
18
  "data-tooltip-id": `${id}-tooltip-content`,
19
+ "data-tooltip-delay-show": 500,
18
20
  "data-tooltip-content": item.tooltip || item.title,
19
21
  style: {
20
22
  padding: '3px',
@@ -12,7 +12,7 @@ const TableFooter = ({
12
12
  const {
13
13
  prefix
14
14
  } = useContext(TableContext);
15
- return /*#__PURE__*/React.createElement("tfoot", {
15
+ return /*#__PURE__*/React.createElement("div", {
16
16
  className: `${prefix}-grid-tfoot`,
17
17
  style: {
18
18
  display: "grid",
@@ -42,7 +42,7 @@ const TableFooterCell = ({
42
42
  decimalScale: dec,
43
43
  fixedDecimalScale: cellFormat?.fixedDecimalScale ?? false
44
44
  };
45
- return /*#__PURE__*/React.createElement("td", {
45
+ return /*#__PURE__*/React.createElement("div", {
46
46
  // ref={el => {
47
47
  // if (el) columnVirtualizer.measureElement(el)
48
48
  // }}
@@ -61,7 +61,8 @@ const TableFooterCell = ({
61
61
  style: {
62
62
  display: 'flex',
63
63
  ...getCommonPinningStyles(column),
64
- width: column?.getSize() ?? column.getSize(),
64
+ // width: column?.getSize() ?? column.getSize(),
65
+ minWidth: column?.getSize(),
65
66
  backgroundColor: "#fafafa"
66
67
  }
67
68
  }, column.id !== "id" && column.id !== "selection_column" ? /*#__PURE__*/React.createElement(React.Fragment, null, col.summaryTemplate ? col.summaryTemplate(numberValue, col.field) : numericFormatter(cellValue, numericFormatProps)) : '');
@@ -23,15 +23,16 @@ const TableFooterRow = ({
23
23
 
24
24
  // const
25
25
 
26
- return /*#__PURE__*/React.createElement("tr", {
26
+ return /*#__PURE__*/React.createElement("div", {
27
27
  // data-index={headerGroup.id}
28
28
  key: headerGroup.id,
29
29
  style: {
30
- display: "flex",
30
+ display: "grid",
31
31
  width: "100%",
32
32
  borderBottom: "1px solid #e0e0e0",
33
33
  borderTop: "1px solid #e0e0e0",
34
- height: 37
34
+ height: 37,
35
+ gridTemplateColumns: `${table.getVisibleLeafColumns().map(n => `${n.getSize()}fr`).join(" ")}`
35
36
  }
36
37
  }, visibleColumns.map(header => {
37
38
  return /*#__PURE__*/React.createElement(TableFooterCell, {
@@ -11,5 +11,5 @@ interface TableHeadProps<T> {
11
11
  fixedLeftColumns: Column<T, unknown>[];
12
12
  fixedRightColumns: Column<T, unknown>[];
13
13
  }
14
- declare const TableHead: <RecordType extends object>({ columnVirtualizer, table, virtualPaddingLeft, virtualPaddingRight, fixedLeftColumns, fixedRightColumns }: TableHeadProps<RecordType>) => React.JSX.Element;
14
+ declare const TableHead: <RecordType extends object>({ columnVirtualizer, table, }: TableHeadProps<RecordType>) => React.JSX.Element;
15
15
  export default TableHead;
@@ -1,38 +1,101 @@
1
1
  import React, { useContext } from 'react';
2
2
  import { TableContext } from "../useContext";
3
- import TableHeadRow from "./TableHeadRow";
3
+ // import TableHeadRow from './TableHeadRow'
4
+ import TableHeadCell2 from "./TableHeadCell2";
5
+ import TableHeadGroupCell from "./TableHeadGroupCell";
4
6
  // import { getCommonPinningStyles } from '../hook/utils'
5
7
 
6
8
  const TableHead = ({
7
9
  columnVirtualizer,
8
- table,
9
- virtualPaddingLeft,
10
- virtualPaddingRight,
11
- fixedLeftColumns,
12
- fixedRightColumns
10
+ table
11
+ // virtualPaddingLeft,
12
+ // virtualPaddingRight,
13
+ // fixedLeftColumns,
14
+ // fixedRightColumns
13
15
  }) => {
14
16
  const {
15
17
  prefix
16
18
  } = useContext(TableContext);
17
- return /*#__PURE__*/React.createElement("thead", {
19
+ const headerGroups = table.getFlatHeaders();
20
+ const leafColumns = table.getVisibleFlatColumns();
21
+ const headerDepth = table.getHeaderGroups().length;
22
+ return /*#__PURE__*/React.createElement("div", {
18
23
  className: `${prefix}-grid-thead`,
19
24
  style: {
20
- // display: 'grid',
25
+ display: 'grid',
21
26
  position: 'sticky',
22
27
  top: 0,
23
- zIndex: 1
28
+ zIndex: 1,
29
+ // gridTemplateRows: `repeat(${table.getHeaderGroups().length}, auto)`,
30
+ // gridTemplateColumns: `repeat(${table.getVisibleLeafColumns().length}, 1fr)`,
31
+ gridTemplateColumns: `${table.getVisibleLeafColumns().map(n => `${n.getSize()}fr`).join(" ")}`
24
32
  }
25
- }, table.getHeaderGroups().map(headerGroup => {
26
- return /*#__PURE__*/React.createElement(TableHeadRow, {
27
- table: table,
28
- headerGroup: headerGroup,
29
- key: headerGroup.id,
30
- columnVirtualizer: columnVirtualizer,
31
- virtualPaddingLeft: virtualPaddingLeft,
32
- virtualPaddingRight: virtualPaddingRight,
33
- fixedLeftColumns: fixedLeftColumns,
34
- fixedRightColumns: fixedRightColumns
35
- });
33
+ }, leafColumns.map(column => {
34
+ const depth = column.depth ?? 0;
35
+ // const colSpan = col.getLeafColumns().length || 1;
36
+ const colSpan = column.columns.length || 1;
37
+ const rowSpan = column.columns?.length > 0 ? 1 : headerDepth - depth;
38
+ const header = headerGroups.find(it => it.id === column.id || it.column.id === column.id && it.subHeaders.length >= 2);
39
+ // const groupHeader = headerGroups.find((it) => it.column.id === column.id && it.subHeaders.length >= 2)
40
+
41
+ if (header?.subHeaders && header.subHeaders.length >= 2) {
42
+ return /*#__PURE__*/React.createElement(TableHeadGroupCell, {
43
+ key: column.id,
44
+ depth: depth,
45
+ column: column,
46
+ header: header,
47
+ table: table,
48
+ columnVirtualizer: columnVirtualizer,
49
+ colSpan: colSpan,
50
+ rowSpan: rowSpan
51
+ });
52
+ } else {
53
+ return /*#__PURE__*/React.createElement(TableHeadCell2, {
54
+ key: column.id,
55
+ depth: depth,
56
+ column: column,
57
+ header: header,
58
+ table: table,
59
+ columnVirtualizer: columnVirtualizer
60
+ // rowHeaderVirtualizer={rowHeaderVirtualizer}
61
+ ,
62
+ colSpan: colSpan,
63
+ rowSpan: rowSpan
64
+ });
65
+ }
66
+
67
+ // if (header) {
68
+ // return (
69
+ // <TableHeadCell2
70
+ // key={column.id}
71
+ // depth={depth}
72
+ // column={column}
73
+ // header={header as any}
74
+ // table={table}
75
+ // columnVirtualizer={columnVirtualizer}
76
+ // // rowHeaderVirtualizer={rowHeaderVirtualizer}
77
+ // colSpan={colSpan}
78
+ // rowSpan={rowSpan}
79
+ // />
80
+ // )
81
+ // }
82
+
83
+ // return (
84
+ // <div
85
+ // key={col.id}
86
+ // className="th p-2 border font-bold flex items-center justify-center"
87
+ // style={{
88
+ // // width: col.getSize(),
89
+ // minWidth: col.getSize(),
90
+ // gridRow: `${depth + 1} / span ${rowSpan}`,
91
+
92
+ // gridColumn: `span ${colSpan}`,
93
+ // }}
94
+ // >
95
+ // aaaaa
96
+ // {/* {flexRender(col.columnDef.header, header.getContext())} */}
97
+ // </div>
98
+ // );
36
99
  }));
37
100
  };
38
101
  export default TableHead;
@@ -22,12 +22,12 @@ const TableHeadCell = props => {
22
22
  const {
23
23
  header,
24
24
  getPopupContainer,
25
- table,
25
+ table
26
26
  // t,
27
27
  // columnVirtualizer,
28
28
  // rowHeaderVirtualizer,
29
- colSpan,
30
- rowSpan
29
+ // colSpan,
30
+ // rowSpan
31
31
  } = props;
32
32
  const {
33
33
  t,
@@ -207,7 +207,7 @@ const TableHeadCell = props => {
207
207
  // return dropdownContent;
208
208
  }
209
209
  });
210
- return /*#__PURE__*/React.createElement("th", {
210
+ return /*#__PURE__*/React.createElement("div", {
211
211
  // ref={setNodeRef}
212
212
  className: classNames(`${prefix}-grid-cell`, {
213
213
  [`${prefix}-grid-cell-ellipsis`]: !wrapSettings || !(wrapSettings && (wrapSettings.wrapMode === 'Both' || wrapSettings.wrapMode === 'Header')),
@@ -216,15 +216,20 @@ const TableHeadCell = props => {
216
216
  [`${prefix}-grid-cell-fix-right-first`]: isFirstRightPinnedColumn,
217
217
  [`${prefix}-grid-cell-text-center`]: (originalColumn?.headerTextAlign ?? originalColumn?.textAlign) === 'center',
218
218
  [`${prefix}-grid-cell-text-right`]: (originalColumn?.headerTextAlign ?? originalColumn.textAlign) === 'right'
219
- }),
220
- colSpan: colSpan,
221
- rowSpan: rowSpan,
219
+ })
220
+ // colSpan={colSpan}
221
+ // rowSpan={rowSpan}
222
+ ,
223
+
222
224
  key: header.id,
223
225
  style: {
224
226
  // display: 'flex',
225
227
  width: header.getSize(),
226
228
  minWidth: header.getSize(),
227
- maxWidth: header.getSize(),
229
+ flex: 1,
230
+ gridColumn: `span ${header.colSpan}`,
231
+ gridRow: `span 2`,
232
+ // maxWidth: header.getSize(),
228
233
  ...getCommonPinningStyles(header.column),
229
234
  ...style
230
235
  },
@@ -0,0 +1,17 @@
1
+ import type { Table } from '@tanstack/react-table';
2
+ import { type Header } from '@tanstack/react-table';
3
+ import React from 'react';
4
+ import type { Virtualizer } from '@tanstack/react-virtual';
5
+ interface TableHeadCellProps<T> {
6
+ t?: any;
7
+ table: Table<T>;
8
+ column: any;
9
+ header: Header<T, unknown>;
10
+ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
11
+ columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
12
+ colSpan: number;
13
+ rowSpan: number;
14
+ depth: number;
15
+ }
16
+ declare const TableHeadCell2: <RecordType extends object>(props: TableHeadCellProps<RecordType>) => React.JSX.Element;
17
+ export default TableHeadCell2;