| // jshint esversion: 8 | |
| // release 24-04-2022 | |
| const nodrag_tds = ['input', 'select', 'a']; | |
| const nodrag_cls = "nodrag"; | |
| var UaDrag = function (e) { | |
| const drag = function (element) { | |
| let pos1 = 0, | |
| pos2 = 0, | |
| pos3 = 0, | |
| pos4 = 0; | |
| const dragMouseDown = function (e) { | |
| e = e || window.event; | |
| let t = e.target; | |
| t = t || null; | |
| if (!t) return; | |
| if (nodrag_tds.includes(t.tagName.toLowerCase())) return; | |
| if (t.classList.contains(nodrag_cls)) return; | |
| e.preventDefault(); | |
| //e.stopImmediatePropagation(); | |
| pos3 = e.clientX; | |
| pos4 = e.clientY; | |
| document.onmouseup = closeDragElement; | |
| document.onmousemove = elementDrag; | |
| }; | |
| const elementDrag = function (e) { | |
| e = e || window.event; | |
| //e.stopImmediatePropagation(); | |
| e.preventDefault(); | |
| pos1 = pos3 - e.clientX; | |
| pos2 = pos4 - e.clientY; | |
| pos3 = e.clientX; | |
| pos4 = e.clientY; | |
| element.style.top = (element.offsetTop - pos2) + "px"; | |
| element.style.left = (element.offsetLeft - pos1) + "px"; | |
| }; | |
| const closeDragElement = function () { | |
| document.onmouseup = null; | |
| document.onmousemove = null; | |
| }; | |
| element.onmousedown = dragMouseDown; | |
| }; | |
| return drag(e); | |
| }; | |