@kdcloudjs/table 1.0.2 → 1.1.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 (71) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +271 -187
  3. package/dist/@kdcloudjs/table.js.map +1 -1
  4. package/dist/@kdcloudjs/table.min.css +1 -1
  5. package/dist/@kdcloudjs/table.min.js +7 -7
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/table/base/calculations.js +1 -1
  8. package/es/table/base/empty.js +2 -2
  9. package/es/table/base/header.js +7 -11
  10. package/es/table/base/html-table.js +13 -22
  11. package/es/table/base/styles.d.ts +10 -0
  12. package/es/table/base/styles.js +13 -3
  13. package/es/table/common-views.js +2 -2
  14. package/es/table/pipeline/features/columnDrag.js +62 -21
  15. package/es/table/pipeline/features/contextMenu.js +37 -22
  16. package/es/table/pipeline/features/multiSelect.js +85 -79
  17. package/es/table/pipeline/features/rowDetail.js +2 -1
  18. package/es/table/pipeline/features/rowGrouping.js +2 -1
  19. package/es/table/pipeline/features/treeMode.js +3 -2
  20. package/es/table/pipeline/pipeline.d.ts +4 -0
  21. package/es/table/pipeline/pipeline.js +17 -0
  22. package/es/table/pivot/pivot-utils/convert-utils.js +4 -2
  23. package/lib/table/base/calculations.js +1 -1
  24. package/lib/table/base/empty.js +2 -2
  25. package/lib/table/base/header.js +8 -11
  26. package/lib/table/base/html-table.js +14 -22
  27. package/lib/table/base/styles.d.ts +10 -0
  28. package/lib/table/base/styles.js +13 -3
  29. package/lib/table/common-views.js +1 -1
  30. package/lib/table/pipeline/features/columnDrag.js +63 -22
  31. package/lib/table/pipeline/features/contextMenu.js +37 -22
  32. package/lib/table/pipeline/features/multiSelect.js +81 -75
  33. package/lib/table/pipeline/features/rowDetail.js +3 -1
  34. package/lib/table/pipeline/features/rowGrouping.js +3 -1
  35. package/lib/table/pipeline/features/treeMode.js +4 -2
  36. package/lib/table/pipeline/pipeline.d.ts +4 -0
  37. package/lib/table/pipeline/pipeline.js +17 -0
  38. package/lib/table/pivot/pivot-utils/convert-utils.js +6 -2
  39. package/package.json +1 -1
  40. package/es/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  41. package/es/table/pipeline/features/__test__/multiSelect.test.js +0 -152
  42. package/es/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  43. package/es/table/pipeline/features/__test__/rowDetail.test.js +0 -223
  44. package/es/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  45. package/es/table/pipeline/features/__test__/rowGrouping.test.js +0 -120
  46. package/es/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  47. package/es/table/pipeline/features/__test__/singleSelect.test.js +0 -191
  48. package/es/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  49. package/es/table/pipeline/features/__test__/sort.test.js +0 -213
  50. package/es/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  51. package/es/table/pipeline/features/__test__/tips.test.js +0 -123
  52. package/es/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  53. package/es/table/pipeline/features/__test__/treeMode.test.js +0 -202
  54. package/es/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  55. package/es/table/pipeline/features/filter/__test__/Filter.test.js +0 -29
  56. package/lib/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  57. package/lib/table/pipeline/features/__test__/multiSelect.test.js +0 -163
  58. package/lib/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  59. package/lib/table/pipeline/features/__test__/rowDetail.test.js +0 -230
  60. package/lib/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  61. package/lib/table/pipeline/features/__test__/rowGrouping.test.js +0 -129
  62. package/lib/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  63. package/lib/table/pipeline/features/__test__/singleSelect.test.js +0 -201
  64. package/lib/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  65. package/lib/table/pipeline/features/__test__/sort.test.js +0 -220
  66. package/lib/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  67. package/lib/table/pipeline/features/__test__/tips.test.js +0 -133
  68. package/lib/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  69. package/lib/table/pipeline/features/__test__/treeMode.test.js +0 -206
  70. package/lib/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  71. package/lib/table/pipeline/features/filter/__test__/Filter.test.js +0 -36
@@ -7,37 +7,49 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.columnDrag = columnDrag;
9
9
 
10
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
11
+
10
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
11
13
 
12
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
15
 
14
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
15
17
 
16
18
  var _utils = require("../../utils");
17
19
 
18
20
  var _autoFill = require("./autoFill");
19
21
 
20
22
  var stateKey = 'columnDrag';
23
+ var SCROLL_SIZE = 30;
21
24
 
22
- function sortColumns(cloumns, sort) {
23
- var res = new Array(cloumns.length);
25
+ function sortColumns(columns, sort) {
26
+ var res = new Array(columns.length);
27
+ var lastColumns = (0, _toConsumableArray2.default)(columns);
24
28
 
25
- while (cloumns.length) {
26
- var cloumn = cloumns.pop();
29
+ while (columns.length) {
30
+ var cloumn = columns.pop();
27
31
  res[sort[cloumn.code]] = cloumn;
28
32
  }
29
33
 
34
+ if ((0, _filter.default)(res).call(res, Boolean).length !== lastColumns.length) {
35
+ return lastColumns;
36
+ }
37
+
30
38
  return res;
31
39
  }
32
40
 
41
+ function stopClickPropagation(e) {
42
+ e.stopPropagation();
43
+ }
44
+
33
45
  function columnDrag() {
34
46
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
35
47
  return function (pipeline) {
36
48
  var _pipeline$getStateAtK = pipeline.getStateAtKey(stateKey, {}),
37
- cloumnsSortData = _pipeline$getStateAtK.cloumnsSortData,
38
49
  cloumnsTranslateData = _pipeline$getStateAtK.cloumnsTranslateData;
39
50
 
40
- var columns = pipeline.getColumns(); // if (cloumnsSortData) {
51
+ var columns = pipeline.getColumns();
52
+ var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody; // if (cloumnsSortData) {
41
53
  // columns = sortColumns(columns, cloumnsSortData)
42
54
  // }
43
55
 
@@ -79,28 +91,55 @@ function columnDrag() {
79
91
  var columns = pipeline.getColumns();
80
92
 
81
93
  var _pipeline$getStateAtK2 = pipeline.getStateAtKey(stateKey, {}),
82
- cloumnsSortData = _pipeline$getStateAtK2.cloumnsSortData,
83
94
  cloumnsTranslateData = _pipeline$getStateAtK2.cloumnsTranslateData;
84
95
 
85
- if (cloumnsSortData) {
86
- columns = sortColumns(columns, cloumnsSortData);
87
- } else {
88
- cloumnsSortData = {};
89
- columns.forEach(function (item, index) {
90
- cloumnsSortData[item.code] = index;
91
- });
92
- }
93
-
96
+ var cloumnsSortData = {};
97
+ columns.forEach(function (item, index) {
98
+ cloumnsSortData[item.code] = index;
99
+ });
94
100
  var currentTarget = e.currentTarget;
95
101
  var rect = e.currentTarget.parentElement.getClientRects()[0];
96
102
  var startX = rect.left;
97
103
  var moveData = [];
98
104
  var allColumns = (0, _utils.collectNodes)(columns);
105
+ var tableBodyClientRect = tableBody.getBoundingClientRect();
106
+ var startScrollLeft = pipeline.ref.current.domHelper.virtual.scrollLeft;
107
+
108
+ var updateScrollPosition = function updateScrollPosition(client) {
109
+ var clientX = client.clientX;
110
+ var left = tableBodyClientRect.left,
111
+ width = tableBodyClientRect.width;
112
+
113
+ if (clientX + SCROLL_SIZE >= left + width) {
114
+ pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
115
+ }
116
+
117
+ if (clientX - SCROLL_SIZE <= left) {
118
+ pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
119
+ }
120
+ };
121
+
122
+ var stopClickPropagationFlag = false;
99
123
 
100
124
  function handleMouseMove(e) {
101
- if (e.clientX - startX < 20) {
125
+ var client = {
126
+ clientX: e.clientX,
127
+ clientY: e.clientY
128
+ };
129
+ var scrollDistance = pipeline.ref.current.domHelper.virtual.scrollLeft - startScrollLeft;
130
+ var leftPosition = startX - scrollDistance; // 表头最左边起点
131
+
132
+ updateScrollPosition(client);
133
+
134
+ if (e.clientX - leftPosition < 20) {
102
135
  return;
103
136
  } else {
137
+ // 阻止列头点击事件,防止拖动后触发列头过滤事件
138
+ if (stopClickPropagationFlag === false) {
139
+ stopClickPropagationFlag = true;
140
+ currentTarget.addEventListener('click', stopClickPropagation);
141
+ }
142
+
104
143
  e.stopPropagation();
105
144
  }
106
145
 
@@ -137,7 +176,7 @@ function columnDrag() {
137
176
  var replaceIndex = 0;
138
177
  var totalWitdth = getColumnWidth(columns[replaceIndex]);
139
178
 
140
- while (totalWitdth < e.clientX - startX && replaceIndex < columns.length - 1) {
179
+ while (totalWitdth < e.clientX - leftPosition && replaceIndex < columns.length - 1) {
141
180
  replaceIndex++;
142
181
  totalWitdth += getColumnWidth(columns[replaceIndex]);
143
182
  } // 需要取最新startIndex, 不能直接用makeRecursiveMapper提供的startIndex(因为map时还没添加选择列、充满列等后面use添加的列)
@@ -210,7 +249,6 @@ function columnDrag() {
210
249
 
211
250
  window.requestAnimationFrame(function () {
212
251
  pipeline.setStateAtKey(stateKey, {
213
- cloumnsSortData: cloumnsSortData,
214
252
  cloumnsTranslateData: cloumnsTranslateData
215
253
  });
216
254
  moveData = [startIndex, replaceIndex];
@@ -222,6 +260,11 @@ function columnDrag() {
222
260
  document.body.removeEventListener('mousemove', handleMouseMove);
223
261
  document.body.removeEventListener('mouseup', handleMouseUp);
224
262
  window.requestAnimationFrame(function () {
263
+ // 取消阻止列头点击事件
264
+ currentTarget.removeEventListener('click', stopClickPropagation);
265
+ stopClickPropagationFlag = false;
266
+ currentTarget = null;
267
+
225
268
  var _moveData = moveData,
226
269
  _moveData2 = (0, _slicedToArray2.default)(_moveData, 2),
227
270
  startIndex = _moveData2[0],
@@ -290,14 +333,12 @@ function columnDrag() {
290
333
  }
291
334
 
292
335
  pipeline.setStateAtKey(stateKey, {
293
- cloumnsSortData: cloumnsSortData,
294
336
  cloumnsTranslateData: null
295
337
  });
296
338
  });
297
339
  document.body.style.userSelect = '';
298
340
  currentTarget.style.opacity = '';
299
341
  currentTarget.style.cursor = '';
300
- currentTarget = null;
301
342
  }
302
343
 
303
344
  document.body.addEventListener('mousemove', handleMouseMove);
@@ -123,20 +123,25 @@ function contextMenu() {
123
123
  };
124
124
 
125
125
  var showContextMenu = function showContextMenu(e) {
126
- var dataSource = pipeline.getDataSource();
127
- var cellEle = getCellEleForEvent(e);
126
+ var path = (0, _utils.getEventPath)(e);
127
+ var cellEle = getCellEleInEventPath(path);
128
128
  var code;
129
129
  var rowIndex;
130
+ var isInFooter;
130
131
 
131
132
  if (cellEle) {
132
- code = cellEle.getAttribute('data-code'), rowIndex = cellEle.getAttribute('data-rowindex');
133
+ code = cellEle.getAttribute('data-code');
134
+ rowIndex = cellEle.getAttribute('data-rowindex');
135
+ isInFooter = isElementInsideTheFooter(cellEle);
133
136
  } else {
134
- var rowEle = getRowEleForEvent(e, dataSource);
137
+ var rowEle = getRowEleInEventPath(path);
135
138
  rowIndex = rowEle === null || rowEle === void 0 ? void 0 : rowEle.getAttribute('data-rowindex');
139
+ isInFooter = isElementInsideTheFooter(rowEle);
136
140
  }
137
141
 
142
+ var dataSource = isInFooter ? pipeline.getFooterDataSource() || [] : pipeline.getDataSource();
138
143
  var record = dataSource[rowIndex];
139
- var column = code !== undefined && (0, _others.findByTree)(pipeline.getColumns(), function (item, index) {
144
+ var column = code !== undefined && (0, _others.findByTree)(pipeline.getColumns(), function (item) {
140
145
  return item.code === code;
141
146
  });
142
147
 
@@ -312,18 +317,6 @@ function isEventFromCurrentPopup(event, ele) {
312
317
 
313
318
  return false;
314
319
  }
315
-
316
- function getCellEleInEventPath(path) {
317
- return (0, _utils.getTargetEleInEventPath)(path, function (ele) {
318
- return ele && ele.getAttribute('data-role') === 'table-cell';
319
- });
320
- }
321
-
322
- function getRowEleInEventPath(path) {
323
- return (0, _utils.getTargetEleInEventPath)(path, function (ele) {
324
- return ele && ele.getAttribute('data-role') === 'table-row';
325
- });
326
- }
327
320
  /** 是否点击是外部 end */
328
321
 
329
322
  /** 计算位置 start */
@@ -400,15 +393,37 @@ function keepWithinBounds(popupParent, ePopup, x, y) {
400
393
  /** 获得点击的元素 start */
401
394
 
402
395
 
403
- function getCellEleForEvent(event) {
404
- return getCellEleInEventPath((0, _utils.getEventPath)(event));
396
+ function getCellEleInEventPath(path) {
397
+ return (0, _utils.getTargetEleInEventPath)(path, function (ele) {
398
+ return ele && ele.getAttribute('data-role') === 'table-cell';
399
+ });
405
400
  }
406
401
 
407
- function getRowEleForEvent(event, dataSource) {
408
- return getRowEleInEventPath((0, _utils.getEventPath)(event));
402
+ function getRowEleInEventPath(path) {
403
+ return (0, _utils.getTargetEleInEventPath)(path, function (ele) {
404
+ return ele && ele.getAttribute('data-role') === 'table-row';
405
+ });
409
406
  }
410
407
  /** 获得点击的元素 end */
411
- // 禁止弹出右键菜单
408
+
409
+
410
+ function isElementInsideTheFooter(ele) {
411
+ var pointer = ele;
412
+
413
+ while (pointer) {
414
+ if (pointer.tagName === 'TFOOT') {
415
+ return true;
416
+ }
417
+
418
+ if (pointer.tagName === 'TABLE' || pointer.tagName === 'TBODY') {
419
+ return false;
420
+ }
421
+
422
+ pointer = pointer.parentElement;
423
+ }
424
+
425
+ return false;
426
+ } // 禁止弹出右键菜单
412
427
 
413
428
 
414
429
  function suppressShowContextMenu(e) {
@@ -26,8 +26,6 @@ var _utils = require("../../utils");
26
26
  function multiSelect() {
27
27
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
28
  return function multiSelectStep(pipeline) {
29
- var _context;
30
-
31
29
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
32
30
 
33
31
  var stateKey = 'multiSelect';
@@ -72,95 +70,103 @@ function multiSelect() {
72
70
  allKeys.push(rowKey);
73
71
  }
74
72
  });
75
- var set = new _set.default(value);
76
- var isAllChecked = allKeys.length > 0 && allKeys.every(function (key) {
77
- return set.has(key);
78
- });
79
- var isAnyChecked = allKeys.some(function (key) {
80
- return set.has(key);
81
- });
73
+ var set = new _set.default(value); // todo: 暂使用hidden隐藏选择列 后续增加配置
74
+
75
+ var hiddenSelectColumn = opts.checkboxColumn && opts.checkboxColumn.hidden === true;
76
+
77
+ if (!hiddenSelectColumn) {
78
+ var _context;
82
79
 
83
- var defaultCheckboxColumnTitle = /*#__PURE__*/_react.default.createElement(Checkbox, {
84
- checked: isAllChecked,
85
- indeterminate: !isAllChecked && isAnyChecked,
86
- onChange: function onChange(_) {
87
- if (isAllChecked) {
88
- _onChange(_others.arrayUtils.diff(value, allKeys), '', allKeys, 'uncheck-all');
89
- } else {
90
- _onChange(_others.arrayUtils.merge(value, allKeys), '', allKeys, 'check-all');
80
+ var isAllChecked = allKeys.length > 0 && allKeys.every(function (key) {
81
+ return set.has(key);
82
+ });
83
+ var isAnyChecked = allKeys.some(function (key) {
84
+ return set.has(key);
85
+ });
86
+
87
+ var defaultCheckboxColumnTitle = /*#__PURE__*/_react.default.createElement(Checkbox, {
88
+ checked: isAllChecked,
89
+ indeterminate: !isAllChecked && isAnyChecked,
90
+ onChange: function onChange(_) {
91
+ if (isAllChecked) {
92
+ _onChange(_others.arrayUtils.diff(value, allKeys), '', allKeys, 'uncheck-all');
93
+ } else {
94
+ _onChange(_others.arrayUtils.merge(value, allKeys), '', allKeys, 'check-all');
95
+ }
91
96
  }
92
- }
93
- });
97
+ });
94
98
 
95
- var checkboxColumn = (0, _extends2.default)((0, _extends2.default)({
96
- name: '是否选中',
97
- title: defaultCheckboxColumnTitle,
98
- width: 50,
99
- align: 'center'
100
- }, opts.checkboxColumn), {
101
- getCellProps: function getCellProps(value, row, rowIndex) {
102
- var _a, _b;
103
-
104
- var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
105
-
106
- var checkboxCellProps = {};
107
- var preCellProps = (_b = (_a = opts.checkboxColumn) === null || _a === void 0 ? void 0 : _a.getCellProps) === null || _b === void 0 ? void 0 : _b.call(_a, value, row, rowIndex);
108
-
109
- if (fullKeySet.has(rowKey) && clickArea === 'cell') {
110
- var prevChecked = set.has(rowKey);
111
- var disabled = isDisabled(row, rowIndex);
112
- checkboxCellProps = {
113
- style: {
114
- cursor: disabled ? 'not-allowed' : 'pointer'
115
- },
116
- onClick: disabled ? undefined : function (e) {
117
- if (opts.stopClickEventPropagation) {
118
- e.stopPropagation();
99
+ var checkboxColumn = (0, _extends2.default)((0, _extends2.default)({
100
+ name: '是否选中',
101
+ title: defaultCheckboxColumnTitle,
102
+ width: 50,
103
+ align: 'center'
104
+ }, opts.checkboxColumn), {
105
+ getCellProps: function getCellProps(value, row, rowIndex) {
106
+ var _a, _b;
107
+
108
+ var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
109
+
110
+ var checkboxCellProps = {};
111
+ var preCellProps = (_b = (_a = opts.checkboxColumn) === null || _a === void 0 ? void 0 : _a.getCellProps) === null || _b === void 0 ? void 0 : _b.call(_a, value, row, rowIndex);
112
+
113
+ if (fullKeySet.has(rowKey) && clickArea === 'cell') {
114
+ var prevChecked = set.has(rowKey);
115
+ var disabled = isDisabled(row, rowIndex);
116
+ checkboxCellProps = {
117
+ style: {
118
+ cursor: disabled ? 'not-allowed' : 'pointer'
119
+ },
120
+ onClick: disabled ? undefined : function (e) {
121
+ if (opts.stopClickEventPropagation) {
122
+ e.stopPropagation();
123
+ }
124
+
125
+ onCheckboxChange(prevChecked, rowKey, e.shiftKey);
119
126
  }
127
+ };
128
+ }
120
129
 
121
- onCheckboxChange(prevChecked, rowKey, e.shiftKey);
122
- }
123
- };
124
- }
130
+ return (0, _utils.mergeCellProps)(preCellProps, checkboxCellProps);
131
+ },
132
+ render: function render(_, row, rowIndex) {
133
+ var key = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
125
134
 
126
- return (0, _utils.mergeCellProps)(preCellProps, checkboxCellProps);
127
- },
128
- render: function render(_, row, rowIndex) {
129
- var key = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
135
+ var checked = set.has(key);
136
+ return /*#__PURE__*/_react.default.createElement(Checkbox, {
137
+ checked: checked,
138
+ disabled: isDisabled(row, rowIndex),
139
+ onChange: clickArea === 'checkbox' ? function (arg1, arg2) {
140
+ var _a; // 这里要同时兼容 antd 和 fusion 的用法
141
+ // fusion: arg2?.nativeEvent
142
+ // antd: arg1.nativeEvent
130
143
 
131
- var checked = set.has(key);
132
- return /*#__PURE__*/_react.default.createElement(Checkbox, {
133
- checked: checked,
134
- disabled: isDisabled(row, rowIndex),
135
- onChange: clickArea === 'checkbox' ? function (arg1, arg2) {
136
- var _a; // 这里要同时兼容 antd 和 fusion 的用法
137
- // fusion: arg2?.nativeEvent
138
- // antd: arg1.nativeEvent
139
144
 
145
+ var nativeEvent = (_a = arg2 === null || arg2 === void 0 ? void 0 : arg2.nativeEvent) !== null && _a !== void 0 ? _a : arg1.nativeEvent;
140
146
 
141
- var nativeEvent = (_a = arg2 === null || arg2 === void 0 ? void 0 : arg2.nativeEvent) !== null && _a !== void 0 ? _a : arg1.nativeEvent;
147
+ if (nativeEvent) {
148
+ if (opts.stopClickEventPropagation) {
149
+ nativeEvent.stopPropagation();
150
+ }
142
151
 
143
- if (nativeEvent) {
144
- if (opts.stopClickEventPropagation) {
145
- nativeEvent.stopPropagation();
152
+ onCheckboxChange(checked, key, nativeEvent.shiftKey);
146
153
  }
154
+ } : undefined
155
+ });
156
+ }
157
+ });
158
+ var nextColumns = (0, _slice.default)(_context = pipeline.getColumns()).call(_context);
159
+ var checkboxPlacement = (_l = opts.checkboxPlacement) !== null && _l !== void 0 ? _l : 'start';
147
160
 
148
- onCheckboxChange(checked, key, nativeEvent.shiftKey);
149
- }
150
- } : undefined
151
- });
161
+ if (checkboxPlacement === 'start') {
162
+ nextColumns.unshift(checkboxColumn);
163
+ } else {
164
+ nextColumns.push(checkboxColumn);
152
165
  }
153
- });
154
- var nextColumns = (0, _slice.default)(_context = pipeline.getColumns()).call(_context);
155
- var checkboxPlacement = (_l = opts.checkboxPlacement) !== null && _l !== void 0 ? _l : 'start';
156
166
 
157
- if (checkboxPlacement === 'start') {
158
- nextColumns.unshift(checkboxColumn);
159
- } else {
160
- nextColumns.push(checkboxColumn);
167
+ pipeline.columns(nextColumns);
161
168
  }
162
169
 
163
- pipeline.columns(nextColumns);
164
170
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
165
171
  var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
166
172
 
@@ -47,6 +47,8 @@ var _console = _interopRequireDefault(require("../../utils/console"));
47
47
 
48
48
  var _renderTemplates = _interopRequireDefault(require("../../base/renderTemplates"));
49
49
 
50
+ var _base = require("../../base");
51
+
50
52
  var rowDetailSymbol = (0, _symbol.default)('row-detail');
51
53
 
52
54
  var fallbackRenderDetail = function fallbackRenderDetail() {
@@ -187,7 +189,7 @@ function rowDetail() {
187
189
  toggle(rowKey);
188
190
  };
189
191
 
190
- var expandCls = expanded ? 'expanded' : 'collapsed';
192
+ var expandCls = expanded ? _base.Classes.expanded : _base.Classes.collapsed;
191
193
  var ExpandIcon = opts.expandIcon;
192
194
  return /*#__PURE__*/_react.default.createElement(_commonViews.ExpansionCell, {
193
195
  className: (0, _classnames.default)('expansion-cell', expandCls),
@@ -41,6 +41,8 @@ var _utils = require("../../utils");
41
41
 
42
42
  var _others = require("../../utils/others");
43
43
 
44
+ var _base = require("../../base");
45
+
44
46
  var groupingMetaSymbol = (0, _symbol.default)('row-grouping-meta');
45
47
 
46
48
  function attachGroupingMeta(row) {
@@ -149,7 +151,7 @@ function rowGrouping() {
149
151
  }
150
152
 
151
153
  var expanded = openKeySet.has(row[primaryKey]);
152
- var expandCls = expanded ? 'expanded' : 'collapsed';
154
+ var expandCls = expanded ? _base.Classes.expanded : _base.Classes.collapsed;
153
155
  return /*#__PURE__*/_react.default.createElement(_commonViews.ExpansionCell, {
154
156
  className: (0, _classnames.default)('expansion-cell', expandCls)
155
157
  }, /*#__PURE__*/_react.default.createElement(_commonViews.icons.CaretRight, {
@@ -44,6 +44,8 @@ var _internals = require("../../internals");
44
44
 
45
45
  var _utils = require("../../utils");
46
46
 
47
+ var _styles = require("../../base/styles");
48
+
47
49
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol2 !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
48
50
 
49
51
  function _unsupportedIterableToArray(o, minLen) { var _context3; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context3 = Object.prototype.toString.call(o)).call(_context3, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -177,7 +179,7 @@ function treeMode() {
177
179
 
178
180
  if (isLeaf) {
179
181
  return /*#__PURE__*/_react.default.createElement(_commonViews.InlineFlexCell, {
180
- className: "expansion-cell leaf"
182
+ className: (0, _classnames.default)('expansion-cell', _styles.Classes.leaf)
181
183
  }, /*#__PURE__*/_react.default.createElement("span", {
182
184
  style: {
183
185
  marginLeft: indent + iconWidth + iconGap
@@ -193,7 +195,7 @@ function treeMode() {
193
195
  toggle(rowKey);
194
196
  };
195
197
 
196
- var expandCls = expanded ? 'expanded' : 'collapsed';
198
+ var expandCls = expanded ? _styles.Classes.expanded : _styles.Classes.collapsed;
197
199
  return /*#__PURE__*/_react.default.createElement(_commonViews.ExpansionCell, {
198
200
  className: (0, _classnames.default)('expansion-cell', expandCls),
199
201
  style: {
@@ -36,6 +36,7 @@ export declare class TablePipeline {
36
36
  private _tableProps;
37
37
  private _dataSource;
38
38
  private _columns;
39
+ private _footerDataSource;
39
40
  static defaultIndents: TablePipelineIndentsConfig;
40
41
  readonly ctx: TablePipelineCtx;
41
42
  private readonly state;
@@ -51,6 +52,7 @@ export declare class TablePipeline {
51
52
  addTableProps(props: React.HTMLAttributes<HTMLTableElement>): void;
52
53
  getDataSource(name?: string): any[];
53
54
  getColumns(name?: string): any[];
55
+ getFooterDataSource(): any[];
54
56
  getStateAtKey<T = any>(stateKey: string, defaultValue?: T): T;
55
57
  /** 将 stateKey 对应的状态设置为 partialState */
56
58
  setStateAtKey(stateKey: string, partialState: any, extraInfo?: any): void;
@@ -67,6 +69,8 @@ export declare class TablePipeline {
67
69
  columns(cols: ArtColumn[]): this;
68
70
  /** 设置主键 */
69
71
  primaryKey(key: PrimaryKey): this;
72
+ /** 设置页脚数据 */
73
+ footerDataSource(rows: any[]): this;
70
74
  /** 保存快照 */
71
75
  snapshot(name: string): this;
72
76
  /** @deprecated
@@ -101,6 +101,11 @@ var TablePipeline = /*#__PURE__*/function () {
101
101
  return this._snapshots[name].columns;
102
102
  }
103
103
  }
104
+ }, {
105
+ key: "getFooterDataSource",
106
+ value: function getFooterDataSource() {
107
+ return this._footerDataSource;
108
+ }
104
109
  }, {
105
110
  key: "getStateAtKey",
106
111
  value: function getStateAtKey(stateKey, defaultValue) {
@@ -173,6 +178,14 @@ var TablePipeline = /*#__PURE__*/function () {
173
178
  this.ctx.primaryKey = key;
174
179
  return this;
175
180
  }
181
+ /** 设置页脚数据 */
182
+
183
+ }, {
184
+ key: "footerDataSource",
185
+ value: function footerDataSource(rows) {
186
+ this._footerDataSource = rows;
187
+ return this;
188
+ }
176
189
  /** 保存快照 */
177
190
 
178
191
  }, {
@@ -253,6 +266,10 @@ var TablePipeline = /*#__PURE__*/function () {
253
266
  result.primaryKey = this.ctx.primaryKey;
254
267
  }
255
268
 
269
+ if (this._footerDataSource) {
270
+ result.footerDataSource = this._footerDataSource;
271
+ }
272
+
256
273
  if (this._rowPropsGetters.length > 0) {
257
274
  result.getRowProps = function (row, rowIndex) {
258
275
  return _this2._rowPropsGetters.reduce(function (res, get) {
@@ -33,12 +33,16 @@ var _rxjs = require("rxjs");
33
33
 
34
34
  var _styledComponents = _interopRequireDefault(require("styled-components"));
35
35
 
36
+ var _classnames = _interopRequireDefault(require("classnames"));
37
+
36
38
  var _commonViews = require("../../common-views");
37
39
 
38
40
  var _utils = require("../../utils");
39
41
 
40
42
  var _simpleEncode = _interopRequireDefault(require("./simpleEncode"));
41
43
 
44
+ var _styles = require("../../base/styles");
45
+
42
46
  var _templateObject;
43
47
 
44
48
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -47,7 +51,7 @@ function _unsupportedIterableToArray(o, minLen) { var _context3; if (!o) return;
47
51
 
48
52
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
49
53
 
50
- var ExpandSpan = _styledComponents.default.span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n align-items: center;\n padding: 2px 8px 2px 0;\n cursor: pointer;\n\n .icon {\n fill: #999;\n margin-right: 4px;\n\n &.expanded {\n transform-origin: center center;\n transform: rotate(90deg);\n }\n }\n"])));
54
+ var ExpandSpan = _styledComponents.default.span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n align-items: center;\n padding: 2px 8px 2px 0;\n cursor: pointer;\n\n .icon {\n fill: #999;\n margin-right: 4px;\n\n &.", " {\n transform-origin: center center;\n transform: rotate(90deg);\n }\n }\n"])), _styles.Classes.expanded);
51
55
 
52
56
  function convertDrillTreeToCrossTree(drillTree) {
53
57
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -140,7 +144,7 @@ function convertDrillTreeToCrossTree(drillTree) {
140
144
  }), node, 'collapse');
141
145
  }
142
146
  }, /*#__PURE__*/_react.default.createElement(_commonViews.icons.CaretRight, {
143
- className: "icon expanded"
147
+ className: (0, _classnames.default)('icon', _styles.Classes.expanded)
144
148
  }), node.value);
145
149
  crossTreeNode.children = dfs(node.children, depth + 1);
146
150
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/table",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "金蝶 react table 组件",
5
5
  "title": "table",
6
6
  "keywords": [