@kdcloudjs/table 1.2.0-canary.8 → 1.2.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 (63) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +634 -125
  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 +8 -8
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/table/base/header.d.ts +2 -1
  8. package/es/table/base/header.js +4 -2
  9. package/es/table/base/helpers/TableDOMUtils.js +3 -1
  10. package/es/table/base/html-table.js +1 -1
  11. package/es/table/base/renderTemplates.js +24 -10
  12. package/es/table/base/styles.d.ts +7 -0
  13. package/es/table/base/styles.js +9 -2
  14. package/es/table/base/table.d.ts +2 -1
  15. package/es/table/base/table.js +73 -46
  16. package/es/table/interfaces.d.ts +2 -0
  17. package/es/table/pipeline/features/autoFill.js +3 -1
  18. package/es/table/pipeline/features/columnDrag.js +11 -7
  19. package/es/table/pipeline/features/columnFilter.js +15 -5
  20. package/es/table/pipeline/features/index.d.ts +1 -0
  21. package/es/table/pipeline/features/index.js +2 -1
  22. package/es/table/pipeline/features/multiSelect.js +18 -35
  23. package/es/table/pipeline/features/rangeSelection.js +3 -2
  24. package/es/table/pipeline/features/rowDrag.d.ts +30 -0
  25. package/es/table/pipeline/features/rowDrag.js +349 -0
  26. package/es/table/pipeline/features/singleSelect.js +6 -4
  27. package/es/table/pipeline/features/sort.js +22 -3
  28. package/es/table/pipeline/features/treeMode.js +6 -0
  29. package/es/table/pipeline/pipeline.d.ts +2 -0
  30. package/es/table/pipeline/pipeline.js +9 -1
  31. package/es/table/utils/index.d.ts +1 -0
  32. package/es/table/utils/index.js +2 -1
  33. package/es/table/utils/selectColumn.d.ts +4 -0
  34. package/es/table/utils/selectColumn.js +6 -0
  35. package/lib/table/base/header.d.ts +2 -1
  36. package/lib/table/base/header.js +4 -2
  37. package/lib/table/base/helpers/TableDOMUtils.js +3 -1
  38. package/lib/table/base/html-table.js +1 -1
  39. package/lib/table/base/renderTemplates.js +24 -10
  40. package/lib/table/base/styles.d.ts +7 -0
  41. package/lib/table/base/styles.js +9 -2
  42. package/lib/table/base/table.d.ts +2 -1
  43. package/lib/table/base/table.js +73 -46
  44. package/lib/table/interfaces.d.ts +2 -0
  45. package/lib/table/pipeline/features/autoFill.js +3 -1
  46. package/lib/table/pipeline/features/columnDrag.js +10 -6
  47. package/lib/table/pipeline/features/columnFilter.js +16 -6
  48. package/lib/table/pipeline/features/index.d.ts +1 -0
  49. package/lib/table/pipeline/features/index.js +9 -1
  50. package/lib/table/pipeline/features/multiSelect.js +20 -38
  51. package/lib/table/pipeline/features/rangeSelection.js +3 -2
  52. package/lib/table/pipeline/features/rowDrag.d.ts +30 -0
  53. package/lib/table/pipeline/features/rowDrag.js +371 -0
  54. package/lib/table/pipeline/features/singleSelect.js +8 -5
  55. package/lib/table/pipeline/features/sort.js +22 -3
  56. package/lib/table/pipeline/features/treeMode.js +6 -0
  57. package/lib/table/pipeline/pipeline.d.ts +2 -0
  58. package/lib/table/pipeline/pipeline.js +9 -1
  59. package/lib/table/utils/index.d.ts +1 -0
  60. package/lib/table/utils/index.js +21 -1
  61. package/lib/table/utils/selectColumn.d.ts +4 -0
  62. package/lib/table/utils/selectColumn.js +16 -0
  63. package/package.json +3 -3
@@ -153,7 +153,9 @@ function getColumnWidthSum(pipeline) {
153
153
  }
154
154
 
155
155
  function getTableRemainingWidth(pipeline) {
156
- var tableWidth = pipeline.getStateAtKey(tableWidthKey);
156
+ var _a, _b;
157
+
158
+ var tableWidth = ((_b = (_a = pipeline.ref.current.domHelper) === null || _a === void 0 ? void 0 : _a.tableBody) === null || _b === void 0 ? void 0 : _b.clientWidth) || pipeline.getStateAtKey(tableWidthKey);
157
159
  if (!tableWidth) return;
158
160
  var remainingWidth = Math.floor(tableWidth - getColumnWidthSum(pipeline));
159
161
  return remainingWidth > 0 ? remainingWidth : 0;
@@ -329,9 +329,13 @@ function columnDrag() {
329
329
  if (onColumnDragStopped) {
330
330
  var _context;
331
331
 
332
- var newColumns = (0, _filter.default)(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (_ref) {
333
- var code = _ref.code;
334
- return code !== _autoFill.FILL_COLUMN_CODE;
332
+ var isRowDragColumn = function isRowDragColumn(code) {
333
+ var rowDragColumnKey = pipeline.getFeatureOptions('rowDragColumnKey');
334
+ return code === rowDragColumnKey;
335
+ };
336
+
337
+ var newColumns = (0, _filter.default)(_context = sortColumns(columns, cloumnsSortData)).call(_context, function (column) {
338
+ return column.code !== _autoFill.FILL_COLUMN_CODE && !isRowDragColumn(column.code) && !(0, _utils.isSelectColumn)(column);
335
339
  }); // TODO drag需要在resize之后use,否则这里返回的列对应的宽度不是拖拽后的
336
340
 
337
341
  onColumnDragStopped(columnMoved, newColumns);
@@ -356,9 +360,9 @@ function columnDrag() {
356
360
  };
357
361
  }
358
362
 
359
- function enableMove(_ref2) {
360
- var lock = _ref2.lock,
361
- code = _ref2.code;
363
+ function enableMove(_ref) {
364
+ var lock = _ref.lock,
365
+ code = _ref.code;
362
366
  return code && code !== _autoFill.FILL_COLUMN_CODE && !lock;
363
367
  }
364
368
 
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.filter = filter;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
11
-
12
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
13
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
13
+
14
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
15
15
 
16
16
  var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
@@ -76,7 +76,7 @@ function filter() {
76
76
  var filterActive = filterable && ((_c = (_b = inputFiltersMap === null || inputFiltersMap === void 0 ? void 0 : inputFiltersMap.get(col.code)) === null || _b === void 0 ? void 0 : (0, _filter.default)(_b)) === null || _c === void 0 ? void 0 : _c.length) > 0;
77
77
 
78
78
  if (filterable) {
79
- var _context, _context2, _cx;
79
+ var _cx;
80
80
 
81
81
  var handleFilterChanged = function handleFilterChanged(filterItem) {
82
82
  var nextFiltersMap = new _map.default(inputFiltersMap);
@@ -109,8 +109,9 @@ function filter() {
109
109
 
110
110
  var filterPanel = (_d = col.features) === null || _d === void 0 ? void 0 : _d.filterPanel;
111
111
  var colFilterIcon = (_f = (_e = col.features) === null || _e === void 0 ? void 0 : _e.filterIcon) !== null && _f !== void 0 ? _f : filterIcon;
112
- result.title = (0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)((0, _concat.default)(_context2 = []).call(_context2, (_g = result.title) !== null && _g !== void 0 ? _g : [_internals.internals.safeRenderHeader((0, _extends2.default)({}, col))])), [/*#__PURE__*/_react.default.createElement(_filter2.Filter, {
113
- key: "filter",
112
+
113
+ var _Filter = /*#__PURE__*/_react.default.createElement(_filter2.Filter, {
114
+ key: "".concat(col.code, "_filter"),
114
115
  FilterPanelContent: filterPanel,
115
116
  filterIcon: colFilterIcon,
116
117
  filterModel: inputFiltersMap.get(col.code),
@@ -123,11 +124,20 @@ function filter() {
123
124
  hideFilterPopupHeader: hideFilterPopupHeader,
124
125
  getPopupParent: getPopupParent,
125
126
  localeText: localeText
126
- })]); // result.headerCellProps = mergeCellProps(col.headerCellProps, {
127
+ });
128
+
129
+ if (col.renderHeader) {
130
+ result.title = col.renderHeader(result.title, _Filter);
131
+ } else {
132
+ var _context, _context2;
133
+
134
+ result.title = (0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)((0, _concat.default)(_context2 = []).call(_context2, (_g = result.title) !== null && _g !== void 0 ? _g : [_internals.internals.safeRenderHeader((0, _extends2.default)({}, col))])), [_Filter]);
135
+ } // result.headerCellProps = mergeCellProps(col.headerCellProps, {
127
136
  // style: {
128
137
  // paddingRight: '18px'
129
138
  // }
130
139
  // })
140
+
131
141
  }
132
142
 
133
143
  if (!(0, _utils.isLeafNode)(col)) {
@@ -18,3 +18,4 @@ export { rangeSelection, RangeSelectionFeatureOptions } from './rangeSelection';
18
18
  export { mergeCellHover } from './mergeCellHover';
19
19
  export { footerDataSource, FooterDataSourceFeatureOptions, footerRowMetaSymbol } from './footerDataSource';
20
20
  export { colGroupExtendable, colGroupExtendOption } from './colGroupExtendable';
21
+ export { rowDrag, RowDragFeatureOptions } from './rowDrag';
@@ -97,6 +97,12 @@ Object.defineProperty(exports, "rowDetail", {
97
97
  return _rowDetail.rowDetail;
98
98
  }
99
99
  });
100
+ Object.defineProperty(exports, "rowDrag", {
101
+ enumerable: true,
102
+ get: function get() {
103
+ return _rowDrag.rowDrag;
104
+ }
105
+ });
100
106
  Object.defineProperty(exports, "rowGrouping", {
101
107
  enumerable: true,
102
108
  get: function get() {
@@ -178,4 +184,6 @@ var _mergeCellHover = require("./mergeCellHover");
178
184
 
179
185
  var _footerDataSource = require("./footerDataSource");
180
186
 
181
- var _colGroupExtendable = require("./colGroupExtendable");
187
+ var _colGroupExtendable = require("./colGroupExtendable");
188
+
189
+ var _rowDrag = require("./rowDrag");
@@ -9,7 +9,9 @@ exports.multiSelect = multiSelect;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
11
11
 
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
13
+
14
+ var _extends3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
15
 
14
16
  var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
15
17
 
@@ -23,14 +25,10 @@ var _others = require("../../utils/others");
23
25
 
24
26
  var _utils = require("../../utils");
25
27
 
26
- var fullRowsSetKey = 'fullRowsSetKey';
27
- var allEnableKeys = 'allEnableKeys';
28
- var selectValueSetKey = 'selectValueSetKey';
29
-
30
28
  function multiSelect() {
31
29
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
32
30
  return function multiSelectStep(pipeline) {
33
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
31
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
34
32
 
35
33
  var stateKey = 'multiSelect';
36
34
  var Checkbox = pipeline.ctx.components.Checkbox;
@@ -57,8 +55,9 @@ function multiSelect() {
57
55
  action: action
58
56
  });
59
57
  };
60
- /** dataSource 中包含的所有 keys */
61
58
 
59
+ var dataSource = pipeline.getDataSource();
60
+ /** dataSource 中包含的所有 keys */
62
61
 
63
62
  var fullKeySet = new _set.default();
64
63
  /** 所有有效的 keys(disable 状态为 false) */
@@ -68,7 +67,7 @@ function multiSelect() {
68
67
  var isAllChecked = set.size !== 0; // 当前不存在选中则默认为false
69
68
 
70
69
  var isAnyChecked = false;
71
- var flatDataSource = (0, _utils.collectNodes)(pipeline.getDataSource());
70
+ var flatDataSource = (0, _utils.collectNodes)(dataSource);
72
71
  flatDataSource.forEach(function (row, rowIndex) {
73
72
  var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
74
73
 
@@ -97,8 +96,6 @@ function multiSelect() {
97
96
  checked: isAllChecked,
98
97
  indeterminate: !isAllChecked && isAnyChecked,
99
98
  onChange: function onChange(_) {
100
- var allKeys = pipeline.getFeatureOptions(allEnableKeys);
101
-
102
99
  if (isAllChecked) {
103
100
  _onChange(_others.arrayUtils.diff(value, allKeys), '', allKeys, 'uncheck-all');
104
101
  } else {
@@ -107,7 +104,7 @@ function multiSelect() {
107
104
  }
108
105
  });
109
106
 
110
- var checkboxColumn = (0, _extends2.default)((0, _extends2.default)({
107
+ var checkboxColumn = (0, _extends3.default)((0, _extends3.default)({
111
108
  name: '是否选中',
112
109
  title: defaultCheckboxColumnTitle,
113
110
  width: 50,
@@ -120,11 +117,9 @@ function multiSelect() {
120
117
 
121
118
  var checkboxCellProps = {};
122
119
  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);
123
- var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _set.default();
124
- var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
125
120
 
126
- if (fullRowsSet.has(rowKey) && clickArea === 'cell') {
127
- var prevChecked = selectValueSet.has(rowKey);
121
+ if (fullKeySet.has(rowKey) && clickArea === 'cell') {
122
+ var prevChecked = set.has(rowKey);
128
123
  var disabled = isDisabled(row, rowIndex);
129
124
  checkboxCellProps = {
130
125
  style: {
@@ -149,8 +144,7 @@ function multiSelect() {
149
144
 
150
145
  var key = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
151
146
 
152
- var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
153
- var checked = selectValueSet.has(key);
147
+ var checked = set.has(key);
154
148
  return /*#__PURE__*/_react.default.createElement(Checkbox, {
155
149
  checked: checked,
156
150
  disabled: isDisabled(row, rowIndex),
@@ -171,10 +165,11 @@ function multiSelect() {
171
165
  }
172
166
  } : undefined
173
167
  });
174
- }
168
+ },
169
+ features: (0, _extends3.default)((0, _extends3.default)({}, (_l = opts.checkboxColumn) === null || _l === void 0 ? void 0 : _l.features), (0, _defineProperty2.default)({}, _utils.MULTI_SELECT_MARK_PROPNAME, true))
175
170
  });
176
171
  var nextColumns = (0, _slice.default)(_context = pipeline.getColumns()).call(_context);
177
- var checkboxPlacement = (_l = opts.checkboxPlacement) !== null && _l !== void 0 ? _l : 'start';
172
+ var checkboxPlacement = (_m = opts.checkboxPlacement) !== null && _m !== void 0 ? _m : 'start';
178
173
 
179
174
  if (checkboxPlacement === 'start') {
180
175
  nextColumns.unshift(checkboxColumn);
@@ -188,9 +183,7 @@ function multiSelect() {
188
183
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
189
184
  var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
190
185
 
191
- var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _set.default();
192
-
193
- if (!fullRowsSet.has(rowKey)) {
186
+ if (!fullKeySet.has(rowKey)) {
194
187
  // rowKey 不在 fullKeySet 中说明这一行是在 multiSelect 之后才生成的,multiSelect 不对之后生成的行进行处理
195
188
  return;
196
189
  }
@@ -198,8 +191,7 @@ function multiSelect() {
198
191
  var style = {};
199
192
  var className;
200
193
  var onClick;
201
- var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
202
- var checked = selectValueSet.has(rowKey);
194
+ var checked = set.has(rowKey);
203
195
 
204
196
  if (opts.highlightRowWhenSelected && checked) {
205
197
  className = 'highlight';
@@ -226,32 +218,22 @@ function multiSelect() {
226
218
  style: style,
227
219
  onClick: onClick
228
220
  };
229
- }); // 只保留一份到pipeline, 避免行数据过多时内容被握住
230
-
231
- pipeline.setFeatureOptions(fullRowsSetKey, fullKeySet);
232
- pipeline.setFeatureOptions(allEnableKeys, allKeys);
233
- pipeline.setFeatureOptions(selectValueSetKey, set);
234
- fullKeySet = null;
235
- allKeys = null;
236
- set = null;
221
+ });
237
222
  return pipeline;
238
223
 
239
224
  function onCheckboxChange(prevChecked, key, batch) {
240
225
  var batchKeys = [key];
241
226
 
242
227
  if (batch && lastKey) {
243
- var _allKeys = pipeline.getFeatureOptions(allEnableKeys);
244
-
245
- var lastIdx = _allKeys.indexOf(lastKey);
246
-
247
- var cntIdx = _allKeys.indexOf(key);
228
+ var lastIdx = allKeys.indexOf(lastKey);
229
+ var cntIdx = allKeys.indexOf(key);
248
230
 
249
231
  var _ref = lastIdx < cntIdx ? [lastIdx, cntIdx] : [cntIdx, lastIdx],
250
232
  _ref2 = (0, _slicedToArray2.default)(_ref, 2),
251
233
  start = _ref2[0],
252
234
  end = _ref2[1];
253
235
 
254
- batchKeys = (0, _slice.default)(_allKeys).call(_allKeys, start, end + 1);
236
+ batchKeys = (0, _slice.default)(allKeys).call(allKeys, start, end + 1);
255
237
  }
256
238
 
257
239
  if (prevChecked) {
@@ -176,7 +176,9 @@ function rangeSelection(opts) {
176
176
 
177
177
  var isCtrlKey = mouseDownEvent.ctrlKey || mouseDownEvent.metaKey;
178
178
  var isShiftKey = mouseDownEvent.shiftKey;
179
- var target = mouseDownEvent.target; // 每次点击时先确认初始生效的框选范围
179
+ var target = mouseDownEvent.target;
180
+ var startDragCell = getTargetCell(target, columns);
181
+ if (!startDragCell) return; // 每次点击时先确认初始生效的框选范围
180
182
 
181
183
  setStartSelectedCellRanges(isCtrlKey, isShiftKey);
182
184
 
@@ -185,7 +187,6 @@ function rangeSelection(opts) {
185
187
  return;
186
188
  }
187
189
 
188
- var startDragCell = getTargetCell(target, columns);
189
190
  pipeline.setFeatureOptions(lastClickCellKey, startDragCell);
190
191
  var draggingCell = startDragCell;
191
192
  var mousemove$ = (0, _rxjs.fromEvent)(window, 'mousemove');
@@ -0,0 +1,30 @@
1
+ import { TablePipeline } from '../pipeline';
2
+ import { ArtColumn } from '../../interfaces';
3
+ interface RowDragEvent {
4
+ startRowIndex: number;
5
+ startRow: any;
6
+ endRowIndex: number;
7
+ endRow: any;
8
+ isFinished: boolean;
9
+ dragPosition: string;
10
+ }
11
+ export interface RowDragFeatureOptions {
12
+ /** 拖拽开始事件 */
13
+ onDragStart?: (event: RowDragEvent) => void;
14
+ /** 拖拽移动事件 */
15
+ onDragMove?: (event: RowDragEvent) => void;
16
+ /** 拖拽结束事件 */
17
+ onDragEnd?: (event: RowDragEvent) => void;
18
+ /** 判断一行是否要禁用拖拽 */
19
+ isDisabled?: (row: any, rowIndex: number) => boolean;
20
+ /** 拖拽列定义 */
21
+ rowDragColumn?: ArtColumn;
22
+ /** 行高 */
23
+ rowHeight?: number;
24
+ /** 拖拽过程中是否禁止滚动条滚动 */
25
+ suppressScrollMove?: boolean;
26
+ }
27
+ export declare const ROW_DRAG_COLUMN_CODE = "$_row_drag_column_&";
28
+ export declare const rowDragKey = "rowDragKey";
29
+ export declare function rowDrag(opt: RowDragFeatureOptions): (pipeline: TablePipeline) => TablePipeline;
30
+ export {};