You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
<template>
|
|
<div>
|
|
<slot></slot>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import commonMixin from '../base/mixins/common.js'
|
|
|
|
export default {
|
|
name: 'bm-context-menu',
|
|
props: {
|
|
width: {
|
|
type: Number
|
|
}
|
|
},
|
|
mixins: [commonMixin('contextMenu')],
|
|
methods: {
|
|
load () {
|
|
const {width, BMap, map, $parent} = this
|
|
const parent = this.parent = $parent.originInstance || map
|
|
if (this.originInstance) {
|
|
parent.removeContextMenu(this.originInstance)
|
|
}
|
|
const menu = this.originInstance = new BMap.ContextMenu()
|
|
for (const item of this.$children) {
|
|
if (item.seperator) {
|
|
menu.addSeparator()
|
|
continue
|
|
}
|
|
const menuItem = new BMap.MenuItem(item.text, function (point, pixel) {
|
|
item.callback({
|
|
point,
|
|
pixel,
|
|
BMap,
|
|
map,
|
|
target: parent
|
|
})
|
|
}, {
|
|
width,
|
|
id: item.id,
|
|
iconUrl: item.iconUrl
|
|
})
|
|
item.disabled ? menuItem.disable() : menuItem.enable()
|
|
item.originInstance = menuItem
|
|
menu.addItem(menuItem)
|
|
}
|
|
parent.addContextMenu(menu)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|