Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion packages/canvas/DesignCanvas/src/api/useCanvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,22 @@ const handleTinyGridColumnsSlots = (node: Node) => {

for (const slotItem of Object.values(columnItem.slots)) {
if (Array.isArray(slotItem?.value)) {
// 这里要给 TinyGrid 的表格列插槽添加一个虚拟 Template 节点
// 不然有可能在拖拽的时候,拖拽到插槽的同级节点上,此时由于插槽的父节点是 TinyGrid,导致插入到了TinyGrid 的 children 中。添加一个父节点可以避免该问题
const virtualNode = {
id: utils.guid(),
componentName: 'Template',
props: {},
children: slotItem.value
}
nodesMap.value.set(virtualNode.id, { node: virtualNode, parent: node })

slotItem.value.forEach((item: Node) => {
if (!item.id) {
item.id = utils.guid()
}

nodesMap.value.set(item.id, { node: item, parent: node })
nodesMap.value.set(item.id, { node: item, parent: virtualNode })

if (Array.isArray(item.children)) {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
Expand Down
3 changes: 2 additions & 1 deletion packages/canvas/container/src/container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1041,7 +1041,8 @@ export const canvasApi = {
},
updateCanvas: (...args: any[]) => {
return canvasState.renderer.updateCanvas(...args)
}
},
dragEnd
}

export const initCanvas = ({ renderer, iframe, emit, controller }: any) => {
Expand Down
10 changes: 9 additions & 1 deletion packages/common/component/CanvasDragItem.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template>
<div draggable="true" class="drag-item" @dragstart="dragstart" @click="handleClick">
<div draggable="true" class="drag-item" @dragstart="dragstart" @dragend="dragend" @click="handleClick">
<slot></slot>
</div>
</template>
Expand Down Expand Up @@ -30,6 +30,13 @@ export default {
}
}

const dragend = (e) => {
// 拖拽结束,但是此时的 dropEffect 为 none ,说明此时没有完成拖拽,需要清理一下拖拽状态
if (e.dataTransfer?.dropEffect === 'none') {
canvasApi.value?.dragEnd?.()
}
}

const handleClick = () => {
if (props.data) {
const data = deepClone(props.data)
Expand All @@ -40,6 +47,7 @@ export default {

return {
dragstart,
dragend,
handleClick
}
}
Expand Down