Skip to content

Commit 4293e0f

Browse files
committed
Merge pr danialfarid#1890 from original repo
see danialfarid#1890
2 parents d911c55 + 5bcfd47 commit 4293e0f

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

src/drop.js

+39-15
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,25 @@
6666
var dragOverDelay = 1;
6767
var actualDragOverClass;
6868

69-
elem[0].addEventListener('dragover', function (evt) {
69+
scope.$on('$destroy', function () {
70+
elem[0].removeEventListener('dragover', onDragOver, false);
71+
elem[0].removeEventListener('dragenter', onDragEnter, false);
72+
elem[0].removeEventListener('dragleave', onDragLeave, false);
73+
elem[0].removeEventListener('drop', onDrop, false);
74+
elem[0].removeEventListener('paste', onPaste, false);
75+
76+
if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && attrGetter('ngfEnableFirefoxPaste', scope)) {
77+
elem.off('keypress', onKeyPress);
78+
}
79+
});
80+
81+
elem[0].addEventListener('dragover', onDragOver, false);
82+
elem[0].addEventListener('dragenter', onDragEnter, false);
83+
elem[0].addEventListener('dragleave',onDragLeave, false);
84+
elem[0].addEventListener('drop', onDrop, false);
85+
elem[0].addEventListener('paste', onPaste, false);
86+
87+
function onDragOver(evt) {
7088
if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;
7189
evt.preventDefault();
7290
if (stopPropagation(scope)) evt.stopPropagation();
@@ -84,13 +102,15 @@
84102
attrGetter('ngfDrag', scope, {$isDragging: true, $class: actualDragOverClass, $event: evt});
85103
});
86104
}
87-
}, false);
88-
elem[0].addEventListener('dragenter', function (evt) {
105+
}
106+
107+
function onDragEnter(evt) {
89108
if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;
90109
evt.preventDefault();
91110
if (stopPropagation(scope)) evt.stopPropagation();
92-
}, false);
93-
elem[0].addEventListener('dragleave', function (evt) {
111+
}
112+
113+
function onDragLeave(evt) {
94114
if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;
95115
evt.preventDefault();
96116
if (stopPropagation(scope)) evt.stopPropagation();
@@ -99,32 +119,36 @@
99119
actualDragOverClass = null;
100120
attrGetter('ngfDrag', scope, {$isDragging: false, $event: evt});
101121
}, dragOverDelay || 100);
102-
}, false);
103-
elem[0].addEventListener('drop', function (evt) {
122+
}
123+
124+
function onDrop(evt) {
104125
if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;
105126
evt.preventDefault();
106127
if (stopPropagation(scope)) evt.stopPropagation();
107128
if (actualDragOverClass) elem.removeClass(actualDragOverClass);
108129
actualDragOverClass = null;
109130
extractFilesAndUpdateModel(evt.dataTransfer, evt, 'dropUrl');
110-
}, false);
111-
elem[0].addEventListener('paste', function (evt) {
131+
}
132+
133+
function onPaste(evt) {
112134
if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 &&
113135
attrGetter('ngfEnableFirefoxPaste', scope)) {
114136
evt.preventDefault();
115137
}
116138
if (isDisabled() || !upload.shouldUpdateOn('paste', attr, scope)) return;
117139
extractFilesAndUpdateModel(evt.clipboardData || evt.originalEvent.clipboardData, evt, 'pasteUrl');
118-
}, false);
140+
}
141+
142+
function onKeyPress(e) {
143+
if (!e.metaKey && !e.ctrlKey) {
144+
e.preventDefault();
145+
}
146+
}
119147

120148
if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 &&
121149
attrGetter('ngfEnableFirefoxPaste', scope)) {
122150
elem.attr('contenteditable', true);
123-
elem.on('keypress', function (e) {
124-
if (!e.metaKey && !e.ctrlKey) {
125-
e.preventDefault();
126-
}
127-
});
151+
elem.on('keypress', onKeyPress);
128152
}
129153

130154
function extractFilesAndUpdateModel(source, evt, updateOnType) {

0 commit comments

Comments
 (0)