vxe-table 3.15.1 → 3.15.3

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 (61) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/filter/mixin.js +29 -10
  6. package/es/table/module/filter/panel.js +173 -142
  7. package/es/table/src/body.js +5 -3
  8. package/es/table/src/footer.js +4 -2
  9. package/es/table/src/header.js +2 -1
  10. package/es/table/src/methods.js +125 -101
  11. package/es/table/src/table.js +3 -0
  12. package/es/table/style.css +18 -0
  13. package/es/table/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +18 -0
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +355 -262
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/table/module/filter/mixin.js +33 -9
  25. package/lib/table/module/filter/mixin.min.js +1 -1
  26. package/lib/table/module/filter/panel.js +153 -122
  27. package/lib/table/module/filter/panel.min.js +1 -1
  28. package/lib/table/src/body.js +5 -2
  29. package/lib/table/src/body.min.js +1 -1
  30. package/lib/table/src/footer.js +4 -2
  31. package/lib/table/src/footer.min.js +1 -1
  32. package/lib/table/src/header.js +2 -1
  33. package/lib/table/src/header.min.js +1 -1
  34. package/lib/table/src/methods.js +151 -122
  35. package/lib/table/src/methods.min.js +1 -1
  36. package/lib/table/src/table.js +3 -0
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/style/style.css +18 -0
  39. package/lib/table/style/style.min.css +1 -1
  40. package/lib/ui/index.js +1 -1
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +18 -0
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/table/module/filter/mixin.ts +27 -10
  48. package/packages/table/module/filter/panel.ts +178 -143
  49. package/packages/table/src/body.ts +5 -3
  50. package/packages/table/src/footer.ts +4 -2
  51. package/packages/table/src/header.ts +2 -1
  52. package/packages/table/src/methods.ts +132 -106
  53. package/packages/table/src/table.ts +3 -0
  54. package/styles/components/table-module/filter.scss +16 -0
  55. package/styles/components/table.scss +6 -1
  56. /package/es/{iconfont.1744336394111.ttf → iconfont.1744609828798.ttf} +0 -0
  57. /package/es/{iconfont.1744336394111.woff → iconfont.1744609828798.woff} +0 -0
  58. /package/es/{iconfont.1744336394111.woff2 → iconfont.1744609828798.woff2} +0 -0
  59. /package/lib/{iconfont.1744336394111.ttf → iconfont.1744609828798.ttf} +0 -0
  60. /package/lib/{iconfont.1744336394111.woff → iconfont.1744609828798.woff} +0 -0
  61. /package/lib/{iconfont.1744336394111.woff2 → iconfont.1744609828798.woff2} +0 -0
@@ -308,6 +308,95 @@ const updateScrollYStatus = ($xeTable, fullData) => {
308
308
  reactData.scrollYLoad = scrollYLoad;
309
309
  return scrollYLoad;
310
310
  };
311
+ /**
312
+ * 展开与收起树节点
313
+ * @param rows
314
+ * @param expanded
315
+ * @returns
316
+ */
317
+ function handleBaseTreeExpand($xeTable, rows, expanded) {
318
+ const reactData = $xeTable;
319
+ const internalData = $xeTable;
320
+ const { treeNodeColumn } = reactData;
321
+ const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
322
+ const treeOpts = $xeTable.computeTreeOpts;
323
+ const { reserve, lazy, accordion, toggleMethod } = treeOpts;
324
+ const childrenField = treeOpts.children || treeOpts.childrenField;
325
+ const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
326
+ const result = [];
327
+ const columnIndex = $xeTable.getColumnIndex(treeNodeColumn);
328
+ const $columnIndex = $xeTable.getVMColumnIndex(treeNodeColumn);
329
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
330
+ let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
331
+ if (accordion) {
332
+ validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
333
+ // 同一级只能展开一个
334
+ const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField });
335
+ if (matchObj) {
336
+ matchObj.items.forEach(item => {
337
+ const rowid = handleGetRowId(item);
338
+ if (treeExpandedMaps[rowid]) {
339
+ delete treeExpandedMaps[rowid];
340
+ }
341
+ });
342
+ }
343
+ }
344
+ if (expanded) {
345
+ validRows.forEach((row) => {
346
+ const rowid = handleGetRowId(row);
347
+ if (!treeExpandedMaps[rowid]) {
348
+ const rowRest = fullAllDataRowIdData[rowid];
349
+ if (rowRest) {
350
+ const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
351
+ // 是否使用懒加载
352
+ if (isLoad) {
353
+ result.push(handleAsyncTreeExpandChilds($xeTable, row));
354
+ }
355
+ else {
356
+ if (row[childrenField] && row[childrenField].length) {
357
+ treeExpandedMaps[rowid] = row;
358
+ }
359
+ }
360
+ }
361
+ }
362
+ });
363
+ }
364
+ else {
365
+ validRows.forEach(item => {
366
+ const rowid = handleGetRowId(item);
367
+ if (treeExpandedMaps[rowid]) {
368
+ delete treeExpandedMaps[rowid];
369
+ }
370
+ });
371
+ }
372
+ if (reserve) {
373
+ validRows.forEach((row) => handleTreeExpandReserve($xeTable, row, expanded));
374
+ }
375
+ reactData.treeExpandedFlag++;
376
+ return Promise.all(result).then(() => {
377
+ return $xeTable.recalculate();
378
+ });
379
+ }
380
+ /**
381
+ * 虚拟树的展开与收起
382
+ * @param rows
383
+ * @param expanded
384
+ * @returns
385
+ */
386
+ function handleVirtualTreeExpand($xeTable, rows, expanded) {
387
+ return handleBaseTreeExpand($xeTable, rows, expanded).then(() => {
388
+ handleVirtualTreeToList($xeTable);
389
+ $xeTable.handleTableData();
390
+ updateAfterDataIndex($xeTable);
391
+ return $xeTable.$nextTick();
392
+ }).then(() => {
393
+ return $xeTable.recalculate(true);
394
+ }).then(() => {
395
+ setTimeout(() => {
396
+ $xeTable.updateCellAreas();
397
+ }, 30);
398
+ });
399
+ }
311
400
  function updateAfterListIndex($xeTable) {
312
401
  const props = $xeTable;
313
402
  const internalData = $xeTable;
@@ -2872,7 +2961,12 @@ const Methods = {
2872
2961
  $xeTable.checkSelectionStatus();
2873
2962
  return new Promise(resolve => {
2874
2963
  this.$nextTick()
2875
- .then(() => $xeTable.recalculate())
2964
+ .then(() => handleRecalculateLayout($xeTable, false))
2965
+ .then(() => {
2966
+ calcCellHeight($xeTable);
2967
+ updateRowOffsetTop($xeTable);
2968
+ return handleRecalculateLayout($xeTable, false);
2969
+ })
2876
2970
  .then(() => {
2877
2971
  let targetScrollLeft = lastScrollLeft;
2878
2972
  let targetScrollTop = lastScrollTop;
@@ -2886,8 +2980,7 @@ const Methods = {
2886
2980
  targetScrollTop = 0;
2887
2981
  }
2888
2982
  reactData.isRowLoading = false;
2889
- calcCellHeight($xeTable);
2890
- updateRowOffsetTop($xeTable);
2983
+ handleRecalculateLayout($xeTable, false);
2891
2984
  // 是否变更虚拟滚动
2892
2985
  if (oldScrollYLoad === sYLoad) {
2893
2986
  restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop)
@@ -6459,6 +6552,10 @@ const Methods = {
6459
6552
  const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
6460
6553
  const beforeRowMethod = currentColumnOpts.beforeSelectMethod || columnOpts.currentMethod;
6461
6554
  const { column: newValue } = params;
6555
+ const { trigger } = currentColumnOpts;
6556
+ if (trigger === 'manual') {
6557
+ return;
6558
+ }
6462
6559
  const isChange = oldValue !== newValue;
6463
6560
  if (!beforeRowMethod || beforeRowMethod({ column: newValue, $table: $xeTable })) {
6464
6561
  $xeTable.setCurrentColumn(newValue);
@@ -6478,6 +6575,10 @@ const Methods = {
6478
6575
  const currentRowOpts = $xeTable.computeCurrentRowOpts;
6479
6576
  const beforeRowMethod = currentRowOpts.beforeSelectMethod || rowOpts.currentMethod;
6480
6577
  const { row: newValue } = params;
6578
+ const { trigger } = currentRowOpts;
6579
+ if (trigger === 'manual') {
6580
+ return;
6581
+ }
6481
6582
  const isChange = oldValue !== newValue;
6482
6583
  if (!beforeRowMethod || beforeRowMethod({ row: newValue, $table: $xeTable })) {
6483
6584
  $xeTable.setCurrentRow(newValue);
@@ -7979,7 +8080,7 @@ const Methods = {
7979
8080
  internalData.rowExpandedMaps = rowExpandedMaps;
7980
8081
  rows = rows.slice(rows.length - 1, rows.length);
7981
8082
  }
7982
- const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: this.getRowIndex(row), $rowIndex: this.getVMRowIndex(row) })) : rows;
8083
+ const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) })) : rows;
7983
8084
  if (expanded) {
7984
8085
  validRows.forEach((row) => {
7985
8086
  const rowid = handleGetRowId(row);
@@ -7996,7 +8097,7 @@ const Methods = {
7996
8097
  });
7997
8098
  }
7998
8099
  else {
7999
- validRows.forEach((item) => {
8100
+ validRows.forEach(item => {
8000
8101
  const rowid = handleGetRowId(item);
8001
8102
  if (rowExpandedMaps[rowid]) {
8002
8103
  delete rowExpandedMaps[rowid];
@@ -8188,10 +8289,10 @@ const Methods = {
8188
8289
  triggerTreeExpandEvent(evnt, params) {
8189
8290
  const $xeTable = this;
8190
8291
  const internalData = $xeTable;
8191
- const { treeExpandLazyLoadedMaps } = internalData;
8292
+ const { treeExpandLazyLoadedMaps, treeEATime } = internalData;
8192
8293
  const treeOpts = $xeTable.computeTreeOpts;
8193
8294
  const { row, column } = params;
8194
- const { lazy, trigger } = treeOpts;
8295
+ const { lazy, trigger, accordion } = treeOpts;
8195
8296
  if (trigger === 'manual') {
8196
8297
  return;
8197
8298
  }
@@ -8201,7 +8302,17 @@ const Methods = {
8201
8302
  const expanded = !$xeTable.isTreeExpandByRow(row);
8202
8303
  const columnIndex = $xeTable.getColumnIndex(column);
8203
8304
  const $columnIndex = $xeTable.getVMColumnIndex(column);
8204
- $xeTable.setTreeExpand(row, expanded);
8305
+ if (treeEATime) {
8306
+ clearTimeout(treeEATime);
8307
+ }
8308
+ $xeTable.setTreeExpand(row, expanded).then(() => {
8309
+ if (accordion) {
8310
+ internalData.treeEATime = setTimeout(() => {
8311
+ internalData.treeEATime = undefined;
8312
+ $xeTable.scrollToRow(row);
8313
+ }, 30);
8314
+ }
8315
+ });
8205
8316
  $xeTable.dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
8206
8317
  }
8207
8318
  },
@@ -8228,96 +8339,6 @@ const Methods = {
8228
8339
  }, { children: childrenField });
8229
8340
  return this.setTreeExpand(expandeds, expanded);
8230
8341
  },
8231
- /**
8232
- * 默认,展开与收起树节点
8233
- * @param rows
8234
- * @param expanded
8235
- * @returns
8236
- */
8237
- handleBaseTreeExpand(rows, expanded) {
8238
- const $xeTable = this;
8239
- const reactData = $xeTable;
8240
- const internalData = $xeTable;
8241
- const { treeNodeColumn } = reactData;
8242
- const { fullAllDataRowIdData, tableFullData, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
8243
- const treeOpts = $xeTable.computeTreeOpts;
8244
- const { reserve, lazy, accordion, toggleMethod } = treeOpts;
8245
- const childrenField = treeOpts.children || treeOpts.childrenField;
8246
- const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
8247
- const result = [];
8248
- const columnIndex = $xeTable.getColumnIndex(treeNodeColumn);
8249
- const $columnIndex = $xeTable.getVMColumnIndex(treeNodeColumn);
8250
- const { handleGetRowId } = createHandleGetRowId($xeTable);
8251
- let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
8252
- if (accordion) {
8253
- validRows = validRows.length ? [validRows[validRows.length - 1]] : [];
8254
- // 同一级只能展开一个
8255
- const matchObj = XEUtils.findTree(tableFullData, item => item === validRows[0], { children: childrenField });
8256
- if (matchObj) {
8257
- matchObj.items.forEach(item => {
8258
- const rowid = handleGetRowId(item);
8259
- if (treeExpandedMaps[rowid]) {
8260
- delete treeExpandedMaps[rowid];
8261
- }
8262
- });
8263
- }
8264
- }
8265
- if (expanded) {
8266
- validRows.forEach((row) => {
8267
- const rowid = handleGetRowId(row);
8268
- if (!treeExpandedMaps[rowid]) {
8269
- const rowRest = fullAllDataRowIdData[rowid];
8270
- if (rowRest) {
8271
- const isLoad = lazy && row[hasChildField] && !rowRest.treeLoaded && !treeExpandLazyLoadedMaps[rowid];
8272
- // 是否使用懒加载
8273
- if (isLoad) {
8274
- result.push(handleAsyncTreeExpandChilds($xeTable, row));
8275
- }
8276
- else {
8277
- if (row[childrenField] && row[childrenField].length) {
8278
- treeExpandedMaps[rowid] = row;
8279
- }
8280
- }
8281
- }
8282
- }
8283
- });
8284
- }
8285
- else {
8286
- validRows.forEach((item) => {
8287
- const rowid = handleGetRowId(item);
8288
- if (treeExpandedMaps[rowid]) {
8289
- delete treeExpandedMaps[rowid];
8290
- }
8291
- });
8292
- }
8293
- if (reserve) {
8294
- validRows.forEach((row) => handleTreeExpandReserve($xeTable, row, expanded));
8295
- }
8296
- reactData.treeExpandedFlag++;
8297
- return Promise.all(result).then(() => {
8298
- return $xeTable.recalculate();
8299
- });
8300
- },
8301
- /**
8302
- * 虚拟树的展开与收起
8303
- * @param rows
8304
- * @param expanded
8305
- * @returns
8306
- */
8307
- handleVirtualTreeExpand(rows, expanded) {
8308
- const $xeTable = this;
8309
- return this.handleBaseTreeExpand(rows, expanded).then(() => {
8310
- handleVirtualTreeToList($xeTable);
8311
- this.handleTableData();
8312
- updateAfterDataIndex($xeTable);
8313
- }).then(() => {
8314
- return this.recalculate();
8315
- }).then(() => {
8316
- setTimeout(() => {
8317
- this.updateCellAreas();
8318
- }, 30);
8319
- });
8320
- },
8321
8342
  /**
8322
8343
  * 设置展开树形节点,二个参数设置这一行展开与否
8323
8344
  * 支持单行
@@ -8326,6 +8347,7 @@ const Methods = {
8326
8347
  * @param {Boolean} expanded 是否展开
8327
8348
  */
8328
8349
  setTreeExpand(rows, expanded) {
8350
+ const $xeTable = this;
8329
8351
  const { treeOpts } = this;
8330
8352
  const { transform } = treeOpts;
8331
8353
  if (rows) {
@@ -8335,10 +8357,10 @@ const Methods = {
8335
8357
  if (rows.length) {
8336
8358
  // 如果为虚拟树
8337
8359
  if (transform) {
8338
- return this.handleVirtualTreeExpand(rows, expanded);
8360
+ return handleVirtualTreeExpand($xeTable, rows, expanded);
8339
8361
  }
8340
8362
  else {
8341
- return this.handleBaseTreeExpand(rows, expanded);
8363
+ return handleBaseTreeExpand($xeTable, rows, expanded);
8342
8364
  }
8343
8365
  }
8344
8366
  }
@@ -8948,7 +8970,8 @@ const Methods = {
8948
8970
  if (isScrollXBig && mouseOpts.area) {
8949
8971
  errLog('vxe.error.notProp', ['mouse-config.area']);
8950
8972
  }
8951
- $xeTable.$nextTick(() => {
8973
+ calcScrollbar($xeTable);
8974
+ return $xeTable.$nextTick(() => {
8952
8975
  updateStyle($xeTable);
8953
8976
  });
8954
8977
  }
@@ -9057,6 +9080,7 @@ const Methods = {
9057
9080
  if (isScrollYBig && mouseOpts.area) {
9058
9081
  errLog('vxe.error.notProp', ['mouse-config.area']);
9059
9082
  }
9083
+ calcScrollbar($xeTable);
9060
9084
  return $xeTable.$nextTick().then(() => {
9061
9085
  updateStyle($xeTable);
9062
9086
  });
@@ -1407,6 +1407,9 @@ export default {
1407
1407
  if (this.highlightHoverColumn) {
1408
1408
  warnLog('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover']);
1409
1409
  }
1410
+ if (props.resizable) {
1411
+ warnLog('vxe.error.delProp', ['resizable', 'column-config.resizable']);
1412
+ }
1410
1413
  // if (props.scrollY) {
1411
1414
  // warnLog('vxe.error.delProp', ['scroll-y', 'virtual-y-config'])
1412
1415
  // }
@@ -1467,9 +1467,11 @@
1467
1467
  position: absolute;
1468
1468
  top: 0;
1469
1469
  min-width: 100px;
1470
+ font-size: var(--vxe-ui-font-size-default);
1470
1471
  border-radius: var(--vxe-ui-border-radius);
1471
1472
  background-color: var(--vxe-ui-layout-background-color);
1472
1473
  border: 1px solid var(--vxe-ui-base-popup-border-color);
1474
+ color: var(--vxe-ui-font-color);
1473
1475
  box-shadow: var(--vxe-ui-base-popup-box-shadow);
1474
1476
  z-index: 10;
1475
1477
  }
@@ -1579,6 +1581,16 @@
1579
1581
  vertical-align: middle;
1580
1582
  }
1581
1583
 
1584
+ .vxe-table--filter-wrapper.size--medium {
1585
+ font-size: var(--vxe-ui-font-size-medium);
1586
+ }
1587
+ .vxe-table--filter-wrapper.size--small {
1588
+ font-size: var(--vxe-ui-font-size-small);
1589
+ }
1590
+ .vxe-table--filter-wrapper.size--mini {
1591
+ font-size: var(--vxe-ui-font-size-mini);
1592
+ }
1593
+
1582
1594
  .vxe-table--context-menu-wrapper {
1583
1595
  display: none;
1584
1596
  }
@@ -2997,6 +3009,9 @@
2997
3009
  user-select: none;
2998
3010
  cursor: pointer;
2999
3011
  }
3012
+ .vxe-table--render-default .vxe-tree--btn-wrapper > i {
3013
+ background-color: var(--vxe-ui-layout-background-color);
3014
+ }
3000
3015
  .vxe-table--render-default .vxe-tree--node-btn {
3001
3016
  display: block;
3002
3017
  color: var(--vxe-ui-font-lighten-color);
@@ -3017,6 +3032,9 @@
3017
3032
  .vxe-table--render-default .vxe-body--column.col--cs-height, .vxe-table--render-default .vxe-body--column.col--rs-height, .vxe-table--render-default .vxe-body--column.col--auto-height {
3018
3033
  overflow: hidden;
3019
3034
  }
3035
+ .vxe-table--render-default .vxe-body--column.col--cs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--rs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--auto-height.col--tree-node {
3036
+ overflow: unset;
3037
+ }
3020
3038
  .vxe-table--render-default .vxe-body--column.col--cs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--rs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--auto-height > .vxe-cell {
3021
3039
  overflow: hidden;
3022
3040
  }