@qn-pandora/pandora-component 4.4.3 → 4.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/CHANGELOG.json +17 -0
  2. package/CHANGELOG.md +8 -1
  3. package/es/components/FileResumable/index.js +53 -62
  4. package/es/components/FileResumable/utils.d.ts +2 -0
  5. package/es/components/FileResumable/utils.js +17 -0
  6. package/es/components/Table/ColumnSetting/index.d.ts +1 -0
  7. package/es/components/Table/ColumnSetting/index.js +16 -8
  8. package/es/components/Table/ColumnSetting/style.css +10 -1
  9. package/es/components/Table/ColumnSetting/style.less +6 -1
  10. package/es/components/Table/constant.d.ts +3 -1
  11. package/es/components/Table/constant.js +2 -0
  12. package/es/components/Table/index.d.ts +30 -4
  13. package/es/components/Table/index.js +280 -30
  14. package/es/components/Table/style.css +1 -0
  15. package/es/components/Table/style.less +1 -0
  16. package/es/index.css +7634 -7624
  17. package/es/index.d.ts +1 -1
  18. package/es/index.js +1 -1
  19. package/es/index.less +19 -19
  20. package/lib/components/FileResumable/index.js +52 -61
  21. package/lib/components/FileResumable/utils.d.ts +2 -0
  22. package/lib/components/FileResumable/utils.js +21 -0
  23. package/lib/components/Table/ColumnSetting/index.d.ts +1 -0
  24. package/lib/components/Table/ColumnSetting/index.js +15 -7
  25. package/lib/components/Table/ColumnSetting/style.css +10 -1
  26. package/lib/components/Table/ColumnSetting/style.less +6 -1
  27. package/lib/components/Table/constant.d.ts +3 -1
  28. package/lib/components/Table/constant.js +2 -0
  29. package/lib/components/Table/index.d.ts +30 -4
  30. package/lib/components/Table/index.js +279 -29
  31. package/lib/components/Table/style.css +1 -0
  32. package/lib/components/Table/style.less +1 -0
  33. package/lib/index.css +2830 -2820
  34. package/lib/index.d.ts +1 -1
  35. package/lib/index.js +1 -0
  36. package/lib/index.less +14 -14
  37. package/package.json +4 -3
@@ -90,6 +90,11 @@ var type_1 = require("../../constants/language/table/type");
90
90
  var ColumnTag_1 = require("./ColumnTag/ColumnTag");
91
91
  var ColumnSetting_1 = __importDefault(require("./ColumnSetting"));
92
92
  var ResizableTitle_1 = __importDefault(require("./ResizableTitle"));
93
+ var ETableSettingType;
94
+ (function (ETableSettingType) {
95
+ ETableSettingType["SORT"] = "sort";
96
+ ETableSettingType["RESIZE"] = "resize";
97
+ })(ETableSettingType = exports.ETableSettingType || (exports.ETableSettingType = {}));
93
98
  /**
94
99
  * pandora2.0风格的表格
95
100
  */
@@ -101,6 +106,12 @@ var Table = /** @class */ (function (_super) {
101
106
  _this.checkAll = false;
102
107
  _this.hiddenColumn = _this.props.hiddenColumns;
103
108
  _this.columns = [];
109
+ _this.sortConfig = {
110
+ sortKeys: [],
111
+ fixedRightKeys: [],
112
+ fixedLeftKeys: []
113
+ };
114
+ _this.settingFields = [];
104
115
  return _this;
105
116
  }
106
117
  Table.prototype.UNSAFE_componentWillReceiveProps = function (nextProps) {
@@ -131,11 +142,12 @@ var Table = /** @class */ (function (_super) {
131
142
  : selectedRowsOfCurrentPage);
132
143
  }
133
144
  }
134
- if (lodash_1.isEqual(nextProps.hiddenColumns, this.props.hiddenColumns)) {
145
+ if (!lodash_1.isEqual(nextProps.hiddenColumns, this.props.hiddenColumns)) {
135
146
  this.setHiddenColumn(nextProps.hiddenColumns);
136
147
  }
137
148
  if (nextProps.columns !== this.props.columns) {
138
- this.setColumns(nextProps.scroll && nextProps.draggable
149
+ this.setColumns((nextProps.scroll && nextProps.draggable === true) ||
150
+ nextProps.draggable === ETableSettingType.RESIZE
139
151
  ? this.getResizeColumns(nextProps.columns)
140
152
  : nextProps.columns);
141
153
  }
@@ -214,7 +226,9 @@ var Table = /** @class */ (function (_super) {
214
226
  });
215
227
  }
216
228
  });
217
- return options;
229
+ return this.sortConfig.sortKeys
230
+ .map(function (key) { return options.find(function (option) { return option.value === key; }); })
231
+ .filter(function (f) { return !!f; });
218
232
  },
219
233
  enumerable: true,
220
234
  configurable: true
@@ -245,6 +259,114 @@ var Table = /** @class */ (function (_super) {
245
259
  enumerable: true,
246
260
  configurable: true
247
261
  });
262
+ Object.defineProperty(Table.prototype, "resizable", {
263
+ get: function () {
264
+ var _a, _b;
265
+ return (((_a = this.props) === null || _a === void 0 ? void 0 : _a.draggable) === true ||
266
+ ((_b = this.props) === null || _b === void 0 ? void 0 : _b.draggable) === ETableSettingType.RESIZE);
267
+ },
268
+ enumerable: true,
269
+ configurable: true
270
+ });
271
+ Object.defineProperty(Table.prototype, "sortable", {
272
+ get: function () {
273
+ var _a, _b;
274
+ return (((_a = this.props) === null || _a === void 0 ? void 0 : _a.draggable) === true ||
275
+ ((_b = this.props) === null || _b === void 0 ? void 0 : _b.draggable) === ETableSettingType.SORT);
276
+ },
277
+ enumerable: true,
278
+ configurable: true
279
+ });
280
+ Table.prototype.initSettingConfig = function () {
281
+ var _this = this;
282
+ var _a = this.props, saveSettingKey = _a.saveSettingKey, _b = _a.hiddenColumns, hiddenColumns = _b === void 0 ? [] : _b;
283
+ var settingFields = [];
284
+ var sortableColumns = [];
285
+ var leftColumns = [];
286
+ var rightColumns = [];
287
+ var hideKeys = [];
288
+ if (saveSettingKey) {
289
+ // 支持排序或拖拽
290
+ var sizeStr = localStorage.getItem(saveSettingKey);
291
+ settingFields = (!!sizeStr && JSON.parse(sizeStr)) || [];
292
+ // 已配置的列和实际的对不上
293
+ // 可能新增或者删除列的情况
294
+ var newSettingFields = [];
295
+ if ((settingFields === null || settingFields === void 0 ? void 0 : settingFields.length) && lodash_1.isArray(settingFields)) {
296
+ // 已配置列
297
+ // 旧类型数据为对象类型,未配置
298
+ settingFields.map(function (field) {
299
+ var find = _this.columns.find(function (column) { return column.dataIndex === field.field; });
300
+ if (find) {
301
+ if (field.hide) {
302
+ hideKeys.push(field.field);
303
+ }
304
+ if (!find.fixed) {
305
+ sortableColumns.push(field);
306
+ }
307
+ else if (find.fixed === 'left' || find.fixed === true) {
308
+ leftColumns.push(field);
309
+ }
310
+ else {
311
+ rightColumns.push(field);
312
+ }
313
+ }
314
+ });
315
+ // 未配置过的列
316
+ this.columns
317
+ .filter(function (f) { return !settingFields.find(function (field) { return field.field === f.dataIndex; }); })
318
+ .map(function (column) {
319
+ if (!column.fixed) {
320
+ sortableColumns.push({
321
+ field: column.dataIndex,
322
+ fixed: column.fixed
323
+ });
324
+ }
325
+ else if (column.fixed === 'left' || column.fixed === true) {
326
+ leftColumns.push({
327
+ field: column.dataIndex,
328
+ fixed: column.fixed
329
+ });
330
+ }
331
+ else {
332
+ rightColumns.push({
333
+ field: column.dataIndex,
334
+ fixed: column.fixed
335
+ });
336
+ }
337
+ });
338
+ }
339
+ else {
340
+ // 从未配置过的列
341
+ this.columns.map(function (column) {
342
+ if (!column.fixed) {
343
+ sortableColumns.push({
344
+ field: column.dataIndex,
345
+ fixed: column.fixed
346
+ });
347
+ }
348
+ else if (column.fixed === 'left' || column.fixed === true) {
349
+ leftColumns.push({
350
+ field: column.dataIndex,
351
+ fixed: column.fixed
352
+ });
353
+ }
354
+ else {
355
+ rightColumns.push({
356
+ field: column.dataIndex,
357
+ fixed: column.fixed
358
+ });
359
+ }
360
+ });
361
+ }
362
+ this.setFixedLeftKeys(leftColumns.map(function (t) { return t.field; }));
363
+ this.setFixedRightKeys(rightColumns.map(function (t) { return t.field; }));
364
+ this.setSortKeys(sortableColumns.map(function (t) { return t.field; }));
365
+ this.setHiddenColumn(__spread(new Set(__spread(hiddenColumns, hideKeys))));
366
+ newSettingFields = __spread(leftColumns, sortableColumns, rightColumns);
367
+ this.setSettingFields(newSettingFields);
368
+ }
369
+ };
248
370
  // 隐藏key
249
371
  Table.prototype.handleHideColumnsChange = function (keys) {
250
372
  var _a, _b;
@@ -253,33 +375,55 @@ var Table = /** @class */ (function (_super) {
253
375
  // 提示。至少需要勾选一列
254
376
  return app_sdk_1.toaster.warning(language_1.formatString(type_1.TableLocale.hide_column_tooltip, this.context.locale));
255
377
  }
378
+ var newSettingFields = this.settingFields.map(function (field) {
379
+ if (lodash_1.includes(keys, field.field)) {
380
+ return __assign(__assign({}, field), { hide: true });
381
+ }
382
+ return __assign(__assign({}, field), { hide: false });
383
+ });
256
384
  this.setHiddenColumn(keys);
385
+ this.setSettingFields(newSettingFields);
257
386
  (_b = (_a = this.props).onHiddenColumnsChange) === null || _b === void 0 ? void 0 : _b.call(_a, keys);
258
387
  };
259
- Table.prototype.getColumns = function () {
260
- var _a = this.props, showColumnSetting = _a.showColumnSetting, columnSettingOverlayClass = _a.columnSettingOverlayClass;
388
+ Table.prototype.getSortedColumns = function () {
389
+ var _this = this;
261
390
  var hiddenColumn = this.hiddenColumn || [];
262
- if (!showColumnSetting) {
263
- return this.columns;
264
- }
265
- // 获取到列设置的options
266
- var columnsSettingOptions = this.columnsSettingOptions;
267
391
  var selectedCols = __spread((this.columns || []).filter(function (item) {
268
392
  if (item.configurable === false || !lodash_1.includes(hiddenColumn, item.key)) {
269
393
  return true;
270
394
  }
271
395
  return false;
272
396
  }));
273
- var length = selectedCols.length;
397
+ var fixedRightColumn = this.columns.filter(function (column) {
398
+ return lodash_1.includes(_this.sortConfig.fixedRightKeys, column.key);
399
+ });
400
+ var fixedLeftColumn = this.columns.filter(function (column) {
401
+ return lodash_1.includes(_this.sortConfig.fixedLeftKeys, column.key);
402
+ });
403
+ return __spread(fixedLeftColumn, this.getSortCoulmns(selectedCols), fixedRightColumn);
404
+ };
405
+ Table.prototype.getColumns = function () {
406
+ var _a = this.props, showColumnSetting = _a.showColumnSetting, columnSettingOverlayClass = _a.columnSettingOverlayClass;
407
+ if (!showColumnSetting) {
408
+ return this.columns;
409
+ }
410
+ // 获取到列设置的options
411
+ var columnsSettingOptions = this.columnsSettingOptions;
412
+ var allCols = this.getSortedColumns();
413
+ var length = allCols.length;
274
414
  if (length > 0) {
275
- var lastCol = selectedCols.pop();
276
415
  var title = (React.createElement("span", { className: style_1.SDK_PREFIX + "-last-column-title" },
277
- lastCol.title,
278
416
  React.createElement("span", { className: style_1.SDK_PREFIX + "-last-column-setting" },
279
- React.createElement(ColumnSetting_1.default, { options: columnsSettingOptions, hiddenKeys: this.hiddenColumn, onHiddenKeysChange: this.handleHideColumnsChange, overlayClass: columnSettingOverlayClass }))));
280
- selectedCols.push(__assign(__assign({}, lastCol), { title: title }));
417
+ React.createElement(ColumnSetting_1.default, { options: columnsSettingOptions, hiddenKeys: this.hiddenColumn, onHiddenKeysChange: this.handleHideColumnsChange, onMove: this.setSortKeys, overlayClass: columnSettingOverlayClass }))));
418
+ allCols.push({
419
+ title: title,
420
+ dataIndex: '__setting__',
421
+ key: '__setting__',
422
+ width: 40,
423
+ fixed: 'right'
424
+ });
281
425
  }
282
- return selectedCols;
426
+ return allCols;
283
427
  };
284
428
  Table.prototype.getRowKey = function (row, index) {
285
429
  var rowKey = this.props.rowKey;
@@ -288,6 +432,11 @@ var Table = /** @class */ (function (_super) {
288
432
  }
289
433
  return rowKey ? row[rowKey] : index;
290
434
  };
435
+ Table.prototype.getSortCoulmns = function (columns) {
436
+ return this.sortConfig.sortKeys
437
+ .map(function (key) { return columns.find(function (column) { return column.dataIndex === key; }); })
438
+ .filter(function (f) { return !!f; });
439
+ };
291
440
  Table.prototype.setIndeterminate = function (indeterminate) {
292
441
  this.indeterminate = indeterminate;
293
442
  };
@@ -300,6 +449,32 @@ var Table = /** @class */ (function (_super) {
300
449
  Table.prototype.setColumns = function (columns) {
301
450
  this.columns = columns;
302
451
  };
452
+ Table.prototype.setSortKeys = function (columns) {
453
+ var right = this.settingFields.filter(function (f) { return f.fixed === 'right'; });
454
+ var left = this.settingFields.filter(function (f) { return f.fixed === true || f.fixed === 'left'; });
455
+ var center = this.settingFields.filter(function (f) { return !f.fixed; });
456
+ var newCenter = [];
457
+ columns.map(function (column) {
458
+ var find = center.find(function (f) { return f.field === column; });
459
+ if (find) {
460
+ newCenter.push(find);
461
+ }
462
+ });
463
+ this.setSettingFields(__spread(left, newCenter, right));
464
+ this.sortConfig = __assign(__assign({}, this.sortConfig), { sortKeys: columns });
465
+ };
466
+ Table.prototype.setSettingFields = function (columns) {
467
+ if (this.props.saveSettingKey) {
468
+ localStorage.setItem(this.props.saveSettingKey, JSON.stringify(columns));
469
+ }
470
+ this.settingFields = columns;
471
+ };
472
+ Table.prototype.setFixedRightKeys = function (columns) {
473
+ this.sortConfig = __assign(__assign({}, this.sortConfig), { fixedRightKeys: columns });
474
+ };
475
+ Table.prototype.setFixedLeftKeys = function (columns) {
476
+ this.sortConfig = __assign(__assign({}, this.sortConfig), { fixedLeftKeys: columns });
477
+ };
303
478
  // 设置全选checkout的状态
304
479
  Table.prototype.setCheckboxStatus = function (selectedRowsOfCurrentPage, dataSource) {
305
480
  if (selectedRowsOfCurrentPage === void 0) { selectedRowsOfCurrentPage = []; }
@@ -376,35 +551,42 @@ var Table = /** @class */ (function (_super) {
376
551
  }
377
552
  });
378
553
  var sizeMap = {};
554
+ var setttingFields = this.settingFields;
379
555
  newColumns.forEach(function (element) {
380
556
  if (element.dataIndex && lodash_1.isNumber(element.width)) {
381
557
  sizeMap[element.dataIndex] = element.width;
382
558
  }
383
559
  });
384
- if (this.props.onDraggableChange) {
385
- this.props.onDraggableChange(sizeMap);
560
+ if (this.props.onSettingChange) {
561
+ this.props.onSettingChange(setttingFields);
386
562
  }
387
- else if (this.props.dragSaveKey) {
388
- localStorage.setItem(this.props.dragSaveKey, JSON.stringify(sizeMap));
563
+ else if (this.resizable && this.props.saveSettingKey) {
564
+ setttingFields.forEach(function (field) {
565
+ if (sizeMap[field.field]) {
566
+ field.width = sizeMap[field.field];
567
+ }
568
+ });
569
+ this.setSettingFields(setttingFields);
389
570
  }
390
571
  this.setColumns(newColumns);
391
572
  };
392
573
  Table.prototype.getResizeColumns = function (columns) {
393
574
  var _this = this;
394
- var sizeMap;
395
- if (this.props.dragSaveKey) {
396
- var sizeStr = localStorage.getItem(this.props.dragSaveKey);
397
- sizeMap = !!sizeStr && JSON.parse(sizeStr);
398
- if (sizeMap) {
575
+ var fields;
576
+ if (this.props.saveSettingKey) {
577
+ var sizeStr = localStorage.getItem(this.props.saveSettingKey);
578
+ fields = !!sizeStr && JSON.parse(sizeStr);
579
+ if (fields) {
399
580
  columns = columns === null || columns === void 0 ? void 0 : columns.map(function (col) {
581
+ var _a;
400
582
  var dataIndex = lodash_1.get(col, 'dataIndex');
401
- var width = sizeMap[dataIndex];
583
+ var width = (_a = fields.find(function (f) { return f.field === dataIndex; })) === null || _a === void 0 ? void 0 : _a.width;
402
584
  return lodash_1.isNumber(width) ? __assign(__assign({}, col), { width: width }) : col;
403
585
  });
404
586
  }
405
587
  }
406
588
  var transformColumns = columns === null || columns === void 0 ? void 0 : columns.map(function (it) {
407
- if (lodash_1.get(it, 'resizable') && _this.props.draggable) {
589
+ if (lodash_1.get(it, 'resizable') && _this.resizable) {
408
590
  return __assign(__assign({}, it), { ellipsis: {
409
591
  showTitle: true
410
592
  }, onHeaderCell: function (col) { return ({
@@ -421,9 +603,12 @@ var Table = /** @class */ (function (_super) {
421
603
  return transformColumns;
422
604
  };
423
605
  Table.prototype.componentDidMount = function () {
424
- this.setColumns(this.props.draggable && this.props.scroll
606
+ this.setColumns(this.resizable && this.props.scroll
425
607
  ? this.getResizeColumns(this.props.columns)
426
608
  : this.props.columns);
609
+ if (this.sortable || this.resizable) {
610
+ this.initSettingConfig();
611
+ }
427
612
  };
428
613
  Table.prototype.render = function () {
429
614
  var _a, _b;
@@ -435,7 +620,7 @@ var Table = /** @class */ (function (_super) {
435
620
  // getCheckboxProps只能放到tableBatchWrapper里,因为selectedRowKeys在那个组件计算
436
621
  rowSelection: batchOptions && this.props.rowSelection
437
622
  ? this.rowSelection
438
- : this.props.rowSelection, rowClassName: this.getRowClassName, components: __assign(__assign({}, (components || {})), (draggable && scroll
623
+ : this.props.rowSelection, rowClassName: this.getRowClassName, components: __assign(__assign({}, (components || {})), (this.resizable && scroll
439
624
  ? {
440
625
  header: {
441
626
  cell: ResizableTitle_1.default
@@ -478,6 +663,14 @@ var Table = /** @class */ (function (_super) {
478
663
  mobx_1.observable.ref,
479
664
  __metadata("design:type", Array)
480
665
  ], Table.prototype, "columns", void 0);
666
+ __decorate([
667
+ mobx_1.observable.ref,
668
+ __metadata("design:type", Object)
669
+ ], Table.prototype, "sortConfig", void 0);
670
+ __decorate([
671
+ mobx_1.observable.ref,
672
+ __metadata("design:type", Array)
673
+ ], Table.prototype, "settingFields", void 0);
481
674
  __decorate([
482
675
  mobx_1.computed,
483
676
  __metadata("design:type", Object),
@@ -513,12 +706,35 @@ var Table = /** @class */ (function (_super) {
513
706
  __metadata("design:type", Object),
514
707
  __metadata("design:paramtypes", [])
515
708
  ], Table.prototype, "columnKeys", null);
709
+ __decorate([
710
+ mobx_1.computed,
711
+ __metadata("design:type", Object),
712
+ __metadata("design:paramtypes", [])
713
+ ], Table.prototype, "resizable", null);
714
+ __decorate([
715
+ mobx_1.computed,
716
+ __metadata("design:type", Object),
717
+ __metadata("design:paramtypes", [])
718
+ ], Table.prototype, "sortable", null);
719
+ __decorate([
720
+ bind_1.default,
721
+ mobx_1.action,
722
+ __metadata("design:type", Function),
723
+ __metadata("design:paramtypes", []),
724
+ __metadata("design:returntype", void 0)
725
+ ], Table.prototype, "initSettingConfig", null);
516
726
  __decorate([
517
727
  bind_1.default,
518
728
  __metadata("design:type", Function),
519
729
  __metadata("design:paramtypes", [Array]),
520
730
  __metadata("design:returntype", void 0)
521
731
  ], Table.prototype, "handleHideColumnsChange", null);
732
+ __decorate([
733
+ bind_1.default,
734
+ __metadata("design:type", Function),
735
+ __metadata("design:paramtypes", []),
736
+ __metadata("design:returntype", void 0)
737
+ ], Table.prototype, "getSortedColumns", null);
522
738
  __decorate([
523
739
  bind_1.default,
524
740
  __metadata("design:type", Function),
@@ -531,6 +747,12 @@ var Table = /** @class */ (function (_super) {
531
747
  __metadata("design:paramtypes", [Object, Number]),
532
748
  __metadata("design:returntype", void 0)
533
749
  ], Table.prototype, "getRowKey", null);
750
+ __decorate([
751
+ bind_1.default,
752
+ __metadata("design:type", Function),
753
+ __metadata("design:paramtypes", [Array]),
754
+ __metadata("design:returntype", void 0)
755
+ ], Table.prototype, "getSortCoulmns", null);
534
756
  __decorate([
535
757
  bind_1.default,
536
758
  mobx_1.action,
@@ -559,6 +781,34 @@ var Table = /** @class */ (function (_super) {
559
781
  __metadata("design:paramtypes", [Array]),
560
782
  __metadata("design:returntype", void 0)
561
783
  ], Table.prototype, "setColumns", null);
784
+ __decorate([
785
+ bind_1.default,
786
+ mobx_1.action,
787
+ __metadata("design:type", Function),
788
+ __metadata("design:paramtypes", [Array]),
789
+ __metadata("design:returntype", void 0)
790
+ ], Table.prototype, "setSortKeys", null);
791
+ __decorate([
792
+ bind_1.default,
793
+ mobx_1.action,
794
+ __metadata("design:type", Function),
795
+ __metadata("design:paramtypes", [Array]),
796
+ __metadata("design:returntype", void 0)
797
+ ], Table.prototype, "setSettingFields", null);
798
+ __decorate([
799
+ bind_1.default,
800
+ mobx_1.action,
801
+ __metadata("design:type", Function),
802
+ __metadata("design:paramtypes", [Array]),
803
+ __metadata("design:returntype", void 0)
804
+ ], Table.prototype, "setFixedRightKeys", null);
805
+ __decorate([
806
+ bind_1.default,
807
+ mobx_1.action,
808
+ __metadata("design:type", Function),
809
+ __metadata("design:paramtypes", [Array]),
810
+ __metadata("design:returntype", void 0)
811
+ ], Table.prototype, "setFixedLeftKeys", null);
562
812
  __decorate([
563
813
  bind_1.default,
564
814
  __metadata("design:type", Function),
@@ -1724,6 +1724,7 @@ textarea.ant-pagination-options-quick-jumper input {
1724
1724
  }
1725
1725
  .pandora-sdk-last-column-title .pandora-sdk-last-column-setting {
1726
1726
  position: absolute;
1727
+ top: 12px;
1727
1728
  right: 12px;
1728
1729
  }
1729
1730
  .ant-table-thead > tr > th > .ant-table-column-sorters {
@@ -316,6 +316,7 @@
316
316
  .@{sdk-prefix}-last-column-title {
317
317
  .@{sdk-prefix}-last-column-setting {
318
318
  position: absolute;
319
+ top: 12px;
319
320
  right: 12px;
320
321
  }
321
322
  }