UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

127 lines (103 loc) 3.61 kB
import './kendo.popup.js'; var __meta__ = { id: "mobile.shim", name: "Shim", category: "mobile", description: "Mobile Shim", depends: [ "popup" ], hidden: true }; (function($, undefined$1) { var kendo = window.kendo, ui = kendo.mobile.ui, Popup = kendo.ui.Popup, SHIM = '<div class="km-shim"></div>', HIDE = "hide", Widget = ui.Widget; var Shim = Widget.extend({ init: function(element, options) { var that = this, app = kendo.mobile.application, os = kendo.support.mobileOS, osname = app ? app.os.name : (os ? os.name : "ios"), ioswp = osname === "ios" || osname === "wp" || (app ? app.os.skin : false), bb = osname === "blackberry", align = options.align || (ioswp ? "bottom center" : bb ? "center right" : "center center"), position = options.position || (ioswp ? "bottom center" : bb ? "center right" : "center center"), effect = options.effect || (ioswp ? "slideIn:up" : bb ? "slideIn:left" : "fade:in"), shim = $(SHIM).handler(that).hide(); Widget.fn.init.call(that, element, options); that.shim = shim; element = that.element; options = that.options; if (options.className) { that.shim.addClass(options.className); } if (!options.modal) { that.shim.on("down", "_hide"); } (app ? app.element : $(document.body)).append(shim); that.popup = new Popup(that.element, { anchor: shim, modal: true, appendTo: shim, origin: align, position: position, animation: { open: { effects: effect, duration: options.duration }, close: { duration: options.duration } }, close: function(e) { var prevented = false; if (!that._apiCall) { prevented = that.trigger(HIDE); } if (prevented) { e.preventDefault(); } that._apiCall = false; }, deactivate: function() { // Deactivate event can't be prevented. shim.hide(); }, open: function() { shim.show(); } }); kendo.notify(that); }, events: [ HIDE ], options: { name: "Shim", modal: false, align: undefined$1, position: undefined$1, effect: undefined$1, duration: 200 }, show: function() { this.popup.open(); }, hide: function() { this._apiCall = true; this.popup.close(); }, destroy: function() { Widget.fn.destroy.call(this); this.shim.kendoDestroy(); this.popup.destroy(); this.shim.remove(); }, _hide: function(e) { if (!e || !$.contains(this.shim.children().children(".k-popup")[0], e.target)) { this.popup.close(); } } }); ui.plugin(Shim); })(window.kendo.jQuery);