Commit 4fb2f41ead253d3e22f586428dd91e7cc8f4eab4

Authored by ly525
1 parent 13cf3423

perform: update contextmenu

front-end/h5/src/components/core/editor/canvas/edit.js
@@ -92,16 +92,22 @@ export default { @@ -92,16 +92,22 @@ export default {
92 this.calcY(top) 92 this.calcY(top)
93 }, 93 },
94 bindContextMenu (e) { 94 bindContextMenu (e) {
95 - e.preventDefault() // 不显示默认的右击菜单  
96 - if (  
97 - e.target.classList.contains('element-on-edit-canvas') ||  
98 - e.target.parentElement.classList.contains('element-on-edit-canvas')  
99 - ) {  
100 - const { x, y } = this.$el.getBoundingClientRect()  
101 - this.contextmenuPos = [e.clientX - x, e.clientY - y]  
102 - } else {  
103 - this.hideContextMenu()  
104 - } 95 + // 优化右击菜单的显示,去除冗余的无效逻辑
  96 + const { x, y } = this.$el.getBoundingClientRect()
  97 + this.contextmenuPos = [e.clientX - x, e.clientY - y]
  98 + // console.log(e.target)
  99 + // console.log(e.target.classList)
  100 + // // e.preventDefault() // 不显示默认的右击菜单
  101 + // if (
  102 + // e.target.classList.contains('element-on-edit-canvas') ||
  103 + // e.target.parentElement.classList.contains('element-on-edit-canvas')
  104 + // ) {
  105 + // const { x, y } = this.$el.getBoundingClientRect()
  106 + // console.log(x, y)
  107 + // this.contextmenuPos = [e.clientX - x, e.clientY - y]
  108 + // } else {
  109 + // this.hideContextMenu()
  110 + // }
105 }, 111 },
106 hideContextMenu () { 112 hideContextMenu () {
107 this.contextmenuPos = [] 113 this.contextmenuPos = []
@@ -128,7 +134,9 @@ export default { @@ -128,7 +134,9 @@ export default {
128 this.handleClickCanvas(e) 134 this.handleClickCanvas(e)
129 }} 135 }}
130 onContextmenu={e => { 136 onContextmenu={e => {
131 - this.bindContextMenu(e) 137 + e.preventDefault()
  138 + e.stopPropagation()
  139 + // this.bindContextMenu(e)
132 }} 140 }}
133 > 141 >
134 { 142 {
@@ -147,6 +155,11 @@ export default { @@ -147,6 +155,11 @@ export default {
147 // 当点击编辑画布上的其它区域(clickEvent.target.classList 不包含下面的 className)的时候,设置 editingElement=null 155 // 当点击编辑画布上的其它区域(clickEvent.target.classList 不包含下面的 className)的时候,设置 editingElement=null
148 class: 'element-on-edit-canvas', 156 class: 'element-on-edit-canvas',
149 props: element.getProps(), // #6 #3 157 props: element.getProps(), // #6 #3
  158 + // nativeOn: {
  159 + // contextmenu: e => {
  160 + // this.bindContextMenu(e)
  161 + // }
  162 + // },
150 on: { 163 on: {
151 // 高亮当前点击的元素 164 // 高亮当前点击的元素
152 // click: () => this.setEditingElement(element) 165 // click: () => this.setEditingElement(element)
@@ -180,6 +193,9 @@ export default { @@ -180,6 +193,9 @@ export default {
180 handlePointMouseUpProp={() => { 193 handlePointMouseUpProp={() => {
181 this.recordElementRect() 194 this.recordElementRect()
182 }} 195 }}
  196 + nativeOnContextmenu={e => {
  197 + this.bindContextMenu(e)
  198 + }}
183 > 199 >
184 {h(element.name, data)} 200 {h(element.name, data)}
185 </Shape> 201 </Shape>
@@ -202,6 +218,7 @@ export default { @@ -202,6 +218,7 @@ export default {
202 position={this.contextmenuPos} 218 position={this.contextmenuPos}
203 onSelect={({ item, key, selectedKeys }) => { 219 onSelect={({ item, key, selectedKeys }) => {
204 this.elementManager({ type: key }) 220 this.elementManager({ type: key })
  221 + this.hideContextMenu()
205 }} 222 }}
206 onHideMenu={this.hideContextMenu} 223 onHideMenu={this.hideContextMenu}
207 /> 224 />
front-end/h5/src/components/core/support/contexmenu.js
1 1
2 -import { contains } from '../../../utils/dom-helper.js' 2 +// import { contains } from '../../../utils/dom-helper.js'
3 3
4 const contextmenuOptions = [ 4 const contextmenuOptions = [
5 { 5 {
@@ -42,7 +42,6 @@ const horizontalMenuStyle = { @@ -42,7 +42,6 @@ const horizontalMenuStyle = {
42 lineHeight: '35px', 42 lineHeight: '35px',
43 border: 'none', 43 border: 'none',
44 borderTop: '1px solid #eee' 44 borderTop: '1px solid #eee'
45 - // borderRight: '1px solid #eee'  
46 } 45 }
47 46
48 export default { 47 export default {
@@ -54,23 +53,22 @@ export default { @@ -54,23 +53,22 @@ export default {
54 }, 53 },
55 methods: { 54 methods: {
56 handleSelectMenu ({ item, key, selectedKeys }) { 55 handleSelectMenu ({ item, key, selectedKeys }) {
57 - // this.elementManager({ type: key })  
58 - this.$emit('select', { item, key, selectedKeys }) 56 + this.$emit('select', { item, key, selectedKeys }) // elementManager({ type: key })
59 }, 57 },
60 hideContextMenu () { 58 hideContextMenu () {
61 - this.$emit('hide-menu') 59 + this.$emit('hideMenu')
62 }, 60 },
63 handleMouseLeave (e) { 61 handleMouseLeave (e) {
64 - const contextmenu = this.$refs.contextmenu  
65 - if (  
66 - e &&  
67 - e.relatedTarget &&  
68 - contextmenu &&  
69 - contextmenu.$el &&  
70 - contains(e.relatedTarget, contextmenu.$el)  
71 - ) {  
72 - return  
73 - } 62 + // const contextmenu = this.$refs.contextmenu
  63 + // if (
  64 + // e &&
  65 + // e.relatedTarget &&
  66 + // contextmenu &&
  67 + // contextmenu.$el &&
  68 + // contains(e.relatedTarget, contextmenu.$el)
  69 + // ) {
  70 + // return
  71 + // }
74 this.hideContextMenu() 72 this.hideContextMenu()
75 } 73 }
76 }, 74 },