@@ -3,7 +3,8 @@ export default {
3
3
props : [ 'elements' , 'editingElement' , 'handleClickElementProp' , 'handleClickCanvasProp' ] ,
4
4
data : ( ) => ( {
5
5
vLines : [ ] ,
6
- hLines : [ ]
6
+ hLines : [ ] ,
7
+ contextmenuPos : [ ]
7
8
} ) ,
8
9
methods : {
9
10
// TODO #!zh: 优化代码
@@ -70,6 +71,21 @@ export default {
70
71
this . calcX ( left )
71
72
this . calcY ( top )
72
73
} ,
74
+ bindContextMenu ( e ) {
75
+ e . preventDefault ( ) // 不显示默认的右击菜单
76
+ if (
77
+ e . target . classList . contains ( 'element-on-edit-canvas' ) ||
78
+ e . target . parentElement . classList . contains ( 'element-on-edit-canvas' )
79
+ ) {
80
+ const { x, y } = this . $el . getBoundingClientRect ( )
81
+ this . contextmenuPos = [ e . clientX - x , e . clientY - y ]
82
+ } else {
83
+ this . hideContextMenu ( )
84
+ }
85
+ } ,
86
+ hideContextMenu ( ) {
87
+ this . contextmenuPos = [ ]
88
+ } ,
73
89
/**
74
90
* #!zh: renderCanvas 渲染中间画布
75
91
* elements
@@ -82,7 +98,13 @@ export default {
82
98
< div
83
99
style = { { height : '100%' , position : 'relative' } }
84
100
class = "canvas-editor-wrapper"
85
- onClick = { this . handleClickCanvasProp }
101
+ onClick = { ( e ) => {
102
+ this . hideContextMenu ( )
103
+ this . handleClickCanvasProp ( e )
104
+ } }
105
+ onContextmenu = { e => {
106
+ this . bindContextMenu ( e )
107
+ } }
86
108
>
87
109
{
88
110
elements . map ( ( element , index ) => {
@@ -131,6 +153,26 @@ export default {
131
153
< div class = "h-line" style = { { top : `${ line . top } px` } } > </ div >
132
154
) )
133
155
}
156
+ {
157
+ this . contextmenuPos . length
158
+ ? < a-menu
159
+ style = { {
160
+ left : this . contextmenuPos [ 0 ] + 'px' ,
161
+ top : this . contextmenuPos [ 1 ] + 'px' ,
162
+ userSelect : 'none' ,
163
+ position : 'absolute' ,
164
+ zIndex : 999
165
+ } }
166
+ >
167
+ < a-menu-item data-command = 'copyEditingElement' > 复制</ a-menu-item >
168
+ < a-menu-item data-command = "deleteEditingElement" > 删除</ a-menu-item >
169
+ < a-menu-item data-command = "bringLayer2Front" > 置顶</ a-menu-item >
170
+ < a-menu-item data-command = "bringLayer2End" > 置底</ a-menu-item >
171
+ < a-menu-item data-command = "addLayerZindex" > 上移</ a-menu-item >
172
+ < a-menu-item data-command = "subtractLayerZindex" > 下移</ a-menu-item >
173
+ </ a-menu >
174
+ : null
175
+ }
134
176
</ div >
135
177
)
136
178
}
0 commit comments