vxe-table 3.7.7-beta.3 → 3.7.7-beta.4

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 (69) hide show
  1. package/README.md +1 -1
  2. package/helper/vetur/attributes.json +0 -4
  3. package/helper/vetur/tags.json +1 -2
  4. package/lib/edit/src/mixin.js +24 -5
  5. package/lib/edit/src/mixin.min.js +1 -1
  6. package/lib/grid/src/grid.js +21 -61
  7. package/lib/grid/src/grid.min.js +1 -1
  8. package/lib/grid/style/style.css +0 -18
  9. package/lib/grid/style/style.min.css +1 -1
  10. package/lib/icon/style/style.css +1 -1
  11. package/lib/icon/style/style.min.css +1 -1
  12. package/lib/index.css +1 -1
  13. package/lib/index.umd.js +496 -310
  14. package/lib/index.umd.min.js +1 -1
  15. package/lib/pulldown/src/pulldown.js +19 -6
  16. package/lib/pulldown/src/pulldown.min.js +1 -1
  17. package/lib/pulldown/style/style.css +2 -2
  18. package/lib/pulldown/style/style.min.css +1 -1
  19. package/lib/select/src/select.js +69 -48
  20. package/lib/select/src/select.min.js +1 -1
  21. package/lib/select/style/style.css +23 -6
  22. package/lib/select/style/style.min.css +1 -1
  23. package/lib/style.css +1 -1
  24. package/lib/style.min.css +1 -1
  25. package/lib/table/src/body.js +19 -14
  26. package/lib/table/src/body.min.js +1 -1
  27. package/lib/table/src/methods.js +217 -130
  28. package/lib/table/src/methods.min.js +1 -1
  29. package/lib/table/src/table.js +10 -8
  30. package/lib/table/src/table.min.js +1 -1
  31. package/lib/table/style/style.css +72 -23
  32. package/lib/table/style/style.min.css +1 -1
  33. package/lib/textarea/src/textarea.js +1 -1
  34. package/lib/textarea/src/textarea.min.js +1 -1
  35. package/lib/tools/log.js +1 -1
  36. package/lib/tools/log.min.js +1 -1
  37. package/lib/tooltip/src/tooltip.js +1 -1
  38. package/lib/tooltip/src/tooltip.min.js +1 -1
  39. package/lib/v-x-e-table/index.js +1 -1
  40. package/lib/v-x-e-table/index.min.js +1 -1
  41. package/lib/v-x-e-table/src/conf.js +1 -1
  42. package/lib/v-x-e-table/src/conf.min.js +1 -1
  43. package/lib/validator/src/mixin.js +111 -33
  44. package/lib/validator/src/mixin.min.js +1 -1
  45. package/package.json +1 -1
  46. package/packages/edit/src/mixin.js +24 -5
  47. package/packages/grid/src/grid.js +16 -45
  48. package/packages/pulldown/src/pulldown.js +18 -6
  49. package/packages/select/src/select.js +33 -12
  50. package/packages/table/src/body.js +20 -15
  51. package/packages/table/src/methods.js +106 -23
  52. package/packages/table/src/table.js +10 -7
  53. package/packages/textarea/src/textarea.js +1 -1
  54. package/packages/tooltip/src/tooltip.js +1 -1
  55. package/packages/v-x-e-table/src/conf.js +1 -1
  56. package/packages/validator/src/mixin.js +105 -35
  57. package/styles/grid.scss +0 -20
  58. package/styles/pulldown.scss +2 -2
  59. package/styles/select.scss +23 -6
  60. package/styles/table.scss +95 -23
  61. package/types/grid.d.ts +1 -1
  62. package/types/table.d.ts +22 -0
  63. package/types/v-x-e-table/renderer.d.ts +1 -1
  64. /package/lib/icon/style/{iconfont.1701045072322.ttf → iconfont.1703431233417.ttf} +0 -0
  65. /package/lib/icon/style/{iconfont.1701045072322.woff → iconfont.1703431233417.woff} +0 -0
  66. /package/lib/icon/style/{iconfont.1701045072322.woff2 → iconfont.1703431233417.woff2} +0 -0
  67. /package/lib/{iconfont.1701045072322.ttf → iconfont.1703431233417.ttf} +0 -0
  68. /package/lib/{iconfont.1701045072322.woff → iconfont.1703431233417.woff} +0 -0
  69. /package/lib/{iconfont.1701045072322.woff2 → iconfont.1703431233417.woff2} +0 -0
@@ -139,8 +139,9 @@ function checkOptionDisabled (_vm, isSelected, option, group) {
139
139
  }
140
140
 
141
141
  export function renderOption (h, _vm, list, group) {
142
- const { isGroup, labelField, valueField, optionKey, value, multiple, currentValue, optionOpts } = _vm
142
+ const { $scopedSlots, isGroup, labelField, valueField, optionKey, value, multiple, currentValue, optionOpts } = _vm
143
143
  const { useKey } = optionOpts
144
+ const optionSlot = $scopedSlots.option
144
145
  return list.map((option, cIndex) => {
145
146
  const { slots } = option
146
147
  const optionValue = option[valueField]
@@ -149,6 +150,7 @@ export function renderOption (h, _vm, list, group) {
149
150
  const isDisabled = checkOptionDisabled(_vm, isSelected, option, group)
150
151
  const optid = getOptid(_vm, option)
151
152
  const defaultSlot = slots ? slots.default : null
153
+ const optParams = { option, group: null, $select: _vm }
152
154
  return isVisible ? h('div', {
153
155
  key: useKey || optionKey ? optid : cIndex,
154
156
  class: ['vxe-select-option', option.className, {
@@ -172,18 +174,20 @@ export function renderOption (h, _vm, list, group) {
172
174
  }
173
175
  }
174
176
  }
175
- }, defaultSlot ? _vm.callSlot(defaultSlot, { option, $select: _vm }, h) : UtilTools.formatText(getFuncText(option[labelField]))) : null
177
+ }, optionSlot ? _vm.callSlot(optionSlot, optParams, h) : (defaultSlot ? _vm.callSlot(defaultSlot, optParams, h) : UtilTools.formatText(getFuncText(option[labelField])))) : null
176
178
  })
177
179
  }
178
180
 
179
181
  export function renderOptgroup (h, _vm) {
180
- const { optionKey, visibleGroupList, groupLabelField, groupOptionsField, optionOpts } = _vm
182
+ const { $scopedSlots, optionKey, visibleGroupList, groupLabelField, groupOptionsField, optionOpts } = _vm
181
183
  const { useKey } = optionOpts
184
+ const optionSlot = $scopedSlots.option
182
185
  return visibleGroupList.map((group, gIndex) => {
183
186
  const { slots } = group
184
187
  const optid = getOptid(_vm, group)
185
188
  const isGroupDisabled = group.disabled
186
189
  const defaultSlot = slots ? slots.default : null
190
+ const optParams = { option: group, group, $select: _vm }
187
191
  return h('div', {
188
192
  key: useKey || optionKey ? optid : gIndex,
189
193
  class: ['vxe-optgroup', group.className, {
@@ -195,7 +199,7 @@ export function renderOptgroup (h, _vm) {
195
199
  }, [
196
200
  h('div', {
197
201
  class: 'vxe-optgroup--title'
198
- }, defaultSlot ? _vm.callSlot(defaultSlot, { option: group, $select: _vm }, h) : getFuncText(group[groupLabelField])),
202
+ }, optionSlot ? _vm.callSlot(optionSlot, optParams, h) : (defaultSlot ? _vm.callSlot(defaultSlot, optParams, h) : getFuncText(group[groupLabelField]))),
199
203
  h('div', {
200
204
  class: 'vxe-optgroup--wrapper'
201
205
  }, renderOption(h, _vm, group[groupOptionsField], group))
@@ -413,7 +417,10 @@ export default {
413
417
  },
414
418
  render (h) {
415
419
  const { _e, $scopedSlots, vSize, className, popupClassName, inited, isActivated, loading, disabled, visiblePanel, filterable } = this
420
+ const defaultSlot = $scopedSlots.default
416
421
  const prefixSlot = $scopedSlots.prefix
422
+ const headerSlot = $scopedSlots.header
423
+ const footerSlot = $scopedSlots.footer
417
424
  return h('div', {
418
425
  class: ['vxe-select', className ? (XEUtils.isFunction(className) ? className({ $select: this }) : className) : '', {
419
426
  [`size--${vSize}`]: vSize,
@@ -427,7 +434,7 @@ export default {
427
434
  h('div', {
428
435
  class: 'vxe-select-slots',
429
436
  ref: 'hideOption'
430
- }, this.$slots.default),
437
+ }, defaultSlot ? defaultSlot.call(this, {}) : []),
431
438
  h('vxe-input', {
432
439
  ref: 'input',
433
440
  props: {
@@ -448,7 +455,7 @@ export default {
448
455
  'suffix-click': this.togglePanelEvent
449
456
  },
450
457
  scopedSlots: prefixSlot ? {
451
- prefix: () => prefixSlot({})
458
+ prefix: () => prefixSlot.call(this, {})
452
459
  } : {}
453
460
  }),
454
461
  h('div', {
@@ -465,11 +472,11 @@ export default {
465
472
  style: this.panelStyle
466
473
  }, inited ? [
467
474
  filterable ? h('div', {
468
- class: 'vxe-select-filter--wrapper'
475
+ class: 'vxe-select--panel-search'
469
476
  }, [
470
477
  h('vxe-input', {
471
478
  ref: 'inpSearch',
472
- class: 'vxe-select-filter--input',
479
+ class: 'vxe-select-search--input',
473
480
  props: {
474
481
  value: this.searchValue,
475
482
  type: 'text',
@@ -487,10 +494,24 @@ export default {
487
494
  })
488
495
  ]) : _e(),
489
496
  h('div', {
490
- ref: 'optWrapper',
491
- class: 'vxe-select-option--wrapper'
492
- }, renderOpts(h, this))
493
- ] : null)
497
+ class: 'vxe-select--panel-wrapper'
498
+ }, [
499
+ headerSlot ? h('div', {
500
+ class: 'vxe-select--panel-header'
501
+ }, headerSlot.call(this, {})) : _e(),
502
+ h('div', {
503
+ class: 'vxe-select--panel-body'
504
+ }, [
505
+ h('div', {
506
+ ref: 'optWrapper',
507
+ class: 'vxe-select-option--wrapper'
508
+ }, renderOpts(h, this))
509
+ ]),
510
+ footerSlot ? h('div', {
511
+ class: 'vxe-select--panel-footer'
512
+ }, footerSlot.call(this, {})) : _e()
513
+ ])
514
+ ] : [])
494
515
  ])
495
516
  },
496
517
  methods: {
@@ -82,10 +82,10 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
82
82
  editRules,
83
83
  validOpts,
84
84
  editStore,
85
- validStore,
86
85
  tooltipConfig,
87
86
  rowOpts,
88
- columnOpts
87
+ columnOpts,
88
+ validErrorMaps
89
89
  } = $xetable
90
90
  const { type, cellRender, editRender, align, showOverflow, className, treeNode } = column
91
91
  const { actived } = editStore
@@ -108,7 +108,7 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
108
108
  let isDirty
109
109
  const tdOns = {}
110
110
  const cellAlign = align || allAlign
111
- const hasValidError = validStore.row === row && validStore.column === column
111
+ const errorValidItem = validErrorMaps[`${rowid}:${column.id}`]
112
112
  const showValidTip = editRules && validOpts.showMessage && (validOpts.message === 'default' ? (height || tableData.length > 1) : validOpts.message === 'inline')
113
113
  const attrs = { colid: column.id }
114
114
  const bindMouseenter = tableListeners['cell-mouseenter']
@@ -244,17 +244,17 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
244
244
  }
245
245
  }, column.renderCell(h, params))
246
246
  )
247
- if (showValidTip && hasValidError) {
247
+ if (showValidTip && errorValidItem) {
248
248
  tdVNs.push(
249
249
  h('div', {
250
- class: 'vxe-cell--valid',
251
- style: validStore.rule && validStore.rule.maxWidth ? {
252
- width: `${validStore.rule.maxWidth}px`
250
+ class: 'vxe-cell--valid-error-hint',
251
+ style: errorValidItem.rule && errorValidItem.rule.maxWidth ? {
252
+ width: `${errorValidItem.rule.maxWidth}px`
253
253
  } : null
254
254
  }, [
255
255
  h('span', {
256
- class: 'vxe-cell--valid-msg'
257
- }, validStore.content)
256
+ class: 'vxe-cell--valid-error-msg'
257
+ }, errorValidItem.content)
258
258
  ])
259
259
  )
260
260
  }
@@ -272,8 +272,8 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
272
272
  'col--ellipsis': hasEllipsis,
273
273
  'fixed--hidden': fixedHiddenColumn,
274
274
  'col--dirty': isDirty,
275
- 'col--actived': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
276
- 'col--valid-error': hasValidError,
275
+ 'col--active': editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === 'row')),
276
+ 'col--valid-error': !!errorValidItem,
277
277
  'col--current': currentColumn === column
278
278
  },
279
279
  UtilTools.getClass(compCellClassName, params),
@@ -310,7 +310,9 @@ function renderRows (h, _vm, $xetable, fixedType, tableData, tableColumn) {
310
310
  expandColumn,
311
311
  hasFixedColumn,
312
312
  fullAllDataRowIdData,
313
- rowOpts
313
+ rowOpts,
314
+ pendingRowList,
315
+ pendingRowMaps
314
316
  } = $xetable
315
317
  const childrenField = treeOpts.children || treeOpts.childrenField
316
318
  const rows = []
@@ -366,7 +368,8 @@ function renderRows (h, _vm, $xetable, fixedType, tableData, tableColumn) {
366
368
  'is--expand-tree': isExpandTree,
367
369
  'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
368
370
  'row--radio': radioOpts.highlight && $xetable.selectRadioRow === row,
369
- 'row--checked': checkboxOpts.highlight && $xetable.isCheckedByCheckboxRow(row)
371
+ 'row--checked': checkboxOpts.highlight && $xetable.isCheckedByCheckboxRow(row),
372
+ 'row--pending': pendingRowList.length && !!pendingRowMaps[rowid]
370
373
  },
371
374
  rowClassName ? (XEUtils.isFunction(rowClassName) ? rowClassName(params) : rowClassName) : ''
372
375
  ],
@@ -499,8 +502,10 @@ export default {
499
502
  elemStore[`${prefix}xSpace`] = $refs.xSpace
500
503
  elemStore[`${prefix}ySpace`] = $refs.ySpace
501
504
  elemStore[`${prefix}emptyBlock`] = $refs.emptyBlock
502
- this.$el.onscroll = this.scrollEvent
503
- this.$el._onscroll = this.scrollEvent
505
+ if (this.$el) {
506
+ this.$el.onscroll = this.scrollEvent
507
+ this.$el._onscroll = this.scrollEvent
508
+ }
504
509
  },
505
510
  beforeDestroy () {
506
511
  clearTimeout(this.wheelTime)
@@ -2389,7 +2389,7 @@ const Methods = {
2389
2389
  * 全局按下事件处理
2390
2390
  */
2391
2391
  handleGlobalMousedownEvent (evnt) {
2392
- const { $el, $refs, $xegrid, $toolbar, mouseConfig, editStore, ctxMenuStore, editOpts, filterStore, getRowNode } = this
2392
+ const { $el, $refs, $xegrid, $toolbar, mouseConfig, editStore, ctxMenuStore, editRules, editOpts, validOpts, filterStore, getRowNode } = this
2393
2393
  const { actived } = editStore
2394
2394
  const { ctxWrapper, filterWrapper, validTip } = $refs
2395
2395
  if (filterWrapper) {
@@ -2466,8 +2466,13 @@ const Methods = {
2466
2466
  if (ctxMenuStore.visible && ctxWrapper && !getEventTargetNode(evnt, ctxWrapper.$el).flag) {
2467
2467
  this.closeMenu()
2468
2468
  }
2469
+ const isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag
2470
+ // 如果存在校验,点击了表格之外则清除
2471
+ if (!isActivated && editRules && validOpts.autoClear) {
2472
+ this.validErrorMaps = {}
2473
+ }
2469
2474
  // 最后激活的表格
2470
- this.isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag
2475
+ this.isActivated = isActivated
2471
2476
  },
2472
2477
  /**
2473
2478
  * 窗口失焦事件处理
@@ -3944,6 +3949,74 @@ const Methods = {
3944
3949
  this.emitEvent('sort-change', params, evnt)
3945
3950
  }
3946
3951
  },
3952
+ setPendingRow (rows, status) {
3953
+ const pendingMaps = { ...this.pendingRowMaps }
3954
+ const pendingList = [...this.pendingRowList]
3955
+ if (rows && !XEUtils.isArray(rows)) {
3956
+ rows = [rows]
3957
+ }
3958
+ if (status) {
3959
+ rows.forEach((row) => {
3960
+ const rowid = getRowid(this, row)
3961
+ if (rowid && !pendingMaps[rowid]) {
3962
+ pendingList.push(row)
3963
+ pendingMaps[rowid] = row
3964
+ }
3965
+ })
3966
+ } else {
3967
+ rows.forEach((row) => {
3968
+ const rowid = getRowid(this, row)
3969
+ if (rowid && pendingMaps[rowid]) {
3970
+ const pendingIndex = this.findRowIndexOf(pendingList, row)
3971
+ if (pendingIndex > -1) {
3972
+ pendingList.splice(pendingIndex, 1)
3973
+ }
3974
+ delete pendingMaps[rowid]
3975
+ }
3976
+ })
3977
+ }
3978
+ this.pendingRowMaps = pendingMaps
3979
+ this.pendingRowList = pendingList
3980
+ return this.$nextTick()
3981
+ },
3982
+ togglePendingRow (rows) {
3983
+ const pendingMaps = { ...this.pendingRowMaps }
3984
+ const pendingList = [...this.pendingRowList]
3985
+ if (rows && !XEUtils.isArray(rows)) {
3986
+ rows = [rows]
3987
+ }
3988
+ rows.forEach((row) => {
3989
+ const rowid = getRowid(this, row)
3990
+ if (rowid) {
3991
+ if (pendingMaps[rowid]) {
3992
+ const pendingIndex = this.findRowIndexOf(pendingList, row)
3993
+ if (pendingIndex > -1) {
3994
+ pendingList.splice(pendingIndex, 1)
3995
+ }
3996
+ delete pendingMaps[rowid]
3997
+ } else {
3998
+ pendingList.push(row)
3999
+ pendingMaps[rowid] = row
4000
+ }
4001
+ }
4002
+ })
4003
+ this.pendingRowMaps = pendingMaps
4004
+ this.pendingRowList = pendingList
4005
+ return this.$nextTick()
4006
+ },
4007
+ getPendingRecords () {
4008
+ return this.pendingRowList.slice(0)
4009
+ },
4010
+ hasPendingByRow (row) {
4011
+ const { pendingRowMaps } = this
4012
+ const rowid = getRowid(this, row)
4013
+ return !!pendingRowMaps[rowid]
4014
+ },
4015
+ clearPendingRow () {
4016
+ this.pendingRowMaps = {}
4017
+ this.pendingRowList = []
4018
+ return this.$nextTick()
4019
+ },
3947
4020
  sort (sortConfs, sortOrder) {
3948
4021
  const { sortOpts } = this
3949
4022
  const { multiple, remote, orders } = sortOpts
@@ -4126,7 +4199,7 @@ const Methods = {
4126
4199
  const { lazy } = expandOpts
4127
4200
  const rowid = getRowid(this, row)
4128
4201
  if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
4129
- const expanded = !this.isExpandByRow(row)
4202
+ const expanded = !this.isRowExpandByRow(row)
4130
4203
  const columnIndex = this.getColumnIndex(column)
4131
4204
  const $columnIndex = this.getVMColumnIndex(column)
4132
4205
  this.setRowExpand(row, expanded)
@@ -4137,7 +4210,7 @@ const Methods = {
4137
4210
  * 切换展开行
4138
4211
  */
4139
4212
  toggleRowExpand (row) {
4140
- return this.setRowExpand(row, !this.isExpandByRow(row))
4213
+ return this.setRowExpand(row, !this.isRowExpandByRow(row))
4141
4214
  },
4142
4215
  /**
4143
4216
  * 处理默认展开行
@@ -4263,11 +4336,18 @@ const Methods = {
4263
4336
  * 判断行是否为展开状态
4264
4337
  * @param {Row} row 行对象
4265
4338
  */
4266
- isExpandByRow (row) {
4339
+ isRowExpandByRow (row) {
4267
4340
  const { rowExpandedMaps } = this
4268
4341
  const rowid = getRowid(this, row)
4269
4342
  return !!rowExpandedMaps[rowid]
4270
4343
  },
4344
+ isExpandByRow (row) {
4345
+ // if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
4346
+ // warnLog('vxe.error.delFunc', ['isExpandByRow', 'isRowExpandByRow'])
4347
+ // }
4348
+ // 即将废弃
4349
+ return this.isRowExpandByRow(row)
4350
+ },
4271
4351
  /**
4272
4352
  * 手动清空展开行状态,数据会恢复成未展开的状态
4273
4353
  */
@@ -4944,7 +5024,7 @@ const Methods = {
4944
5024
  return this.$nextTick()
4945
5025
  },
4946
5026
  /**
4947
- * 更新列状态
5027
+ * 更新列状态 updateStatus({ row, column }, cellValue)
4948
5028
  * 如果组件值 v-model 发生 change 时,调用改函数用于更新某一列编辑状态
4949
5029
  * 如果单元格配置了校验规则,则会进行校验
4950
5030
  */
@@ -4952,25 +5032,28 @@ const Methods = {
4952
5032
  const customVal = !XEUtils.isUndefined(cellValue)
4953
5033
  return this.$nextTick().then(() => {
4954
5034
  const { $refs, editRules, validStore } = this
4955
- if (slotParams && $refs.tableBody && editRules) {
5035
+ const tableBody = $refs.tableBody
5036
+ if (slotParams && tableBody && editRules) {
4956
5037
  const { row, column } = slotParams
4957
5038
  const type = 'change'
4958
- if (this.hasCellRules(type, row, column)) {
4959
- const cell = this.getCell(row, column)
4960
- if (cell) {
4961
- return this.validCellRules(type, row, column, cellValue)
4962
- .then(() => {
4963
- if (customVal && validStore.visible) {
4964
- setCellValue(row, column, cellValue)
4965
- }
4966
- this.clearValidate()
4967
- })
4968
- .catch(({ rule }) => {
4969
- if (customVal) {
4970
- setCellValue(row, column, cellValue)
4971
- }
4972
- this.showValidTooltip({ rule, row, column, cell })
4973
- })
5039
+ if (this.hasCellRules) {
5040
+ if (this.hasCellRules(type, row, column)) {
5041
+ const cell = this.getCell(row, column)
5042
+ if (cell) {
5043
+ return this.validCellRules(type, row, column, cellValue)
5044
+ .then(() => {
5045
+ if (customVal && validStore.visible) {
5046
+ setCellValue(row, column, cellValue)
5047
+ }
5048
+ this.clearValidate(row, column)
5049
+ })
5050
+ .catch(({ rule }) => {
5051
+ if (customVal) {
5052
+ setCellValue(row, column, cellValue)
5053
+ }
5054
+ this.showValidTooltip({ rule, row, column, cell })
5055
+ })
5056
+ }
4974
5057
  }
4975
5058
  }
4976
5059
  }
@@ -343,6 +343,10 @@ export default {
343
343
  upDataFlag: 0,
344
344
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
345
345
  reColumnFlag: 0,
346
+ // 已标记的对象集
347
+ pendingRowMaps: {},
348
+ // 已标记的行
349
+ pendingRowList: [],
346
350
  // 当前选中的筛选列
347
351
  filterStore: {
348
352
  isAllSelected: false,
@@ -413,13 +417,9 @@ export default {
413
417
  },
414
418
  // 存放数据校验相关信息
415
419
  validStore: {
416
- visible: false,
417
- row: null,
418
- column: null,
419
- content: '',
420
- rule: null,
421
- isArrow: false
420
+ visible: false
422
421
  },
422
+ validErrorMaps: {},
423
423
  // 导入相关信息
424
424
  importStore: {
425
425
  inited: false,
@@ -1044,6 +1044,7 @@ export default {
1044
1044
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
1045
1045
  [`vaild-msg--${validOpts.msgMode}`]: !!editRules,
1046
1046
  'vxe-editable': !!editConfig,
1047
+ 'old-cell-valid': editRules && GlobalConfig.cellVaildMode === 'obsolete',
1047
1048
  'cell--highlight': highlightCell,
1048
1049
  'cell--selected': mouseConfig && mouseOpts.selected,
1049
1050
  'cell--area': mouseConfig && mouseOpts.area,
@@ -1227,7 +1228,9 @@ export default {
1227
1228
  */
1228
1229
  hasTip && this.editRules && validOpts.showMessage && (validOpts.message === 'default' ? !height : validOpts.message === 'tooltip') ? h('vxe-tooltip', {
1229
1230
  ref: 'validTip',
1230
- class: 'vxe-table--valid-error',
1231
+ class: [{
1232
+ 'old-cell-valid': editRules && GlobalConfig.cellVaildMode === 'obsolete'
1233
+ }, 'vxe-table--valid-error'],
1231
1234
  props: validOpts.message === 'tooltip' || tableData.length === 1 ? validTipOpts : null
1232
1235
  }) : _e()
1233
1236
  ])
@@ -188,7 +188,7 @@ export default {
188
188
  autoTxtElem.className = ['vxe-textarea--autosize', size ? `size--${size}` : ''].join(' ')
189
189
  autoTxtElem.style.width = `${textElem.clientWidth}px`
190
190
  autoTxtElem.style.padding = textStyle.padding
191
- autoTxtElem.innerHTML = ('' + (inputValue || ' ')).replace(/\n$/, '\n ')
191
+ autoTxtElem.innerText = ('' + (inputValue || ' ')).replace(/\n$/, '\n ')
192
192
  }
193
193
  },
194
194
  handleResize () {
@@ -175,7 +175,7 @@ export default {
175
175
  'is--enterable': enterable,
176
176
  'is--visible': visible,
177
177
  'is--arrow': isArrow,
178
- 'is--actived': tipActive
178
+ 'is--active': tipActive
179
179
  }],
180
180
  style: tipStore.style,
181
181
  ref: 'tipWrapper',
@@ -12,7 +12,7 @@ export default {
12
12
  showHeader: true,
13
13
  animat: true,
14
14
  delayHover: 250,
15
- autoResize: false,
15
+ autoResize: true,
16
16
  minHeight: 144,
17
17
  // keepSource: false,
18
18
  // showOverflow: null,