@mdsfe/mds-ui 0.4.10 → 0.4.11-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/modal.js CHANGED
@@ -1017,6 +1017,16 @@ var PREFIXCLS = 'mds-modal';
1017
1017
  this.initZindex();
1018
1018
  }
1019
1019
  document.body.appendChild(this.$refs.root);
1020
+ },
1021
+ beforeDestroy: function beforeDestroy() {
1022
+ // 清理附加到 body 的 DOM 节点,避免 DOM 泄漏
1023
+ if (this.$refs.root && this.$refs.root.parentNode) {
1024
+ this.$refs.root.parentNode.removeChild(this.$refs.root);
1025
+ }
1026
+ // 恢复 body 滚动状态
1027
+ if (this.disabledScroll) {
1028
+ Object(util["d" /* fixBodyScroll */])(false);
1029
+ }
1020
1030
  }
1021
1031
  });
1022
1032
  // CONCATENATED MODULE: ./components/modal/modal.vue?vue&type=script&lang=js&
package/dist/tabs.js CHANGED
@@ -693,11 +693,14 @@ var external_lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(extern
693
693
  mounted: function mounted() {
694
694
  var _this = this;
695
695
 
696
- var debouncedResize = external_lodash_debounce_default()(function () {
696
+ this.debouncedResize = external_lodash_debounce_default()(function () {
697
697
  _this.setNextPrev();
698
698
  _this.scrollToActive();
699
699
  }, 200);
700
- this.resizeEvent = window.addEventListener('resize', debouncedResize);
700
+ window.addEventListener('resize', this.debouncedResize);
701
+ },
702
+ beforeDestroy: function beforeDestroy() {
703
+ window.removeEventListener('resize', this.debouncedResize);
701
704
  },
702
705
  beforeUpdate: function beforeUpdate() {
703
706
  this.setNextPrev();
package/dist/tree.js CHANGED
@@ -1628,84 +1628,73 @@ var external_transition_default = /*#__PURE__*/__webpack_require__.n(external_tr
1628
1628
  leaveBlock: function leaveBlock() {
1629
1629
  this.blockHover = false;
1630
1630
  },
1631
+ handleDragMouseMove: function handleDragMouseMove(event) {
1632
+ if (!this.draggingVNode) return;
1633
+ var rect = this.$el.getBoundingClientRect();
1634
+ var left = event.clientX - this.dragMousePos.x;
1635
+ var top = event.clientY - this.dragMousePos.y;
1636
+
1637
+ if (!this.node.tree.dragStatus && (Math.abs(left - rect.left) > 10 || Math.abs(top - rect.top) > 10)) {
1638
+ document.body.appendChild(this.draggingVNode);
1639
+ this.node.tree.currentCathcNode = this.node;
1640
+ this.node.tree.dragStatus = true;
1641
+ }
1642
+
1643
+ this.draggingVNode.style.left = left + 'px';
1644
+ this.draggingVNode.style.top = top + 'px';
1645
+ },
1646
+ handleDragMouseUp: function handleDragMouseUp() {
1647
+ var node = this.node;
1648
+ var target = node.tree.currentTargetNode;
1649
+
1650
+ document.removeEventListener('mousemove', this.handleDragMouseMove);
1651
+ document.removeEventListener('mouseup', this.handleDragMouseUp);
1652
+
1653
+ if (node.tree.dragStatus && this.draggingVNode && this.draggingVNode.parentNode) {
1654
+ this.draggingVNode.parentNode.removeChild(this.draggingVNode);
1655
+ }
1656
+
1657
+ this.draggingVNode = null;
1658
+ node.tree.dragStatus = false;
1659
+
1660
+ if (target && target !== node) {
1661
+ if (node.tree.targetAction === 'first') {
1662
+ target.first(node);
1663
+ } else if (node.tree.targetAction === 'after') {
1664
+ target.after(node);
1665
+ } else if (node.tree.targetAction === 'append') {
1666
+ target.append(node);
1667
+ }
1668
+ }
1669
+ node.tree.currentCathcNode = null;
1670
+ node.tree.currentTargetNode = null;
1671
+ },
1631
1672
  listenDrag: function listenDrag() {
1632
1673
  var _this = this;
1633
1674
 
1634
1675
  var el = this.$el;
1635
- el.onmousedown = function (event) {
1636
- var node = _this.node;
1637
- var vnode = void 0;
1676
+ this.dragHandler = function (event) {
1638
1677
  var rect = el.getBoundingClientRect();
1639
1678
  event.stopPropagation();
1640
- vnode = el.cloneNode(true);
1679
+
1680
+ var vnode = el.cloneNode(true);
1641
1681
  vnode.style.position = 'fixed';
1642
1682
  vnode.style.opacity = '0.6';
1643
- vnode.style.left = rect.left;
1644
- vnode.style.top = rect.top;
1645
- // (clientX, clientY)点击位置距离当前可视区域的坐标(x,y)
1646
- // offsetLeft, offsetTop 距离上层或父级的左边距和上边距
1647
-
1648
- // 获取鼠标在弹窗中的位置
1649
- var mouseX = event.clientX - rect.left;
1650
- var mouseY = event.clientY - rect.top;
1651
- // 绑定移动和停止函数
1652
- document.onmousemove = function (event) {
1653
- var left = void 0,
1654
- top = void 0;
1655
- // 获取新的鼠标位置(event.clientX, event.clientY)
1656
- // 弹窗应该在的位置(left, top)
1657
- left = event.clientX - mouseX;
1658
- top = event.clientY - mouseY;
1659
- if (Math.abs(left - rect.left) > 10 || Math.abs(top - rect.top) > 10) {
1660
- document.body.appendChild(vnode);
1661
- node.tree.currentCathcNode = node;
1662
- node.tree.dragStatus = true;
1663
- }
1664
- // offsetWidth、offsetHeight 当前元素的宽度
1665
- // innerWidth、innerHeight 浏览器可视区的宽度和高度
1666
-
1667
- // 获取弹窗在页面中距X轴的最小、最大 位置
1668
- // let minX = -vnode.offsetWidth / 2 + 150
1669
- // let maxX = window.innerWidth + vnode.offsetWidth / 2 - 150
1670
- // if (left <= minX) {
1671
- // left = minX
1672
- // } else if (left >= maxX) {
1673
- // left = maxX
1674
- // }
1675
-
1676
- // 获取弹窗在页面中距Y轴的最小、最大 位置
1677
- // let minY = 20
1678
- // let maxY = window.innerHeight + vnode.offsetHeight / 2 - 50
1679
- // if (top <= minY) {
1680
- // top = minY
1681
- // } else if (top >= maxY) {
1682
- // top = maxY
1683
- // }
1684
- // 赋值移动
1685
- vnode.style.left = left + 'px';
1686
- vnode.style.top = top + 'px';
1687
- };
1688
- document.onmouseup = function () {
1689
- var target = node.tree.currentTargetNode;
1690
- document.onmousemove = document.onmouseup = null;
1691
- if (node.tree.dragStatus) {
1692
- document.body.removeChild(vnode);
1693
- }
1694
- node.tree.dragStatus = false;
1695
- if (target && target !== node) {
1696
- console.log(node.tree.targetAction);
1697
- if (node.tree.targetAction === 'first') {
1698
- target.first(node);
1699
- } else if (node.tree.targetAction === 'after') {
1700
- target.after(node);
1701
- } else if (node.tree.targetAction === 'append') {
1702
- target.append(node);
1703
- }
1704
- }
1705
- node.tree.currentCathcNode = null;
1706
- node.tree.currentTargetNode = null;
1683
+ vnode.style.left = rect.left + 'px';
1684
+ vnode.style.top = rect.top + 'px';
1685
+ vnode.style.zIndex = '9999';
1686
+ vnode.style.pointerEvents = 'none';
1687
+
1688
+ _this.draggingVNode = vnode;
1689
+ _this.dragMousePos = {
1690
+ x: event.clientX - rect.left,
1691
+ y: event.clientY - rect.top
1707
1692
  };
1693
+
1694
+ document.addEventListener('mousemove', _this.handleDragMouseMove);
1695
+ document.addEventListener('mouseup', _this.handleDragMouseUp);
1708
1696
  };
1697
+ el.addEventListener('mousedown', this.dragHandler);
1709
1698
  }
1710
1699
  },
1711
1700
  mounted: function mounted() {
@@ -1713,6 +1702,17 @@ var external_transition_default = /*#__PURE__*/__webpack_require__.n(external_tr
1713
1702
  this.listenDrag();
1714
1703
  }
1715
1704
  },
1705
+ beforeDestroy: function beforeDestroy() {
1706
+ var el = this.$el;
1707
+ if (this.dragHandler) {
1708
+ el.removeEventListener('mousedown', this.dragHandler);
1709
+ }
1710
+ document.removeEventListener('mousemove', this.handleDragMouseMove);
1711
+ document.removeEventListener('mouseup', this.handleDragMouseUp);
1712
+ if (this.draggingVNode && this.draggingVNode.parentNode) {
1713
+ this.draggingVNode.parentNode.removeChild(this.draggingVNode);
1714
+ }
1715
+ },
1716
1716
 
1717
1717
  watch: {
1718
1718
  'node.check': function nodeCheck() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdsfe/mds-ui",
3
- "version": "0.4.10",
3
+ "version": "0.4.11-0",
4
4
  "description": "A set of enterprise-class Vue UI components-beta.",
5
5
  "main": "dist/mds-ui.common.js",
6
6
  "unpkg": "dist/mds-ui.min.js",