move-ele.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. module.exports = {
  2. inserted(el, { value, modifiers }) {
  3. let [_x, _y] = [0, 0];
  4. // 只允许鼠标左键触发
  5. let moveHandle = function(e) {
  6. if (e.button !== 0) return;
  7. if (modifiers.prevent) {
  8. e.preventDefault();
  9. }
  10. if (modifiers.stop) {
  11. e.stopPropagation();
  12. }
  13. let left = e.pageX - _x;
  14. let top = e.pageY - _y;
  15. value.moveElement({ left, top });
  16. };
  17. let upHandle = function(e) {
  18. if (e.button !== 0) return;
  19. if (modifiers.prevent) {
  20. e.preventDefault();
  21. }
  22. if (modifiers.stop) {
  23. e.stopPropagation();
  24. }
  25. value.moveStop && value.moveStop();
  26. document.removeEventListener("mousemove", moveHandle);
  27. document.removeEventListener("mouseup", upHandle);
  28. };
  29. el.addEventListener("mousedown", function(e) {
  30. if (e.button !== 0) return;
  31. if (modifiers.prevent) {
  32. e.preventDefault();
  33. }
  34. if (modifiers.stop) {
  35. e.stopPropagation();
  36. }
  37. _x = e.pageX;
  38. _y = e.pageY;
  39. value.moveStart && value.moveStart();
  40. document.addEventListener("mousemove", moveHandle);
  41. document.addEventListener("mouseup", upHandle);
  42. });
  43. }
  44. };