vxe-table 3.5.8 → 3.5.9-beta.10

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 (127) hide show
  1. package/README.md +1 -1
  2. package/lib/edit/src/mixin.js +18 -14
  3. package/lib/edit/src/mixin.min.js +1 -1
  4. package/lib/export/src/mixin.js +1 -1
  5. package/lib/export/src/mixin.min.js +1 -1
  6. package/lib/filter/src/mixin.js +8 -5
  7. package/lib/filter/src/mixin.min.js +1 -1
  8. package/lib/filter/src/panel.js +7 -2
  9. package/lib/filter/src/panel.min.js +1 -1
  10. package/lib/form/src/form-config-item.js +2 -1
  11. package/lib/form/src/form-config-item.min.js +1 -1
  12. package/lib/form/src/form-item.js +3 -1
  13. package/lib/form/src/form-item.min.js +1 -1
  14. package/lib/form/src/form.js +12 -7
  15. package/lib/form/src/form.min.js +1 -1
  16. package/lib/form/src/render.js +1 -0
  17. package/lib/form/src/render.min.js +1 -1
  18. package/lib/form/style/style.css +2 -1
  19. package/lib/form/style/style.min.css +1 -1
  20. package/lib/grid/src/grid.js +14 -8
  21. package/lib/grid/src/grid.min.js +1 -1
  22. package/lib/index.css +1 -1
  23. package/lib/index.umd.js +804 -496
  24. package/lib/index.umd.min.js +1 -1
  25. package/lib/input/src/input.js +20 -15
  26. package/lib/input/src/input.min.js +1 -1
  27. package/lib/list/src/list.js +12 -7
  28. package/lib/list/src/list.min.js +1 -1
  29. package/lib/loading/index.js +19 -0
  30. package/lib/loading/index.min.js +1 -0
  31. package/lib/loading/src/loading.js +36 -0
  32. package/lib/loading/src/loading.min.js +1 -0
  33. package/lib/locale/lang/en-US.js +5 -0
  34. package/lib/locale/lang/en-US.min.js +1 -1
  35. package/lib/locale/lang/en-US.umd.js +5 -0
  36. package/lib/locale/lang/ja-JP.js +5 -0
  37. package/lib/locale/lang/ja-JP.min.js +1 -1
  38. package/lib/locale/lang/ja-JP.umd.js +5 -0
  39. package/lib/locale/lang/zh-CN.js +5 -0
  40. package/lib/locale/lang/zh-CN.min.js +1 -1
  41. package/lib/locale/lang/zh-CN.umd.js +5 -0
  42. package/lib/locale/lang/zh-HK.min.js +1 -1
  43. package/lib/locale/lang/zh-HK.umd.js +5 -0
  44. package/lib/locale/lang/zh-MO.min.js +1 -1
  45. package/lib/locale/lang/zh-MO.umd.js +5 -0
  46. package/lib/locale/lang/zh-TC.js +5 -0
  47. package/lib/locale/lang/zh-TC.min.js +1 -1
  48. package/lib/locale/lang/zh-TC.umd.js +5 -0
  49. package/lib/locale/lang/zh-TW.min.js +1 -1
  50. package/lib/locale/lang/zh-TW.umd.js +5 -0
  51. package/lib/modal/src/modal.js +28 -12
  52. package/lib/modal/src/modal.min.js +1 -1
  53. package/lib/modal/style/style.css +1 -1
  54. package/lib/modal/style/style.min.css +1 -1
  55. package/lib/select/src/select.js +213 -33
  56. package/lib/select/src/select.min.js +1 -1
  57. package/lib/select/style/style.css +17 -72
  58. package/lib/select/style/style.min.css +1 -1
  59. package/lib/style.css +1 -1
  60. package/lib/style.min.css +1 -1
  61. package/lib/table/src/body.js +6 -3
  62. package/lib/table/src/body.min.js +1 -1
  63. package/lib/table/src/cell.js +3 -3
  64. package/lib/table/src/cell.min.js +1 -1
  65. package/lib/table/src/columnInfo.js +1 -1
  66. package/lib/table/src/columnInfo.min.js +1 -1
  67. package/lib/table/src/methods.js +84 -62
  68. package/lib/table/src/methods.min.js +1 -1
  69. package/lib/table/src/table.js +12 -8
  70. package/lib/table/src/table.min.js +1 -1
  71. package/lib/table/style/style.css +0 -68
  72. package/lib/table/style/style.min.css +1 -1
  73. package/lib/toolbar/style/style.css +13 -10
  74. package/lib/toolbar/style/style.min.css +1 -1
  75. package/lib/tools/log.js +1 -1
  76. package/lib/tools/log.min.js +1 -1
  77. package/lib/tools/utils.js +2 -2
  78. package/lib/tools/utils.min.js +1 -1
  79. package/lib/v-x-e-table/index.js +1 -1
  80. package/lib/v-x-e-table/index.min.js +1 -1
  81. package/lib/v-x-e-table/src/conf.js +6 -2
  82. package/lib/v-x-e-table/src/conf.min.js +1 -1
  83. package/lib/v-x-e-table/src/store.js +10 -5
  84. package/lib/v-x-e-table/src/store.min.js +1 -1
  85. package/lib/v-x-e-table/style/style.css +590 -0
  86. package/lib/v-x-e-table/style/style.min.css +1 -0
  87. package/package.json +1 -1
  88. package/packages/edit/src/mixin.js +17 -13
  89. package/packages/export/src/mixin.js +2 -2
  90. package/packages/filter/src/mixin.js +5 -5
  91. package/packages/filter/src/panel.js +13 -6
  92. package/packages/form/src/form-config-item.js +17 -9
  93. package/packages/form/src/form-item.js +16 -8
  94. package/packages/form/src/form.js +10 -9
  95. package/packages/form/src/render.js +1 -1
  96. package/packages/grid/src/grid.js +9 -7
  97. package/packages/input/src/input.js +17 -13
  98. package/packages/list/src/list.js +10 -9
  99. package/packages/loading/index.js +9 -0
  100. package/packages/loading/src/loading.js +31 -0
  101. package/packages/locale/lang/en-US.js +5 -0
  102. package/packages/locale/lang/ja-JP.js +5 -0
  103. package/packages/locale/lang/zh-CN.js +5 -0
  104. package/packages/locale/lang/zh-TC.js +5 -0
  105. package/packages/modal/src/modal.js +23 -14
  106. package/packages/select/src/select.js +139 -16
  107. package/packages/table/src/body.js +39 -24
  108. package/packages/table/src/cell.js +3 -3
  109. package/packages/table/src/columnInfo.js +1 -1
  110. package/packages/table/src/methods.js +68 -57
  111. package/packages/table/src/table.js +10 -9
  112. package/packages/tools/utils.js +2 -2
  113. package/packages/v-x-e-table/src/conf.js +6 -2
  114. package/packages/v-x-e-table/src/store.js +8 -4
  115. package/styles/form.scss +1 -0
  116. package/styles/{base/loading.scss → loading.scss} +17 -4
  117. package/styles/modal.scss +1 -1
  118. package/styles/modules.scss +1 -0
  119. package/styles/select.scss +24 -6
  120. package/styles/table.scss +0 -1
  121. package/styles/toolbar.scss +9 -5
  122. package/styles/v-x-e-table.scss +2 -0
  123. package/styles/variable.scss +0 -4
  124. package/types/form-item.d.ts +11 -8
  125. package/types/form.d.ts +5 -2
  126. package/types/table.d.ts +5 -0
  127. package/types/v-x-e-table/renderer.d.ts +15 -2
@@ -138,12 +138,12 @@ function calculateMergerOffserIndex (list, offsetItem, type) {
138
138
  function setMerges (_vm, merges, mList, rowList) {
139
139
  if (merges) {
140
140
  const { treeConfig, visibleColumn } = _vm
141
- if (treeConfig) {
142
- throw new Error(UtilTools.getLog('vxe.error.noTree', ['merge-footer-items']))
143
- }
144
141
  if (!XEUtils.isArray(merges)) {
145
142
  merges = [merges]
146
143
  }
144
+ if (treeConfig && merges.length) {
145
+ errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
146
+ }
147
147
  merges.forEach(item => {
148
148
  let { row, col, rowspan, colspan } = item
149
149
  if (rowList && XEUtils.isNumber(row)) {
@@ -187,12 +187,12 @@ function removeMerges (_vm, merges, mList, rowList) {
187
187
  const rest = []
188
188
  if (merges) {
189
189
  const { treeConfig, visibleColumn } = _vm
190
- if (treeConfig) {
191
- throw new Error(UtilTools.getLog('vxe.error.noTree', ['merge-cells']))
192
- }
193
190
  if (!XEUtils.isArray(merges)) {
194
191
  merges = [merges]
195
192
  }
193
+ if (treeConfig && merges.length) {
194
+ errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
195
+ }
196
196
  merges.forEach(item => {
197
197
  let { row, col } = item
198
198
  if (rowList && XEUtils.isNumber(row)) {
@@ -351,7 +351,7 @@ const Methods = {
351
351
  * @param {Array} datas 数据
352
352
  */
353
353
  loadTableData (datas) {
354
- const { keepSource, treeConfig, treeOpts, editStore, scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop, scrollYLoad: oldScrollYLoad } = this
354
+ const { keepSource, treeConfig, treeOpts, editStore, scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop, scrollYLoad: oldScrollYLoad, sXOpts, sYOpts } = this
355
355
  let treeData = []
356
356
  let fullData = datas ? datas.slice(0) : []
357
357
  if (treeConfig) {
@@ -446,11 +446,20 @@ const Methods = {
446
446
  this.$nextTick()
447
447
  .then(() => this.recalculate())
448
448
  .then(() => {
449
+ let targetScrollLeft = lastScrollLeft
450
+ let targetScrollTop = lastScrollTop
451
+ // 是否在更新数据之后自动滚动重置滚动条
452
+ if (sXOpts.scrollToLeftOnChange) {
453
+ targetScrollLeft = 0
454
+ }
455
+ if (sYOpts.scrollToTopOnChange) {
456
+ targetScrollTop = 0
457
+ }
449
458
  // 是否变更虚拟滚动
450
459
  if (oldScrollYLoad === sYLoad) {
451
- restoreScrollLocation(this, lastScrollLeft, lastScrollTop).then(resolve)
460
+ restoreScrollLocation(this, targetScrollLeft, targetScrollTop).then(resolve)
452
461
  } else {
453
- setTimeout(() => restoreScrollLocation(this, lastScrollLeft, lastScrollTop).then(resolve))
462
+ setTimeout(() => restoreScrollLocation(this, targetScrollLeft, targetScrollTop).then(resolve))
454
463
  }
455
464
  })
456
465
  })
@@ -654,15 +663,15 @@ const Methods = {
654
663
  let radioColumn
655
664
  let hasFixed
656
665
  const handleFunc = (column, index, items, path, parent) => {
657
- const { id: colid, property, fixed, type, treeNode } = column
666
+ const { id: colid, field, fixed, type, treeNode } = column
658
667
  const rest = { column, colid, index, items, parent }
659
- if (property) {
668
+ if (field) {
660
669
  if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
661
- if (fullColumnFieldData[property]) {
662
- warnLog('vxe.error.colRepet', ['field', property])
670
+ if (fullColumnFieldData[field]) {
671
+ warnLog('vxe.error.colRepet', ['field', field])
663
672
  }
664
673
  }
665
- fullColumnFieldData[property] = rest
674
+ fullColumnFieldData[field] = rest
666
675
  }
667
676
  if (!hasFixed && fixed) {
668
677
  hasFixed = fixed
@@ -874,8 +883,8 @@ const Methods = {
874
883
  const { radioOpts, checkboxOpts, treeConfig, treeOpts, expandOpts } = this
875
884
  const rowkey = getRowkey(this)
876
885
  this.tableFullColumn.forEach(column => {
877
- const { property, editRender } = column
878
- if (property && !XEUtils.has(record, property)) {
886
+ const { field, editRender } = column
887
+ if (field && !XEUtils.has(record, field)) {
879
888
  let cellValue = null
880
889
  if (editRender) {
881
890
  const { defaultValue } = editRender
@@ -885,7 +894,7 @@ const Methods = {
885
894
  cellValue = defaultValue
886
895
  }
887
896
  }
888
- XEUtils.set(record, property, cellValue)
897
+ XEUtils.set(record, field, cellValue)
889
898
  }
890
899
  })
891
900
  const otherFields = [radioOpts.labelField, checkboxOpts.checkField, checkboxOpts.labelField, expandOpts.labelField]
@@ -954,7 +963,7 @@ const Methods = {
954
963
  if (!this.isInsertByRow(row)) {
955
964
  const rowIndex = this.getRowIndex(row)
956
965
  if (treeConfig && rowIndex === -1) {
957
- throw new Error(UtilTools.getLog('vxe.error.noTree', ['revertData']))
966
+ errLog('vxe.error.noTree', ['revertData'])
958
967
  }
959
968
  const oRow = tableSourceData[rowIndex]
960
969
  if (oRow && row) {
@@ -993,7 +1002,7 @@ const Methods = {
993
1002
  } else {
994
1003
  rows.forEach(row => {
995
1004
  visibleColumn.forEach(column => {
996
- if (column.property) {
1005
+ if (column.field) {
997
1006
  setCellValue(row, column, null)
998
1007
  }
999
1008
  })
@@ -1045,7 +1054,7 @@ const Methods = {
1045
1054
  return !eqCellValue(oRow, row, field)
1046
1055
  }
1047
1056
  for (let index = 0, len = visibleColumn.length; index < len; index++) {
1048
- property = visibleColumn[index].property
1057
+ property = visibleColumn[index].field
1049
1058
  if (property && !eqCellValue(oRow, row, property)) {
1050
1059
  return true
1051
1060
  }
@@ -1103,14 +1112,14 @@ const Methods = {
1103
1112
  getCheckboxRecords (isFull) {
1104
1113
  const { tableFullData, afterFullData, treeConfig, treeOpts, checkboxOpts, tableFullTreeData, afterTreeFullData } = this
1105
1114
  const { transform, children, mapChildren } = treeOpts
1106
- const { checkField: property } = checkboxOpts
1115
+ const { checkField } = checkboxOpts
1107
1116
  const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData)
1108
1117
  let rowList = []
1109
- if (property) {
1118
+ if (checkField) {
1110
1119
  if (treeConfig) {
1111
- rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, property), { children: transform ? mapChildren : children })
1120
+ rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildren : children })
1112
1121
  } else {
1113
- rowList = currTableData.filter(row => XEUtils.get(row, property))
1122
+ rowList = currTableData.filter(row => XEUtils.get(row, checkField))
1114
1123
  }
1115
1124
  } else {
1116
1125
  const { selection } = this
@@ -1157,7 +1166,7 @@ const Methods = {
1157
1166
  const filterColumns = []
1158
1167
  let orderColumns = []
1159
1168
  tableFullColumn.forEach(column => {
1160
- const { property, sortable, order, filters } = column
1169
+ const { field, sortable, order, filters } = column
1161
1170
  if (!allRemoteFilter && filters && filters.length) {
1162
1171
  const valueList = []
1163
1172
  const itemList = []
@@ -1172,7 +1181,7 @@ const Methods = {
1172
1181
  }
1173
1182
  }
1174
1183
  if (!allRemoteSort && sortable && order) {
1175
- orderColumns.push({ column, field: column.property, property, order, sortTime: column.sortTime })
1184
+ orderColumns.push({ column, field, property: field, order, sortTime: column.sortTime })
1176
1185
  }
1177
1186
  })
1178
1187
  if (sortMultiple && chronological && orderColumns.length > 1) {
@@ -1182,7 +1191,7 @@ const Methods = {
1182
1191
  const handleFilter = (row) => {
1183
1192
  return filterColumns.every(({ column, valueList, itemList }) => {
1184
1193
  if (valueList.length && !allRemoteFilter) {
1185
- const { filterMethod, filterRender } = column
1194
+ const { filterMethod, filterRender, field } = column
1186
1195
  const compConf = filterRender ? VXETable.renderer.get(filterRender.name) : null
1187
1196
  const compFilterMethod = compConf && compConf.renderFilter ? compConf.filterMethod : null
1188
1197
  const defaultFilterMethod = compConf ? compConf.defaultFilterMethod : null
@@ -1196,7 +1205,7 @@ const Methods = {
1196
1205
  } else if (defaultFilterMethod) {
1197
1206
  return itemList.some((item) => defaultFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: this }))
1198
1207
  }
1199
- return valueList.indexOf(XEUtils.get(row, column.property)) > -1
1208
+ return valueList.indexOf(XEUtils.get(row, field)) > -1
1200
1209
  }
1201
1210
  return true
1202
1211
  })
@@ -1232,7 +1241,7 @@ const Methods = {
1232
1241
  tableData = tableTree
1233
1242
  } else {
1234
1243
  if (allSortMethod) {
1235
- const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.property, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
1244
+ const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.field, field: firstOrderColumn.field, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
1236
1245
  tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
1237
1246
  } else {
1238
1247
  // 兼容 v4
@@ -1312,8 +1321,9 @@ const Methods = {
1312
1321
  * 根据行的唯一主键获取行
1313
1322
  * @param {String/Number} rowid 行主键
1314
1323
  */
1315
- getRowById (rowid) {
1324
+ getRowById (cellValue) {
1316
1325
  const fullDataRowIdData = this.fullDataRowIdData
1326
+ const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue)
1317
1327
  return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].row : null
1318
1328
  },
1319
1329
  /**
@@ -2472,7 +2482,8 @@ const Methods = {
2472
2482
  // }
2473
2483
  // 如果是按下非功能键之外允许直接编辑
2474
2484
  if (selected.column && selected.row && isEnableConf(selected.column.editRender)) {
2475
- if (!editOpts.activeMethod || editOpts.activeMethod({ ...selected.args, $table: this })) {
2485
+ const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod
2486
+ if (!beforeEditMethod || beforeEditMethod({ ...selected.args, $table: this })) {
2476
2487
  if (editMethod) {
2477
2488
  editMethod({
2478
2489
  row: selected.row,
@@ -2750,9 +2761,9 @@ const Methods = {
2750
2761
  return this.$nextTick()
2751
2762
  },
2752
2763
  isCheckedByCheckboxRow (row) {
2753
- const { checkField: property } = this.checkboxOpts
2754
- if (property) {
2755
- return XEUtils.get(row, property)
2764
+ const { checkField } = this.checkboxOpts
2765
+ if (checkField) {
2766
+ return XEUtils.get(row, checkField)
2756
2767
  }
2757
2768
  return this.selection.indexOf(row) > -1
2758
2769
  },
@@ -2765,19 +2776,19 @@ const Methods = {
2765
2776
  */
2766
2777
  handleSelectRow ({ row }, value) {
2767
2778
  const { selection, afterFullData, treeConfig, treeOpts, treeIndeterminates, checkboxOpts } = this
2768
- const { checkField: property, checkStrictly, checkMethod } = checkboxOpts
2769
- if (property) {
2779
+ const { checkField, checkStrictly, checkMethod } = checkboxOpts
2780
+ if (checkField) {
2770
2781
  if (treeConfig && !checkStrictly) {
2771
2782
  if (value === -1) {
2772
2783
  if (treeIndeterminates.indexOf(row) === -1) {
2773
2784
  treeIndeterminates.push(row)
2774
2785
  }
2775
- XEUtils.set(row, property, false)
2786
+ XEUtils.set(row, checkField, false)
2776
2787
  } else {
2777
2788
  // 更新子节点状态
2778
2789
  XEUtils.eachTree([row], (item) => {
2779
2790
  if (row === item || (!checkMethod || checkMethod({ row: item }))) {
2780
- XEUtils.set(item, property, value)
2791
+ XEUtils.set(item, checkField, value)
2781
2792
  XEUtils.remove(treeIndeterminates, half => half === item)
2782
2793
  this.handleCheckboxReserveRow(row, value)
2783
2794
  }
@@ -2792,14 +2803,14 @@ const Methods = {
2792
2803
  if (indeterminatesItem) {
2793
2804
  parentStatus = -1
2794
2805
  } else {
2795
- const selectItems = matchObj.items.filter(item => XEUtils.get(item, property))
2806
+ const selectItems = matchObj.items.filter(item => XEUtils.get(item, checkField))
2796
2807
  parentStatus = selectItems.filter(item => vItems.indexOf(item) > -1).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
2797
2808
  }
2798
2809
  return this.handleSelectRow({ row: matchObj.parent }, parentStatus)
2799
2810
  }
2800
2811
  } else {
2801
2812
  if (!checkMethod || checkMethod({ row })) {
2802
- XEUtils.set(row, property, value)
2813
+ XEUtils.set(row, checkField, value)
2803
2814
  this.handleCheckboxReserveRow(row, value)
2804
2815
  }
2805
2816
  }
@@ -2855,9 +2866,9 @@ const Methods = {
2855
2866
  },
2856
2867
  handleToggleCheckRowEvent (evnt, params) {
2857
2868
  const { selection, checkboxOpts } = this
2858
- const { checkField: property } = checkboxOpts
2869
+ const { checkField } = checkboxOpts
2859
2870
  const { row } = params
2860
- const value = property ? !XEUtils.get(row, property) : selection.indexOf(row) === -1
2871
+ const value = checkField ? !XEUtils.get(row, checkField) : selection.indexOf(row) === -1
2861
2872
  if (evnt) {
2862
2873
  this.triggerCheckRowEvent(evnt, params, value)
2863
2874
  } else {
@@ -2884,7 +2895,7 @@ const Methods = {
2884
2895
  */
2885
2896
  setAllCheckboxRow (value) {
2886
2897
  const { afterFullData, treeConfig, treeOpts, selection, checkboxReserveRowMap, checkboxOpts } = this
2887
- const { checkField: property, reserve, checkStrictly, checkMethod } = checkboxOpts
2898
+ const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
2888
2899
  let selectRows = []
2889
2900
  const beforeSelection = treeConfig ? [] : selection.filter(row => afterFullData.indexOf(row) === -1)
2890
2901
  if (checkStrictly) {
@@ -2894,13 +2905,13 @@ const Methods = {
2894
2905
  * 绑定属性方式(高性能,有污染)
2895
2906
  * 必须在行数据存在对应的属性,否则将不响应
2896
2907
  */
2897
- if (property) {
2908
+ if (checkField) {
2898
2909
  const checkValFn = (row) => {
2899
2910
  if (!checkMethod || checkMethod({ row })) {
2900
2911
  if (value) {
2901
2912
  selectRows.push(row)
2902
2913
  }
2903
- XEUtils.set(row, property, value)
2914
+ XEUtils.set(row, checkField, value)
2904
2915
  }
2905
2916
  }
2906
2917
  // 如果存在选中方法
@@ -2972,7 +2983,7 @@ const Methods = {
2972
2983
  afterFullData.forEach(row => this.handleCheckboxReserveRow(row, false))
2973
2984
  }
2974
2985
  }
2975
- this.selection = property ? [] : beforeSelection.concat(selectRows)
2986
+ this.selection = checkField ? [] : beforeSelection.concat(selectRows)
2976
2987
  }
2977
2988
  this.treeIndeterminates = []
2978
2989
  this.checkSelectionStatus()
@@ -3183,12 +3194,12 @@ const Methods = {
3183
3194
  */
3184
3195
  clearCheckboxRow () {
3185
3196
  const { tableFullData, treeConfig, treeOpts, checkboxOpts } = this
3186
- const { checkField: property, reserve } = checkboxOpts
3187
- if (property) {
3197
+ const { checkField, reserve } = checkboxOpts
3198
+ if (checkField) {
3188
3199
  if (treeConfig) {
3189
- XEUtils.eachTree(tableFullData, item => XEUtils.set(item, property, false), treeOpts)
3200
+ XEUtils.eachTree(tableFullData, item => XEUtils.set(item, checkField, false), treeOpts)
3190
3201
  } else {
3191
- tableFullData.forEach(item => XEUtils.set(item, property, false))
3202
+ tableFullData.forEach(item => XEUtils.set(item, checkField, false))
3192
3203
  }
3193
3204
  }
3194
3205
  if (reserve) {
@@ -3536,14 +3547,14 @@ const Methods = {
3536
3547
  */
3537
3548
  triggerSortEvent (evnt, column, order) {
3538
3549
  const { sortOpts } = this
3539
- const property = column.property
3540
- if (column.sortable || column.remoteSort) {
3550
+ const { field, sortable, remoteSort } = column
3551
+ if (sortable || remoteSort) {
3541
3552
  if (!order || column.order === order) {
3542
3553
  this.clearSort(sortOpts.multiple ? column : null)
3543
3554
  } else {
3544
- this.sort({ field: property, order })
3555
+ this.sort({ field, order })
3545
3556
  }
3546
- const params = { column, property, order: column.order, sortList: this.getSortColumns() }
3557
+ const params = { column, field, property: field, order: column.order, sortList: this.getSortColumns() }
3547
3558
  this.emitEvent('sort-change', params, evnt)
3548
3559
  }
3549
3560
  },
@@ -3630,9 +3641,9 @@ const Methods = {
3630
3641
  const { multiple, chronological } = this.sortOpts
3631
3642
  const sortList = []
3632
3643
  this.tableFullColumn.forEach((column) => {
3633
- const { property, order } = column
3644
+ const { field, order } = column
3634
3645
  if ((column.sortable || column.remoteSort) && order) {
3635
- sortList.push({ column, field: column.property, property, order, sortTime: column.sortTime })
3646
+ sortList.push({ column, field, property: field, order, sortTime: column.sortTime })
3636
3647
  }
3637
3648
  })
3638
3649
  if (multiple && chronological && sortList.length > 1) {
@@ -3654,7 +3665,7 @@ const Methods = {
3654
3665
  visible: false
3655
3666
  })
3656
3667
  if (visible) {
3657
- this.emitEvent('filter-visible', { column, property: column.property, filterList: this.getCheckedFilters(), visible: false }, null)
3668
+ this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: false }, null)
3658
3669
  }
3659
3670
  return this.$nextTick()
3660
3671
  },
@@ -9,6 +9,7 @@ import { createResizeEvent } from '../../tools/resize'
9
9
  import { GlobalEvent } from '../../tools/event'
10
10
  import methods from './methods'
11
11
  import { warnLog, errLog } from '../../tools/log'
12
+ import VxeLoading from '../../loading/index'
12
13
 
13
14
  /**
14
15
  * 渲染浮固定列
@@ -829,6 +830,9 @@ export default {
829
830
  if (this.emptyRender && !XEUtils.isObject(this.emptyRender)) {
830
831
  warnLog('vxe.error.errProp', [`table.empty-render=${this.emptyRender}`, 'table.empty-render={}'])
831
832
  }
833
+ // if (this.editConfig && this.editConfig.activeMethod) {
834
+ // warnLog('vxe.error.delProp', ['table.edit-config.activeMethod', 'table.edit-config.beforeEditMethod'])
835
+ // }
832
836
  }
833
837
 
834
838
  // 检查是否有安装需要的模块
@@ -1083,15 +1087,12 @@ export default {
1083
1087
  /**
1084
1088
  * 加载中
1085
1089
  */
1086
- h('div', {
1087
- class: ['vxe-table--loading vxe-loading', {
1088
- 'is--visible': loading
1089
- }]
1090
- }, [
1091
- h('div', {
1092
- class: 'vxe-loading--spinner'
1093
- })
1094
- ]),
1090
+ h(VxeLoading, {
1091
+ class: 'vxe-table--loading',
1092
+ props: {
1093
+ loading
1094
+ }
1095
+ }),
1095
1096
  /**
1096
1097
  * 筛选
1097
1098
  */
@@ -45,10 +45,10 @@ export const UtilTools = {
45
45
  return '' + (value === '' || value === null || value === undefined ? (placeholder ? GlobalConfig.emptyCell : '') : value)
46
46
  },
47
47
  getCellValue (row, column) {
48
- return XEUtils.get(row, column.property)
48
+ return XEUtils.get(row, column.field)
49
49
  },
50
50
  setCellValue (row, column, value) {
51
- return XEUtils.set(row, column.property, value)
51
+ return XEUtils.set(row, column.field, value)
52
52
  },
53
53
  // 组装列配置
54
54
  assemColumn (_vm) {
@@ -6,6 +6,7 @@ export default {
6
6
  version: 0, // 版本号,对于某些带数据缓存的功能有用到,上升版本号可以用于重置数据
7
7
  // resizeInterval: 500,
8
8
  emptyCell: ' ',
9
+ loadingText: null, // 自定义loading提示内容,如果为null则不显示文本
9
10
  table: {
10
11
  fit: true,
11
12
  showHeader: true,
@@ -123,6 +124,9 @@ export default {
123
124
  types: {}
124
125
  },
125
126
  icon: {
127
+ // loading
128
+ // LOADING: iconPrefix + 'refresh roll vxe-loading--default-icon',
129
+
126
130
  // table
127
131
  TABLE_SORT_ASC: iconPrefix + 'caret-top',
128
132
  TABLE_SORT_DESC: iconPrefix + 'caret-bottom',
@@ -260,8 +264,8 @@ export default {
260
264
  // parseFormat: 'yyyy-MM-dd HH:mm:ss.SSS',
261
265
  // labelFormat: '',
262
266
  // valueFormat: '',
263
- minDate: new Date(1900, 0, 1),
264
- maxDate: new Date(2100, 0, 1),
267
+ startDate: new Date(1900, 0, 1),
268
+ endDate: new Date(2100, 0, 1),
265
269
  startDay: 1,
266
270
  selectDay: 1,
267
271
  digits: 2,
@@ -19,13 +19,17 @@ class Store {
19
19
  }
20
20
 
21
21
  add (name, render) {
22
+ const conf = this.store[name]
22
23
  // 检测是否覆盖
23
24
  if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
24
- if (!XEUtils.eqNull(this.store[name]) && this.store[name] !== render) {
25
- warnLog('vxe.error.coverProp', [this._name, name])
26
- }
25
+ const confKeys = XEUtils.keys(conf)
26
+ XEUtils.each(render, (item, key) => {
27
+ if (confKeys.includes(key)) {
28
+ warnLog('vxe.error.coverProp', [name, key])
29
+ }
30
+ })
27
31
  }
28
- this.store[name] = render
32
+ this.store[name] = conf ? XEUtils.merge(conf, render) : render
29
33
  return Store
30
34
  }
31
35
 
package/styles/form.scss CHANGED
@@ -177,6 +177,7 @@
177
177
  .vxe-form--item-content {
178
178
  position: relative;
179
179
  flex-grow: 1;
180
+ word-break: break-all;
180
181
  }
181
182
  }
182
183
  .vxe-default-input,
@@ -12,13 +12,26 @@
12
12
  &.is--visible {
13
13
  display: block;
14
14
  }
15
+ & > .vxe-loading--chunk {
16
+ width: 100%;
17
+ position: absolute;
18
+ top: 50%;
19
+ left: 0;
20
+ transform: translateY(-50%);
21
+ text-align: center;
22
+ color: $vxe-primary-color;
23
+ }
24
+ .vxe-loading--default-icon {
25
+ font-size: 1.2em;
26
+ }
27
+ .vxe-loading--text {
28
+ padding: 0.4em 0;
29
+ }
15
30
  .vxe-loading--spinner {
31
+ display: inline-block;
32
+ position: relative;
16
33
  width: 56px;
17
34
  height: 56px;
18
- position: absolute;
19
- top: 50%;
20
- left: 50%;
21
- transform: translate(-50%, -50%);
22
35
  &:before,
23
36
  &:after {
24
37
  content: "";
package/styles/modal.scss CHANGED
@@ -246,7 +246,7 @@
246
246
  background-color: $vxe-modal-header-background-color;
247
247
  border-radius: $vxe-border-radius $vxe-border-radius 0 0;
248
248
  user-select: none;
249
- &.is--drag {
249
+ &.is--draggable {
250
250
  cursor: move;
251
251
  }
252
252
  &.is--ellipsis {
@@ -1,4 +1,5 @@
1
1
  @import './icon.scss';
2
+ @import './loading.scss';
2
3
  @import './table.scss';
3
4
  @import './column.scss';
4
5
  @import './colgroup.scss';
@@ -1,6 +1,5 @@
1
1
  /**Variable**/
2
2
  @import './helpers/mixin.scss';
3
- @import './base/loading.scss';
4
3
 
5
4
  .vxe-select {
6
5
  position: relative;
@@ -34,9 +33,11 @@
34
33
  }
35
34
  }
36
35
  &.is--active {
37
- & > .vxe-input {
38
- .vxe-input--inner {
39
- border: 1px solid $vxe-primary-color;
36
+ &:not(.is--filter) {
37
+ & > .vxe-input {
38
+ .vxe-input--inner {
39
+ border: 1px solid $vxe-primary-color;
40
+ }
40
41
  }
41
42
  }
42
43
  }
@@ -77,7 +78,15 @@
77
78
  }
78
79
  }
79
80
 
81
+ .vxe-select-filter--wrapper {
82
+ display: block;
83
+ .vxe-select-filter--input {
84
+ width: 100%;
85
+ }
86
+ }
87
+
80
88
  .vxe-select-option--wrapper {
89
+ position: relative;
81
90
  overflow-x: hidden;
82
91
  overflow-y: auto;
83
92
  padding: 4px 0;
@@ -103,7 +112,7 @@
103
112
  }
104
113
 
105
114
  .vxe-select-option {
106
- padding: 0 10px;
115
+ padding: 0 0.6em;
107
116
  max-width: 600px;
108
117
  white-space: nowrap;
109
118
  overflow: hidden;
@@ -126,8 +135,13 @@
126
135
  }
127
136
  }
128
137
 
138
+ .vxe-select--search-icon {
139
+ margin-right: 0.5em;
140
+ }
141
+
142
+ .vxe-select--search-loading,
129
143
  .vxe-select--empty-placeholder {
130
- padding: 0 10px;
144
+ padding: 0 0.6em;
131
145
  text-align: center;
132
146
  color: $vxe-select-empty-color;
133
147
  }
@@ -153,6 +167,7 @@
153
167
  }
154
168
  .vxe-optgroup--title,
155
169
  .vxe-select-option,
170
+ .vxe-select--search-loading,
156
171
  .vxe-select--empty-placeholder {
157
172
  line-height: $vxe-select-option-height-default;
158
173
  }
@@ -163,6 +178,7 @@
163
178
  }
164
179
  .vxe-optgroup--title,
165
180
  .vxe-select-option,
181
+ .vxe-select--search-loading,
166
182
  .vxe-select--empty-placeholder {
167
183
  line-height: $vxe-select-option-height-medium;
168
184
  }
@@ -174,6 +190,7 @@
174
190
  }
175
191
  .vxe-optgroup--title,
176
192
  .vxe-select-option,
193
+ .vxe-select--search-loading,
177
194
  .vxe-select--empty-placeholder {
178
195
  line-height: $vxe-select-option-height-small;
179
196
  }
@@ -185,6 +202,7 @@
185
202
  }
186
203
  .vxe-optgroup--title,
187
204
  .vxe-select-option,
205
+ .vxe-select--search-loading,
188
206
  .vxe-select--empty-placeholder {
189
207
  line-height: $vxe-select-option-height-mini;
190
208
  }
package/styles/table.scss CHANGED
@@ -2,7 +2,6 @@
2
2
  @import './helpers/mixin.scss';
3
3
  @import './base/checked.scss';
4
4
  @import './base/common.scss';
5
- @import './base/loading.scss';
6
5
 
7
6
  %DefaultColumnHeight {
8
7
  height: $vxe-table-row-height-default;