Skip to content

Commit

Permalink
fix 修复合并后显示空白问题 #2392
Browse files Browse the repository at this point in the history
  • Loading branch information
xuliangzhan committed May 15, 2024
1 parent 8f2f10f commit 3d9f71b
Show file tree
Hide file tree
Showing 27 changed files with 187 additions and 183 deletions.
6 changes: 6 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,12 @@ Compile packaging, generated compiled directory: es,lib
npm run lib
```

## Contributors

Thank you to everyone who contributed to this project.

[![vxe-table](https://contrib.rocks/image?repo=x-extends/vxe-table)](https://github.com/x-extends/vxe-table/graphs/contributors)

## License

[MIT](LICENSE) © 2019-present, Xu Liangzhan
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,12 @@ npm run serve
npm run lib
```

## Contributors

Thank you to everyone who contributed to this project.

[![vxe-table](https://contrib.rocks/image?repo=x-extends/vxe-table)](https://github.com/x-extends/vxe-table/graphs/contributors)

## License

[MIT](LICENSE) © 2019-present, Xu Liangzhan
6 changes: 6 additions & 0 deletions README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,12 @@ npm run serve
npm run lib
```

## Contributors

Thank you to everyone who contributed to this project.

[![vxe-table](https://contrib.rocks/image?repo=x-extends/vxe-table)](https://github.com/x-extends/vxe-table/graphs/contributors)

## License

[MIT](LICENSE) © 2019-present, Xu Liangzhan
90 changes: 1 addition & 89 deletions examples/views/tooltip/Tooltip.vue
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,6 @@
<vxe-column field="age" title="Age"></vxe-column>
</vxe-table>
</p>

<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>

<pre>
<pre-code class="html">{{ demoCodes[0] }}</pre-code>
<pre-code class="typescript">{{ demoCodes[1] }}</pre-code>
</pre>
</div>
</template>

Expand Down Expand Up @@ -85,88 +78,7 @@ export default defineComponent({
demo1,
xTip5,
cellMouseenterEvent,
cellMouseleaveEvent,
demoCodes: [
`
<p>
<vxe-tooltip content="我是提示内容">
<a class="link">文字提示</a>
</vxe-tooltip>
</p>
<p>
<vxe-tooltip content="除了点击之外不会自动消息" trigger="click">
<vxe-button>点击触发</vxe-button>
</vxe-tooltip>
<vxe-tooltip content="hover 提示内容">
<vxe-button>Hover 触发</vxe-button>
</vxe-tooltip>
<vxe-tooltip content="鼠标可以进入到 tooltip 中" enterable>
<vxe-button>设置 Enterable</vxe-button>
</vxe-tooltip>
</p>
<p>
<vxe-tooltip v-model="demo1.value1" content="自定义提示内容" trigger="manual">
<vxe-button @mouseenter="demo1.value1 = true" @mouseleave="demo1.value1 = false">手动模式</vxe-button>
</vxe-tooltip>
</p>
<p>
<vxe-tooltip ref="xTip1"></vxe-tooltip>
<vxe-button @mouseenter="$refs.xTip1.open($event.target, '自定义提示内容')" @mouseleave="$refs.xTip1.close()">高性能模式,只创建一个实例</vxe-button>
</p>
<p>
<vxe-tooltip ref="xTip2"></vxe-tooltip>
<vxe-table
border
height="200"
:tooltip-config="{}"
:data="demo1.tableData"
@cell-mouseenter="cellMouseenterEvent"
@cell-mouseleave="cellMouseleaveEvent">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="Name"></vxe-column>
<vxe-column field="sex" title="Sex"></vxe-column>
<vxe-column field="age" title="Age"></vxe-column>
</vxe-table>
</p>
`,
`
import { defineComponent, reactive, ref } from 'vue'
import { VxeTooltipInstance } from 'vxe-table'
export default defineComponent({
setup () {
const demo1 = reactive({
value1: false,
tableData: [
{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }
]
})
const xTip5 = ref({} as VxeTooltipInstance)
const cellMouseenterEvent = ({ cell }: any) => {
const $tooltip5 = xTip5.value
$tooltip5.open(cell, \`自定义提示内容:\${cell.innerText}\`)
}
const cellMouseleaveEvent = () => {
const $tooltip5 = xTip5.value
$tooltip5.close()
}
return {
demo1,
xTip2,
cellMouseenterEvent,
cellMouseleaveEvent
}
}
}
`
]
cellMouseleaveEvent
}
}
})
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vxe-table",
"version": "4.6.12",
"version": "4.6.13-beta.3",
"description": "一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...",
"scripts": {
"update": "npm install --legacy-peer-deps",
Expand Down
14 changes: 7 additions & 7 deletions packages/custom/src/panel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,11 @@ export default defineComponent({
return
}
if (dragHintEl) {
const warpperEl = bodyEl.parentNode as HTMLElement
const warpperRect = warpperEl.getBoundingClientRect()
const wrapperEl = bodyEl.parentNode as HTMLElement
const wrapperRect = wrapperEl.getBoundingClientRect()
dragHintEl.style.display = 'block'
dragHintEl.style.top = `${Math.min(warpperEl.clientHeight - warpperEl.scrollTop - dragHintEl.clientHeight, evnt.clientY - warpperRect.y)}px`
dragHintEl.style.left = `${Math.min(warpperEl.clientWidth - warpperEl.scrollLeft - dragHintEl.clientWidth - 16, evnt.clientX - warpperRect.x)}px`
dragHintEl.style.top = `${Math.min(wrapperEl.clientHeight - wrapperEl.scrollTop - dragHintEl.clientHeight, evnt.clientY - wrapperRect.y)}px`
dragHintEl.style.left = `${Math.min(wrapperEl.clientWidth - wrapperEl.scrollLeft - dragHintEl.clientWidth - 16, evnt.clientX - wrapperRect.x)}px`
}
}

Expand Down Expand Up @@ -315,7 +315,7 @@ export default defineComponent({
'is--checked': column.fixed === 'left',
'is--disabled': isMaxFixedColumn && !column.fixed
}],
title: GlobalConfig.i18n(column.fixed === 'left' ? 'vxe.toolbar.cancelfixed' : 'vxe.toolbar.fixedLeft'),
title: GlobalConfig.i18n(column.fixed === 'left' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedLeft'),
onClick: () => {
changeFixedOption(column, 'left')
}
Expand All @@ -325,7 +325,7 @@ export default defineComponent({
'is--checked': column.fixed === 'right',
'is--disabled': isMaxFixedColumn && !column.fixed
}],
title: GlobalConfig.i18n(column.fixed === 'right' ? 'vxe.toolbar.cancelfixed' : 'vxe.toolbar.fixedRight'),
title: GlobalConfig.i18n(column.fixed === 'right' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedRight'),
onClick: () => {
changeFixedOption(column, 'right')
}
Expand Down Expand Up @@ -552,7 +552,7 @@ export default defineComponent({
h(TransitionGroup, {
class: 'vxe-table-custom--body',
tag: 'tbody',
name: 'vxe-table-custom--flip'
name: 'vxe-table-custom--list'
}, {
default: () => trVNs
})
Expand Down
26 changes: 19 additions & 7 deletions packages/grid/src/grid.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,10 +255,11 @@ export default defineComponent({

const getRespMsg = (rest: any, defaultMsg: string) => {
const proxyOpts = computeProxyOpts.value
const { props: proxyProps = {} } = proxyOpts
const resConfigs = proxyOpts.response || proxyOpts.props || {}
const messageProp = resConfigs.message
let msg
if (rest && proxyProps.message) {
msg = XEUtils.get(rest, proxyProps.message)
if (rest && messageProp) {
msg = XEUtils.isFunction(messageProp) ? messageProp({ data: rest, $grid: $xegrid }) : XEUtils.get(rest, messageProp)
}
return msg || GlobalConfig.i18n(defaultMsg)
}
Expand Down Expand Up @@ -718,7 +719,8 @@ export default defineComponent({
const proxyOpts = computeProxyOpts.value
const pagerOpts = computePagerOpts.value
const toolbarOpts = computeToolbarOpts.value
const { beforeQuery, afterQuery, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {}, props: proxyProps = {} } = proxyOpts
const { beforeQuery, afterQuery, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts
const resConfigs = proxyOpts.response || proxyOpts.props || {}
const $xetable = refTable.value
let button: VxeToolbarPropTypes.ButtonConfig | null = null
let code: string | null = null
Expand Down Expand Up @@ -828,16 +830,19 @@ export default defineComponent({
reactData.tableLoading = false
if (rest) {
if (pagerConfig && isEnableConf(pagerOpts)) {
const total = XEUtils.get(rest, proxyProps.total || 'page.total') || 0
const totalProp = resConfigs.total
const total = (XEUtils.isFunction(totalProp) ? totalProp({ data: rest, $grid: $xegrid }) : XEUtils.get(rest, totalProp || 'page.total')) || 0
tablePage.total = XEUtils.toNumber(total)
reactData.tableData = XEUtils.get(rest, proxyProps.result || 'result') || []
const resultProp = resConfigs.result
reactData.tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $grid: $xegrid }) : XEUtils.get(rest, resultProp || 'result')) || []
// 检验当前页码,不能超出当前最大页数
const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1)
if (tablePage.currentPage > pageCount) {
tablePage.currentPage = pageCount
}
} else {
reactData.tableData = (proxyProps.list ? XEUtils.get(rest, proxyProps.list) : rest) || []
const listProp = resConfigs.list
reactData.tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $grid: $xegrid }) : XEUtils.get(rest, listProp)) : rest) || []
}
} else {
reactData.tableData = []
Expand Down Expand Up @@ -1213,6 +1218,13 @@ export default defineComponent({
if (isEnableConf(proxyConfig) && (data || (proxyOpts.form && formOpts.data))) {
errLog('vxe.error.errConflicts', ['grid.data', 'grid.proxy-config'])
}

// if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
// if (proxyOpts.props) {
// warnLog('vxe.error.delProp', ['proxy-config.props', 'proxy-config.response'])
// }
// }

if (columns && columns.length) {
$xegrid.loadColumn(columns)
}
Expand Down
2 changes: 1 addition & 1 deletion packages/hooks/size.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { computed, inject, provide, ComputedRef } from 'vue'

import { SizeType } from '../../types/all'

export function useSize (props: { size: SizeType }) {
export function useSize (props: { size?: SizeType }) {
// 组件尺寸上下文
const xesize = inject('xesize', null as ComputedRef<SizeType> | null)
const computeSize = computed(() => {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: 'Reset',
fixedLeft: 'Freeze on the left',
fixedRight: 'Freeze on the right',
cancelfixed: 'Unfreeze column'
cancelFixed: 'Unfreeze column'
},
input: {
date: {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/es-ES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: 'Restaurar',
fixedLeft: 'Freeze on the left',
fixedRight: 'Freeze on the right',
cancelfixed: 'Unfreeze column'
cancelFixed: 'Unfreeze column'
},
entrada: {
fecha: {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/ja-JP.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: 'リセット',
fixedLeft: '左側に固定',
fixedRight: '右側に固定',
cancelfixed: '列固定を取消'
cancelFixed: '列固定を取消'
},
input: {
date: {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: 'Redefinir',
fixedLeft: 'Freeze on the left',
fixedRight: 'Freeze on the right',
cancelfixed: 'Unfreeze column'
cancelFixed: 'Unfreeze column'
},
input: {
date: {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: '重置',
fixedLeft: '冻结在左侧',
fixedRight: '冻结在右侧',
cancelfixed: '取消冻结列'
cancelFixed: '取消冻结列'
},
input: {
date: {
Expand Down
2 changes: 1 addition & 1 deletion packages/locale/lang/zh-TC.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default {
customRestore: '重置',
fixedLeft: '冻结在左側',
fixedRight: '冻结在右側',
cancelfixed: '取消冻结列'
cancelFixed: '取消冻结列'
},
input: {
date: {
Expand Down
1 change: 1 addition & 0 deletions packages/table/src/footer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ export default defineComponent({
$table: $xetable,
$grid: $xetable.xegrid,
row: list,
rowIndex: _rowIndex,
_rowIndex,
$rowIndex,
column,
Expand Down
20 changes: 16 additions & 4 deletions packages/table/src/table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4425,7 +4425,10 @@ export default defineComponent({
errLog('vxe.error.errConflicts', ['merge-cells', 'span-method'])
}
setMerges(merges, reactData.mergeList, internalData.afterFullData)
return nextTick().then(() => tableMethods.updateCellAreas())
return nextTick().then(() => {
tableMethods.updateCellAreas()
return updateStyle()
})
},
/**
* 移除单元格合并
Expand All @@ -4438,6 +4441,7 @@ export default defineComponent({
const rest = removeMerges(merges, reactData.mergeList, internalData.afterFullData)
return nextTick().then(() => {
tableMethods.updateCellAreas()
updateStyle()
return rest
})
},
Expand All @@ -4452,14 +4456,19 @@ export default defineComponent({
*/
clearMergeCells () {
reactData.mergeList = []
return nextTick()
return nextTick().then(() => {
return updateStyle()
})
},
setMergeFooterItems (merges) {
if (props.footerSpanMethod) {
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method'])
}
setMerges(merges, reactData.mergeFooterList)
return nextTick().then(() => tableMethods.updateCellAreas())
return nextTick().then(() => {
tableMethods.updateCellAreas()
return updateStyle()
})
},
removeMergeFooterItems (merges) {
if (props.footerSpanMethod) {
Expand All @@ -4468,6 +4477,7 @@ export default defineComponent({
const rest = removeMerges(merges, reactData.mergeFooterList)
return nextTick().then(() => {
tableMethods.updateCellAreas()
updateStyle()
return rest
})
},
Expand All @@ -4482,7 +4492,9 @@ export default defineComponent({
*/
clearMergeFooterItems () {
reactData.mergeFooterList = []
return nextTick()
return nextTick().then(() => {
return updateStyle()
})
},
updateCellAreas () {
const { mouseConfig } = props
Expand Down
4 changes: 2 additions & 2 deletions packages/tooltip/src/tooltip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ export default defineComponent({
props: {
modelValue: Boolean,
size: { type: String as PropType<VxeTooltipPropTypes.Size>, default: () => GlobalConfig.tooltip.size || GlobalConfig.size },
trigger: { type: String as PropType<VxeTooltipPropTypes.Trigger>, default: () => GlobalConfig.tooltip.trigger },
theme: { type: String as PropType<VxeTooltipPropTypes.Theme>, default: () => GlobalConfig.tooltip.theme },
trigger: { type: String as PropType<VxeTooltipPropTypes.Trigger>, default: () => GlobalConfig.tooltip.trigger || 'hover' },
theme: { type: String as PropType<VxeTooltipPropTypes.Theme>, default: () => GlobalConfig.tooltip.theme || 'dark' },
content: { type: [String, Number] as PropType<VxeTooltipPropTypes.Content>, default: null },
useHTML: Boolean as PropType<VxeTooltipPropTypes.UseHTML>,
zIndex: [String, Number] as PropType<VxeTooltipPropTypes.ZIndex>,
Expand Down
Loading

0 comments on commit 3d9f71b

Please sign in to comment.