sogo/UI/WebServerResources/js/Common/angular-file-upload.trump.js

56 lines
1.8 KiB
JavaScript

/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
'use strict';
angular
.module('angularFileUpload')
.decorator('FileUploader', FileUploaderDecorator)
.decorator('FileDrop', FileDropDecorator);
/**
* Set XSRF header if the cookie exists.
* Solution based on the following discussion:
* https://github.com/nervgh/angular-file-upload/issues/360
*
* @ngInject
*/
FileUploaderDecorator.$inject = ['$delegate', '$cookies'];
function FileUploaderDecorator($delegate, $cookies) {
$delegate.prototype.onBeforeUploadItem = function(item) {
var token = $cookies.get('XSRF-TOKEN');
if (token)
item.headers = {'X-XSRF-TOKEN': token};
};
return $delegate;
}
/**
* Fixed bug causing nv-file-over (over-class) not resetting when leaving element.
* Solution based on this unmerged pull request:
* https://github.com/nervgh/angular-file-upload/pull/643
*
* @ngInject
*/
FileDropDecorator.$inject = ['$delegate', '$timeout'];
function FileDropDecorator($delegate, $timeout) {
$delegate.prototype.onDragOver = function(event) {
var transfer = this._getTransfer(event);
if (!this._haveFiles(transfer.types)) return;
transfer.dropEffect = 'copy';
this._preventAndStop(event);
angular.forEach(this.uploader._directives.over, this._addOverClass, this);
$timeout.cancel(this.onDragLeaveTimer);
};
$delegate.prototype.onDragLeave = function(event) {
var that = this;
$timeout.cancel(this.onDragLeaveTimer);
this.onDragLeaveTimer = $timeout(function() {
that._preventAndStop(event);
angular.forEach(that.uploader._directives.over, that._removeOverClass, that);
}, 50);
};
return $delegate;
}
})();