+
{triggerElm}
{menuElm}
diff --git a/packages/vue/src/grid/package.json b/packages/vue/src/grid/package.json
index 3fbabf144d..e2b2a44744 100644
--- a/packages/vue/src/grid/package.json
+++ b/packages/vue/src/grid/package.json
@@ -1,7 +1,7 @@
{
"name": "@opentiny/vue-grid",
"type": "module",
- "version": "3.21.1",
+ "version": "3.21.2",
"description": "",
"license": "MIT",
"sideEffects": false,
diff --git a/packages/vue/src/grid/src/body/src/body.tsx b/packages/vue/src/grid/src/body/src/body.tsx
index c6b7ec9680..9362579251 100644
--- a/packages/vue/src/grid/src/body/src/body.tsx
+++ b/packages/vue/src/grid/src/body/src/body.tsx
@@ -751,11 +751,12 @@ function renderDefEmpty(h) {
}
const syncHeaderAndFooterScroll = ({ bodyElem, footerElem, headerElem, isX }) => {
+ const scrollLeft = bodyElem.scrollLeft
if (isX && headerElem) {
- headerElem.scrollLeft = bodyElem.scrollLeft
+ headerElem.scrollLeft = scrollLeft
}
if (isX && footerElem) {
- footerElem.scrollLeft = bodyElem.scrollLeft
+ footerElem.scrollLeft = scrollLeft
}
}
@@ -870,10 +871,6 @@ export default defineComponent({
// 空数据元素
elemStore[`${keyPrefix}emptyBlock`] = $refs.emptyBlock
- // 表体第一层div监听滚动事件
- $el.onscroll = this.scrollEvent
- $el._onscroll = this.scrollEvent
-
if (dropConfig) {
const { plugin, row = true } = dropConfig
plugin && row && (this.rowSortable = $table.rowDrop(this.$el))
@@ -907,7 +904,10 @@ export default defineComponent({
'div',
{
ref: 'body',
- class: ['tiny-grid__body-wrapper', 'body__wrapper', { [classMap.isScrollload]: scrollLoad }]
+ class: ['tiny-grid__body-wrapper', 'body__wrapper', { [classMap.isScrollload]: scrollLoad }],
+ on: {
+ scroll: this.scrollEvent
+ }
},
[
// 表格主体内容x轴方向虚拟滚动条占位元素
diff --git a/packages/vue/src/grid/src/table/src/methods.ts b/packages/vue/src/grid/src/table/src/methods.ts
index b97546746d..6f6a16dd78 100644
--- a/packages/vue/src/grid/src/table/src/methods.ts
+++ b/packages/vue/src/grid/src/table/src/methods.ts
@@ -1644,8 +1644,10 @@ const Methods = {
// 设置新的渲染列触发Vue渲染
this.tableColumn = ret.tableColumn
this.visibleColumnChanged = ret.visibleColumnChanged
-
- this.$nextTick(this.updateStyle)
+ this.$nextTick(() => {
+ this.updateFooter()
+ this.updateStyle()
+ })
})
},
// 更新横向 X 可视渲染上下剩余空间大小
diff --git a/packages/vue/src/grid/src/table/src/utils/updateStyle.ts b/packages/vue/src/grid/src/table/src/utils/updateStyle.ts
index eb2d7af0f1..f9d9e513a0 100644
--- a/packages/vue/src/grid/src/table/src/utils/updateStyle.ts
+++ b/packages/vue/src/grid/src/table/src/utils/updateStyle.ts
@@ -44,6 +44,7 @@ function getTableWidth({ scrollXLoad, tWidth, tableColumn }) {
}
function layoutFooter({
+ elemStore,
customHeight,
footerHeight,
headerHeight,
@@ -61,6 +62,11 @@ function layoutFooter({
let tWidth = tableWidth
// 如果是固定列与设置了超出隐藏
let ret = getTableWidth({ scrollXLoad, tWidth, tableColumn })
+ // 为表尾设置虚拟滚动占位宽度
+ const spaceElem = elemStore['main-footer-x-space']
+ if (spaceElem) {
+ spaceElem.style.width = `${tableWidth}px`
+ }
tableColumn = ret.tableColumn
tWidth = ret.tWidth
@@ -242,6 +248,7 @@ export function handleLayout(params) {
tableColumn = ret.tableColumn
} else if (layout === 'footer') {
tableColumn = layoutFooter({
+ elemStore,
customHeight,
fixedWrapperElem,
footerHeight,