vxe-table 3.13.3 → 3.13.5

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/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/zh-CHT.js +1 -1
  4. package/es/locale/lang/zh-CN.js +1 -1
  5. package/es/style.css +1 -1
  6. package/es/style.min.css +1 -1
  7. package/es/table/render/index.js +29 -6
  8. package/es/table/src/header.js +2 -4
  9. package/es/table/src/methods.js +40 -37
  10. package/es/table/src/table.js +1 -1
  11. package/es/table/style.css +19 -0
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +1 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +19 -0
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/index.css +1 -1
  18. package/lib/index.min.css +1 -1
  19. package/lib/index.umd.js +75 -55
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/locale/lang/zh-CHT.js +1 -1
  22. package/lib/locale/lang/zh-CHT.min.js +1 -1
  23. package/lib/locale/lang/zh-CHT.umd.js +1 -1
  24. package/lib/locale/lang/zh-CN.js +1 -1
  25. package/lib/locale/lang/zh-CN.min.js +1 -1
  26. package/lib/locale/lang/zh-CN.umd.js +1 -1
  27. package/lib/style.css +1 -1
  28. package/lib/style.min.css +1 -1
  29. package/lib/table/render/index.js +27 -6
  30. package/lib/table/render/index.min.js +1 -1
  31. package/lib/table/src/header.js +1 -4
  32. package/lib/table/src/header.min.js +1 -1
  33. package/lib/table/src/methods.js +41 -39
  34. package/lib/table/src/methods.min.js +1 -1
  35. package/lib/table/src/table.js +1 -1
  36. package/lib/table/src/table.min.js +1 -1
  37. package/lib/table/style/style.css +19 -0
  38. package/lib/table/style/style.min.css +1 -1
  39. package/lib/ui/index.js +1 -1
  40. package/lib/ui/index.min.js +1 -1
  41. package/lib/ui/src/log.js +1 -1
  42. package/lib/ui/src/log.min.js +1 -1
  43. package/lib/vxe-table/style/style.css +19 -0
  44. package/lib/vxe-table/style/style.min.css +1 -1
  45. package/package.json +2 -2
  46. package/packages/locale/lang/zh-CHT.ts +1 -1
  47. package/packages/locale/lang/zh-CN.ts +1 -1
  48. package/packages/table/render/index.ts +30 -6
  49. package/packages/table/src/header.ts +2 -4
  50. package/packages/table/src/methods.ts +42 -39
  51. package/packages/table/src/table.ts +1 -1
  52. package/styles/components/table.scss +29 -0
  53. package/styles/theme/base.scss +2 -1
  54. /package/es/{iconfont.1739938254381.ttf → iconfont.1740038065641.ttf} +0 -0
  55. /package/es/{iconfont.1739938254381.woff → iconfont.1740038065641.woff} +0 -0
  56. /package/es/{iconfont.1739938254381.woff2 → iconfont.1740038065641.woff2} +0 -0
  57. /package/lib/{iconfont.1739938254381.ttf → iconfont.1740038065641.ttf} +0 -0
  58. /package/lib/{iconfont.1739938254381.woff → iconfont.1740038065641.woff} +0 -0
  59. /package/lib/{iconfont.1739938254381.woff2 → iconfont.1740038065641.woff2} +0 -0
@@ -71,11 +71,11 @@ function getCellEditFilterProps(renderOpts, params, value, defaultProps) {
71
71
  function isImmediateCell(renderOpts, params) {
72
72
  return params.$type === 'cell' || getInputImmediateModel(renderOpts);
73
73
  }
74
- function getCellLabelVNs(h, renderOpts, params, cellLabel) {
74
+ function getCellLabelVNs(h, renderOpts, params, cellLabel, opts) {
75
75
  const { placeholder } = renderOpts;
76
76
  return [
77
77
  h('span', {
78
- class: 'vxe-cell--label'
78
+ class: ['vxe-cell--label', opts ? opts.class : '']
79
79
  }, placeholder && isEmptyValue(cellLabel)
80
80
  ? [
81
81
  h('span', {
@@ -626,11 +626,12 @@ renderer.mixin({
626
626
  tableAutoFocus: 'input',
627
627
  renderTableEdit: defaultEditRender,
628
628
  renderTableCell(h, renderOpts, params) {
629
- const { props = {} } = renderOpts;
629
+ const { props = {}, showNegativeStatus } = renderOpts;
630
630
  const { row, column } = params;
631
631
  const { type } = props;
632
632
  let cellValue = XEUtils.get(row, column.field);
633
- if (cellValue) {
633
+ let isNegative = false;
634
+ if (!isEmptyValue(cellValue)) {
634
635
  const numberInputConfig = getConfig().numberInput || {};
635
636
  if (type === 'float') {
636
637
  const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
@@ -639,12 +640,23 @@ renderer.mixin({
639
640
  if (!autoFill) {
640
641
  cellValue = XEUtils.toNumber(cellValue);
641
642
  }
643
+ if (showNegativeStatus) {
644
+ if (cellValue < 0) {
645
+ isNegative = true;
646
+ }
647
+ }
642
648
  }
643
649
  else if (type === 'amount') {
644
650
  const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
645
651
  const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2);
646
652
  const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false);
647
- cellValue = XEUtils.commafy(XEUtils.toNumber(cellValue), { digits });
653
+ cellValue = XEUtils.toNumber(cellValue);
654
+ if (showNegativeStatus) {
655
+ if (cellValue < 0) {
656
+ isNegative = true;
657
+ }
658
+ }
659
+ cellValue = XEUtils.commafy(cellValue, { digits });
648
660
  if (!autoFill) {
649
661
  const [iStr, dStr] = cellValue.split('.');
650
662
  if (dStr) {
@@ -656,8 +668,19 @@ renderer.mixin({
656
668
  cellValue = `${props.currencySymbol || numberInputConfig.currencySymbol || getI18n('vxe.numberInput.currencySymbol') || ''}${cellValue}`;
657
669
  }
658
670
  }
671
+ else {
672
+ if (showNegativeStatus) {
673
+ if (XEUtils.toNumber(cellValue) < 0) {
674
+ isNegative = true;
675
+ }
676
+ }
677
+ }
659
678
  }
660
- return getCellLabelVNs(h, renderOpts, params, cellValue);
679
+ return getCellLabelVNs(h, renderOpts, params, cellValue, isNegative
680
+ ? {
681
+ class: 'is--negative'
682
+ }
683
+ : {});
661
684
  },
662
685
  renderTableFooter(h, renderOpts, params) {
663
686
  const { props = {} } = renderOpts;
@@ -12,7 +12,7 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
12
12
  const tableReactData = $xeTable;
13
13
  const tableInternalData = $xeTable;
14
14
  const { fixedType } = props;
15
- const { resizable: allResizable, border, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
15
+ const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
16
16
  const { currentColumn, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
17
17
  const { scrollXStore } = tableInternalData;
18
18
  const columnOpts = $xeTable.computeColumnOpts;
@@ -138,9 +138,7 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
138
138
  */
139
139
  !fixedHiddenColumn && showResizable
140
140
  ? h('div', {
141
- class: ['vxe-cell--col-resizable', {
142
- 'is--line': !border || border === 'none'
143
- }],
141
+ class: 'vxe-cell--col-resizable',
144
142
  on: {
145
143
  mousedown: (evnt) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
146
144
  dblclick: (evnt) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
@@ -2113,15 +2113,11 @@ const Methods = {
2113
2113
  internalData.tableFullData = fullData;
2114
2114
  internalData.tableFullTreeData = treeData;
2115
2115
  // 缓存数据
2116
- $xeTable.cacheRowMap(true, isReset);
2116
+ $xeTable.cacheRowMap(true);
2117
2117
  // 原始数据
2118
2118
  internalData.tableSynchData = datas;
2119
2119
  if (isReset) {
2120
2120
  internalData.isResizeCellHeight = false;
2121
- reactData.rowExpandedMaps = {};
2122
- reactData.rowExpandLazyLoadedMaps = {};
2123
- reactData.treeExpandedMaps = {};
2124
- reactData.treeExpandLazyLoadedMaps = {};
2125
2121
  }
2126
2122
  // 克隆原数据,用于显示编辑状态,与编辑值做对比
2127
2123
  if (keepSource) {
@@ -2305,16 +2301,21 @@ const Methods = {
2305
2301
  /**
2306
2302
  * 更新数据行的 Map
2307
2303
  */
2308
- cacheRowMap(isReset, isSource) {
2309
- const { treeConfig, treeOpts, tableFullData, fullAllDataRowIdData, tableFullTreeData } = this;
2304
+ cacheRowMap() {
2305
+ const $xeTable = this;
2306
+ const props = $xeTable;
2307
+ const internalData = $xeTable;
2308
+ const { treeConfig } = props;
2309
+ const treeOpts = $xeTable.computeTreeOpts;
2310
+ const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
2310
2311
  const childrenField = treeOpts.children || treeOpts.childrenField;
2311
2312
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
2312
- const rowkey = getRowkey(this);
2313
+ const rowkey = getRowkey($xeTable);
2313
2314
  const isLazy = treeConfig && treeOpts.lazy;
2314
2315
  const fullAllDataRowIdMaps = {};
2315
2316
  const fullDataRowIdMaps = {};
2316
- const handleCache = (row, index, items, path, parentRow, nodes) => {
2317
- let rowid = getRowid(this, row);
2317
+ const handleRow = (row, index, items, path, parentRow, nodes) => {
2318
+ let rowid = getRowid($xeTable, row);
2318
2319
  const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
2319
2320
  const level = nodes ? nodes.length - 1 : 0;
2320
2321
  if (eqEmptyValue(rowid)) {
@@ -2324,29 +2325,25 @@ const Methods = {
2324
2325
  if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
2325
2326
  row[childrenField] = null;
2326
2327
  }
2327
- let cacheItem = fullAllDataRowIdData[rowid];
2328
- if (isReset || !cacheItem) {
2329
- cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
2330
- }
2331
- cacheItem.row = row;
2332
- cacheItem.items = items;
2333
- cacheItem.parent = parentRow;
2334
- cacheItem.level = level;
2335
- cacheItem.index = treeConfig && parentRow ? -1 : index;
2336
- if (isSource) {
2337
- fullDataRowIdMaps[rowid] = cacheItem;
2338
- }
2339
- fullAllDataRowIdMaps[rowid] = cacheItem;
2328
+ let rowRest = fullAllDataRowIdData[rowid];
2329
+ if (!rowRest) {
2330
+ rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
2331
+ }
2332
+ rowRest.row = row;
2333
+ rowRest.items = items;
2334
+ rowRest.parent = parentRow;
2335
+ rowRest.level = level;
2336
+ rowRest.index = treeConfig && parentRow ? -1 : index;
2337
+ fullDataRowIdMaps[rowid] = rowRest;
2338
+ fullAllDataRowIdMaps[rowid] = rowRest;
2340
2339
  };
2341
- if (isSource) {
2342
- this.fullDataRowIdData = fullDataRowIdMaps;
2343
- }
2344
- this.fullAllDataRowIdData = fullAllDataRowIdMaps;
2340
+ internalData.fullDataRowIdData = fullDataRowIdMaps;
2341
+ internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
2345
2342
  if (treeConfig) {
2346
- XEUtils.eachTree(tableFullTreeData, handleCache, { children: childrenField });
2343
+ XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
2347
2344
  }
2348
2345
  else {
2349
- tableFullData.forEach(handleCache);
2346
+ tableFullData.forEach(handleRow);
2350
2347
  }
2351
2348
  },
2352
2349
  cacheSourceMap(fullData) {
@@ -3168,7 +3165,7 @@ const Methods = {
3168
3165
  const props = $xeTable;
3169
3166
  const internalData = $xeTable;
3170
3167
  const { treeConfig } = props;
3171
- const { fullDataRowIdData } = internalData;
3168
+ const { fullAllDataRowIdData } = internalData;
3172
3169
  const treeOpts = $xeTable.computeTreeOpts;
3173
3170
  const { transform, mapChildrenField } = treeOpts;
3174
3171
  const childrenField = treeOpts.children || treeOpts.childrenField;
@@ -3181,7 +3178,7 @@ const Methods = {
3181
3178
  rowid = getRowid($xeTable, rowOrRowid);
3182
3179
  }
3183
3180
  if (rowid) {
3184
- const rest = fullDataRowIdData[rowid];
3181
+ const rest = fullAllDataRowIdData[rowid];
3185
3182
  const row = rest ? rest.row : null;
3186
3183
  if (row) {
3187
3184
  return row[transform ? mapChildrenField : childrenField] || [];
@@ -3198,7 +3195,7 @@ const Methods = {
3198
3195
  const props = $xeTable;
3199
3196
  const internalData = $xeTable;
3200
3197
  const { treeConfig } = props;
3201
- const { fullDataRowIdData } = internalData;
3198
+ const { fullAllDataRowIdData } = internalData;
3202
3199
  if (rowOrRowid && treeConfig) {
3203
3200
  let rowid;
3204
3201
  if (XEUtils.isString(rowOrRowid)) {
@@ -3208,7 +3205,7 @@ const Methods = {
3208
3205
  rowid = getRowid($xeTable, rowOrRowid);
3209
3206
  }
3210
3207
  if (rowid) {
3211
- const rest = fullDataRowIdData[rowid];
3208
+ const rest = fullAllDataRowIdData[rowid];
3212
3209
  return rest ? rest.parent : null;
3213
3210
  }
3214
3211
  }
@@ -3226,9 +3223,9 @@ const Methods = {
3226
3223
  getRowById(cellValue) {
3227
3224
  const $xeTable = this;
3228
3225
  const internalData = $xeTable;
3229
- const { fullDataRowIdData } = internalData;
3226
+ const { fullAllDataRowIdData } = internalData;
3230
3227
  const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue);
3231
- return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].row : null;
3228
+ return fullAllDataRowIdData[rowid] ? fullAllDataRowIdData[rowid].row : null;
3232
3229
  },
3233
3230
  /**
3234
3231
  * 根据行获取行的唯一主键
@@ -7459,11 +7456,12 @@ const Methods = {
7459
7456
  const $xeTable = this;
7460
7457
  const reactData = $xeTable;
7461
7458
  const internalData = $xeTable;
7462
- const tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
7463
7459
  const { fullAllDataRowIdData } = internalData;
7464
7460
  const treeOpts = $xeTable.computeTreeOpts;
7465
7461
  const { transform } = treeOpts;
7462
+ let tExpandedMaps = {};
7466
7463
  if (rows) {
7464
+ tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
7467
7465
  if (!XEUtils.isArray(rows)) {
7468
7466
  rows = [rows];
7469
7467
  }
@@ -7478,7 +7476,12 @@ const Methods = {
7478
7476
  }
7479
7477
  });
7480
7478
  }
7481
- reactData.treeExpandedMaps = tExpandedMaps;
7479
+ else {
7480
+ XEUtils.each(fullAllDataRowIdData, (rowRest) => {
7481
+ rowRest.treeLoaded = false;
7482
+ });
7483
+ }
7484
+ reactData.treeExpandedMaps = {};
7482
7485
  if (transform) {
7483
7486
  handleVirtualTreeToList($xeTable);
7484
7487
  return $xeTable.handleTableData();
@@ -1113,7 +1113,7 @@ export default {
1113
1113
  if (value && value.length >= 50000) {
1114
1114
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)']);
1115
1115
  }
1116
- this.loadTableData(value || [], true).then(() => {
1116
+ this.loadTableData(value || [], false).then(() => {
1117
1117
  const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
1118
1118
  const expandOpts = $xeTable.computeExpandOpts;
1119
1119
  this.inited = true;
@@ -1932,6 +1932,11 @@
1932
1932
  min-height: 100%;
1933
1933
  }
1934
1934
 
1935
+ /*负数显示红色*/
1936
+ .vxe-cell--label.is--negative {
1937
+ color: var(--vxe-ui-table-cell-negative-color);
1938
+ }
1939
+
1935
1940
  .vxe-table--checkbox-range,
1936
1941
  .vxe-table--cell-main-area,
1937
1942
  .vxe-table--cell-extend-area,
@@ -2566,6 +2571,20 @@
2566
2571
  .vxe-table--render-default.border--default.sx-pos--bottom .vxe-table--scroll-x-wrapper::before, .vxe-table--render-default.border--full.sx-pos--bottom .vxe-table--scroll-x-wrapper::before, .vxe-table--render-default.border--outer.sx-pos--bottom .vxe-table--scroll-x-wrapper::before, .vxe-table--render-default.border--inner.sx-pos--bottom .vxe-table--scroll-x-wrapper::before {
2567
2572
  top: -1px;
2568
2573
  }
2574
+ .vxe-table--render-default.border--default .vxe-cell--col-resizable:before, .vxe-table--render-default.border--default .vxe-cell--col-resizable:after, .vxe-table--render-default.border--none .vxe-cell--col-resizable:before, .vxe-table--render-default.border--none .vxe-cell--col-resizable:after, .vxe-table--render-default.border--outer .vxe-cell--col-resizable:before, .vxe-table--render-default.border--outer .vxe-cell--col-resizable:after, .vxe-table--render-default.border--inner .vxe-cell--col-resizable:before, .vxe-table--render-default.border--inner .vxe-cell--col-resizable:after {
2575
+ content: "";
2576
+ display: inline-block;
2577
+ vertical-align: middle;
2578
+ }
2579
+ .vxe-table--render-default.border--default .vxe-cell--col-resizable:before, .vxe-table--render-default.border--none .vxe-cell--col-resizable:before, .vxe-table--render-default.border--outer .vxe-cell--col-resizable:before, .vxe-table--render-default.border--inner .vxe-cell--col-resizable:before {
2580
+ width: 1px;
2581
+ height: 50%;
2582
+ background-color: var(--vxe-ui-table-resizable-line-color);
2583
+ }
2584
+ .vxe-table--render-default.border--default .vxe-cell--col-resizable:after, .vxe-table--render-default.border--none .vxe-cell--col-resizable:after, .vxe-table--render-default.border--outer .vxe-cell--col-resizable:after, .vxe-table--render-default.border--inner .vxe-cell--col-resizable:after {
2585
+ width: 0;
2586
+ height: 100%;
2587
+ }
2569
2588
  .vxe-table--render-default.border--default .vxe-table--header-wrapper, .vxe-table--render-default.border--full .vxe-table--header-wrapper, .vxe-table--render-default.border--outer .vxe-table--header-wrapper {
2570
2589
  background-color: var(--vxe-ui-table-header-background-color);
2571
2590
  }