Your IP : 216.73.216.240
/*! UIkit 2.16.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function($, UI) {
"use strict";
var active = false, $html = UI.$html, body;
UI.component('modal', {
defaults: {
keyboard: true,
bgclose: true,
minScrollHeight: 150,
center: false
},
scrollable: false,
transition: false,
init: function() {
if (!body) body = $('body');
var $this = this;
this.transition = UI.support.transition;
this.paddingdir = "padding-" + (UI.langdirection == 'left' ? "right":"left");
this.dialog = this.find(".@-modal-dialog");
this.on("click", ".@-modal-close", function(e) {
e.preventDefault();
$this.hide();
}).on("click", function(e) {
var target = $(e.target);
if (target[0] == $this.element[0] && $this.options.bgclose) {
$this.hide();
}
});
},
toggle: function() {
return this[this.isActive() ? "hide" : "show"]();
},
show: function() {
var $this = this;
if (this.isActive()) return;
if (active) active.hide(true);
this.element.removeClass("@-open").show();
this.resize();
active = this;
$html.addClass("@-modal-page").height(); // force browser engine redraw
this.element.addClass("@-open").trigger("show.uk.modal");
UI.Utils.checkDisplay(this.dialog, true);
return this;
},
hide: function(force) {
if (!this.isActive()) return;
if (!force && UI.support.transition) {
var $this = this;
this.one(UI.support.transition.end, function() {
$this._hide();
}).removeClass("@-open");
} else {
this._hide();
}
return this;
},
resize: function() {
var bodywidth = body.width();
this.scrollbarwidth = window.innerWidth - bodywidth;
body.css(this.paddingdir, this.scrollbarwidth);
this.element.css('overflow-y', this.scrollbarwidth ? 'scroll' : 'auto');
if (!this.updateScrollable() && this.options.center) {
var dh = this.dialog.outerHeight(),
pad = parseInt(this.dialog.css('margin-top'), 10) + parseInt(this.dialog.css('margin-bottom'), 10);
if ((dh + pad) < window.innerHeight) {
this.dialog.css({'top': (window.innerHeight/2 - dh/2) - pad });
} else {
this.dialog.css({'top': ''});
}
}
},
updateScrollable: function() {
// has scrollable?
var scrollable = this.dialog.find('.@-overflow-container:visible:first');
if (scrollable.length) {
scrollable.css("height", 0);
var offset = Math.abs(parseInt(this.dialog.css("margin-top"), 10)),
dh = this.dialog.outerHeight(),
wh = window.innerHeight,
h = wh - 2*(offset < 20 ? 20:offset) - dh;
scrollable.css("height", h < this.options.minScrollHeight ? "":h);
return true;
}
return false;
},
_hide: function() {
this.element.hide().removeClass("@-open");
$html.removeClass("@-modal-page");
body.css(this.paddingdir, "");
if(active===this) active = false;
this.trigger("hide.uk.modal");
},
isActive: function() {
return (active == this);
}
});
UI.component('modalTrigger', {
boot: function() {
// init code
UI.$html.on("click.modal.uikit", "[data-@-modal]", function(e) {
var ele = UI.$(this);
if (ele.is("a")) {
e.preventDefault();
}
if (!ele.data("modalTrigger")) {
var modal = UI.modalTrigger(ele, UI.Utils.options(ele.attr("data-@-modal")));
modal.show();
}
});
// close modal on esc button
UI.$html.on('keydown.modal.uikit', function (e) {
if (active && e.keyCode === 27 && active.options.keyboard) { // ESC
e.preventDefault();
active.hide();
}
});
UI.$win.on("resize orientationchange", UI.Utils.debounce(function(){
if (active) active.resize();
}, 150));
},
init: function() {
var $this = this;
this.options = $.extend({
"target": $this.element.is("a") ? $this.element.attr("href") : false
}, this.options);
this.modal = UI.modal(this.options.target, this.options);
this.on("click", function(e) {
e.preventDefault();
$this.show();
});
//methods
this.proxy(this.modal, "show hide isActive");
}
});
UI.modal.dialog = function(content, options) {
var modal = UI.modal(UI.$(UI.modal.dialog.template).appendTo("body"), options);
modal.on("hide.uk.modal", function(){
if (modal.persist) {
modal.persist.appendTo(modal.persist.data("modalPersistParent"));
modal.persist = false;
}
modal.element.remove();
});
setContent(content, modal);
return modal;
};
UI.modal.dialog.template = '<div class="@-modal"><div class="@-modal-dialog"></div></div>';
UI.modal.alert = function(content, options) {
UI.modal.dialog(([
'<div class="@-margin @-modal-content">'+String(content)+'</div>',
'<div class="@-modal-buttons"><button class="@-button @-button-primary @-modal-close">Ok</button></div>'
]).join("").replace(/@-/g, UI._prefix+'-').replace(/@-/g, UI._prefix+'-'), $.extend({bgclose:false, keyboard:false}, options)).show();
};
UI.modal.confirm = function(content, onconfirm, options) {
onconfirm = $.isFunction(onconfirm) ? onconfirm : function(){};
var modal = UI.modal.dialog(([
'<div class="@-margin @-modal-content">'+String(content)+'</div>',
'<div class="@-modal-buttons"><button class="@-button @-button-primary js-modal-confirm">Ok</button> <button class="@-button @-modal-close">Cancel</button></div>'
]).join("").replace(/@-/g, UI._prefix+'-'), $.extend({bgclose:false, keyboard:false}, options));
modal.element.find(".js-modal-confirm").on("click", function(){
onconfirm();
modal.hide();
});
modal.show();
};
// helper functions
function setContent(content, modal){
if(!modal) return;
if (typeof content === 'object') {
// convert DOM object to a jQuery object
content = content instanceof jQuery ? content : UI.$(content);
if(content.parent().length) {
modal.persist = content;
modal.persist.data("modalPersistParent", content.parent());
}
}else if (typeof content === 'string' || typeof content === 'number') {
// just insert the data as innerHTML
content = $('<div></div>').html(content);
}else {
// unsupported data type!
content = $('<div></div>').html('UIkit.modal Error: Unsupported data type: ' + typeof content);
}
content.appendTo(modal.element.find('.@-modal-dialog'));
return modal;
}
})(jQuery, UIkit);