You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/UI/jQuery/jquery.spin.js

62 lines
1.5 KiB

module.exports = function() {
'use strict';
var $ = this;
$.fn.spinForPromise = function(promise) {
var self = this;
if (!promise || promise.state() !== 'pending') {
return this;
}
promise.always(function() {
self.stopSpin();
});
return this.startSpin();
};
$.fn.startSpin = function() {
var icon = this.find('i').andSelf('i');
if (!icon || !icon.attr('class')) {
return this;
}
var iconClasses = icon.attr('class').match(/(?:^|\s)icon\-.+?(?:$|\s)/);
if (!iconClasses || iconClasses.length === 0) {
return this;
}
var iconClass = $.trim(iconClasses[0]);
this.addClass('disabled');
if (icon.hasClass('icon-can-spin')) {
icon.addClass('fa-spin');
} else {
icon.attr('data-idle-icon', iconClass);
icon.removeClass(iconClass);
icon.addClass('fa-spin-overlay');
icon.html('<i class="' + iconClass + '" /><span><i class="fa-spin icon-lidarr-spinner" /></span>');
}
return this;
};
$.fn.stopSpin = function() {
var icon = this.find('i').andSelf('i');
icon.empty();
this.removeClass('disabled');
icon.removeClass('fa-spin fa-spin-overlay');
var idleIcon = icon.attr('data-idle-icon');
if (idleIcon) {
icon.addClass(idleIcon);
}
return this;
};
};