feat(grid): add tree-node button bubbling setting (#3570)

* feat: add tree-node button bubbling setting

* docs(grid): add tree-node button bubbling setting

* docs(grid): add tree-node button bubbling setting

* fix(grid): fix multi header right position error after insert dynamic column
This commit is contained in:
gimmyhehe 2025-07-14 09:33:44 +08:00 committed by GitHub
parent d87e7ea8ab
commit 0605415074
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 27 additions and 16 deletions

View File

@ -3502,6 +3502,8 @@ interface ITreeConfig {
expandRowKeys?: string[]
// 对于同一级的多个子节点,是否只能同时展开一个子节点
accordion?: boolean
// 3.25.0版本新新增当trigger为 'default' 时点击按钮事件是否冒泡默认为false
bubbling?: boolean
}
`
},

View File

@ -2,10 +2,10 @@
<tiny-grid height="300" :data="tableData" :show-overflow="true">
<tiny-grid-column type="index" width="60"></tiny-grid-column>
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称" width="500"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数" width="500"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期" width="500"></tiny-grid-column>
<tiny-grid-column field="city" title="城市右冻结" width="200" fixed="right"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称" width="600"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数" width="600"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期" width="600"></tiny-grid-column>
<tiny-grid-column field="city" title="城市右冻结" width="600" fixed="right"></tiny-grid-column>
</tiny-grid>
</template>

View File

@ -2,10 +2,10 @@
<tiny-grid height="300" :data="tableData" :show-overflow="true">
<tiny-grid-column type="index" width="60"></tiny-grid-column>
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称" width="500"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数" width="500"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期" width="500"></tiny-grid-column>
<tiny-grid-column field="city" title="城市右冻结" width="200" fixed="right"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称" width="600"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数" width="600"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期" width="600"></tiny-grid-column>
<tiny-grid-column field="city" title="城市右冻结" width="600" fixed="right"></tiny-grid-column>
</tiny-grid>
</template>

View File

@ -324,12 +324,14 @@ export const Cell = {
renderTreeIcon(h, params) {
let { $table, level, row } = params
let { treeConfig, treeExpandeds } = $table
let { children, indent, renderIcon, trigger } = treeConfig
let { children, indent, renderIcon, trigger, bubbling } = treeConfig
let isActive = ~treeExpandeds.indexOf(row)
let rowChildren = row[children]
let listeners = {
click: (event) => {
event.stopPropagation()
if (!bubbling) {
event.stopPropagation()
}
$table.triggerTreeExpandEvent(event, params)
}
}

View File

@ -220,10 +220,17 @@ export const useCellEvent = ({ table, $table }) => {
satisfy(({ type }) => type === 'selection', selectConfig.trigger) ||
satisfy(({ treeNode }) => treeNode, treeConfig.trigger))
) {
// 捕获阶段单元格进入编辑态常显态的点击事件会被vue移除从而不会执行
fastdom.mutate(() => {
$table.triggerCellClickEvent(e, params)
})
const { bubbling, trigger } = treeConfig
const isTreeNodeStopPropagation =
!bubbling &&
(!trigger || trigger === 'default') &&
$table.getEventTargetNode(e, hoverCell.value, 'tiny-grid-tree__node-btn').flag
if (!isTreeNodeStopPropagation) {
// 捕获阶段单元格进入编辑态常显态的点击事件会被vue移除从而不会执行
fastdom.mutate(() => {
$table.triggerCellClickEvent(e, params)
})
}
}
if (source.part === 'footer' && tableListeners['footer-cell-click']) {

View File

@ -1004,7 +1004,9 @@ const Methods = {
let scrollXLoad = scrollX && scrollX.gt && scrollX.gt < tableFullColumn.length
let tableColumn = visibleColumn
// 对所有列的列宽进行分类:百分比/px
Object.assign(columnStore, { leftList, centerList, rightList })
this.analyColumnWidth()
showGroupFixedError({ isColspan, isGroup, leftStartIndex, rightEndIndex, visibleColumn })

View File

@ -535,8 +535,6 @@ export default defineComponent({
value && this.$nextTick(this.recalculate)
},
tableColumn() {
// 对所有列的列宽进行分类:百分比/px
this.analyColumnWidth()
// 处理空数据时表头是否禁用
this.handleSelectionHeader()
},