Skip to content

Commit 8c70f01

Browse files
Merge pull request #1 from scythianfuego/fix-issue-295-z-index-option-ignored
Fix issue codef0rmer#295: z-index option ignored
2 parents 782f76c + 192a966 commit 8c70f01

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/angular-dragdrop.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
4343
callback = objExtract.callback,
4444
constructor = objExtract.constructor,
4545
args = [event, ui].concat(objExtract.args);
46-
46+
4747
// call either $scoped method i.e. $scope.dropCallback or constructor's method i.e. this.dropCallback.
4848
// Removing scope.$apply call that was performance intensive (especially onDrag) and does not require it
4949
// always. So call it within the callback if needed.
5050
return (scope[callback] || scope[constructor][callback]).apply(scope[callback] ? scope : scope[constructor], args);
51-
51+
5252
function extract(callbackName) {
5353
var atStartBracket = callbackName.indexOf('(') !== -1 ? callbackName.indexOf('(') : callbackName.length,
5454
atEndBracket = callbackName.lastIndexOf(')') !== -1 ? callbackName.lastIndexOf(')') : callbackName.length,
@@ -184,7 +184,9 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
184184
fromPos = $fromEl[dropSettings.containment || 'offset'](),
185185
displayProperty = $toEl.css('display'), // sometimes `display` is other than `block`
186186
hadNgHideCls = $toEl.hasClass('ng-hide'),
187-
hadDNDHideCls = $toEl.hasClass('angular-dragdrop-hide');
187+
hadDNDHideCls = $toEl.hasClass('angular-dragdrop-hide'),
188+
jqyouiOptions = this.draggableScope.$eval($fromEl.attr('data-jqyoui-options')) || {},
189+
zIndexDragged = jqyouiOptions.zIndex != null ? jqyouiOptions.zIndex : 9999;
188190

189191
if (toPos === null && $toEl.length > 0) {
190192
if (($toEl.attr('jqyoui-draggable') || $toEl.attr('data-jqyoui-draggable')) !== undefined && $toEl.ngattr('ng-model') !== undefined && $toEl.is(':visible') && dropSettings && dropSettings.multiple) {
@@ -195,7 +197,7 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
195197
toPos.top+= $toEl.outerHeight(true);
196198
}
197199
} else {
198-
// Angular v1.2 uses ng-hide to hide an element
200+
// Angular v1.2 uses ng-hide to hide an element
199201
// so we've to remove it in order to grab its position
200202
if (hadNgHideCls) $toEl.removeClass('ng-hide');
201203
if (hadDNDHideCls) $toEl.removeClass('angular-dragdrop-hide');
@@ -204,7 +206,7 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
204206
}
205207
}
206208

207-
$fromEl.css({'position': 'absolute', 'z-index': 9999})
209+
$fromEl.css({'position': 'absolute', 'z-index': zIndexDragged || 9999})
208210
.css(fromPos)
209211
.animate(toPos, duration, function() {
210212
// Angular v1.2 uses ng-hide to hide an element
@@ -303,19 +305,20 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
303305
restrict: 'A',
304306
link: function(scope, elem, attrs) {
305307
var element = $(elem);
306-
var dragSettings, jqyouiOptions, zIndex, killWatcher;
308+
var dragSettings, jqyouiOptions, zIndex, zIndexDragged, killWatcher;
307309
var updateDraggable = function(newValue, oldValue) {
308310
if (newValue) {
309311
dragSettings = scope.$eval(element.attr('jqyoui-draggable') || element.attr('data-jqyoui-draggable')) || {};
310312
jqyouiOptions = scope.$eval(attrs.jqyouiOptions) || {};
313+
zIndexDragged = jqyouiOptions.zIndex != null ? jqyouiOptions.zIndex : 9999;
311314
element
312315
.draggable({disabled: false})
313316
.draggable(jqyouiOptions)
314317
.draggable({
315318
start: function(event, ui) {
316319
ngDragDropService.draggableScope = scope;
317320
zIndex = $(jqyouiOptions.helper ? ui.helper : this).css('z-index');
318-
$(jqyouiOptions.helper ? ui.helper : this).css('z-index', 9999);
321+
$(jqyouiOptions.helper ? ui.helper : this).css('z-index', zIndexDragged);
319322
jqyoui.startXY = $(this)[dragSettings.containment || 'offset']();
320323
ngDragDropService.callEventCallback(scope, dragSettings.onStart, event, ui);
321324
},
@@ -403,7 +406,7 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti
403406

404407
killWatcher = scope.$watch(function() { return scope.$eval(attrs.drop); }, updateDroppable);
405408
updateDroppable();
406-
409+
407410
element.on('$destroy', function() {
408411
element.droppable({disabled: true}).droppable('destroy');
409412
});

0 commit comments

Comments
 (0)