vxe-table 4.20.4 → 4.20.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 (159) hide show
  1. package/dist/all.esm.js +87 -39
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/index.css +1 -1
  5. package/es/index.min.css +1 -1
  6. package/es/locale/lang/ar-EG.js +1 -1
  7. package/es/locale/lang/de-DE.js +1 -1
  8. package/es/locale/lang/en-US.js +1 -1
  9. package/es/locale/lang/es-ES.js +1 -1
  10. package/es/locale/lang/fr-FR.js +1 -1
  11. package/es/locale/lang/hu-HU.js +1 -1
  12. package/es/locale/lang/hy-AM.js +1 -1
  13. package/es/locale/lang/id-ID.js +1 -1
  14. package/es/locale/lang/it-IT.js +1 -1
  15. package/es/locale/lang/ja-JP.js +1 -1
  16. package/es/locale/lang/ko-KR.js +1 -1
  17. package/es/locale/lang/ms-MY.js +1 -1
  18. package/es/locale/lang/nb-NO.js +1 -1
  19. package/es/locale/lang/pt-BR.js +1 -1
  20. package/es/locale/lang/ru-RU.js +1 -1
  21. package/es/locale/lang/th-TH.js +1 -1
  22. package/es/locale/lang/ug-CN.js +1 -1
  23. package/es/locale/lang/uk-UA.js +1 -1
  24. package/es/locale/lang/uz-UZ.js +1 -1
  25. package/es/locale/lang/vi-VN.js +1 -1
  26. package/es/locale/lang/zh-CHT.js +1 -1
  27. package/es/locale/lang/zh-CN.js +1 -1
  28. package/es/style.css +1 -1
  29. package/es/style.min.css +1 -1
  30. package/es/table/module/export/hook.js +69 -31
  31. package/es/table/src/table.js +14 -4
  32. package/es/table/style.css +1 -1
  33. package/es/table/style.min.css +1 -1
  34. package/es/ui/index.js +1 -1
  35. package/es/ui/src/dom.js +3 -0
  36. package/es/ui/src/log.js +2 -2
  37. package/es/vxe-table/style.css +1 -1
  38. package/es/vxe-table/style.min.css +1 -1
  39. package/lib/index.css +1 -1
  40. package/lib/index.min.css +1 -1
  41. package/lib/index.umd.js +86 -38
  42. package/lib/index.umd.min.js +1 -1
  43. package/lib/locale/lang/ar-EG.js +1 -1
  44. package/lib/locale/lang/ar-EG.min.js +1 -1
  45. package/lib/locale/lang/ar-EG.umd.js +1 -1
  46. package/lib/locale/lang/de-DE.js +1 -1
  47. package/lib/locale/lang/de-DE.min.js +1 -1
  48. package/lib/locale/lang/de-DE.umd.js +1 -1
  49. package/lib/locale/lang/en-US.js +1 -1
  50. package/lib/locale/lang/en-US.min.js +1 -1
  51. package/lib/locale/lang/en-US.umd.js +1 -1
  52. package/lib/locale/lang/es-ES.js +1 -1
  53. package/lib/locale/lang/es-ES.min.js +1 -1
  54. package/lib/locale/lang/es-ES.umd.js +1 -1
  55. package/lib/locale/lang/fr-FR.js +1 -1
  56. package/lib/locale/lang/fr-FR.min.js +1 -1
  57. package/lib/locale/lang/fr-FR.umd.js +1 -1
  58. package/lib/locale/lang/hu-HU.js +1 -1
  59. package/lib/locale/lang/hu-HU.min.js +1 -1
  60. package/lib/locale/lang/hu-HU.umd.js +1 -1
  61. package/lib/locale/lang/hy-AM.js +1 -1
  62. package/lib/locale/lang/hy-AM.min.js +1 -1
  63. package/lib/locale/lang/hy-AM.umd.js +1 -1
  64. package/lib/locale/lang/id-ID.js +1 -1
  65. package/lib/locale/lang/id-ID.min.js +1 -1
  66. package/lib/locale/lang/id-ID.umd.js +1 -1
  67. package/lib/locale/lang/it-IT.js +1 -1
  68. package/lib/locale/lang/it-IT.min.js +1 -1
  69. package/lib/locale/lang/it-IT.umd.js +1 -1
  70. package/lib/locale/lang/ja-JP.js +1 -1
  71. package/lib/locale/lang/ja-JP.min.js +1 -1
  72. package/lib/locale/lang/ja-JP.umd.js +1 -1
  73. package/lib/locale/lang/ko-KR.js +1 -1
  74. package/lib/locale/lang/ko-KR.min.js +1 -1
  75. package/lib/locale/lang/ko-KR.umd.js +1 -1
  76. package/lib/locale/lang/ms-MY.js +1 -1
  77. package/lib/locale/lang/ms-MY.min.js +1 -1
  78. package/lib/locale/lang/ms-MY.umd.js +1 -1
  79. package/lib/locale/lang/nb-NO.js +1 -1
  80. package/lib/locale/lang/nb-NO.min.js +1 -1
  81. package/lib/locale/lang/nb-NO.umd.js +1 -1
  82. package/lib/locale/lang/pt-BR.js +1 -1
  83. package/lib/locale/lang/pt-BR.min.js +1 -1
  84. package/lib/locale/lang/pt-BR.umd.js +1 -1
  85. package/lib/locale/lang/ru-RU.js +1 -1
  86. package/lib/locale/lang/ru-RU.min.js +1 -1
  87. package/lib/locale/lang/ru-RU.umd.js +1 -1
  88. package/lib/locale/lang/th-TH.js +1 -1
  89. package/lib/locale/lang/th-TH.min.js +1 -1
  90. package/lib/locale/lang/th-TH.umd.js +1 -1
  91. package/lib/locale/lang/ug-CN.js +1 -1
  92. package/lib/locale/lang/ug-CN.min.js +1 -1
  93. package/lib/locale/lang/ug-CN.umd.js +1 -1
  94. package/lib/locale/lang/uk-UA.js +1 -1
  95. package/lib/locale/lang/uk-UA.min.js +1 -1
  96. package/lib/locale/lang/uk-UA.umd.js +1 -1
  97. package/lib/locale/lang/uz-UZ.js +1 -1
  98. package/lib/locale/lang/uz-UZ.min.js +1 -1
  99. package/lib/locale/lang/uz-UZ.umd.js +1 -1
  100. package/lib/locale/lang/vi-VN.js +1 -1
  101. package/lib/locale/lang/vi-VN.min.js +1 -1
  102. package/lib/locale/lang/vi-VN.umd.js +1 -1
  103. package/lib/locale/lang/zh-CHT.js +1 -1
  104. package/lib/locale/lang/zh-CHT.min.js +1 -1
  105. package/lib/locale/lang/zh-CHT.umd.js +1 -1
  106. package/lib/locale/lang/zh-CN.js +1 -1
  107. package/lib/locale/lang/zh-CN.min.js +1 -1
  108. package/lib/locale/lang/zh-CN.umd.js +1 -1
  109. package/lib/style.css +1 -1
  110. package/lib/style.min.css +1 -1
  111. package/lib/table/module/export/hook.js +75 -32
  112. package/lib/table/module/export/hook.min.js +1 -1
  113. package/lib/table/src/table.js +3 -2
  114. package/lib/table/src/table.min.js +1 -1
  115. package/lib/table/style/style.css +1 -1
  116. package/lib/table/style/style.min.css +1 -1
  117. package/lib/ui/index.js +1 -1
  118. package/lib/ui/index.min.js +1 -1
  119. package/lib/ui/src/dom.js +4 -0
  120. package/lib/ui/src/dom.min.js +1 -1
  121. package/lib/ui/src/log.js +2 -2
  122. package/lib/ui/src/log.min.js +1 -1
  123. package/lib/vxe-table/style/style.css +1 -1
  124. package/lib/vxe-table/style/style.min.css +1 -1
  125. package/package.json +2 -2
  126. package/packages/locale/lang/ar-EG.ts +1 -1
  127. package/packages/locale/lang/de-DE.ts +1 -1
  128. package/packages/locale/lang/en-US.ts +1 -1
  129. package/packages/locale/lang/es-ES.ts +1 -1
  130. package/packages/locale/lang/fr-FR.ts +1 -1
  131. package/packages/locale/lang/hu-HU.ts +1 -1
  132. package/packages/locale/lang/hy-AM.ts +1 -1
  133. package/packages/locale/lang/id-ID.ts +1 -1
  134. package/packages/locale/lang/it-IT.ts +1 -1
  135. package/packages/locale/lang/ja-JP.ts +1 -1
  136. package/packages/locale/lang/ko-KR.ts +1 -1
  137. package/packages/locale/lang/ms-MY.ts +1 -1
  138. package/packages/locale/lang/nb-NO.ts +1 -1
  139. package/packages/locale/lang/pt-BR.ts +1 -1
  140. package/packages/locale/lang/ru-RU.ts +1 -1
  141. package/packages/locale/lang/th-TH.ts +1 -1
  142. package/packages/locale/lang/ug-CN.ts +1 -1
  143. package/packages/locale/lang/uk-UA.ts +1 -1
  144. package/packages/locale/lang/uz-UZ.ts +1 -1
  145. package/packages/locale/lang/vi-VN.ts +1 -1
  146. package/packages/locale/lang/zh-CHT.ts +1 -1
  147. package/packages/locale/lang/zh-CN.ts +1 -1
  148. package/packages/table/module/export/hook.ts +71 -31
  149. package/packages/table/src/table.ts +14 -4
  150. package/packages/ui/src/dom.ts +4 -0
  151. package/packages/ui/src/log.ts +1 -1
  152. package/styles/components/table.scss +1 -1
  153. package/styles/theme/base.scss +1 -0
  154. /package/es/{iconfont.1784366386890.ttf → iconfont.1784791298289.ttf} +0 -0
  155. /package/es/{iconfont.1784366386890.woff → iconfont.1784791298289.woff} +0 -0
  156. /package/es/{iconfont.1784366386890.woff2 → iconfont.1784791298289.woff2} +0 -0
  157. /package/lib/{iconfont.1784366386890.ttf → iconfont.1784791298289.ttf} +0 -0
  158. /package/lib/{iconfont.1784366386890.woff → iconfont.1784791298289.woff} +0 -0
  159. /package/lib/{iconfont.1784366386890.woff2 → iconfont.1784791298289.woff2} +0 -0
@@ -112,7 +112,7 @@ function toTxtCellLabel(val) {
112
112
  if (/[",\s\n]/.test(val)) {
113
113
  return `"${val.replace(/"/g, '""')}"`;
114
114
  }
115
- return val;
115
+ return XEUtils.eqNull(val) ? '' : val;
116
116
  }
117
117
  function getElementsByTagName(elem, qualifiedName) {
118
118
  return elem.getElementsByTagName(qualifiedName);
@@ -1190,19 +1190,21 @@ hooks.add('tableExportModule', {
1190
1190
  return false;
1191
1191
  });
1192
1192
  };
1193
- const handleFilterFields = (exportOpts, column, includeFields, excludeFields) => {
1194
- if (excludeFields) {
1195
- if (XEUtils.includes(excludeFields, column.field)) {
1196
- return false;
1197
- }
1193
+ const handleFilterFields = (exportOpts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps) => {
1194
+ const { field } = column;
1195
+ if (excludeFdMaps[field]) {
1196
+ return false;
1198
1197
  }
1199
1198
  if (includeFields) {
1200
- if (XEUtils.includes(includeFields, column.field)) {
1199
+ if (includeFdMaps[field]) {
1201
1200
  return true;
1202
1201
  }
1203
1202
  return false;
1204
1203
  }
1205
- return exportOpts.original ? !!column.field : defaultFilterExportColumn(column);
1204
+ if (extraFdMaps[field]) {
1205
+ return true;
1206
+ }
1207
+ return exportOpts.original ? !!field : defaultFilterExportColumn(column);
1206
1208
  };
1207
1209
  const handleExportAndPrint = (options, isPrint) => {
1208
1210
  const $xeGrid = $xeTable.xeGrid;
@@ -1239,7 +1241,7 @@ hooks.add('tableExportModule', {
1239
1241
  const modes = defOpts.modes || [];
1240
1242
  const checkMethod = customOpts.checkMethod;
1241
1243
  const exportColumns = collectColumn.slice(0);
1242
- const { columns, excludeFields, includeFields } = defOpts;
1244
+ const { columns, excludeFields, includeFields, extraFields } = defOpts;
1243
1245
  // 处理类型
1244
1246
  const typeList = types.map((value) => {
1245
1247
  return {
@@ -1259,22 +1261,47 @@ hooks.add('tableExportModule', {
1259
1261
  label: getI18n(`vxe.export.modes.${item}`)
1260
1262
  };
1261
1263
  });
1264
+ const excludeFdMaps = {};
1265
+ if (excludeFields && excludeFields.length) {
1266
+ excludeFields.forEach(field => {
1267
+ excludeFdMaps[field] = 1;
1268
+ });
1269
+ }
1270
+ const includeFdMaps = {};
1271
+ if (includeFields && includeFields.length) {
1272
+ includeFields.forEach(field => {
1273
+ includeFdMaps[field] = 1;
1274
+ });
1275
+ }
1276
+ const extraFdMaps = {};
1277
+ if (extraFields) {
1278
+ extraFields.forEach(field => {
1279
+ extraFdMaps[field] = 1;
1280
+ });
1281
+ }
1262
1282
  // 默认选中
1263
- XEUtils.eachTree(exportColumns, (column, index, items, path, parent) => {
1283
+ // 优先级 columns > excludeFields > (includeFields || extraFields)
1284
+ XEUtils.eachTree(exportColumns, (column, index, items, path, parentColumn) => {
1264
1285
  const isColGroup = column.children && column.children.length > 0;
1265
1286
  let isChecked = false;
1287
+ const isExtraChecked = extraFdMaps[column.field];
1266
1288
  if (columns && columns.length) {
1267
1289
  isChecked = handleFilterColumns(defOpts, column, columns);
1268
1290
  }
1269
1291
  else if (excludeFields || includeFields) {
1270
- isChecked = handleFilterFields(defOpts, column, includeFields, excludeFields);
1292
+ isChecked = handleFilterFields(defOpts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
1271
1293
  }
1272
1294
  else {
1273
- isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
1295
+ if (isExtraChecked) {
1296
+ isChecked = true;
1297
+ }
1298
+ else {
1299
+ isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
1300
+ }
1274
1301
  }
1275
1302
  column.checked = isChecked;
1276
1303
  column.halfChecked = false;
1277
- column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false);
1304
+ column.disabled = (parentColumn && parentColumn.disabled) || (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false);
1278
1305
  });
1279
1306
  // 更新条件
1280
1307
  exportStore.columns = exportColumns;
@@ -1385,30 +1412,54 @@ hooks.add('tableExportModule', {
1385
1412
  warnLog('vxe.error.delProp', ['isAllExpand', 'isTreeAllExpanded']);
1386
1413
  opts.isTreeAllExpanded = opts.isAllExpand;
1387
1414
  }
1388
- let { filename, sheetName, type, mode, columns, original, columnFilterMethod, beforeExportMethod, includeFields, excludeFields } = opts;
1415
+ let { filename, sheetName, type, mode, columns, columnFilterMethod, beforeExportMethod, includeFields, excludeFields, extraFields } = opts;
1389
1416
  let groups = [];
1390
1417
  const selectRecords = $xeTable.getCheckboxRecords();
1391
1418
  if (!mode) {
1392
1419
  mode = selectRecords.length ? 'selected' : 'current';
1393
1420
  }
1421
+ const excludeFdMaps = {};
1422
+ if (excludeFields && excludeFields.length) {
1423
+ excludeFields.forEach(field => {
1424
+ excludeFdMaps[field] = 1;
1425
+ });
1426
+ }
1427
+ const includeFdMaps = {};
1428
+ if (includeFields && includeFields.length) {
1429
+ includeFields.forEach(field => {
1430
+ includeFdMaps[field] = 1;
1431
+ });
1432
+ }
1433
+ const extraFdMaps = {};
1434
+ if (extraFields) {
1435
+ extraFields.forEach(field => {
1436
+ extraFdMaps[field] = 1;
1437
+ });
1438
+ }
1394
1439
  let isCustomCol = false;
1395
1440
  let customCols = [];
1396
1441
  if (columns && columns.length) {
1397
1442
  isCustomCol = true;
1398
- customCols = columns;
1443
+ customCols = XEUtils.searchTree(columns, () => true, { children: 'children', mapChildren: 'childNodes', original: true });
1399
1444
  }
1400
1445
  else {
1401
1446
  customCols = XEUtils.searchTree(collectColumn, column => {
1402
1447
  const isColGroup = column.children && column.children.length > 0;
1403
1448
  let isChecked = false;
1449
+ const isExtraChecked = extraFdMaps[column.field];
1404
1450
  if (columns && columns.length) {
1405
1451
  isChecked = handleFilterColumns(opts, column, columns);
1406
1452
  }
1407
1453
  else if (excludeFields || includeFields) {
1408
- isChecked = handleFilterFields(opts, column, includeFields, excludeFields);
1454
+ isChecked = handleFilterFields(opts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
1409
1455
  }
1410
1456
  else {
1411
- isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
1457
+ if (isExtraChecked) {
1458
+ isChecked = true;
1459
+ }
1460
+ else {
1461
+ isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
1462
+ }
1412
1463
  }
1413
1464
  return isChecked;
1414
1465
  }, { children: 'children', mapChildren: 'childNodes', original: true });
@@ -1416,20 +1467,7 @@ hooks.add('tableExportModule', {
1416
1467
  const handleOptions = Object.assign({}, opts, { filename: '', sheetName: '', _columnConfs: columns });
1417
1468
  // 如果设置源数据,则默认导出设置了字段的列
1418
1469
  if (!isCustomCol && !columnFilterMethod) {
1419
- columnFilterMethod = ({ column }) => {
1420
- if (excludeFields) {
1421
- if (XEUtils.includes(excludeFields, column.field)) {
1422
- return false;
1423
- }
1424
- }
1425
- if (includeFields) {
1426
- if (XEUtils.includes(includeFields, column.field)) {
1427
- return true;
1428
- }
1429
- return false;
1430
- }
1431
- return original ? !!column.field : defaultFilterExportColumn(column);
1432
- };
1470
+ columnFilterMethod = ({ column }) => handleFilterFields(handleOptions, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
1433
1471
  handleOptions.columnFilterMethod = columnFilterMethod;
1434
1472
  }
1435
1473
  if (customCols) {
@@ -590,15 +590,16 @@ export default defineVxeComponent({
590
590
  const { extraFields, includeFields, excludeFields } = editDirtyOpts;
591
591
  const kpFields = [];
592
592
  if (updateColFlag) {
593
- if (includeFields && includeFields.length) {
594
- return includeFields;
595
- }
593
+ // 优先级 excludeFields > (includeFields || extraFields)
596
594
  const excludeFdMaps = {};
597
595
  if (excludeFields && excludeFields.length) {
598
596
  excludeFields.forEach(field => {
599
597
  excludeFdMaps[field] = 1;
600
598
  });
601
599
  }
600
+ if (includeFields && includeFields.length) {
601
+ return excludeFields && excludeFields.length ? includeFields.filter(field => !excludeFdMaps[field]) : includeFields;
602
+ }
602
603
  const addFdMaps = {};
603
604
  if (extraFields && extraFields.length) {
604
605
  extraFields.forEach(field => {
@@ -14697,25 +14698,34 @@ export default defineVxeComponent({
14697
14698
  }
14698
14699
  }
14699
14700
  if (!VxeUITooltipComponent) {
14700
- errLog('vxe.error.reqComp', ['vxe-tooltip']);
14701
+ let useOvTip = false;
14701
14702
  if (showOverflow === 'tooltip') {
14703
+ useOvTip = true;
14702
14704
  errLog('vxe.error.errProp', ['show-overflow=' + showOverflow, 'show-overflow=false,title,ellipsis']);
14703
14705
  }
14704
14706
  if (showOverflow === true && tooltipOpts.mode === 'tooltip') {
14707
+ useOvTip = true;
14705
14708
  errLog('vxe.error.notSupportProp', ['show-overflow=' + showOverflow, 'tooltip-config.mode=tooltip', 'tooltip-config.mode=title,ellipsis']);
14706
14709
  }
14707
14710
  if (showHeaderOverflow === 'tooltip') {
14711
+ useOvTip = true;
14708
14712
  errLog('vxe.error.errProp', ['show-header-overflow=' + showHeaderOverflow, 'show-header-overflow=false,title,ellipsis']);
14709
14713
  }
14710
14714
  if (showHeaderOverflow === true && headerTooltipOpts.mode === 'tooltip') {
14715
+ useOvTip = true;
14711
14716
  errLog('vxe.error.notSupportProp', ['show-header-overflow=' + showHeaderOverflow, 'header-tooltip-config.mode=tooltip', 'header-tooltip-config.mode=title,ellipsis']);
14712
14717
  }
14713
14718
  if (showFooterOverflow === 'tooltip') {
14719
+ useOvTip = true;
14714
14720
  errLog('vxe.error.errProp', ['show-footer-overflow=' + showFooterOverflow, 'show-footer-overflow=false,title,ellipsis']);
14715
14721
  }
14716
14722
  if (showFooterOverflow === true && footerTooltipOpts.mode === 'tooltip') {
14723
+ useOvTip = true;
14717
14724
  errLog('vxe.error.notSupportProp', ['show-footer-overflow=' + showFooterOverflow, 'footer-tooltip-config.mode=tooltip', 'footer-tooltip-config.mode=title,ellipsis']);
14718
14725
  }
14726
+ if (useOvTip) {
14727
+ errLog('vxe.error.reqComp', ['vxe-tooltip']);
14728
+ }
14719
14729
  }
14720
14730
  });
14721
14731
  provide('$xeColgroup', null);
@@ -3826,7 +3826,7 @@
3826
3826
  width: 100%;
3827
3827
  position: absolute;
3828
3828
  left: 50%;
3829
- font-size: 12px;
3829
+ font-size: var(--vxe-ui-table-validate-error-font-size);
3830
3830
  line-height: 1em;
3831
3831
  transform: translate(-50%, -2px);
3832
3832
  text-align: left;