vxe-table 4.2.0-beta.5 → 4.2.1

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 (57) hide show
  1. package/es/edit/src/hook.js +3 -0
  2. package/es/export/src/hook.js +1 -1
  3. package/es/locale/lang/en-US.js +2 -1
  4. package/es/locale/lang/ja-JP.js +2 -1
  5. package/es/locale/lang/zh-CN.js +2 -1
  6. package/es/locale/lang/zh-TC.js +2 -1
  7. package/es/table/src/emits.js +1 -0
  8. package/es/table/src/table.js +41 -15
  9. package/es/tools/log.js +1 -1
  10. package/es/v-x-e-table/index.js +1 -1
  11. package/es/v-x-e-table/src/conf.js +1 -1
  12. package/lib/edit/src/hook.js +4 -0
  13. package/lib/edit/src/hook.min.js +1 -1
  14. package/lib/export/src/hook.js +1 -1
  15. package/lib/export/src/hook.min.js +1 -1
  16. package/lib/index.umd.js +63 -23
  17. package/lib/index.umd.min.js +1 -1
  18. package/lib/locale/lang/en-US.js +2 -1
  19. package/lib/locale/lang/en-US.min.js +1 -1
  20. package/lib/locale/lang/en-US.umd.js +2 -1
  21. package/lib/locale/lang/ja-JP.js +2 -1
  22. package/lib/locale/lang/ja-JP.min.js +1 -1
  23. package/lib/locale/lang/ja-JP.umd.js +2 -1
  24. package/lib/locale/lang/zh-CN.js +2 -1
  25. package/lib/locale/lang/zh-CN.min.js +1 -1
  26. package/lib/locale/lang/zh-CN.umd.js +2 -1
  27. package/lib/locale/lang/zh-HK.min.js +1 -1
  28. package/lib/locale/lang/zh-HK.umd.js +2 -1
  29. package/lib/locale/lang/zh-MO.min.js +1 -1
  30. package/lib/locale/lang/zh-MO.umd.js +2 -1
  31. package/lib/locale/lang/zh-TC.js +2 -1
  32. package/lib/locale/lang/zh-TC.min.js +1 -1
  33. package/lib/locale/lang/zh-TC.umd.js +2 -1
  34. package/lib/locale/lang/zh-TW.min.js +1 -1
  35. package/lib/locale/lang/zh-TW.umd.js +2 -1
  36. package/lib/table/src/emits.js +1 -1
  37. package/lib/table/src/emits.min.js +1 -1
  38. package/lib/table/src/table.js +52 -17
  39. package/lib/table/src/table.min.js +1 -1
  40. package/lib/tools/log.js +1 -1
  41. package/lib/tools/log.min.js +1 -1
  42. package/lib/v-x-e-table/index.js +1 -1
  43. package/lib/v-x-e-table/index.min.js +1 -1
  44. package/lib/v-x-e-table/src/conf.js +1 -1
  45. package/lib/v-x-e-table/src/conf.min.js +1 -1
  46. package/package.json +1 -1
  47. package/packages/edit/src/hook.ts +3 -0
  48. package/packages/export/src/hook.ts +1 -1
  49. package/packages/locale/lang/en-US.ts +2 -1
  50. package/packages/locale/lang/ja-JP.ts +2 -1
  51. package/packages/locale/lang/zh-CN.ts +2 -1
  52. package/packages/locale/lang/zh-TC.ts +2 -1
  53. package/packages/table/src/emits.ts +1 -0
  54. package/packages/table/src/table.ts +44 -23
  55. package/packages/v-x-e-table/src/conf.ts +1 -1
  56. package/types/plugins/pro.d.ts +6 -2
  57. package/types/table.d.ts +9 -6
@@ -79,7 +79,8 @@ export default {
79
79
  area: {
80
80
  mergeErr: 'The operation cannot be performed on merged cells',
81
81
  multiErr: 'The operation cannot be performed on multiple selection areas',
82
- extendErr: 'If the extended area contains merged cells, all merged cells need to be the same size'
82
+ extendErr: 'If the extended area contains merged cells, all merged cells need to be the same size',
83
+ pasteMultiErr: 'Cannot paste, copied area and pasted area of the same size are required to perform this operation'
83
84
  },
84
85
  fnr: {
85
86
  title: 'Find and replace',
@@ -79,7 +79,8 @@ export default {
79
79
  area: {
80
80
  mergeErr: '无法对合并单元格进行该操作',
81
81
  multiErr: '无法对多重选择区域进行该操作',
82
- extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同'
82
+ extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同',
83
+ pasteMultiErr: '无法粘贴,需要相同大小的复制的区域和粘贴的区域才能执行此操作'
83
84
  },
84
85
  fnr: {
85
86
  title: '查找和替换',
@@ -79,7 +79,8 @@ export default {
79
79
  area: {
80
80
  mergeErr: '无法对合并单元格进行该操作',
81
81
  multiErr: '无法对多重选择区域进行该操作',
82
- extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同'
82
+ extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同',
83
+ pasteMultiErr: '无法粘贴,需要相同大小的复制的区域和粘贴的区域才能执行此操作'
83
84
  },
84
85
  fnr: {
85
86
  title: '查找和替换',
@@ -79,7 +79,8 @@ export default {
79
79
  area: {
80
80
  mergeErr: '無法對合併儲存格進行該操作',
81
81
  multiErr: '無法對多重選擇區域進行該操作',
82
- extendErr: '如果延伸的區域包含被合併的儲存格,所有合併的儲存格需大小相同'
82
+ extendErr: '如果延伸的區域包含被合併的儲存格,所有合併的儲存格需大小相同',
83
+ pasteMultiErr: '无法粘贴,需要相同大小的复制的区域和粘贴的区域才能执行此操作'
83
84
  },
84
85
  fnr: {
85
86
  title: '查找和替換',
@@ -20,6 +20,7 @@ export default [
20
20
  'cell-menu',
21
21
  'cell-mouseenter',
22
22
  'cell-mouseleave',
23
+ 'cell-selected',
23
24
  'header-cell-click',
24
25
  'header-cell-dblclick',
25
26
  'header-cell-menu',
@@ -598,8 +598,7 @@ export default defineComponent({
598
598
  return true
599
599
  }
600
600
  if (XEUtils.isString(val1) || XEUtils.isNumber(val1)) {
601
- /* eslint-disable eqeqeq */
602
- return val1 == val2
601
+ return ('' + val1) === ('' + val2)
603
602
  }
604
603
  return XEUtils.isEqual(val1, val2)
605
604
  }
@@ -618,9 +617,9 @@ export default defineComponent({
618
617
  return rest && rest._v === version ? rest : { _v: version }
619
618
  }
620
619
 
621
- const getRecoverRow = (list: any) => {
620
+ const getRecoverRow = (list: any[]) => {
622
621
  const { fullAllDataRowIdData } = internalData
623
- return list.filter((row: any) => {
622
+ return list.filter((row) => {
624
623
  const rowid = getRowid($xetable, row)
625
624
  return !!fullAllDataRowIdData[rowid]
626
625
  })
@@ -1210,7 +1209,7 @@ export default defineComponent({
1210
1209
  const treeOpts = computeTreeOpts.value
1211
1210
  const { transform } = treeOpts
1212
1211
  const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
1213
- const { remote: allRemoteSort, sortMethod: allSortMethod } = sortOpts
1212
+ const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts
1214
1213
  let tableData: any[] = []
1215
1214
  let tableTree: any[] = []
1216
1215
 
@@ -1221,12 +1220,7 @@ export default defineComponent({
1221
1220
  valueList: any[]
1222
1221
  itemList: VxeTableDefines.FilterOption[]
1223
1222
  }[] = []
1224
- const orderColumns: {
1225
- column: VxeTableDefines.ColumnInfo
1226
- field: string
1227
- property: string
1228
- order: VxeTablePropTypes.SortOrder
1229
- }[] = []
1223
+ let orderColumns: VxeTableDefines.SortCheckedParams[] = []
1230
1224
  tableFullColumn.forEach((column) => {
1231
1225
  const { property, sortable, order, filters } = column
1232
1226
  if (!allRemoteFilter && filters && filters.length) {
@@ -1243,9 +1237,12 @@ export default defineComponent({
1243
1237
  }
1244
1238
  }
1245
1239
  if (!allRemoteSort && sortable && order) {
1246
- orderColumns.push({ column, field: property, property, order })
1240
+ orderColumns.push({ column, field: property, property, order, sortTime: column.sortTime })
1247
1241
  }
1248
1242
  })
1243
+ if (sortMultiple && chronological && orderColumns.length > 1) {
1244
+ orderColumns = XEUtils.orderBy(orderColumns, 'sortTime')
1245
+ }
1249
1246
 
1250
1247
  // 处理筛选
1251
1248
  // 支持单列、多列、组合筛选
@@ -1586,12 +1583,13 @@ export default defineComponent({
1586
1583
  defaultSort = [defaultSort]
1587
1584
  }
1588
1585
  if (defaultSort.length) {
1589
- (sortConfig.multiple ? defaultSort : defaultSort.slice(0, 1)).forEach((item: any) => {
1586
+ (sortConfig.multiple ? defaultSort : defaultSort.slice(0, 1)).forEach((item: any, index: number) => {
1590
1587
  const { field, order } = item
1591
1588
  if (field && order) {
1592
1589
  const column = tableMethods.getColumnByField(field)
1593
1590
  if (column && column.sortable) {
1594
1591
  column.order = order
1592
+ column.sortTime = Date.now() + index
1595
1593
  }
1596
1594
  }
1597
1595
  })
@@ -3393,7 +3391,7 @@ export default defineComponent({
3393
3391
  if (!multiple) {
3394
3392
  clearAllSort()
3395
3393
  }
3396
- (multiple ? sortConfs : [sortConfs[0]]).forEach((confs: any) => {
3394
+ (multiple ? sortConfs : [sortConfs[0]]).forEach((confs: any, index: number) => {
3397
3395
  let { field, order } = confs
3398
3396
  let column = field
3399
3397
  if (XEUtils.isString(field)) {
@@ -3406,7 +3404,7 @@ export default defineComponent({
3406
3404
  if (column.order !== order) {
3407
3405
  column.order = order
3408
3406
  }
3409
- column.sortTime = Date.now()
3407
+ column.sortTime = Date.now() + index
3410
3408
  }
3411
3409
  })
3412
3410
  // 如果是服务端排序,则跳过本地排序处理
@@ -3445,14 +3443,19 @@ export default defineComponent({
3445
3443
  return tableMethods.getSortColumns().length > 0
3446
3444
  },
3447
3445
  getSortColumns () {
3446
+ const sortOpts = computeSortOpts.value
3447
+ const { multiple, chronological } = sortOpts
3448
3448
  const sortList: VxeTableDefines.SortCheckedParams[] = []
3449
3449
  const { tableFullColumn } = internalData
3450
3450
  tableFullColumn.forEach((column) => {
3451
3451
  const { property, order } = column
3452
3452
  if (column.sortable && order) {
3453
- sortList.push({ column, field: property, property, order })
3453
+ sortList.push({ column, field: property, property, order, sortTime: column.sortTime })
3454
3454
  }
3455
3455
  })
3456
+ if (multiple && chronological && sortList.length > 1) {
3457
+ return XEUtils.orderBy(sortList, 'sortTime')
3458
+ }
3456
3459
  return sortList
3457
3460
  },
3458
3461
  /**
@@ -5376,12 +5379,18 @@ export default defineComponent({
5376
5379
  nextTick(updateStyle)
5377
5380
  },
5378
5381
  updateScrollXData () {
5379
- handleTableColumn()
5380
- tablePrivateMethods.updateScrollXSpace()
5382
+ reactData.tableColumn = []
5383
+ nextTick(() => {
5384
+ handleTableColumn()
5385
+ tablePrivateMethods.updateScrollXSpace()
5386
+ })
5381
5387
  },
5382
5388
  updateScrollYData () {
5383
- tablePrivateMethods.handleTableData()
5384
- tablePrivateMethods.updateScrollYSpace()
5389
+ reactData.tableData = []
5390
+ nextTick(() => {
5391
+ tablePrivateMethods.handleTableData()
5392
+ tablePrivateMethods.updateScrollYSpace()
5393
+ })
5385
5394
  },
5386
5395
  /**
5387
5396
  * 处理固定列的显示状态
@@ -5713,13 +5722,13 @@ export default defineComponent({
5713
5722
 
5714
5723
  if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
5715
5724
  // if (props.rowId) {
5716
- // warnLog('vxe.error.delProp', ['rowId', 'row-config.keyField'])
5725
+ // warnLog('vxe.error.delProp', ['row-id', 'row-config.keyField'])
5717
5726
  // }
5718
5727
  // if (props.rowKey) {
5719
- // warnLog('vxe.error.delProp', ['rowId', 'row-config.useKey'])
5728
+ // warnLog('vxe.error.delProp', ['row-id', 'row-config.useKey'])
5720
5729
  // }
5721
5730
  // if (props.columnKey) {
5722
- // warnLog('vxe.error.delProp', ['rowId', 'column-config.useKey'])
5731
+ // warnLog('vxe.error.delProp', ['row-id', 'column-config.useKey'])
5723
5732
  // }
5724
5733
  if (!(props.rowId || rowOpts.keyField) && (checkboxOpts.reserve || checkboxOpts.checkRowKeys || radioOpts.reserve || radioOpts.checkRowKey || expandOpts.expandRowKeys || treeOpts.expandRowKeys)) {
5725
5734
  warnLog('vxe.error.reqProp', ['row-config.keyField'])
@@ -5736,6 +5745,18 @@ export default defineComponent({
5736
5745
  if (props.showFooter && !props.footerMethod) {
5737
5746
  warnLog('vxe.error.reqProp', ['footer-method'])
5738
5747
  }
5748
+ // if (props.highlightCurrentRow) {
5749
+ // warnLog('vxe.error.delProp', ['highlight-current-row', 'row-config.isCurrent'])
5750
+ // }
5751
+ // if (props.highlightHoverRow) {
5752
+ // warnLog('vxe.error.delProp', ['highlight-hover-row', 'row-config.isHover'])
5753
+ // }
5754
+ // if (props.highlightCurrentColumn) {
5755
+ // warnLog('vxe.error.delProp', ['highlight-current-column', 'column-config.isCurrent'])
5756
+ // }
5757
+ // if (props.highlightHoverColumn) {
5758
+ // warnLog('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover'])
5759
+ // }
5739
5760
  // 检查导入导出类型,如果自定义导入导出方法,则不校验类型
5740
5761
  const { exportConfig, importConfig } = props
5741
5762
  const exportOpts = computeExportOpts.value
@@ -70,7 +70,7 @@ const GlobalConfig: VXETableGlobalConfig = {
70
70
  parentField: 'parentId',
71
71
  children: 'children',
72
72
  hasChild: 'hasChild',
73
- mapChildren: '_X_CHILD',
73
+ mapChildren: '_X_ROW_CHILD',
74
74
  indent: 20,
75
75
  showIcon: true
76
76
  },
@@ -12,9 +12,13 @@ export interface VxeTableProMethods {
12
12
  */
13
13
  getActiveCellArea(): VxeTableProDefines.MouseActiveCellArea | null
14
14
  /**
15
- * 用于 mouse-config.area,用于获取标记为复制粘贴的区域
15
+ * @deprecated
16
16
  */
17
17
  getCopyCellArea(): VxeTableProDefines.MouseCellArea | null
18
+ /**
19
+ * 用于 mouse-config.area,用于获取标记为复制粘贴的区域
20
+ */
21
+ getCopyCellAreas(): VxeTableProDefines.MouseCellArea[]
18
22
  /**
19
23
  * 用于 mouse-config.area,复制指定区域,返回转换后的文本
20
24
  */
@@ -324,7 +328,7 @@ export namespace VxeTableProDefines {
324
328
  export interface ActiveCellChangeStartEventParams extends EventParams, ActiveCellChangeStartParams { }
325
329
 
326
330
  export interface ActiveCellChangeEndParams extends ActiveCellChangeStartParams {
327
- targetActiveArea: VxeTableProDefines.MouseCellArea
331
+ beforeActiveArea: VxeTableProDefines.MouseCellArea
328
332
  }
329
333
  export interface ActiveCellChangeEndEventParams extends EventParams, ActiveCellChangeEndParams { }
330
334
  }
package/types/table.d.ts CHANGED
@@ -400,7 +400,7 @@ export interface TablePublicMethods {
400
400
  */
401
401
  clearCheckboxRow(): Promise<any>
402
402
  /**
403
- * 用于 highlight-current-row,设置某一行为高亮状态
403
+ * 用于 row-config.isCurrent,设置某一行为高亮状态
404
404
  * @param row 指定行
405
405
  */
406
406
  setCurrentRow(row: any): Promise<any>
@@ -423,7 +423,7 @@ export interface TablePublicMethods {
423
423
  */
424
424
  clearMergeFooterItems(): Promise<any>
425
425
  /**
426
- * 用于 highlight-current-row,手动清空当前高亮的状态
426
+ * 用于 row-config.isCurrent,手动清空当前高亮的状态
427
427
  */
428
428
  clearCurrentRow(): Promise<any>
429
429
  /**
@@ -439,11 +439,11 @@ export interface TablePublicMethods {
439
439
  */
440
440
  getMergeFooterItems(): VxeTableDefines.MergeInfo[]
441
441
  /**
442
- * 用于 highlight-current-column,获取当前列
442
+ * 用于 column-config.isCurrent,获取当前列
443
443
  */
444
444
  getCurrentColumn(): VxeTableDefines.ColumnInfo | null
445
445
  /**
446
- * 用于 highlight-current-row,获取当前行的行数据
446
+ * 用于 row-config.isCurrent,获取当前行的行数据
447
447
  */
448
448
  getCurrentRecord(): any
449
449
  /**
@@ -451,12 +451,12 @@ export interface TablePublicMethods {
451
451
  */
452
452
  getRadioRecord(isFull?: boolean): any
453
453
  /**
454
- * 用于 highlight-current-column,设置某列行为高亮状态
454
+ * 用于 column-config.isCurrent,设置某列行为高亮状态
455
455
  * @param columnOrField 列对象或字段名
456
456
  */
457
457
  setCurrentColumn(fieldOrColumn: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo): Promise<any>
458
458
  /**
459
- * 用于 highlight-current-column,手动清空当前高亮的状态
459
+ * 用于 column-config.isCurrent,手动清空当前高亮的状态
460
460
  */
461
461
  clearCurrentColumn(): Promise<any>
462
462
  /**
@@ -1310,6 +1310,7 @@ export namespace VxeTablePropTypes {
1310
1310
  }): any[]
1311
1311
  remote?: boolean
1312
1312
  multiple?: boolean
1313
+ chronological?: boolean
1313
1314
  trigger?: 'default' | 'cell'
1314
1315
  showIcon?: boolean
1315
1316
  iconAsc?: string
@@ -2074,6 +2075,7 @@ export type VxeTableEmits = [
2074
2075
  'cell-menu',
2075
2076
  'cell-mouseenter',
2076
2077
  'cell-mouseleave',
2078
+ 'cell-selected',
2077
2079
  'header-cell-click',
2078
2080
  'header-cell-dblclick',
2079
2081
  'header-cell-menu',
@@ -2418,6 +2420,7 @@ export namespace VxeTableDefines {
2418
2420
  field: VxeColumnPropTypes.Field
2419
2421
  property: VxeColumnPropTypes.Field
2420
2422
  order: VxeTablePropTypes.SortOrder
2423
+ sortTime: number
2421
2424
  }
2422
2425
  export interface SortChangeParams extends SortCheckedParams {
2423
2426
  sortList: SortCheckedParams[]