@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
93 lines (72 loc) • 2.53 kB
JavaScript
require('./kendo.core.js');
var __meta__ = {
id: "mobile.loader",
name: "Loader",
category: "mobile",
description: "Mobile Loader",
depends: [ "core" ],
hidden: true
};
(function($, undefined$1) {
var kendo = window.kendo,
ui = kendo.mobile.ui,
Widget = ui.Widget,
CAPTURE_EVENTS = $.map(kendo.eventMap, function(value) { return value; }).join(" ").split(" ");
var Loader = Widget.extend({
init: function(container, options) {
var that = this,
element = $('<div class="km-loader"><span class="km-loading km-spin"></span><span class="km-loading-left"></span><span class="km-loading-right"></span></div>');
Widget.fn.init.call(that, element, options);
that.container = container;
that.captureEvents = false;
that._attachCapture();
element.append(that.options.loading).hide().appendTo(container);
},
options: {
name: "Loader",
loading: "<h1>Loading...</h1>",
timeout: 100
},
show: function() {
var that = this;
clearTimeout(that._loading);
if (that.options.loading === false) {
return;
}
that.captureEvents = true;
that._loading = setTimeout(function() {
that.element.show();
}, that.options.timeout);
},
hide: function() {
this.captureEvents = false;
clearTimeout(this._loading);
this.element.hide();
},
changeMessage: function(message) {
this.options.loading = message;
this.element.find(">h1").html(message);
},
transition: function() {
this.captureEvents = true;
this.container.css("pointer-events", "none");
},
transitionDone: function() {
this.captureEvents = false;
this.container.css("pointer-events", "");
},
_attachCapture: function() {
var that = this;
that.captureEvents = false;
function capture(e) {
if (that.captureEvents) {
e.preventDefault();
}
}
for (var i = 0; i < CAPTURE_EVENTS.length; i ++) {
that.container[0].addEventListener(CAPTURE_EVENTS[i], capture, true);
}
}
});
ui.plugin(Loader);
})(window.kendo.jQuery);