vxe-table 3.7.7-beta.2 → 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.
- package/README.md +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/edit/src/mixin.js +24 -5
- package/lib/edit/src/mixin.min.js +1 -1
- package/lib/grid/src/grid.js +21 -61
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/grid/style/style.css +0 -18
- package/lib/grid/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.umd.js +496 -310
- package/lib/index.umd.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +19 -6
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/pulldown/style/style.css +2 -2
- package/lib/pulldown/style/style.min.css +1 -1
- package/lib/select/src/select.js +69 -48
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +23 -6
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/body.js +19 -14
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/methods.js +217 -130
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +10 -8
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +72 -23
- package/lib/table/style/style.min.css +1 -1
- package/lib/textarea/src/textarea.js +1 -1
- package/lib/textarea/src/textarea.min.js +1 -1
- package/lib/tools/log.js +1 -1
- package/lib/tools/log.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +1 -1
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/v-x-e-table/index.js +1 -1
- package/lib/v-x-e-table/index.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +1 -1
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/lib/validator/src/mixin.js +111 -33
- package/lib/validator/src/mixin.min.js +1 -1
- package/package.json +1 -1
- package/packages/edit/src/mixin.js +24 -5
- package/packages/grid/src/grid.js +16 -45
- package/packages/pulldown/src/pulldown.js +18 -6
- package/packages/select/src/select.js +33 -12
- package/packages/table/src/body.js +20 -15
- package/packages/table/src/methods.js +106 -23
- package/packages/table/src/table.js +10 -7
- package/packages/textarea/src/textarea.js +1 -1
- package/packages/tooltip/src/tooltip.js +1 -1
- package/packages/v-x-e-table/src/conf.js +1 -1
- package/packages/validator/src/mixin.js +105 -35
- package/styles/grid.scss +0 -20
- package/styles/pulldown.scss +2 -2
- package/styles/select.scss +23 -6
- package/styles/table.scss +95 -23
- package/types/grid.d.ts +1 -1
- package/types/table.d.ts +22 -0
- package/types/v-x-e-table/renderer.d.ts +1 -1
- /package/lib/icon/style/{iconfont.1700611974815.ttf → iconfont.1703431233417.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1700611974815.woff → iconfont.1703431233417.woff} +0 -0
- /package/lib/icon/style/{iconfont.1700611974815.woff2 → iconfont.1703431233417.woff2} +0 -0
- /package/lib/{iconfont.1700611974815.ttf → iconfont.1703431233417.ttf} +0 -0
- /package/lib/{iconfont.1700611974815.woff → iconfont.1703431233417.woff} +0 -0
- /package/lib/{iconfont.1700611974815.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
|
-
},
|
|
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
|
-
},
|
|
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
|
|
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-
|
|
475
|
+
class: 'vxe-select--panel-search'
|
|
469
476
|
}, [
|
|
470
477
|
h('vxe-input', {
|
|
471
478
|
ref: 'inpSearch',
|
|
472
|
-
class: 'vxe-select-
|
|
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
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
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
|
|
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 &&
|
|
247
|
+
if (showValidTip && errorValidItem) {
|
|
248
248
|
tdVNs.push(
|
|
249
249
|
h('div', {
|
|
250
|
-
class: 'vxe-cell--valid',
|
|
251
|
-
style:
|
|
252
|
-
width: `${
|
|
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
|
-
},
|
|
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--
|
|
276
|
-
'col--valid-error':
|
|
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
|
|
503
|
-
|
|
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 =
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
.
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
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:
|
|
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.
|
|
191
|
+
autoTxtElem.innerText = ('' + (inputValue || ' ')).replace(/\n$/, '\n ')
|
|
192
192
|
}
|
|
193
193
|
},
|
|
194
194
|
handleResize () {
|