Skip to content

Commit cc74f36

Browse files
authored
fix(mvc.Dom): remove event listeners on element removal; fix(linkTools.Vertices): fix to fire mouseleave event when redundancyRemoval is disabled (#2482)
1 parent 6b1b54f commit cc74f36

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

packages/joint-core/src/mvc/Dom/methods.mjs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,50 @@
11
import { camelCase } from '../../util/utilHelpers.mjs';
22
import $ from './Dom.mjs';
33
import V from '../../V/index.mjs';
4-
import { dataPriv, cleanNodesData } from './vars.mjs';
4+
import { dataPriv, dataUser } from './vars.mjs';
55

66
// Manipulation
77

8-
function removeNodes(nodes, removeData) {
8+
function cleanNodesData(nodes) {
9+
let i = nodes.length;
10+
while (i--) cleanNodeData(nodes[i]);
11+
}
12+
13+
function cleanNodeData(node) {
14+
$.event.remove(node);
15+
dataPriv.remove(node);
16+
dataUser.remove(node);
17+
}
18+
19+
function removeNodes(nodes) {
920
for (let i = 0; i < nodes.length; i++) {
1021
const node = nodes[i];
11-
removeData && dataPriv.remove(node);
1222
if (node.parentNode) {
1323
node.parentNode.removeChild(node);
1424
}
1525
}
1626
}
1727

1828
export function remove() {
19-
removeNodes(this, true);
29+
for (let i = 0; i < this.length; i++) {
30+
const node = this[i];
31+
cleanNodeData(node);
32+
cleanNodesData(node.getElementsByTagName('*'));
33+
}
34+
removeNodes(this);
2035
return this;
2136
}
2237

2338
export function detach() {
24-
removeNodes(this, false);
39+
removeNodes(this);
2540
return this;
2641
}
2742

2843
export function empty() {
2944
for (let i = 0; i < this.length; i++) {
3045
const node = this[i];
3146
if (node.nodeType === 1) {
32-
cleanNodesData(dataPriv, node.getElementsByTagName('*'));
47+
cleanNodesData(node.getElementsByTagName('*'));
3348
// Remove any remaining nodes
3449
node.textContent = '';
3550
}

packages/joint-core/src/mvc/Dom/vars.mjs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,3 @@ import Data from '../Data.mjs';
33
export const dataPriv = new Data();
44

55
export const dataUser = new Data();
6-
7-
export function cleanNodesData(data, nodes) {
8-
let i = nodes.length;
9-
while (i--) {
10-
data.remove(nodes[i]);
11-
}
12-
}

0 commit comments

Comments
 (0)