@sheinx/hooks 3.9.6-beta.7 → 3.9.6-beta.8

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.
@@ -5,6 +5,8 @@ export interface TableRowProps extends Pick<BaseTableProps<any>, 'data'> {
5
5
  columns: TableFormatColumn<any>[];
6
6
  currentIndex: number;
7
7
  hover: boolean;
8
+ originData?: any[];
9
+ rowSpanIndexArray?: number[];
8
10
  }
9
11
  export interface Row {
10
12
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-row.d.ts","sourceRoot":"","sources":["use-table-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4CD;;;;GAIG;AACH,QAAA,MAAM,WAAW,UAAW,aAAa;;gCASS,MAAM;;;CAgDvD,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"use-table-row.d.ts","sourceRoot":"","sources":["use-table-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4CD;;;;GAIG;AACH,QAAA,MAAM,WAAW,UAAW,aAAa;;gCASS,MAAM;;;CAoEvD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -79,28 +79,48 @@ var useTableRow = function useTableRow(props) {
79
79
  var checkCol = columns.find(function (col) {
80
80
  return col.type === 'checkbox';
81
81
  });
82
- for (var i = data.length - 1; i >= 0; i--) {
83
- var d = data[i];
84
- rows.unshift(format(columns, d, rows[0], currentIndex + i).map(function (col) {
85
- delete col.content;
86
- return col;
87
- }));
88
- {
89
- //记录合并行合并到的数据需要从0 开始
90
- var i0 = data.length - 1 - i;
91
- var d0 = data[i0];
92
- context.rowSelectMergeStartData[i0] = d0;
93
- if (i0 > 0 && checkCol && typeof checkCol.rowSpan === 'function') {
94
- var beforeData = data[i0 - 1];
95
- if (beforeData !== null && checkCol.rowSpan(beforeData, d0)) {
96
- var _context$rowSelectMer;
97
- context.rowSelectMergeStartData[i0] = (_context$rowSelectMer = context.rowSelectMergeStartData[i0 - 1]) !== null && _context$rowSelectMer !== void 0 ? _context$rowSelectMer : beforeData;
82
+
83
+ // 计算 rowSelectMergeStartData
84
+ if (checkCol !== null && checkCol !== void 0 && checkCol.rowSpan) {
85
+ // checkbox 列有 rowSpan,需要计算合并起始数据
86
+ if (props.rowSpanIndexArray && props.originData) {
87
+ // 虚拟滚动:使用 rowSpanIndexArray(由 useTableVirtual 预计算)
88
+ var originData = props.originData;
89
+ for (var i = 0; i < data.length; i++) {
90
+ var globalIndex = currentIndex + i;
91
+ var startIndex = props.rowSpanIndexArray[globalIndex];
92
+ context.rowSelectMergeStartData[i] = originData[startIndex] || data[i];
93
+ }
94
+ } else {
95
+ // 非虚拟滚动:基于当前数据计算
96
+ for (var _i = 0; _i < data.length; _i++) {
97
+ var currentData = data[_i];
98
+ // 如果当前行还没有被设置起始数据,说明它是一个新的合并组的起始
99
+ if (context.rowSelectMergeStartData[_i] === undefined) {
100
+ context.rowSelectMergeStartData[_i] = currentData;
101
+ }
102
+ // 检查当前行是否应该和下一行合并
103
+ if (_i < data.length - 1 && checkCol.rowSpan(currentData, data[_i + 1])) {
104
+ // 下一行应该指向当前行的起始数据
105
+ context.rowSelectMergeStartData[_i + 1] = context.rowSelectMergeStartData[_i];
98
106
  }
99
107
  }
100
108
  }
109
+ } else {
110
+ // checkbox 列无 rowSpan,每行都是自己的起始数据
111
+ for (var _i2 = 0; _i2 < data.length; _i2++) {
112
+ context.rowSelectMergeStartData[_i2] = data[_i2];
113
+ }
114
+ }
115
+ for (var _i3 = data.length - 1; _i3 >= 0; _i3--) {
116
+ var d = data[_i3];
117
+ rows.unshift(format(columns, d, rows[0], currentIndex + _i3).map(function (col) {
118
+ delete col.content;
119
+ return col;
120
+ }));
101
121
  }
102
122
  return rows;
103
- }, [props.columns, props.data]);
123
+ }, [props.columns, props.data, props.originData, props.rowSpanIndexArray, currentIndex]);
104
124
  return {
105
125
  rowData: rowData,
106
126
  handleCellHover: handleCellHover,
@@ -5,6 +5,8 @@ export interface TableRowProps extends Pick<BaseTableProps<any>, 'data'> {
5
5
  columns: TableFormatColumn<any>[];
6
6
  currentIndex: number;
7
7
  hover: boolean;
8
+ originData?: any[];
9
+ rowSpanIndexArray?: number[];
8
10
  }
9
11
  export interface Row {
10
12
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-row.d.ts","sourceRoot":"","sources":["use-table-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4CD;;;;GAIG;AACH,QAAA,MAAM,WAAW,UAAW,aAAa;;gCASS,MAAM;;;CAgDvD,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"use-table-row.d.ts","sourceRoot":"","sources":["use-table-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4CD;;;;GAIG;AACH,QAAA,MAAM,WAAW,UAAW,aAAa;;gCASS,MAAM;;;CAoEvD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -73,28 +73,48 @@ var useTableRow = function useTableRow(props) {
73
73
  var checkCol = columns.find(function (col) {
74
74
  return col.type === 'checkbox';
75
75
  });
76
- for (var i = data.length - 1; i >= 0; i--) {
77
- var d = data[i];
78
- rows.unshift(format(columns, d, rows[0], currentIndex + i).map(function (col) {
79
- delete col.content;
80
- return col;
81
- }));
82
- {
83
- //记录合并行合并到的数据需要从0 开始
84
- var i0 = data.length - 1 - i;
85
- var d0 = data[i0];
86
- context.rowSelectMergeStartData[i0] = d0;
87
- if (i0 > 0 && checkCol && typeof checkCol.rowSpan === 'function') {
88
- var beforeData = data[i0 - 1];
89
- if (beforeData !== null && checkCol.rowSpan(beforeData, d0)) {
90
- var _context$rowSelectMer;
91
- context.rowSelectMergeStartData[i0] = (_context$rowSelectMer = context.rowSelectMergeStartData[i0 - 1]) !== null && _context$rowSelectMer !== void 0 ? _context$rowSelectMer : beforeData;
76
+
77
+ // 计算 rowSelectMergeStartData
78
+ if (checkCol !== null && checkCol !== void 0 && checkCol.rowSpan) {
79
+ // checkbox 列有 rowSpan,需要计算合并起始数据
80
+ if (props.rowSpanIndexArray && props.originData) {
81
+ // 虚拟滚动:使用 rowSpanIndexArray(由 useTableVirtual 预计算)
82
+ var originData = props.originData;
83
+ for (var i = 0; i < data.length; i++) {
84
+ var globalIndex = currentIndex + i;
85
+ var startIndex = props.rowSpanIndexArray[globalIndex];
86
+ context.rowSelectMergeStartData[i] = originData[startIndex] || data[i];
87
+ }
88
+ } else {
89
+ // 非虚拟滚动:基于当前数据计算
90
+ for (var _i = 0; _i < data.length; _i++) {
91
+ var currentData = data[_i];
92
+ // 如果当前行还没有被设置起始数据,说明它是一个新的合并组的起始
93
+ if (context.rowSelectMergeStartData[_i] === undefined) {
94
+ context.rowSelectMergeStartData[_i] = currentData;
95
+ }
96
+ // 检查当前行是否应该和下一行合并
97
+ if (_i < data.length - 1 && checkCol.rowSpan(currentData, data[_i + 1])) {
98
+ // 下一行应该指向当前行的起始数据
99
+ context.rowSelectMergeStartData[_i + 1] = context.rowSelectMergeStartData[_i];
92
100
  }
93
101
  }
94
102
  }
103
+ } else {
104
+ // checkbox 列无 rowSpan,每行都是自己的起始数据
105
+ for (var _i2 = 0; _i2 < data.length; _i2++) {
106
+ context.rowSelectMergeStartData[_i2] = data[_i2];
107
+ }
108
+ }
109
+ for (var _i3 = data.length - 1; _i3 >= 0; _i3--) {
110
+ var d = data[_i3];
111
+ rows.unshift(format(columns, d, rows[0], currentIndex + _i3).map(function (col) {
112
+ delete col.content;
113
+ return col;
114
+ }));
95
115
  }
96
116
  return rows;
97
- }, [props.columns, props.data]);
117
+ }, [props.columns, props.data, props.originData, props.rowSpanIndexArray, currentIndex]);
98
118
  return {
99
119
  rowData: rowData,
100
120
  handleCellHover: handleCellHover,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.9.6-beta.7",
3
+ "version": "3.9.6-beta.8",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",