Skip to content

Commit 194df36

Browse files
committed
releases 4.9.16
1 parent cc8dcee commit 194df36

File tree

5 files changed

+84
-41
lines changed

5 files changed

+84
-41
lines changed

examples/main.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createApp } from 'vue'
1+
import { createApp, h } from 'vue'
22
import App from './App.vue'
33
import router from './router'
44

@@ -14,6 +14,18 @@ import './style/index.scss'
1414

1515
VxeUI.setI18n('en-US', enUS)
1616

17+
VxeUI.renderer.add('CellImage', {
18+
renderTableDefault (_renderOpts, params) {
19+
const { props } = _renderOpts
20+
const { column, row } = params
21+
return h(VxeUI.VxeImage, {
22+
width: '100%',
23+
...props,
24+
src: row[column.field]
25+
})
26+
}
27+
})
28+
1729
createApp(App)
1830
.use(router)
1931
.use(VxeUI)

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vxe-table",
3-
"version": "4.9.15",
3+
"version": "4.9.16",
44
"description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
55
"scripts": {
66
"update": "npm install --legacy-peer-deps",
@@ -28,7 +28,7 @@
2828
"style": "lib/style.css",
2929
"typings": "types/index.d.ts",
3030
"dependencies": {
31-
"vxe-pc-ui": "^4.3.15"
31+
"vxe-pc-ui": "^4.3.16"
3232
},
3333
"devDependencies": {
3434
"@types/resize-observer-browser": "^0.1.11",

packages/table/src/body.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ export default defineComponent({
164164
const showEllipsis = cellOverflow === 'ellipsis'
165165
const showTitle = cellOverflow === 'title'
166166
const showTooltip = cellOverflow === true || cellOverflow === 'tooltip'
167-
const hasEllipsis = showTitle || showTooltip || showEllipsis
167+
// 如果表格加上 showOverflow 则不再支持列单独设置
168+
const hasEllipsis = allColumnOverflow || showTitle || showTooltip || showEllipsis
168169
let isDirty
169170
const tdOns: any = {}
170171
const rest = fullAllDataRowIdData[rowid]

packages/table/src/table.ts

Lines changed: 65 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@ export default defineComponent({
10781078
const isCustomVisible = isAllCustom || storageOpts.visible
10791079
const isCustomFixed = isAllCustom || storageOpts.fixed
10801080
const isCustomSort = isAllCustom || storageOpts.sort
1081-
if (customConfig && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort)) {
1081+
if ((customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort)) {
10821082
if (!tableId) {
10831083
errLog('vxe.error.reqProp', ['id'])
10841084
return
@@ -1218,12 +1218,7 @@ export default defineComponent({
12181218
}
12191219

12201220
const calcCellWidth = () => {
1221-
const { tableData } = reactData
12221221
const autoWidthColumnList = computeAutoWidthColumnList.value
1223-
if (!tableData.length || !autoWidthColumnList.length) {
1224-
reactData.isCalcColumn = false
1225-
return nextTick()
1226-
}
12271222
reactData.isCalcColumn = true
12281223
return nextTick().then(() => {
12291224
const { fullColumnIdData } = internalData
@@ -2523,6 +2518,7 @@ export default defineComponent({
25232518
const { editStore, scrollYLoad: oldScrollYLoad } = reactData
25242519
const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData
25252520
const treeOpts = computeTreeOpts.value
2521+
const rowOpts = computeRowOpts.value
25262522
const { transform } = treeOpts
25272523
const childrenField = treeOpts.children || treeOpts.childrenField
25282524
let treeData = []
@@ -2586,9 +2582,11 @@ export default defineComponent({
25862582
}
25872583
if (sYLoad) {
25882584
if (showOverflow) {
2589-
const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
2590-
if (errColumn) {
2591-
errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
2585+
if (!rowOpts.height) {
2586+
const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
2587+
if (errColumn) {
2588+
errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
2589+
}
25922590
}
25932591
}
25942592

@@ -2717,6 +2715,8 @@ export default defineComponent({
27172715
}
27182716

27192717
const parseColumns = () => {
2718+
const { showOverflow } = props
2719+
const rowOpts = computeRowOpts.value
27202720
const leftList: VxeTableDefines.ColumnInfo[] = []
27212721
const centerList: VxeTableDefines.ColumnInfo[] = []
27222722
const rightList: VxeTableDefines.ColumnInfo[] = []
@@ -2781,6 +2781,14 @@ export default defineComponent({
27812781
reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0
27822782
Object.assign(columnStore, { leftList, centerList, rightList })
27832783
if (scrollXLoad) {
2784+
if (showOverflow) {
2785+
if (!rowOpts.height) {
2786+
const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
2787+
if (errColumn) {
2788+
errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
2789+
}
2790+
}
2791+
}
27842792
if (process.env.VUE_APP_VXE_ENV === 'development') {
27852793
// if (props.showHeader && !props.showHeaderOverflow) {
27862794
// warnLog('vxe.error.reqProp', ['show-header-overflow'])
@@ -3066,7 +3074,7 @@ export default defineComponent({
30663074
}
30673075

30683076
const scrollXEvent = (evnt: Event) => {
3069-
const { inFooterScroll, inBodyScroll } = internalData
3077+
const { inFooterScroll, inBodyScroll, lastScrollTop } = internalData
30703078
if (inFooterScroll) {
30713079
return
30723080
}
@@ -3079,10 +3087,17 @@ export default defineComponent({
30793087
const bodyElem = tableBody.$el as HTMLDivElement
30803088
const headerElem = tableHeader ? tableHeader.$el as HTMLDivElement : null
30813089
const footerElem = tableFooter ? tableFooter.$el as HTMLDivElement : null
3090+
const yHandleEl = refScrollYHandleElem.value
30823091
const wrapperEl = evnt.currentTarget as HTMLDivElement
3083-
const { scrollTop, scrollLeft } = wrapperEl
3092+
const { scrollLeft } = wrapperEl
3093+
const yBodyEl = yHandleEl || bodyElem
3094+
let scrollTop = 0
3095+
if (yBodyEl) {
3096+
scrollTop = yBodyEl.scrollTop
3097+
}
30843098
const isRollX = true
3085-
const isRollY = false
3099+
const isRollY = scrollTop !== lastScrollTop
3100+
30863101
internalData.inVirtualScroll = true
30873102
setScrollLeft(bodyElem, scrollLeft)
30883103
setScrollLeft(headerElem, scrollLeft)
@@ -3095,7 +3110,7 @@ export default defineComponent({
30953110
}
30963111

30973112
const scrollYEvent = (evnt: Event) => {
3098-
const { inFooterScroll, inBodyScroll } = internalData
3113+
const { inFooterScroll, inBodyScroll, lastScrollLeft } = internalData
30993114
if (inFooterScroll) {
31003115
return
31013116
}
@@ -3109,9 +3124,15 @@ export default defineComponent({
31093124
const bodyElem = tableBody.$el as HTMLDivElement
31103125
const leftElem = leftBody ? leftBody.$el as HTMLDivElement : null
31113126
const rightElem = rightBody ? rightBody.$el as HTMLDivElement : null
3127+
const xHandleEl = refScrollXHandleElem.value
31123128
const wrapperEl = evnt.currentTarget as HTMLDivElement
3113-
const { scrollTop, scrollLeft } = wrapperEl
3114-
const isRollX = false
3129+
const { scrollTop } = wrapperEl
3130+
const xBodyEl = xHandleEl || bodyElem
3131+
let scrollLeft = 0
3132+
if (xBodyEl) {
3133+
scrollLeft = xBodyEl.scrollLeft
3134+
}
3135+
const isRollX = scrollLeft !== lastScrollLeft
31153136
const isRollY = true
31163137

31173138
internalData.inVirtualScroll = true
@@ -4957,7 +4978,7 @@ export default defineComponent({
49574978
nextTick(() => {
49584979
resolve()
49594980
})
4960-
}, 50)
4981+
}, 30)
49614982
})
49624983
}
49634984
return nextTick()
@@ -5574,48 +5595,52 @@ export default defineComponent({
55745595
$xeTable.handleClearEdit(evnt)
55755596
// 如果配置了选中功能,则为选中状态
55765597
if (mouseOpts.selected) {
5577-
nextTick(() => $xeTable.handleSelected(params, evnt))
5598+
nextTick(() => {
5599+
$xeTable.handleSelected(params, evnt)
5600+
})
55785601
}
55795602
}
55805603
} else {
55815604
// 如果是激活状态,退则出到上一行/下一行
55825605
if (selected.row || actived.row) {
5583-
const targetArgs = selected.row ? selected.args : actived.args
5606+
const activeParams = selected.row ? selected.args : actived.args
55845607
if (hasShiftKey) {
55855608
if (keyboardOpts.enterToTab) {
5586-
$xeTable.moveTabSelected(targetArgs, hasShiftKey, evnt)
5609+
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt)
55875610
} else {
5588-
$xeTable.moveSelected(targetArgs, isLeftArrow, true, isRightArrow, false, evnt)
5611+
$xeTable.moveSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt)
55895612
}
55905613
} else {
55915614
if (keyboardOpts.enterToTab) {
5592-
$xeTable.moveTabSelected(targetArgs, hasShiftKey, evnt)
5615+
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt)
55935616
} else {
5594-
const _rowIndex = $xeTable.getVTRowIndex(selected.row)
5617+
const activeRow = selected.row || actived.row
5618+
const activeColumn = selected.column || actived.column
5619+
const _rowIndex = $xeTable.getVTRowIndex(activeRow)
55955620
const etrParams = {
5596-
row: selected.row,
5597-
rowIndex: $xeTable.getRowIndex(selected.row),
5598-
$rowIndex: $xeTable.getVMRowIndex(selected.row),
5621+
row: activeRow,
5622+
rowIndex: $xeTable.getRowIndex(activeRow),
5623+
$rowIndex: $xeTable.getVMRowIndex(activeRow),
55995624
_rowIndex,
5600-
column: selected.column,
5601-
columnIndex: $xeTable.getColumnIndex(selected.column),
5602-
$columnIndex: $xeTable.getVMColumnIndex(selected.column),
5603-
_columnIndex: $xeTable.getVTColumnIndex(selected.column),
5625+
column: activeColumn,
5626+
columnIndex: $xeTable.getColumnIndex(activeColumn),
5627+
$columnIndex: $xeTable.getVMColumnIndex(activeColumn),
5628+
_columnIndex: $xeTable.getVTColumnIndex(activeColumn),
56045629
$table: $xeTable
56055630
}
56065631
if (!beforeEnterMethod || beforeEnterMethod(etrParams) !== false) {
56075632
// 最后一行按下回车键,自动追加一行
56085633
if (isLastEnterAppendRow) {
56095634
if (_rowIndex >= afterFullData.length - 1) {
56105635
$xeTable.insertAt({}, -1).then(({ row: newRow }) => {
5611-
$xeTable.scrollToRow(newRow, selected.column)
5612-
$xeTable.setSelectCell(newRow, selected.column)
5636+
$xeTable.scrollToRow(newRow, activeColumn)
5637+
$xeTable.handleSelected({ ...activeParams, row: newRow }, evnt)
56135638
})
56145639
$xeTable.dispatchEvent('enter-append-row', etrParams, evnt)
56155640
return
56165641
}
56175642
}
5618-
$xeTable.moveSelected(targetArgs, isLeftArrow, false, isRightArrow, true, evnt)
5643+
$xeTable.moveSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt)
56195644
if (enterMethod) {
56205645
enterMethod(etrParams)
56215646
}
@@ -6234,6 +6259,7 @@ export default defineComponent({
62346259
Object.assign(reactData.columnStore, { resizeList, pxList, pxMinList, autoMinList, scaleList, scaleMinList, autoList, remainList })
62356260
},
62366261
saveCustomStore (type) {
6262+
const { customConfig } = props
62376263
const tableId = computeTableId.value
62386264
const customOpts = computeCustomOpts.value
62396265
const { updateStore, storage } = customOpts
@@ -6243,7 +6269,7 @@ export default defineComponent({
62436269
const isCustomVisible = isAllCustom || storageOpts.visible
62446270
const isCustomFixed = isAllCustom || storageOpts.fixed
62456271
const isCustomSort = isAllCustom || storageOpts.sort
6246-
if (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort) {
6272+
if ((customConfig ? isEnableConf(customOpts) : customOpts.enabled) && (isCustomResizable || isCustomVisible || isCustomFixed || isCustomSort)) {
62476273
if (!tableId) {
62486274
errLog('vxe.error.reqProp', ['id'])
62496275
return nextTick()
@@ -7133,7 +7159,6 @@ export default defineComponent({
71337159
const trEl = evnt.currentTarget as HTMLElement
71347160
const rowid = trEl.getAttribute('rowid')
71357161
const row = $xeTable.getRowById(rowid)
7136-
console.log(rowid)
71377162
if (row) {
71387163
evnt.preventDefault()
71397164
evnt.preventDefault()
@@ -7370,7 +7395,8 @@ export default defineComponent({
73707395
}
73717396
tablePrivateMethods.checkScrolling()
73727397
internalData.lastScrollLeft = scrollLeft
7373-
} else {
7398+
}
7399+
if (isRollY) {
73747400
const yThreshold = computeScrollYThreshold.value
73757401
isTop = scrollTop <= 0
73767402
if (!isTop) {
@@ -8322,8 +8348,10 @@ export default defineComponent({
83228348
const customOpts = computeCustomOpts.value
83238349
const mouseOpts = computeMouseOpts.value
83248350
const rowOpts = computeRowOpts.value
8325-
if (!props.id && props.customConfig && (customOpts.storage === true || (customOpts.storage && customOpts.storage.resizable) || (customOpts.storage && customOpts.storage.visible))) {
8326-
errLog('vxe.error.reqProp', ['id'])
8351+
if (!props.id) {
8352+
if ((props.customConfig ? isEnableConf(customOpts) : customOpts.enabled) && customOpts.storage) {
8353+
errLog('vxe.error.reqProp', ['id'])
8354+
}
83278355
}
83288356
if (props.treeConfig && checkboxOpts.range) {
83298357
errLog('vxe.error.noTree', ['checkbox-config.range'])

packages/ui/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ VxeUI.setConfig({
7575
// visibleMethod () {}
7676
// },
7777
customConfig: {
78+
// enabled: false,
79+
storage: true,
7880
allowVisible: true,
7981
allowResizable: true,
8082
allowFixed: true,

0 commit comments

Comments
 (0)