diff --git a/js/bootstrap-modalmanager.js b/js/bootstrap-modalmanager.js index 94f327b..cec2a91 100644 --- a/js/bootstrap-modalmanager.js +++ b/js/bootstrap-modalmanager.js @@ -298,57 +298,65 @@ this.isLoading = false; }, - removeLoading: function () { - this.$backdropHandle && this.$backdropHandle.remove(); - this.$backdropHandle = null; - this.removeSpinner(); - }, - - loading: function (callback) { + createLoading: function (callback) { callback = callback || function () { }; this.$element - .toggleClass('modal-open', !this.isLoading || this.hasOpenModal()) + .toggleClass('modal-open', this.hasOpenModal()) .toggleClass('page-overflow', $(window).height() < this.$element.height()); - if (!this.isLoading) { - - this.$backdropHandle = this.createBackdrop('fade', this.options.backdropTemplate); + this.$backdropHandle = this.createBackdrop('fade'); - this.$backdropHandle[0].offsetWidth; // force reflow + this.$backdropHandle[0].offsetWidth; // force reflow - var openModals = this.getOpenModals(); + this.$backdropHandle + .css('z-index', getzIndex('backdrop', this.stack.length)) + .addClass('in'); - this.$backdropHandle - .css('z-index', getzIndex('backdrop', openModals.length + 1)) - .addClass('in'); + var $spinner = $(this.options.spinner) + .css('z-index', getzIndex('modal', this.stack.length)) + .appendTo(this.$element) + .addClass('in'); - var $spinner = $(this.options.spinner) - .css('z-index', getzIndex('modal', openModals.length + 1)) - .appendTo(this.$element) - .addClass('in'); + this.$spinner = $(this.createContainer()) + .append($spinner) + .on('click.modalmanager', $.proxy(this.loading, this)); - this.$spinner = $(this.createContainer()) - .append($spinner) - .on('click.modalmanager', $.proxy(this.loading, this)); + this.isLoading = true; - this.isLoading = true; + $.support.transition ? + this.$backdropHandle.one($.support.transition.end, callback) : + callback(); + }, - $.support.transition ? - this.$backdropHandle.one($.support.transition.end, callback) : - callback(); + removeLoading: function () { + this.$element + .removeClass('modal-open') + .toggleClass('page-overflow', $(window).height() < this.$element.height()); - } else if (this.isLoading && this.$backdropHandle) { + if (this.$backdropHandle) this.$backdropHandle.removeClass('in'); - var that = this; - $.support.transition ? - this.$backdropHandle.one($.support.transition.end, function () { that.removeLoading() }) : - that.removeLoading(); + function remove() { + this.$backdropHandle && this.$backdropHandle.remove(); + this.$backdropHandle = null; + this.removeSpinner(); + } + var that = this; + $.support.transition && this.$backdropHandle ? + this.$backdropHandle.one($.support.transition.end, function () { remove.call(that); }) : + remove.call(that); + }, - } else if (callback) { + loading: function (callback) { + callback = callback || function () {}; + + if (!this.isLoading) + this.createLoading(callback); + else if (this.isLoading && this.$backdropHandle) + this.removeLoading(callback); + else if (callback) callback(this.isLoading); - } } };