Skip to content

Commit 358e791

Browse files
committed
feat: multi-node insert node
1 parent 56b39f0 commit 358e791

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

packages/canvas/container/src/components/CanvasMenu.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ export default {
123123
const multiSelectMenus = ref([
124124
{ name: '删除', code: 'multiDel' },
125125
{ name: '复制', code: 'multiCopy' },
126+
{
127+
name: '插入',
128+
items: [
129+
{ name: '向前', code: 'insert', value: 'top' },
130+
{ name: '向后', code: 'insert', value: 'bottom' }
131+
]
132+
},
126133
{
127134
name: '添加父级',
128135
items: [

packages/canvas/container/src/container.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -838,9 +838,22 @@ export const insertNode = (node, position = POSITION.IN, select = true) => {
838838
}
839839

840840
export const addComponent = (data, position) => {
841-
const { schema, parent } = getCurrent()
841+
if (multiSelectedStates.value.length === 1) {
842+
const { schema, parent } = getCurrent()
843+
844+
insertNode({ node: schema, parent, data }, position)
845+
} else {
846+
// 多选时,根据位置判断向上还是向下添加节点
847+
const targetNode =
848+
position === 'top'
849+
? multiSelectedStates.value[0]
850+
: multiSelectedStates.value[multiSelectedStates.value.length - 1]
842851

843-
insertNode({ node: schema, parent, data }, position)
852+
const node = targetNode.schema
853+
const parent = useCanvas().getNodeWithParentById(targetNode.id)
854+
855+
insertNode({ node, parent, data }, position)
856+
}
844857
}
845858

846859
export const copyNode = (id) => {

0 commit comments

Comments
 (0)