54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
const useMove = function (el: HTMLElement, callback: Function) {
 | 
						|
  el.style.position = "fixed";
 | 
						|
  let offsetX: number;
 | 
						|
  let offsetY: number;
 | 
						|
  if (el != null) {
 | 
						|
    el.addEventListener("mousedown", function (event: any) {
 | 
						|
      const path = (event.composedPath && event.composedPath()) || event.path;
 | 
						|
      if (path[0].className === "layui-layer-title") {
 | 
						|
        if (event.button == 0 && el != null) {
 | 
						|
          const lexObj: any = getComputedStyle(el);
 | 
						|
          offsetX =
 | 
						|
            event.pageX - el.offsetLeft + parseInt(lexObj["margin-left"]);
 | 
						|
          offsetY =
 | 
						|
            event.pageY - el.offsetTop + parseInt(lexObj["margin-right"]);
 | 
						|
          const move = function (event: any) {
 | 
						|
            if (el != null) {
 | 
						|
              let x = event.pageX - offsetX;
 | 
						|
              let y = event.pageY - offsetY;
 | 
						|
              if (x < 0) {
 | 
						|
                x = 0;
 | 
						|
              } else if (
 | 
						|
                x >
 | 
						|
                document.documentElement.clientWidth - el.offsetWidth
 | 
						|
              ) {
 | 
						|
                x = document.documentElement.clientWidth - el.offsetWidth;
 | 
						|
              }
 | 
						|
              if (y < 0) {
 | 
						|
                y = 0;
 | 
						|
              } else if (
 | 
						|
                y >
 | 
						|
                document.documentElement.clientHeight - el.offsetHeight
 | 
						|
              ) {
 | 
						|
                y = document.documentElement.clientHeight - el.offsetHeight;
 | 
						|
              }
 | 
						|
              el.style.left = `${x}px`;
 | 
						|
              el.style.top = `${y}px`;
 | 
						|
              callback(el.style.left, el.style.top);
 | 
						|
            }
 | 
						|
            return false;
 | 
						|
          };
 | 
						|
          document.addEventListener("mousemove", move);
 | 
						|
          const stop = function () {
 | 
						|
            document.removeEventListener("mousemove", move);
 | 
						|
            document.removeEventListener("mouseup", stop);
 | 
						|
          };
 | 
						|
          document.addEventListener("mouseup", stop);
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return false;
 | 
						|
    });
 | 
						|
  }
 | 
						|
};
 | 
						|
export default useMove;
 |