Skip to content

Commit 7170de8

Browse files
homerjamfcaballero
authored andcommitted
fix(sortable): remove classes properly
- Correctly remove sortable classes from elements on `dragend` Closes angular-ui#902
1 parent ae186cc commit 7170de8

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

src/common.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,11 @@ body > .ui-select-bootstrap.open {
201201
position: relative;
202202
}
203203

204-
.ui-select-multiple .ui-select-match-item.dropping-before:before {
204+
.ui-select-multiple .ui-select-match-item.dropping .ui-select-match-close {
205+
pointer-events: none;
206+
}
207+
208+
.ui-select-multiple:hover .ui-select-match-item.dropping-before:before {
205209
content: "";
206210
position: absolute;
207211
top: 0;
@@ -211,7 +215,7 @@ body > .ui-select-bootstrap.open {
211215
border-left: 1px solid #428bca;
212216
}
213217

214-
.ui-select-multiple .ui-select-match-item.dropping-after:after {
218+
.ui-select-multiple:hover .ui-select-match-item.dropping-after:after {
215219
content: "";
216220
position: absolute;
217221
top: 0;

src/uiSelectController.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ uis.controller('uiSelectCtrl',
4242
ctrl.lockChoiceExpression = undefined; // Initialized inside uiSelectMatch directive link function
4343
ctrl.clickTriggeredSelect = false;
4444
ctrl.$filter = $filter;
45+
ctrl.$element = $element;
4546

4647
// Use $injector to check for $animate and store a reference to it
4748
ctrl.$animate = (function () {

src/uiSelectSortDirective.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,31 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
3535
});
3636

3737
element.on('dragend', function() {
38-
element.removeClass(draggingClassName);
38+
removeClass(draggingClassName);
3939
});
4040

4141
var move = function(from, to) {
4242
/*jshint validthis: true */
4343
this.splice(to, 0, this.splice(from, 1)[0]);
4444
};
4545

46+
var removeClass = function(className) {
47+
angular.forEach($select.$element.querySelectorAll('.' + className), function(el){
48+
angular.element(el).removeClass(className);
49+
});
50+
};
51+
4652
var dragOverHandler = function(event) {
4753
event.preventDefault();
4854

4955
var offset = axis === 'vertical' ? event.offsetY || event.layerY || (event.originalEvent ? event.originalEvent.offsetY : 0) : event.offsetX || event.layerX || (event.originalEvent ? event.originalEvent.offsetX : 0);
5056

5157
if (offset < (this[axis === 'vertical' ? 'offsetHeight' : 'offsetWidth'] / 2)) {
52-
element.removeClass(droppingAfterClassName);
58+
removeClass(droppingAfterClassName);
5359
element.addClass(droppingBeforeClassName);
5460

5561
} else {
56-
element.removeClass(droppingBeforeClassName);
62+
removeClass(droppingBeforeClassName);
5763
element.addClass(droppingAfterClassName);
5864
}
5965
};
@@ -102,9 +108,9 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
102108
});
103109
});
104110

105-
element.removeClass(droppingClassName);
106-
element.removeClass(droppingBeforeClassName);
107-
element.removeClass(droppingAfterClassName);
111+
removeClass(droppingClassName);
112+
removeClass(droppingBeforeClassName);
113+
removeClass(droppingAfterClassName);
108114

109115
element.off('drop', dropHandler);
110116
};
@@ -124,9 +130,10 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
124130
if (event.target != element) {
125131
return;
126132
}
127-
element.removeClass(droppingClassName);
128-
element.removeClass(droppingBeforeClassName);
129-
element.removeClass(droppingAfterClassName);
133+
134+
removeClass(droppingClassName);
135+
removeClass(droppingBeforeClassName);
136+
removeClass(droppingAfterClassName);
130137

131138
element.off('dragover', dragOverHandler);
132139
element.off('drop', dropHandler);

0 commit comments

Comments
 (0)