vxe-table 4.8.5 → 4.8.7

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 (49) hide show
  1. package/es/style.css +1 -1
  2. package/es/style.min.css +1 -1
  3. package/es/table/module/custom/panel.js +32 -8
  4. package/es/table/module/validator/hook.js +1 -1
  5. package/es/table/src/body.js +14 -8
  6. package/es/table/src/header.js +2 -2
  7. package/es/table/src/table.js +69 -45
  8. package/es/table/style.css +25 -15
  9. package/es/table/style.min.css +1 -1
  10. package/es/ui/index.js +3 -2
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-table/style.css +25 -15
  13. package/es/vxe-table/style.min.css +1 -1
  14. package/lib/index.umd.js +117 -54
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/style.css +1 -1
  17. package/lib/style.min.css +1 -1
  18. package/lib/table/module/custom/panel.js +35 -5
  19. package/lib/table/module/custom/panel.min.js +1 -1
  20. package/lib/table/module/validator/hook.js +1 -1
  21. package/lib/table/module/validator/hook.min.js +1 -1
  22. package/lib/table/src/body.js +5 -3
  23. package/lib/table/src/body.min.js +1 -1
  24. package/lib/table/src/header.js +2 -2
  25. package/lib/table/src/table.js +70 -40
  26. package/lib/table/src/table.min.js +1 -1
  27. package/lib/table/style/style.css +25 -15
  28. package/lib/table/style/style.min.css +1 -1
  29. package/lib/ui/index.js +3 -2
  30. package/lib/ui/index.min.js +1 -1
  31. package/lib/ui/src/log.js +1 -1
  32. package/lib/ui/src/log.min.js +1 -1
  33. package/lib/vxe-table/style/style.css +25 -15
  34. package/lib/vxe-table/style/style.min.css +1 -1
  35. package/package.json +2 -2
  36. package/packages/table/module/custom/panel.ts +35 -8
  37. package/packages/table/module/validator/hook.ts +1 -1
  38. package/packages/table/src/body.ts +14 -8
  39. package/packages/table/src/header.ts +2 -2
  40. package/packages/table/src/table.ts +69 -45
  41. package/packages/ui/index.ts +2 -1
  42. package/styles/components/table-module/custom.scss +2 -1
  43. package/styles/components/table.scss +36 -26
  44. /package/es/{iconfont.1730971754265.ttf → iconfont.1731032736115.ttf} +0 -0
  45. /package/es/{iconfont.1730971754265.woff → iconfont.1731032736115.woff} +0 -0
  46. /package/es/{iconfont.1730971754265.woff2 → iconfont.1731032736115.woff2} +0 -0
  47. /package/lib/{iconfont.1730971754265.ttf → iconfont.1731032736115.ttf} +0 -0
  48. /package/lib/{iconfont.1730971754265.woff → iconfont.1731032736115.woff} +0 -0
  49. /package/lib/{iconfont.1730971754265.woff2 → iconfont.1731032736115.woff2} +0 -0
@@ -1,4 +1,4 @@
1
- import { defineComponent, h, createCommentVNode, reactive, ref, provide, inject, nextTick, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue';
1
+ import { defineComponent, h, reactive, ref, provide, inject, nextTick, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { browse, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, isNodeElement } from '../../ui/src/dom';
4
4
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
@@ -17,7 +17,7 @@ import TableFilterPanelComponent from '../module/filter/panel';
17
17
  import TableImportPanelComponent from '../module/export/import-panel';
18
18
  import TableExportPanelComponent from '../module/export/export-panel';
19
19
  import TableMenuPanelComponent from '../module/menu/panel';
20
- const { getConfig, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns } = VxeUI;
20
+ const { getConfig, getI18n, renderer, formats, createEvent, globalResize, interceptor, hooks, globalEvents, GLOBAL_EVENT_KEYS, useFns, renderEmptyElement } = VxeUI;
21
21
  const isWebkit = browse['-webkit'] && !browse.edge;
22
22
  const customStorageKey = 'VXE_CUSTOM_STORE';
23
23
  export default defineComponent({
@@ -2243,10 +2243,14 @@ export default defineComponent({
2243
2243
  rowExpandLazyLoadedMaps[rowid] = row;
2244
2244
  loadMethod({ $table: $xeTable, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) }).then(() => {
2245
2245
  const { rowExpandedMaps } = reactData;
2246
- rowRest.expandLoaded = true;
2246
+ if (rowRest) {
2247
+ rowRest.expandLoaded = true;
2248
+ }
2247
2249
  rowExpandedMaps[rowid] = row;
2248
2250
  }).catch(() => {
2249
- rowRest.expandLoaded = false;
2251
+ if (rowRest) {
2252
+ rowRest.expandLoaded = false;
2253
+ }
2250
2254
  }).finally(() => {
2251
2255
  const { rowExpandLazyLoadedMaps } = reactData;
2252
2256
  if (rowExpandLazyLoadedMaps[rowid]) {
@@ -2718,14 +2722,16 @@ export default defineComponent({
2718
2722
  const rowid = getRowid($xeTable, row);
2719
2723
  if (!treeTempExpandedMaps[rowid]) {
2720
2724
  const rowRest = fullAllDataRowIdData[rowid];
2721
- const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
2722
- // 是否使用懒加载
2723
- if (isLoad) {
2724
- result.push(handleAsyncTreeExpandChilds(row));
2725
- }
2726
- else {
2727
- if (row[childrenField] && row[childrenField].length) {
2728
- treeTempExpandedMaps[rowid] = row;
2725
+ if (rowRest) {
2726
+ const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
2727
+ // 是否使用懒加载
2728
+ if (isLoad) {
2729
+ result.push(handleAsyncTreeExpandChilds(row));
2730
+ }
2731
+ else {
2732
+ if (row[childrenField] && row[childrenField].length) {
2733
+ treeTempExpandedMaps[rowid] = row;
2734
+ }
2729
2735
  }
2730
2736
  }
2731
2737
  }
@@ -5496,7 +5502,19 @@ export default defineComponent({
5496
5502
  }
5497
5503
  };
5498
5504
  const updateRowDropTipContent = (tdEl) => {
5499
- reactData.dragTipText = tdEl.textContent || '';
5505
+ const { dragRow } = reactData;
5506
+ const dragOpts = computeDragOpts.value;
5507
+ const { rowTooltipMethod } = dragOpts;
5508
+ let tipContent = '';
5509
+ if (rowTooltipMethod) {
5510
+ tipContent = `${rowTooltipMethod({
5511
+ row: dragRow
5512
+ }) || ''}`;
5513
+ }
5514
+ else {
5515
+ tipContent = getI18n('vxe.table.dragTip', [tdEl.textContent || '']);
5516
+ }
5517
+ reactData.dragTipText = tipContent;
5500
5518
  };
5501
5519
  /**
5502
5520
  * 处理显示 tooltip
@@ -5529,6 +5547,17 @@ export default defineComponent({
5529
5547
  }
5530
5548
  return nextTick();
5531
5549
  };
5550
+ const callSlot = (slotFunc, params) => {
5551
+ if (slotFunc) {
5552
+ if ($xeGrid) {
5553
+ return $xeGrid.callSlot(slotFunc, params);
5554
+ }
5555
+ if (XEUtils.isFunction(slotFunc)) {
5556
+ return getSlotVNs(slotFunc(params));
5557
+ }
5558
+ }
5559
+ return [];
5560
+ };
5532
5561
  /**
5533
5562
  * 内部方法
5534
5563
  */
@@ -5537,17 +5566,7 @@ export default defineComponent({
5537
5566
  return getConfig();
5538
5567
  },
5539
5568
  updateAfterDataIndex,
5540
- callSlot(slotFunc, params) {
5541
- if (slotFunc) {
5542
- if ($xeGrid) {
5543
- return $xeGrid.callSlot(slotFunc, params);
5544
- }
5545
- if (XEUtils.isFunction(slotFunc)) {
5546
- return getSlotVNs(slotFunc(params));
5547
- }
5548
- }
5549
- return [];
5550
- },
5569
+ callSlot,
5551
5570
  /**
5552
5571
  * 获取父容器元素
5553
5572
  */
@@ -7020,7 +7039,7 @@ export default defineComponent({
7020
7039
  tableGroupColumn,
7021
7040
  fixedColumn
7022
7041
  })
7023
- : createCommentVNode(),
7042
+ : renderEmptyElement($xeTable),
7024
7043
  h(TableBodyComponent, {
7025
7044
  ref: isFixedLeft ? refTableLeftBody : refTableRightBody,
7026
7045
  fixedType,
@@ -7036,7 +7055,7 @@ export default defineComponent({
7036
7055
  fixedColumn,
7037
7056
  fixedType
7038
7057
  })
7039
- : createCommentVNode()
7058
+ : renderEmptyElement($xeTable)
7040
7059
  ]);
7041
7060
  };
7042
7061
  const renderEmptyBody = () => {
@@ -7062,7 +7081,7 @@ export default defineComponent({
7062
7081
  }
7063
7082
  const renderVN = () => {
7064
7083
  const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules } = props;
7065
- const { isCalcColumn, isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, tableData, tableColumn, tableGroupColumn, footerTableData, initStore, columnStore, filterStore, customStore, tooltipStore } = reactData;
7084
+ const { isCalcColumn, isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, tableData, tableColumn, tableGroupColumn, footerTableData, initStore, columnStore, filterStore, customStore, tooltipStore, dragRow, dragTipText } = reactData;
7066
7085
  const { leftList, rightList } = columnStore;
7067
7086
  const loadingSlot = slots.loading;
7068
7087
  const tipConfig = computeTipConfig.value;
@@ -7070,6 +7089,7 @@ export default defineComponent({
7070
7089
  const checkboxOpts = computeCheckboxOpts.value;
7071
7090
  const treeOpts = computeTreeOpts.value;
7072
7091
  const rowOpts = computeRowOpts.value;
7092
+ const dragOpts = computeDragOpts.value;
7073
7093
  const columnOpts = computeColumnOpts.value;
7074
7094
  const vSize = computeSize.value;
7075
7095
  const tableBorder = computeTableBorder.value;
@@ -7079,6 +7099,8 @@ export default defineComponent({
7079
7099
  const isMenu = computeIsMenu.value;
7080
7100
  const currLoading = reactData._isLoading || loading;
7081
7101
  const virtualScrollBars = computeVirtualScrollBars.value;
7102
+ const dragSlots = dragOpts.slots || {};
7103
+ const rowTipSlot = dragSlots.rowTip;
7082
7104
  return h('div', {
7083
7105
  ref: refElem,
7084
7106
  class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
@@ -7136,7 +7158,7 @@ export default defineComponent({
7136
7158
  tableColumn,
7137
7159
  tableGroupColumn
7138
7160
  })
7139
- : createCommentVNode(),
7161
+ : renderEmptyElement($xeTable),
7140
7162
  /**
7141
7163
  * 表体
7142
7164
  */
@@ -7154,13 +7176,13 @@ export default defineComponent({
7154
7176
  footerTableData,
7155
7177
  tableColumn
7156
7178
  })
7157
- : createCommentVNode()
7179
+ : renderEmptyElement($xeTable)
7158
7180
  ]),
7159
7181
  h('div', {
7160
7182
  class: 'vxe-table--fixed-wrapper'
7161
7183
  }, [
7162
- leftList && leftList.length && overflowX ? renderFixed('left') : createCommentVNode(),
7163
- rightList && rightList.length && overflowX ? renderFixed('right') : createCommentVNode()
7184
+ leftList && leftList.length && overflowX ? renderFixed('left') : renderEmptyElement($xeTable),
7185
+ rightList && rightList.length && overflowX ? renderFixed('right') : renderEmptyElement($xeTable)
7164
7186
  ])
7165
7187
  ]),
7166
7188
  virtualScrollBars.x
@@ -7180,7 +7202,7 @@ export default defineComponent({
7180
7202
  })
7181
7203
  ])
7182
7204
  ])
7183
- : createCommentVNode(),
7205
+ : renderEmptyElement($xeTable),
7184
7206
  virtualScrollBars.y
7185
7207
  ? h('div', {
7186
7208
  key: 'vy',
@@ -7198,7 +7220,7 @@ export default defineComponent({
7198
7220
  })
7199
7221
  ])
7200
7222
  ])
7201
- : createCommentVNode(),
7223
+ : renderEmptyElement($xeTable),
7202
7224
  /**
7203
7225
  * 空数据
7204
7226
  */
@@ -7246,7 +7268,7 @@ export default defineComponent({
7246
7268
  default: () => loadingSlot({ $table: $xeTable, $grid: $xeGrid })
7247
7269
  }
7248
7270
  : {})
7249
- : createCommentVNode(),
7271
+ : renderEmptyElement($xeTable),
7250
7272
  /**
7251
7273
  * 自定义列
7252
7274
  */
@@ -7256,7 +7278,7 @@ export default defineComponent({
7256
7278
  ref: refTableCustom,
7257
7279
  customStore
7258
7280
  })
7259
- : createCommentVNode(),
7281
+ : renderEmptyElement($xeTable),
7260
7282
  /**
7261
7283
  * 筛选
7262
7284
  */
@@ -7266,7 +7288,7 @@ export default defineComponent({
7266
7288
  ref: refTableFilter,
7267
7289
  filterStore
7268
7290
  })
7269
- : createCommentVNode(),
7291
+ : renderEmptyElement($xeTable),
7270
7292
  /**
7271
7293
  * 导入
7272
7294
  */
@@ -7276,7 +7298,7 @@ export default defineComponent({
7276
7298
  defaultOptions: reactData.importParams,
7277
7299
  storeData: reactData.importStore
7278
7300
  })
7279
- : createCommentVNode(),
7301
+ : renderEmptyElement($xeTable),
7280
7302
  /**
7281
7303
  * 导出
7282
7304
  */
@@ -7286,7 +7308,7 @@ export default defineComponent({
7286
7308
  defaultOptions: reactData.exportParams,
7287
7309
  storeData: reactData.exportStore
7288
7310
  })
7289
- : createCommentVNode(),
7311
+ : renderEmptyElement($xeTable),
7290
7312
  /**
7291
7313
  * 快捷菜单
7292
7314
  */
@@ -7295,16 +7317,18 @@ export default defineComponent({
7295
7317
  key: 'tm',
7296
7318
  ref: refTableMenu
7297
7319
  })
7298
- : createCommentVNode(),
7320
+ : renderEmptyElement($xeTable),
7299
7321
  /**
7300
7322
  * 拖拽提示
7301
7323
  */
7302
- rowOpts.drag
7324
+ rowOpts.drag && (dragRow || dragTipText)
7303
7325
  ? h('div', {
7304
7326
  ref: refRowDragTipElem,
7305
- class: 'vxe-table--row-drag-hint'
7306
- }, getI18n('vxe.table.dragTip', [reactData.dragTipText]))
7307
- : createCommentVNode(),
7327
+ class: 'vxe-table--row-drag-tip'
7328
+ }, rowTipSlot
7329
+ ? (dragRow ? callSlot(rowTipSlot, { row: dragRow }) : [renderEmptyElement($xeTable)])
7330
+ : (dragTipText ? [h('span', dragTipText)] : [renderEmptyElement($xeTable)]))
7331
+ : renderEmptyElement($xeTable),
7308
7332
  /**
7309
7333
  * 提示相关
7310
7334
  */
@@ -7333,9 +7357,9 @@ export default defineComponent({
7333
7357
  ? h(VxeUITooltipComponent, Object.assign({ key: 'vtp', ref: refValidTooltip, class: [{
7334
7358
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
7335
7359
  }, 'vxe-table--valid-error'] }, (validOpts.message === 'tooltip' || tableData.length === 1 ? validTipOpts : {})))
7336
- : createCommentVNode()
7360
+ : renderEmptyElement($xeTable)
7337
7361
  ])
7338
- : createCommentVNode()
7362
+ : renderEmptyElement($xeTable)
7339
7363
  ]);
7340
7364
  };
7341
7365
  const dataFlag = ref(0);
@@ -1074,7 +1074,7 @@
1074
1074
  .vxe-table-custom-popup--column-item.col--sort, .vxe-table-custom-popup--column-item.col--visible, .vxe-table-custom-popup--column-item.col--resizable, .vxe-table-custom-popup--column-item.col--fixed {
1075
1075
  text-align: center;
1076
1076
  }
1077
- .vxe-table-custom-popup--column-item.col--resizable > .vxe-input {
1077
+ .vxe-table-custom-popup--column-item.col--resizable > .vxe-input, .vxe-table-custom-popup--column-item.col--resizable > .vxe-number-input {
1078
1078
  width: 100%;
1079
1079
  }
1080
1080
 
@@ -2652,7 +2652,7 @@
2652
2652
  .vxe-table--render-default .vxe-body--row-list-move {
2653
2653
  transition: transform 0.35s;
2654
2654
  }
2655
- .vxe-table--render-default .vxe-table--row-drag-hint {
2655
+ .vxe-table--render-default .vxe-table--row-drag-tip {
2656
2656
  display: none;
2657
2657
  position: absolute;
2658
2658
  top: 0;
@@ -2736,10 +2736,7 @@
2736
2736
  .vxe-table--render-default .vxe-body--column.col--selected {
2737
2737
  box-shadow: inset 0px 0px 0px 2px var(--vxe-ui-font-primary-color);
2738
2738
  }
2739
- .vxe-table--render-default .vxe-body--column.col--active, .vxe-table--render-default .vxe-body--column.col--selected {
2740
- position: relative;
2741
- }
2742
- .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint {
2739
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-tip {
2743
2740
  width: 100%;
2744
2741
  position: absolute;
2745
2742
  left: 50%;
@@ -2751,12 +2748,25 @@
2751
2748
  padding-left: var(--vxe-ui-table-cell-padding-left);
2752
2749
  padding-right: var(--vxe-ui-table-cell-padding-right);
2753
2750
  }
2754
- .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint .vxe-cell--valid-error-msg {
2751
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-wrapper {
2755
2752
  display: inline-block;
2756
2753
  border-radius: var(--vxe-ui-border-radius);
2754
+ pointer-events: auto;
2755
+ }
2756
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-beautify {
2757
+ padding: 0.4em 0.8em;
2758
+ color: #fff;
2759
+ background-color: #f56c6c;
2760
+ }
2761
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-beautify .vxe-cell--valid-error-msg {
2762
+ background: transparent;
2763
+ }
2764
+ .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-normal {
2757
2765
  color: var(--vxe-ui-table-validate-error-color);
2758
2766
  background-color: var(--vxe-ui-table-validate-error-background-color);
2759
- pointer-events: auto;
2767
+ }
2768
+ .vxe-table--render-default .vxe-body--column.col--active, .vxe-table--render-default .vxe-body--column.col--selected {
2769
+ position: relative;
2760
2770
  }
2761
2771
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-default-input,
2762
2772
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-default-textarea,
@@ -2767,16 +2777,16 @@
2767
2777
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-ico-picker {
2768
2778
  border-color: var(--vxe-ui-table-validate-error-color);
2769
2779
  }
2770
- .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-hint {
2780
+ .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-tip {
2771
2781
  bottom: 100%;
2772
2782
  }
2773
- .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child:first-child .vxe-cell--valid-error-hint {
2783
+ .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child:first-child .vxe-cell--valid-error-tip {
2774
2784
  bottom: auto;
2775
2785
  }
2776
- .vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-hint {
2786
+ .vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-tip {
2777
2787
  top: calc(100% - 1.3em);
2778
2788
  }
2779
- .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint {
2789
+ .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-tip {
2780
2790
  width: 320px;
2781
2791
  position: absolute;
2782
2792
  bottom: calc(100% + 4px);
@@ -2786,7 +2796,7 @@
2786
2796
  pointer-events: none;
2787
2797
  z-index: 4;
2788
2798
  }
2789
- .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-hint .vxe-cell--valid-error-msg {
2799
+ .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-tip .vxe-cell--valid-error-msg {
2790
2800
  display: inline-block;
2791
2801
  border-radius: -var(-vxe-border-radius);
2792
2802
  padding: 8px 12px;
@@ -2794,11 +2804,11 @@
2794
2804
  background-color: #f56c6c;
2795
2805
  pointer-events: auto;
2796
2806
  }
2797
- .vxe-table--render-default.old-cell-valid .vxe-body--row:first-child .vxe-cell--valid-error-hint {
2807
+ .vxe-table--render-default.old-cell-valid .vxe-body--row:first-child .vxe-cell--valid-error-tip {
2798
2808
  bottom: auto;
2799
2809
  top: calc(100% + 4px);
2800
2810
  }
2801
- .vxe-table--render-default.old-cell-valid .vxe-body--column:first-child .vxe-cell--valid-error-hint {
2811
+ .vxe-table--render-default.old-cell-valid .vxe-body--column:first-child .vxe-cell--valid-error-tip {
2802
2812
  left: 10px;
2803
2813
  transform: translateX(0);
2804
2814
  text-align: left;