vxe-table 4.11.4 → 4.11.6

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 (56) 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/table.js +30 -32
  10. package/es/table/style.css +19 -0
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +19 -0
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.min.css +1 -1
  18. package/lib/index.umd.js +61 -46
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/locale/lang/zh-CHT.js +1 -1
  21. package/lib/locale/lang/zh-CHT.min.js +1 -1
  22. package/lib/locale/lang/zh-CN.js +1 -1
  23. package/lib/locale/lang/zh-CN.min.js +1 -1
  24. package/lib/locale/lang/zh-CN.umd.js +1 -1
  25. package/lib/style.css +1 -1
  26. package/lib/style.min.css +1 -1
  27. package/lib/table/render/index.js +27 -6
  28. package/lib/table/render/index.min.js +1 -1
  29. package/lib/table/src/header.js +1 -4
  30. package/lib/table/src/header.min.js +1 -1
  31. package/lib/table/src/table.js +28 -31
  32. package/lib/table/src/table.min.js +1 -1
  33. package/lib/table/style/style.css +19 -0
  34. package/lib/table/style/style.min.css +1 -1
  35. package/lib/ui/index.js +1 -1
  36. package/lib/ui/index.min.js +1 -1
  37. package/lib/ui/src/log.js +1 -1
  38. package/lib/ui/src/log.min.js +1 -1
  39. package/lib/vxe-table/style/style.css +19 -0
  40. package/lib/vxe-table/style/style.min.css +1 -1
  41. package/package.json +2 -2
  42. package/packages/locale/lang/zh-CHT.ts +1 -1
  43. package/packages/locale/lang/zh-CN.ts +1 -1
  44. package/packages/table/render/index.ts +30 -6
  45. package/packages/table/src/header.ts +2 -4
  46. package/packages/table/src/table.ts +29 -32
  47. package/styles/components/table.scss +29 -0
  48. package/styles/index.scss +1 -1
  49. package/styles/theme/base.scss +2 -1
  50. package/styles/variable.scss +1 -0
  51. /package/es/{iconfont.1739938274682.ttf → iconfont.1740038200666.ttf} +0 -0
  52. /package/es/{iconfont.1739938274682.woff → iconfont.1740038200666.woff} +0 -0
  53. /package/es/{iconfont.1739938274682.woff2 → iconfont.1740038200666.woff2} +0 -0
  54. /package/lib/{iconfont.1739938274682.ttf → iconfont.1740038200666.ttf} +0 -0
  55. /package/lib/{iconfont.1739938274682.woff → iconfont.1740038200666.woff} +0 -0
  56. /package/lib/{iconfont.1739938274682.woff2 → iconfont.1740038200666.woff2} +0 -0
@@ -72,11 +72,11 @@ function getCellEditFilterProps(renderOpts, params, value, defaultProps) {
72
72
  function isImmediateCell(renderOpts, params) {
73
73
  return params.$type === 'cell' || getInputImmediateModel(renderOpts);
74
74
  }
75
- function getCellLabelVNs(renderOpts, params, cellLabel) {
75
+ function getCellLabelVNs(renderOpts, params, cellLabel, opts) {
76
76
  const { placeholder } = renderOpts;
77
77
  return [
78
78
  h('span', {
79
- class: 'vxe-cell--label'
79
+ class: ['vxe-cell--label', opts ? opts.class : '']
80
80
  }, placeholder && isEmptyValue(cellLabel)
81
81
  ? [
82
82
  h('span', {
@@ -565,11 +565,12 @@ renderer.mixin({
565
565
  tableAutoFocus: 'input',
566
566
  renderTableEdit: defaultEditRender,
567
567
  renderTableCell(renderOpts, params) {
568
- const { props = {} } = renderOpts;
568
+ const { props = {}, showNegativeStatus } = renderOpts;
569
569
  const { row, column } = params;
570
570
  const { type } = props;
571
571
  let cellValue = XEUtils.get(row, column.field);
572
- if (cellValue) {
572
+ let isNegative = false;
573
+ if (!isEmptyValue(cellValue)) {
573
574
  const numberInputConfig = getConfig().numberInput || {};
574
575
  if (type === 'float') {
575
576
  const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
@@ -578,12 +579,23 @@ renderer.mixin({
578
579
  if (!autoFill) {
579
580
  cellValue = XEUtils.toNumber(cellValue);
580
581
  }
582
+ if (showNegativeStatus) {
583
+ if (cellValue < 0) {
584
+ isNegative = true;
585
+ }
586
+ }
581
587
  }
582
588
  else if (type === 'amount') {
583
589
  const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
584
590
  const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2);
585
591
  const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false);
586
- cellValue = XEUtils.commafy(XEUtils.toNumber(cellValue), { digits });
592
+ cellValue = XEUtils.toNumber(cellValue);
593
+ if (showNegativeStatus) {
594
+ if (cellValue < 0) {
595
+ isNegative = true;
596
+ }
597
+ }
598
+ cellValue = XEUtils.commafy(cellValue, { digits });
587
599
  if (!autoFill) {
588
600
  const [iStr, dStr] = cellValue.split('.');
589
601
  if (dStr) {
@@ -595,8 +607,19 @@ renderer.mixin({
595
607
  cellValue = `${props.currencySymbol || numberInputConfig.currencySymbol || getI18n('vxe.numberInput.currencySymbol') || ''}${cellValue}`;
596
608
  }
597
609
  }
610
+ else {
611
+ if (showNegativeStatus) {
612
+ if (XEUtils.toNumber(cellValue) < 0) {
613
+ isNegative = true;
614
+ }
615
+ }
616
+ }
598
617
  }
599
- return getCellLabelVNs(renderOpts, params, cellValue);
618
+ return getCellLabelVNs(renderOpts, params, cellValue, isNegative
619
+ ? {
620
+ class: 'is--negative'
621
+ }
622
+ : {});
600
623
  },
601
624
  renderTableFooter(renderOpts, params) {
602
625
  const { props = {} } = renderOpts;
@@ -34,7 +34,7 @@ export default defineComponent({
34
34
  };
35
35
  const renderRows = (isGroup, isOptimizeMode, cols, $rowIndex) => {
36
36
  const { fixedType } = props;
37
- const { resizable: allResizable, border, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
37
+ const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
38
38
  const { currentColumn, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
39
39
  const { scrollXStore } = tableInternalData;
40
40
  const columnOpts = computeColumnOpts.value;
@@ -154,9 +154,7 @@ export default defineComponent({
154
154
  */
155
155
  !fixedHiddenColumn && showResizable
156
156
  ? h('div', {
157
- class: ['vxe-cell--col-resizable', {
158
- 'is--line': !border || border === 'none'
159
- }],
157
+ class: 'vxe-cell--col-resizable',
160
158
  onMousedown: (evnt) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
161
159
  onDblclick: (evnt) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
162
160
  })
@@ -2653,15 +2653,11 @@ export default defineComponent({
2653
2653
  internalData.tableFullData = fullData;
2654
2654
  internalData.tableFullTreeData = treeData;
2655
2655
  // 缓存数据
2656
- $xeTable.cacheRowMap(true, isReset);
2656
+ $xeTable.cacheRowMap(true);
2657
2657
  // 原始数据
2658
2658
  internalData.tableSynchData = datas;
2659
2659
  if (isReset) {
2660
2660
  internalData.isResizeCellHeight = false;
2661
- reactData.rowExpandedMaps = {};
2662
- reactData.rowExpandLazyLoadedMaps = {};
2663
- reactData.treeExpandedMaps = {};
2664
- reactData.treeExpandLazyLoadedMaps = {};
2665
2661
  }
2666
2662
  // 克隆原数据,用于显示编辑状态,与编辑值做对比
2667
2663
  if (keepSource) {
@@ -3979,7 +3975,7 @@ export default defineComponent({
3979
3975
  */
3980
3976
  getTreeRowChildren(rowOrRowid) {
3981
3977
  const { treeConfig } = props;
3982
- const { fullDataRowIdData } = internalData;
3978
+ const { fullAllDataRowIdData } = internalData;
3983
3979
  const treeOpts = computeTreeOpts.value;
3984
3980
  const { transform, mapChildrenField } = treeOpts;
3985
3981
  const childrenField = treeOpts.children || treeOpts.childrenField;
@@ -3992,7 +3988,7 @@ export default defineComponent({
3992
3988
  rowid = getRowid($xeTable, rowOrRowid);
3993
3989
  }
3994
3990
  if (rowid) {
3995
- const rest = fullDataRowIdData[rowid];
3991
+ const rest = fullAllDataRowIdData[rowid];
3996
3992
  const row = rest ? rest.row : null;
3997
3993
  if (row) {
3998
3994
  return row[transform ? mapChildrenField : childrenField] || [];
@@ -4006,7 +4002,7 @@ export default defineComponent({
4006
4002
  */
4007
4003
  getTreeParentRow(rowOrRowid) {
4008
4004
  const { treeConfig } = props;
4009
- const { fullDataRowIdData } = internalData;
4005
+ const { fullAllDataRowIdData } = internalData;
4010
4006
  if (rowOrRowid && treeConfig) {
4011
4007
  let rowid;
4012
4008
  if (XEUtils.isString(rowOrRowid)) {
@@ -4016,7 +4012,7 @@ export default defineComponent({
4016
4012
  rowid = getRowid($xeTable, rowOrRowid);
4017
4013
  }
4018
4014
  if (rowid) {
4019
- const rest = fullDataRowIdData[rowid];
4015
+ const rest = fullAllDataRowIdData[rowid];
4020
4016
  return rest ? rest.parent : null;
4021
4017
  }
4022
4018
  }
@@ -4031,9 +4027,9 @@ export default defineComponent({
4031
4027
  * @param {String/Number} rowid 行主键
4032
4028
  */
4033
4029
  getRowById(cellValue) {
4034
- const { fullDataRowIdData } = internalData;
4030
+ const { fullAllDataRowIdData } = internalData;
4035
4031
  const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue || '');
4036
- return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].row : null;
4032
+ return fullAllDataRowIdData[rowid] ? fullAllDataRowIdData[rowid].row : null;
4037
4033
  },
4038
4034
  /**
4039
4035
  * 根据行获取行的唯一主键
@@ -5216,11 +5212,12 @@ export default defineComponent({
5216
5212
  return rowRest && !!rowRest.treeLoaded;
5217
5213
  },
5218
5214
  clearTreeExpandLoaded(rows) {
5219
- const tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
5220
5215
  const { fullAllDataRowIdData } = internalData;
5221
5216
  const treeOpts = computeTreeOpts.value;
5222
5217
  const { transform } = treeOpts;
5218
+ let tExpandedMaps = {};
5223
5219
  if (rows) {
5220
+ tExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
5224
5221
  if (!XEUtils.isArray(rows)) {
5225
5222
  rows = [rows];
5226
5223
  }
@@ -5235,10 +5232,15 @@ export default defineComponent({
5235
5232
  }
5236
5233
  });
5237
5234
  }
5238
- reactData.treeExpandedMaps = tExpandedMaps;
5235
+ else {
5236
+ XEUtils.each(fullAllDataRowIdData, (rowRest) => {
5237
+ rowRest.treeLoaded = false;
5238
+ });
5239
+ }
5240
+ reactData.treeExpandedMaps = {};
5239
5241
  if (transform) {
5240
5242
  handleVirtualTreeToList();
5241
- return tablePrivateMethods.handleTableData();
5243
+ return $xeTable.handleTableData();
5242
5244
  }
5243
5245
  return nextTick();
5244
5246
  },
@@ -6631,7 +6633,7 @@ export default defineComponent({
6631
6633
  /**
6632
6634
  * 更新数据行的 Map
6633
6635
  */
6634
- cacheRowMap(isReset, isSource) {
6636
+ cacheRowMap() {
6635
6637
  const { treeConfig } = props;
6636
6638
  const treeOpts = computeTreeOpts.value;
6637
6639
  const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
@@ -6652,23 +6654,19 @@ export default defineComponent({
6652
6654
  if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
6653
6655
  row[childrenField] = null;
6654
6656
  }
6655
- let cacheItem = fullAllDataRowIdData[rowid];
6656
- if (isReset || !cacheItem) {
6657
- cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
6658
- }
6659
- cacheItem.row = row;
6660
- cacheItem.items = items;
6661
- cacheItem.parent = parentRow;
6662
- cacheItem.level = level;
6663
- cacheItem.index = treeConfig && parentRow ? -1 : index;
6664
- if (isSource) {
6665
- fullDataRowIdMaps[rowid] = cacheItem;
6666
- }
6667
- fullAllDataRowIdMaps[rowid] = cacheItem;
6657
+ let rowRest = fullAllDataRowIdData[rowid];
6658
+ if (!rowRest) {
6659
+ rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
6660
+ }
6661
+ rowRest.row = row;
6662
+ rowRest.items = items;
6663
+ rowRest.parent = parentRow;
6664
+ rowRest.level = level;
6665
+ rowRest.index = treeConfig && parentRow ? -1 : index;
6666
+ fullDataRowIdMaps[rowid] = rowRest;
6667
+ fullAllDataRowIdMaps[rowid] = rowRest;
6668
6668
  };
6669
- if (isSource) {
6670
- internalData.fullDataRowIdData = fullDataRowIdMaps;
6671
- }
6669
+ internalData.fullDataRowIdData = fullDataRowIdMaps;
6672
6670
  internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6673
6671
  if (treeConfig) {
6674
6672
  XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
@@ -9796,7 +9794,7 @@ export default defineComponent({
9796
9794
  if (value && value.length >= 50000) {
9797
9795
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)']);
9798
9796
  }
9799
- loadTableData(value, true).then(() => {
9797
+ loadTableData(value, false).then(() => {
9800
9798
  const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
9801
9799
  const expandOpts = computeExpandOpts.value;
9802
9800
  internalData.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
  }