vxe-table 3.12.14 → 3.12.15

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 (41) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/edit/mixin.js +31 -15
  3. package/es/table/module/export/mixin.js +3 -2
  4. package/es/table/module/validator/mixin.js +6 -1
  5. package/es/table/src/body.js +1 -0
  6. package/es/table/src/methods.js +123 -88
  7. package/es/table/src/table.js +0 -1
  8. package/es/ui/index.js +1 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/index.umd.js +212 -149
  11. package/lib/index.umd.min.js +1 -1
  12. package/lib/style.css +1 -1
  13. package/lib/table/module/edit/mixin.js +37 -15
  14. package/lib/table/module/edit/mixin.min.js +1 -1
  15. package/lib/table/module/export/mixin.js +3 -2
  16. package/lib/table/module/export/mixin.min.js +1 -1
  17. package/lib/table/module/validator/mixin.js +8 -0
  18. package/lib/table/module/validator/mixin.min.js +1 -1
  19. package/lib/table/src/body.js +1 -0
  20. package/lib/table/src/body.min.js +1 -1
  21. package/lib/table/src/methods.js +161 -129
  22. package/lib/table/src/methods.min.js +1 -1
  23. package/lib/table/src/table.js +0 -1
  24. package/lib/table/src/table.min.js +1 -1
  25. package/lib/ui/index.js +1 -1
  26. package/lib/ui/index.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/package.json +1 -1
  30. package/packages/table/module/edit/mixin.ts +37 -15
  31. package/packages/table/module/export/mixin.ts +3 -2
  32. package/packages/table/module/validator/mixin.ts +6 -1
  33. package/packages/table/src/body.ts +1 -0
  34. package/packages/table/src/methods.ts +127 -84
  35. package/packages/table/src/table.ts +0 -1
  36. /package/es/{iconfont.1739181382716.ttf → iconfont.1739257460253.ttf} +0 -0
  37. /package/es/{iconfont.1739181382716.woff → iconfont.1739257460253.woff} +0 -0
  38. /package/es/{iconfont.1739181382716.woff2 → iconfont.1739257460253.woff2} +0 -0
  39. /package/lib/{iconfont.1739181382716.ttf → iconfont.1739257460253.ttf} +0 -0
  40. /package/lib/{iconfont.1739181382716.woff → iconfont.1739257460253.woff} +0 -0
  41. /package/lib/{iconfont.1739181382716.woff2 → iconfont.1739257460253.woff2} +0 -0
@@ -1120,14 +1120,14 @@ const calcCellHeight = ($xeTable: VxeTableConstructor) => {
1120
1120
  }
1121
1121
  }
1122
1122
 
1123
- function getOrderField (_vm: any, column: any) {
1123
+ function getOrderField ($xeTable: VxeTableConstructor, column: VxeTableDefines.ColumnInfo) {
1124
1124
  const { sortBy, sortType } = column
1125
1125
  return (row: any) => {
1126
1126
  let cellValue
1127
1127
  if (sortBy) {
1128
1128
  cellValue = XEUtils.isFunction(sortBy) ? sortBy({ row, column }) : XEUtils.get(row, sortBy)
1129
1129
  } else {
1130
- cellValue = _vm.getCellLabel(row, column)
1130
+ cellValue = $xeTable.getCellLabel(row, column)
1131
1131
  }
1132
1132
  if (!sortType || sortType === 'auto') {
1133
1133
  return isNaN(cellValue) ? cellValue : XEUtils.toNumber(cellValue)
@@ -2968,74 +2968,148 @@ const Methods = {
2968
2968
  * 如果存在筛选条件,继续处理
2969
2969
  */
2970
2970
  updateAfterFullData () {
2971
- const $xeTable = this
2971
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
2972
+ const props = $xeTable
2973
+ const internalData = $xeTable as unknown as TableInternalData
2972
2974
 
2973
- const { tableFullColumn, tableFullData, filterOpts, sortOpts, treeConfig, treeOpts, tableFullTreeData } = this
2975
+ const { treeConfig } = props
2976
+ const { tableFullColumn, tableFullData, tableFullTreeData } = internalData
2977
+ const filterOpts = $xeTable.computeFilterOpts
2978
+ const sortOpts = $xeTable.computeSortOpts
2979
+ const treeOpts = $xeTable.computeTreeOpts
2980
+ const childrenField = treeOpts.children || treeOpts.childrenField
2981
+ const { transform, rowField, parentField, mapChildrenField } = treeOpts
2974
2982
  const { remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts
2975
2983
  const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts
2976
- const { transform } = treeOpts
2977
- const childrenField = treeOpts.children || treeOpts.childrenField
2978
2984
  let tableData: any[] = []
2979
2985
  let tableTree: any[] = []
2980
- const filterColumns: any[] = []
2981
- let orderColumns: any[] = []
2982
- tableFullColumn.forEach((column: any) => {
2983
- const { field, sortable, order, filters } = column
2984
- if (!allRemoteFilter && filters && filters.length) {
2985
- const valueList: any[] = []
2986
- const itemList: any[] = []
2987
- filters.forEach((item: any) => {
2988
- if (item.checked) {
2989
- itemList.push(item)
2990
- valueList.push(item.value)
2986
+
2987
+ // 处理数据
2988
+ if (!allRemoteFilter || !allRemoteSort) {
2989
+ const filterColumns: {
2990
+ column: VxeTableDefines.ColumnInfo
2991
+ valueList: any[]
2992
+ itemList: VxeTableDefines.FilterOption[]
2993
+ }[] = []
2994
+ let orderColumns: VxeTableDefines.SortCheckedParams[] = []
2995
+ tableFullColumn.forEach((column) => {
2996
+ const { field, sortable, order, filters } = column
2997
+ if (!allRemoteFilter && filters && filters.length) {
2998
+ const valueList: any[] = []
2999
+ const itemList: VxeTableDefines.FilterOption[] = []
3000
+ filters.forEach((item) => {
3001
+ if (item.checked) {
3002
+ itemList.push(item as VxeTableDefines.FilterOption)
3003
+ valueList.push(item.value)
3004
+ }
3005
+ })
3006
+ if (itemList.length) {
3007
+ filterColumns.push({ column, valueList, itemList })
2991
3008
  }
2992
- })
2993
- if (itemList.length) {
2994
- filterColumns.push({ column, valueList, itemList })
2995
3009
  }
3010
+ if (!allRemoteSort && sortable && order) {
3011
+ orderColumns.push({ column, field, property: field, order: order, sortTime: column.sortTime })
3012
+ }
3013
+ })
3014
+ if (sortMultiple && chronological && orderColumns.length > 1) {
3015
+ orderColumns = XEUtils.orderBy(orderColumns, 'sortTime')
2996
3016
  }
2997
- if (!allRemoteSort && sortable && order) {
2998
- orderColumns.push({ column, field, property: field, order, sortTime: column.sortTime })
2999
- }
3000
- })
3001
- if (sortMultiple && chronological && orderColumns.length > 1) {
3002
- orderColumns = XEUtils.orderBy(orderColumns, 'sortTime')
3003
- }
3004
- if (filterColumns.length) {
3005
- const handleFilter = (row: any) => {
3006
- return filterColumns.every(({ column, valueList, itemList }) => {
3007
- if (valueList.length && !allRemoteFilter) {
3008
- const { filterMethod, filterRender, field } = column
3017
+
3018
+ // 处理筛选
3019
+ // 支持单列、多列、组合筛选
3020
+ if (!allRemoteFilter && filterColumns.length) {
3021
+ const handleFilter = (row: any) => {
3022
+ return filterColumns.every(({ column, valueList, itemList }) => {
3023
+ const { filterMethod, filterRender } = column
3009
3024
  const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
3010
3025
  const compFilterMethod = compConf ? (compConf.tableFilterMethod || compConf.filterMethod) : null
3011
3026
  const tdFilterMethod = compConf ? (compConf.tableFilterDefaultMethod || compConf.defaultTableFilterMethod || compConf.defaultFilterMethod) : null
3012
3027
  const cellValue = getCellValue(row, column)
3013
3028
  if (filterMethod) {
3014
- return itemList.some((item: any) => filterMethod({ value: item.value, option: item, cellValue, row, column, $table: this }))
3029
+ return itemList.some((item) => filterMethod({ value: item.value, option: item, cellValue, row, column, $table: $xeTable }))
3015
3030
  } else if (compFilterMethod) {
3016
- return itemList.some((item: any) => compFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: this }))
3031
+ return itemList.some((item) => compFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: $xeTable }))
3017
3032
  } else if (allFilterMethod) {
3018
3033
  return allFilterMethod({ options: itemList, values: valueList, cellValue, row, column })
3019
3034
  } else if (tdFilterMethod) {
3020
- return itemList.some((item: any) => tdFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: this }))
3035
+ return itemList.some((item) => tdFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: $xeTable }))
3021
3036
  }
3022
- return valueList.indexOf(XEUtils.get(row, field)) > -1
3023
- }
3024
- return true
3025
- })
3026
- }
3027
- if (treeConfig && transform) {
3028
- // 筛选虚拟树
3029
- tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
3030
- original: true,
3031
- isEvery: true,
3032
- children: treeOpts.mapChildrenField,
3033
- mapChildren: childrenField
3034
- })
3035
- tableData = tableTree
3037
+ return valueList.indexOf(XEUtils.get(row, column.field)) > -1
3038
+ })
3039
+ }
3040
+ if (treeConfig && transform) {
3041
+ // 筛选虚拟树
3042
+ tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
3043
+ original: true,
3044
+ isEvery: true,
3045
+ children: mapChildrenField,
3046
+ mapChildren: childrenField
3047
+ })
3048
+ tableData = tableTree
3049
+ } else {
3050
+ tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter)
3051
+ tableTree = tableData
3052
+ }
3036
3053
  } else {
3037
- tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter)
3038
- tableTree = tableData
3054
+ if (treeConfig && transform) {
3055
+ // 还原虚拟树
3056
+ tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
3057
+ original: true,
3058
+ isEvery: true,
3059
+ children: mapChildrenField,
3060
+ mapChildren: childrenField
3061
+ })
3062
+ tableData = tableTree
3063
+ } else {
3064
+ tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
3065
+ tableTree = tableData
3066
+ }
3067
+ }
3068
+
3069
+ // 处理排序(不能用于树形结构)
3070
+ // 支持单列、多列、组合排序
3071
+ if (!allRemoteSort && orderColumns.length) {
3072
+ if (treeConfig && transform) {
3073
+ // 虚拟树和列表一样,只能排序根级节点
3074
+ if (allSortMethod) {
3075
+ const sortRests = allSortMethod({ data: tableTree, sortList: orderColumns, $table: $xeTable })
3076
+ tableTree = XEUtils.isArray(sortRests) ? sortRests : tableTree
3077
+ } else {
3078
+ const treeList = XEUtils.toTreeArray(tableTree, {
3079
+ children: mapChildrenField
3080
+ })
3081
+ tableTree = XEUtils.toArrayTree(
3082
+ XEUtils.orderBy(treeList, orderColumns.map(({ column, order }) => [getOrderField($xeTable, column), order])),
3083
+ {
3084
+ key: rowField,
3085
+ parentKey: parentField,
3086
+ children: childrenField,
3087
+ mapChildren: mapChildrenField
3088
+ }
3089
+ )
3090
+ }
3091
+ tableData = tableTree
3092
+ } else {
3093
+ if (allSortMethod) {
3094
+ const sortRests = allSortMethod({ data: tableData, sortList: orderColumns, $table: $xeTable })
3095
+ tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
3096
+ } else {
3097
+ // 兼容 v4
3098
+ if (sortMultiple) {
3099
+ tableData = XEUtils.orderBy(tableData, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
3100
+ } else {
3101
+ const firstOrderColumn = orderColumns[0]
3102
+ let sortByConfs
3103
+ // 已废弃,兼容 v2,在 v4 中废弃, sortBy 不能为数组
3104
+ if (XEUtils.isArray((firstOrderColumn as any).sortBy)) {
3105
+ sortByConfs = (firstOrderColumn as any).sortBy.map((item: any) => [item, firstOrderColumn.order])
3106
+ }
3107
+ tableData = XEUtils.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({ column, order }) => [getOrderField(this, column), order]))
3108
+ }
3109
+ tableData = XEUtils.orderBy(tableData, orderColumns.map(({ column, order }) => [getOrderField($xeTable, column), order]))
3110
+ }
3111
+ tableTree = tableData
3112
+ }
3039
3113
  }
3040
3114
  } else {
3041
3115
  if (treeConfig && transform) {
@@ -3052,39 +3126,8 @@ const Methods = {
3052
3126
  tableTree = tableData
3053
3127
  }
3054
3128
  }
3055
- const firstOrderColumn = orderColumns[0]
3056
- if (!allRemoteSort && firstOrderColumn) {
3057
- if (treeConfig && transform) {
3058
- // 虚拟树和列表一样,只能排序根级节点
3059
- if (allSortMethod) {
3060
- const sortRests = allSortMethod({ data: tableTree, sortList: orderColumns, $table: this })
3061
- tableTree = XEUtils.isArray(sortRests) ? sortRests : tableTree
3062
- } else {
3063
- tableTree = XEUtils.orderBy(tableTree, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
3064
- }
3065
- tableData = tableTree
3066
- } else {
3067
- if (allSortMethod) {
3068
- const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.field, field: firstOrderColumn.field, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
3069
- tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
3070
- } else {
3071
- // 兼容 v4
3072
- if (sortMultiple) {
3073
- tableData = XEUtils.orderBy(tableData, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
3074
- } else {
3075
- // 兼容 v2,在 v4 中废弃, sortBy 不能为数组
3076
- let sortByConfs
3077
- if (XEUtils.isArray(firstOrderColumn.sortBy)) {
3078
- sortByConfs = firstOrderColumn.sortBy.map((item: any) => [item, firstOrderColumn.order])
3079
- }
3080
- tableData = XEUtils.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({ column, order }) => [getOrderField(this, column), order]))
3081
- }
3082
- }
3083
- tableTree = tableData
3084
- }
3085
- }
3086
- this.afterFullData = tableData
3087
- this.afterTreeFullData = tableTree
3129
+ internalData.afterFullData = tableData
3130
+ internalData.afterTreeFullData = tableTree
3088
3131
  updateAfterDataIndex($xeTable)
3089
3132
  },
3090
3133
  /**
@@ -516,7 +516,6 @@ export default {
516
516
  column: null
517
517
  },
518
518
  insertMaps: {},
519
- removeList: [],
520
519
  removeMaps: {}
521
520
  },
522
521
  // 存放 tooltip 相关信息