/* eslint */
|
import Vue from 'vue'
|
|
const drag = Vue.directive('drag', {
|
bind (el, binding, vnode, oldVnode) {
|
const dialogHeaderEl = el.querySelector('.public-bounced-title')
|
dialogHeaderEl.onmousedown = function (e) {
|
var distX = e.pageX - el.offsetLeft
|
var distY = e.pageY - el.offsetTop
|
if (e.preventDefault) {
|
e.preventDefault()
|
} else {
|
e.returnValue = false
|
}
|
document.onmousemove = function (e) {
|
let left = e.clientX - distX
|
let top = e.clientY - distY
|
|
if (left <= 0) {
|
left = 5
|
} else if (left > document.documentElement.clientWidth - dialogHeaderEl.clientWidth) {
|
left = document.documentElement.clientWidth - dialogHeaderEl.clientWidth - 5
|
}
|
if (top <= 0) {
|
top = 5
|
} else if (top > document.documentElement.clientHeight - dialogHeaderEl.clientHeight) {
|
top = document.documentElement.clientHeight - dialogHeaderEl.clientHeight - 5
|
}
|
|
el.style.left = left + 'px'
|
el.style.top = top + 'px'
|
}
|
document.onmouseup = function () {
|
document.onmousemove = document.onmouseup = null
|
}
|
}
|
}
|
})
|
export default drag
|