move-ele.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. let left = e.pageX - _x;
  26. let top = e.pageY - _y;
  27. value.moveStop && value.moveStop({ left, top });
  28. document.removeEventListener("mousemove", moveHandle);
  29. document.removeEventListener("mouseup", upHandle);
  30. };
  31. el.addEventListener("mousedown", function (e) {
  32. if (e.button !== 0) return;
  33. if (modifiers.prevent) {
  34. e.preventDefault();
  35. }
  36. if (modifiers.stop) {
  37. e.stopPropagation();
  38. }
  39. _x = e.pageX;
  40. _y = e.pageY;
  41. value.moveStart && value.moveStart();
  42. document.addEventListener("mousemove", moveHandle);
  43. document.addEventListener("mouseup", upHandle);
  44. });
  45. },
  46. };