| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144 |
- /*!
- * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/)
- * Author: Boniface Pereira
- * Website: www.craftpip.com
- * Contact: hey@craftpip.com
- *
- * Copyright 2013-2019 jquery-confirm
- * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)
- */
- (function (factory) {
- if (typeof define === "function" && define.amd) {
- define(["jquery"], factory);
- } else {
- if (typeof module === "object" && module.exports) {
- module.exports = function (root, jQuery) {
- if (jQuery === undefined) {
- if (typeof window !== "undefined") {
- jQuery = require("jquery");
- } else {
- jQuery = require("jquery")(root);
- }
- }
- factory(jQuery);
- return jQuery;
- };
- } else {
- factory(jQuery);
- }
- }
- })(function ($) {
- var w = window;
- $.fn.confirm = function (options, option2) {
- if (typeof options === "undefined") {
- options = {};
- }
- if (typeof options === "string") {
- options = { content: options, title: option2 ? option2 : false };
- }
- $(this).each(function () {
- var $this = $(this);
- if ($this.attr("jc-attached")) {
- console.warn("jConfirm has already been attached to this element ", $this[0]);
- return;
- }
- $this.on("click", function (e) {
- e.preventDefault();
- var jcOption = $.extend({}, options);
- if ($this.attr("data-title")) {
- jcOption.title = $this.attr("data-title");
- }
- if ($this.attr("data-content")) {
- jcOption.content = $this.attr("data-content");
- }
- if (typeof jcOption.buttons === "undefined") {
- jcOption.buttons = {};
- }
- jcOption["$target"] = $this;
- if ($this.attr("href") && Object.keys(jcOption.buttons).length === 0) {
- var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {});
- var firstBtn = Object.keys(buttons)[0];
- jcOption.buttons = buttons;
- jcOption.buttons[firstBtn].action = function () {
- location.href = $this.attr("href");
- };
- }
- jcOption.closeIcon = false;
- var instance = $.confirm(jcOption);
- });
- $this.attr("jc-attached", true);
- });
- return $(this);
- };
- $.confirm = function (options, option2) {
- if (typeof options === "undefined") {
- options = {};
- }
- if (typeof options === "string") {
- options = { content: options, title: option2 ? option2 : false };
- }
- var putDefaultButtons = !(options.buttons === false);
- if (typeof options.buttons !== "object") {
- options.buttons = {};
- }
- if (Object.keys(options.buttons).length === 0 && putDefaultButtons) {
- var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {});
- options.buttons = buttons;
- }
- return w.jconfirm(options);
- };
- $.alert = function (options, option2) {
- if (typeof options === "undefined") {
- options = {};
- }
- if (typeof options === "string") {
- options = { content: options, title: option2 ? option2 : false };
- }
- var putDefaultButtons = !(options.buttons === false);
- if (typeof options.buttons !== "object") {
- options.buttons = {};
- }
- if (Object.keys(options.buttons).length === 0 && putDefaultButtons) {
- var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {});
- var firstBtn = Object.keys(buttons)[0];
- options.buttons[firstBtn] = buttons[firstBtn];
- }
- return w.jconfirm(options);
- };
- $.dialog = function (options, option2) {
- if (typeof options === "undefined") {
- options = {};
- }
- if (typeof options === "string") {
- options = { content: options, title: option2 ? option2 : false, closeIcon: function () {} };
- }
- options.buttons = {};
- if (typeof options.closeIcon === "undefined") {
- options.closeIcon = function () {};
- }
- options.confirmKeys = [13];
- return w.jconfirm(options);
- };
- w.jconfirm = function (options) {
- if (typeof options === "undefined") {
- options = {};
- }
- var pluginOptions = $.extend(true, {}, w.jconfirm.pluginDefaults);
- if (w.jconfirm.defaults) {
- pluginOptions = $.extend(true, pluginOptions, w.jconfirm.defaults);
- }
- pluginOptions = $.extend(true, {}, pluginOptions, options);
- var instance = new w.Jconfirm(pluginOptions);
- w.jconfirm.instances.push(instance);
- return instance;
- };
- w.Jconfirm = function (options) {
- $.extend(this, options);
- this._init();
- };
- w.Jconfirm.prototype = {
- _init: function () {
- var that = this;
- if (!w.jconfirm.instances.length) {
- w.jconfirm.lastFocused = $("body").find(":focus");
- }
- this._id = Math.round(Math.random() * 99999);
- this.contentParsed = $(document.createElement("div"));
- if (!this.lazyOpen) {
- setTimeout(function () {
- that.open();
- }, 0);
- }
- },
- _buildHTML: function () {
- var that = this;
- this._parseAnimation(this.animation, "o");
- this._parseAnimation(this.closeAnimation, "c");
- this._parseBgDismissAnimation(this.backgroundDismissAnimation);
- this._parseColumnClass(this.columnClass);
- this._parseTheme(this.theme);
- this._parseType(this.type);
- var template = $(this.template);
- template.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed);
- if (this.typeAnimated) {
- template.find(".jconfirm-box").addClass("jconfirm-type-animated");
- }
- if (this.useBootstrap) {
- template.find(".jc-bs3-row").addClass(this.bootstrapClasses.row);
- template.find(".jc-bs3-row").addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center");
- template.find(".jconfirm-box-container").addClass(this.columnClassParsed);
- if (this.containerFluid) {
- template.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid);
- } else {
- template.find(".jc-bs3-container").addClass(this.bootstrapClasses.container);
- }
- } else {
- template.find(".jconfirm-box").css("width", this.boxWidth);
- }
- if (this.titleClass) {
- template.find(".jconfirm-title-c").addClass(this.titleClass);
- }
- template.addClass(this.themeParsed);
- var ariaLabel = "jconfirm-box" + this._id;
- template.find(".jconfirm-box").attr("aria-labelledby", ariaLabel).attr("tabindex", -1);
- template.find(".jconfirm-content").attr("id", ariaLabel);
- if (this.bgOpacity !== null) {
- template.find(".jconfirm-bg").css("opacity", this.bgOpacity);
- }
- if (this.rtl) {
- template.addClass("jconfirm-rtl");
- }
- this.$el = template.appendTo(this.container);
- this.$jconfirmBoxContainer = this.$el.find(".jconfirm-box-container");
- this.$jconfirmBox = this.$body = this.$el.find(".jconfirm-box");
- this.$jconfirmBg = this.$el.find(".jconfirm-bg");
- this.$title = this.$el.find(".jconfirm-title");
- this.$titleContainer = this.$el.find(".jconfirm-title-c");
- this.$content = this.$el.find("div.jconfirm-content");
- this.$contentPane = this.$el.find(".jconfirm-content-pane");
- this.$icon = this.$el.find(".jconfirm-icon-c");
- this.$closeIcon = this.$el.find(".jconfirm-closeIcon");
- this.$holder = this.$el.find(".jconfirm-holder");
- this.$btnc = this.$el.find(".jconfirm-buttons");
- this.$scrollPane = this.$el.find(".jconfirm-scrollpane");
- that.setStartingPoint();
- this._contentReady = $.Deferred();
- this._modalReady = $.Deferred();
- this.$holder.css({ "padding-top": this.offsetTop, "padding-bottom": this.offsetBottom });
- this.setTitle();
- this.setIcon();
- this._setButtons();
- this._parseContent();
- this.initDraggable();
- if (this.isAjax) {
- this.showLoading(false);
- }
- $.when(this._contentReady, this._modalReady)
- .then(function () {
- if (that.isAjaxLoading) {
- setTimeout(function () {
- that.isAjaxLoading = false;
- that.setContent();
- that.setTitle();
- that.setIcon();
- setTimeout(function () {
- that.hideLoading(false);
- that._updateContentMaxHeight();
- }, 100);
- if (typeof that.onContentReady === "function") {
- that.onContentReady();
- }
- }, 50);
- } else {
- that._updateContentMaxHeight();
- that.setTitle();
- that.setIcon();
- if (typeof that.onContentReady === "function") {
- that.onContentReady();
- }
- }
- if (that.autoClose) {
- that._startCountDown();
- }
- })
- .then(function () {
- that._watchContent();
- });
- if (this.animation === "none") {
- this.animationSpeed = 1;
- this.animationBounce = 1;
- }
- this.$body.css(this._getCSS(this.animationSpeed, this.animationBounce));
- this.$contentPane.css(this._getCSS(this.animationSpeed, 1));
- this.$jconfirmBg.css(this._getCSS(this.animationSpeed, 1));
- this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed, 1));
- },
- _typePrefix: "jconfirm-type-",
- typeParsed: "",
- _parseType: function (type) {
- this.typeParsed = this._typePrefix + type;
- },
- setType: function (type) {
- var oldClass = this.typeParsed;
- this._parseType(type);
- this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);
- },
- themeParsed: "",
- _themePrefix: "jconfirm-",
- setTheme: function (theme) {
- var previous = this.theme;
- this.theme = theme || this.theme;
- this._parseTheme(this.theme);
- if (previous) {
- this.$el.removeClass(previous);
- }
- this.$el.addClass(this.themeParsed);
- this.theme = theme;
- },
- _parseTheme: function (theme) {
- var that = this;
- theme = theme.split(",");
- $.each(theme, function (k, a) {
- if (a.indexOf(that._themePrefix) === -1) {
- theme[k] = that._themePrefix + $.trim(a);
- }
- });
- this.themeParsed = theme.join(" ").toLowerCase();
- },
- backgroundDismissAnimationParsed: "",
- _bgDismissPrefix: "jconfirm-hilight-",
- _parseBgDismissAnimation: function (bgDismissAnimation) {
- var animation = bgDismissAnimation.split(",");
- var that = this;
- $.each(animation, function (k, a) {
- if (a.indexOf(that._bgDismissPrefix) === -1) {
- animation[k] = that._bgDismissPrefix + $.trim(a);
- }
- });
- this.backgroundDismissAnimationParsed = animation.join(" ").toLowerCase();
- },
- animationParsed: "",
- closeAnimationParsed: "",
- _animationPrefix: "jconfirm-animation-",
- setAnimation: function (animation) {
- this.animation = animation || this.animation;
- this._parseAnimation(this.animation, "o");
- },
- _parseAnimation: function (animation, which) {
- which = which || "o";
- var animations = animation.split(",");
- var that = this;
- $.each(animations, function (k, a) {
- if (a.indexOf(that._animationPrefix) === -1) {
- animations[k] = that._animationPrefix + $.trim(a);
- }
- });
- var a_string = animations.join(" ").toLowerCase();
- if (which === "o") {
- this.animationParsed = a_string;
- } else {
- this.closeAnimationParsed = a_string;
- }
- return a_string;
- },
- setCloseAnimation: function (closeAnimation) {
- this.closeAnimation = closeAnimation || this.closeAnimation;
- this._parseAnimation(this.closeAnimation, "c");
- },
- setAnimationSpeed: function (speed) {
- this.animationSpeed = speed || this.animationSpeed;
- },
- columnClassParsed: "",
- setColumnClass: function (colClass) {
- if (!this.useBootstrap) {
- console.warn("cannot set columnClass, useBootstrap is set to false");
- return;
- }
- this.columnClass = colClass || this.columnClass;
- this._parseColumnClass(this.columnClass);
- this.$jconfirmBoxContainer.addClass(this.columnClassParsed);
- },
- _updateContentMaxHeight: function () {
- var height = $(window).height() - (this.$jconfirmBox.outerHeight() - this.$contentPane.outerHeight()) - (this.offsetTop + this.offsetBottom);
- this.$contentPane.css({ "max-height": height + "px" });
- },
- setBoxWidth: function (width) {
- if (this.useBootstrap) {
- console.warn("cannot set boxWidth, useBootstrap is set to true");
- return;
- }
- this.boxWidth = width;
- this.$jconfirmBox.css("width", width);
- },
- _parseColumnClass: function (colClass) {
- colClass = colClass.toLowerCase();
- var p;
- switch (colClass) {
- case "xl":
- case "xlarge":
- p = "col-md-12";
- break;
- case "l":
- case "large":
- p = "col-md-8 col-md-offset-2";
- break;
- case "m":
- case "medium":
- p = "col-md-6 col-md-offset-3";
- break;
- case "s":
- case "small":
- p = "col-md-4 col-md-offset-4";
- break;
- case "xs":
- case "xsmall":
- p = "col-md-2 col-md-offset-5";
- break;
- default:
- p = colClass;
- }
- this.columnClassParsed = p;
- },
- initDraggable: function () {
- var that = this;
- var $t = this.$titleContainer;
- this.resetDrag();
- if (this.draggable) {
- $t.on("mousedown", function (e) {
- $t.addClass("jconfirm-hand");
- that.mouseX = e.clientX;
- that.mouseY = e.clientY;
- that.isDrag = true;
- });
- $(window).on("mousemove." + this._id, function (e) {
- if (that.isDrag) {
- that.movingX = e.clientX - that.mouseX + that.initialX;
- that.movingY = e.clientY - that.mouseY + that.initialY;
- that.setDrag();
- }
- });
- $(window).on("mouseup." + this._id, function () {
- $t.removeClass("jconfirm-hand");
- if (that.isDrag) {
- that.isDrag = false;
- that.initialX = that.movingX;
- that.initialY = that.movingY;
- }
- });
- }
- },
- resetDrag: function () {
- this.isDrag = false;
- this.initialX = 0;
- this.initialY = 0;
- this.movingX = 0;
- this.movingY = 0;
- this.mouseX = 0;
- this.mouseY = 0;
- this.$jconfirmBoxContainer.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
- },
- setDrag: function () {
- if (!this.draggable) {
- return;
- }
- this.alignMiddle = false;
- var boxWidth = this.$jconfirmBox.outerWidth();
- var boxHeight = this.$jconfirmBox.outerHeight();
- var windowWidth = $(window).width();
- var windowHeight = $(window).height();
- var that = this;
- var dragUpdate = 1;
- if (that.movingX % dragUpdate === 0 || that.movingY % dragUpdate === 0) {
- if (that.dragWindowBorder) {
- var leftDistance = windowWidth / 2 - boxWidth / 2;
- var topDistance = windowHeight / 2 - boxHeight / 2;
- topDistance -= that.dragWindowGap;
- leftDistance -= that.dragWindowGap;
- if (leftDistance + that.movingX < 0) {
- that.movingX = -leftDistance;
- } else {
- if (leftDistance - that.movingX < 0) {
- that.movingX = leftDistance;
- }
- }
- if (topDistance + that.movingY < 0) {
- that.movingY = -topDistance;
- } else {
- if (topDistance - that.movingY < 0) {
- that.movingY = topDistance;
- }
- }
- }
- that.$jconfirmBoxContainer.css("transform", "translate(" + that.movingX + "px, " + that.movingY + "px)");
- }
- },
- _scrollTop: function () {
- if (typeof pageYOffset !== "undefined") {
- return pageYOffset;
- } else {
- var B = document.body;
- var D = document.documentElement;
- D = D.clientHeight ? D : B;
- return D.scrollTop;
- }
- },
- _watchContent: function () {
- var that = this;
- if (this._timer) {
- clearInterval(this._timer);
- }
- var prevContentHeight = 0;
- this._timer = setInterval(function () {
- if (that.smoothContent) {
- var contentHeight = that.$content.outerHeight() || 0;
- if (contentHeight !== prevContentHeight) {
- prevContentHeight = contentHeight;
- }
- var wh = $(window).height();
- var total = that.offsetTop + that.offsetBottom + that.$jconfirmBox.height() - that.$contentPane.height() + that.$content.height();
- if (total < wh) {
- that.$contentPane.addClass("no-scroll");
- } else {
- that.$contentPane.removeClass("no-scroll");
- }
- }
- }, this.watchInterval);
- },
- _overflowClass: "jconfirm-overflow",
- _hilightAnimating: false,
- highlight: function () {
- this.hiLightModal();
- },
- hiLightModal: function () {
- var that = this;
- if (this._hilightAnimating) {
- return;
- }
- that.$body.addClass("hilight");
- var duration = parseFloat(that.$body.css("animation-duration")) || 2;
- this._hilightAnimating = true;
- setTimeout(function () {
- that._hilightAnimating = false;
- that.$body.removeClass("hilight");
- }, duration * 1000);
- },
- _bindEvents: function () {
- var that = this;
- this.boxClicked = false;
- this.$scrollPane.click(function (e) {
- if (!that.boxClicked) {
- var buttonName = false;
- var shouldClose = false;
- var str;
- if (typeof that.backgroundDismiss === "function") {
- str = that.backgroundDismiss();
- } else {
- str = that.backgroundDismiss;
- }
- if (typeof str === "string" && typeof that.buttons[str] !== "undefined") {
- buttonName = str;
- shouldClose = false;
- } else {
- if (typeof str === "undefined" || !!str === true) {
- shouldClose = true;
- } else {
- shouldClose = false;
- }
- }
- if (buttonName) {
- var btnResponse = that.buttons[buttonName].action.apply(that);
- shouldClose = typeof btnResponse === "undefined" || !!btnResponse;
- }
- if (shouldClose) {
- that.close();
- } else {
- that.hiLightModal();
- }
- }
- that.boxClicked = false;
- });
- this.$jconfirmBox.click(function (e) {
- that.boxClicked = true;
- });
- var isKeyDown = false;
- $(window).on("jcKeyDown." + that._id, function (e) {
- if (!isKeyDown) {
- isKeyDown = true;
- }
- });
- $(window).on("keyup." + that._id, function (e) {
- if (isKeyDown) {
- that.reactOnKey(e);
- isKeyDown = false;
- }
- });
- $(window).on("resize." + this._id, function () {
- that._updateContentMaxHeight();
- setTimeout(function () {
- that.resetDrag();
- }, 100);
- });
- },
- _cubic_bezier: "0.36, 0.55, 0.19",
- _getCSS: function (speed, bounce) {
- return {
- "-webkit-transition-duration": speed / 1000 + "s",
- "transition-duration": speed / 1000 + "s",
- "-webkit-transition-timing-function": "cubic-bezier(" + this._cubic_bezier + ", " + bounce + ")",
- "transition-timing-function": "cubic-bezier(" + this._cubic_bezier + ", " + bounce + ")",
- };
- },
- _setButtons: function () {
- var that = this;
- var total_buttons = 0;
- if (typeof this.buttons !== "object") {
- this.buttons = {};
- }
- $.each(this.buttons, function (key, button) {
- total_buttons += 1;
- if (typeof button === "function") {
- that.buttons[key] = button = { action: button };
- }
- that.buttons[key].text = button.text || key;
- that.buttons[key].btnClass = button.btnClass || "btn-default";
- that.buttons[key].action = button.action || function () {};
- that.buttons[key].keys = button.keys || [];
- that.buttons[key].isHidden = button.isHidden || false;
- that.buttons[key].isDisabled = button.isDisabled || false;
- $.each(that.buttons[key].keys, function (i, a) {
- that.buttons[key].keys[i] = a.toLowerCase();
- });
- var button_element = $('<button type="button" class="btn"></button>')
- .html(that.buttons[key].text)
- .addClass(that.buttons[key].btnClass)
- .prop("disabled", that.buttons[key].isDisabled)
- .css("display", that.buttons[key].isHidden ? "none" : "")
- .click(function (e) {
- e.preventDefault();
- var res = that.buttons[key].action.apply(that, [that.buttons[key]]);
- that.onAction.apply(that, [key, that.buttons[key]]);
- that._stopCountDown();
- if (typeof res === "undefined" || res) {
- that.close();
- }
- });
- that.buttons[key].el = button_element;
- that.buttons[key].setText = function (text) {
- button_element.html(text);
- };
- that.buttons[key].addClass = function (className) {
- button_element.addClass(className);
- };
- that.buttons[key].removeClass = function (className) {
- button_element.removeClass(className);
- };
- that.buttons[key].disable = function () {
- that.buttons[key].isDisabled = true;
- button_element.prop("disabled", true);
- };
- that.buttons[key].enable = function () {
- that.buttons[key].isDisabled = false;
- button_element.prop("disabled", false);
- };
- that.buttons[key].show = function () {
- that.buttons[key].isHidden = false;
- button_element.css("display", "");
- };
- that.buttons[key].hide = function () {
- that.buttons[key].isHidden = true;
- button_element.css("display", "none");
- };
- that["$_" + key] = that["$$" + key] = button_element;
- that.$btnc.append(button_element);
- });
- if (total_buttons === 0) {
- this.$btnc.hide();
- }
- if (this.closeIcon === null && total_buttons === 0) {
- this.closeIcon = true;
- }
- if (this.closeIcon) {
- if (this.closeIconClass) {
- var closeHtml = '<i class="' + this.closeIconClass + '"></i>';
- this.$closeIcon.html(closeHtml);
- }
- this.$closeIcon.click(function (e) {
- e.preventDefault();
- var buttonName = false;
- var shouldClose = false;
- var str;
- if (typeof that.closeIcon === "function") {
- str = that.closeIcon();
- } else {
- str = that.closeIcon;
- }
- if (typeof str === "string" && typeof that.buttons[str] !== "undefined") {
- buttonName = str;
- shouldClose = false;
- } else {
- if (typeof str === "undefined" || !!str === true) {
- shouldClose = true;
- } else {
- shouldClose = false;
- }
- }
- if (buttonName) {
- var btnResponse = that.buttons[buttonName].action.apply(that);
- shouldClose = typeof btnResponse === "undefined" || !!btnResponse;
- }
- if (shouldClose) {
- that.close();
- }
- });
- this.$closeIcon.show();
- } else {
- this.$closeIcon.hide();
- }
- },
- setTitle: function (string, force) {
- force = force || false;
- if (typeof string !== "undefined") {
- if (typeof string === "string") {
- this.title = string;
- } else {
- if (typeof string === "function") {
- if (typeof string.promise === "function") {
- console.error("Promise was returned from title function, this is not supported.");
- }
- var response = string();
- if (typeof response === "string") {
- this.title = response;
- } else {
- this.title = false;
- }
- } else {
- this.title = false;
- }
- }
- }
- if (this.isAjaxLoading && !force) {
- return;
- }
- this.$title.html(this.title || "");
- this.updateTitleContainer();
- },
- setIcon: function (iconClass, force) {
- force = force || false;
- if (typeof iconClass !== "undefined") {
- if (typeof iconClass === "string") {
- this.icon = iconClass;
- } else {
- if (typeof iconClass === "function") {
- var response = iconClass();
- if (typeof response === "string") {
- this.icon = response;
- } else {
- this.icon = false;
- }
- } else {
- this.icon = false;
- }
- }
- }
- if (this.isAjaxLoading && !force) {
- return;
- }
- this.$icon.html(this.icon ? '<i class="' + this.icon + '"></i>' : "");
- this.updateTitleContainer();
- },
- updateTitleContainer: function () {
- if (!this.title && !this.icon) {
- this.$titleContainer.hide();
- } else {
- this.$titleContainer.show();
- }
- },
- setContentPrepend: function (content, force) {
- if (!content) {
- return;
- }
- this.contentParsed.prepend(content);
- },
- setContentAppend: function (content) {
- if (!content) {
- return;
- }
- this.contentParsed.append(content);
- },
- setContent: function (content, force) {
- force = !!force;
- var that = this;
- if (content) {
- this.contentParsed.html("").append(content);
- }
- if (this.isAjaxLoading && !force) {
- return;
- }
- this.$content.html("");
- this.$content.append(this.contentParsed);
- setTimeout(function () {
- that.$body.find("input[autofocus]:visible:first").focus();
- }, 100);
- },
- loadingSpinner: false,
- showLoading: function (disableButtons) {
- this.loadingSpinner = true;
- this.$jconfirmBox.addClass("loading");
- if (disableButtons) {
- this.$btnc.find("button").prop("disabled", true);
- }
- },
- hideLoading: function (enableButtons) {
- this.loadingSpinner = false;
- this.$jconfirmBox.removeClass("loading");
- if (enableButtons) {
- this.$btnc.find("button").prop("disabled", false);
- }
- },
- ajaxResponse: false,
- contentParsed: "",
- isAjax: false,
- isAjaxLoading: false,
- _parseContent: function () {
- var that = this;
- var e = " ";
- if (typeof this.content === "function") {
- var res = this.content.apply(this);
- if (typeof res === "string") {
- this.content = res;
- } else {
- if (typeof res === "object" && typeof res.always === "function") {
- this.isAjax = true;
- this.isAjaxLoading = true;
- res.always(function (data, status, xhr) {
- that.ajaxResponse = { data: data, status: status, xhr: xhr };
- that._contentReady.resolve(data, status, xhr);
- if (typeof that.contentLoaded === "function") {
- that.contentLoaded(data, status, xhr);
- }
- });
- this.content = e;
- } else {
- this.content = e;
- }
- }
- }
- if (typeof this.content === "string" && this.content.substr(0, 4).toLowerCase() === "url:") {
- this.isAjax = true;
- this.isAjaxLoading = true;
- var u = this.content.substring(4, this.content.length);
- $.get(u)
- .done(function (html) {
- that.contentParsed.html(html);
- })
- .always(function (data, status, xhr) {
- that.ajaxResponse = { data: data, status: status, xhr: xhr };
- that._contentReady.resolve(data, status, xhr);
- if (typeof that.contentLoaded === "function") {
- that.contentLoaded(data, status, xhr);
- }
- });
- }
- if (!this.content) {
- this.content = e;
- }
- if (!this.isAjax) {
- this.contentParsed.html(this.content);
- this.setContent();
- that._contentReady.resolve();
- }
- },
- _stopCountDown: function () {
- clearInterval(this.autoCloseInterval);
- if (this.$cd) {
- this.$cd.remove();
- }
- },
- _startCountDown: function () {
- var that = this;
- var opt = this.autoClose.split("|");
- if (opt.length !== 2) {
- console.error("Invalid option for autoClose. example 'close|10000'");
- return false;
- }
- var button_key = opt[0];
- var time = parseInt(opt[1]);
- if (typeof this.buttons[button_key] === "undefined") {
- console.error("Invalid button key '" + button_key + "' for autoClose");
- return false;
- }
- var seconds = Math.ceil(time / 1000);
- this.$cd = $('<span class="countdown"> (' + seconds + ")</span>").appendTo(this["$_" + button_key]);
- this.autoCloseInterval = setInterval(function () {
- that.$cd.html(" (" + (seconds -= 1) + ") ");
- if (seconds <= 0) {
- that["$$" + button_key].trigger("click");
- that._stopCountDown();
- }
- }, 1000);
- },
- _getKey: function (key) {
- switch (key) {
- case 192:
- return "tilde";
- case 13:
- return "enter";
- case 16:
- return "shift";
- case 9:
- return "tab";
- case 20:
- return "capslock";
- case 17:
- return "ctrl";
- case 91:
- return "win";
- case 18:
- return "alt";
- case 27:
- return "esc";
- case 32:
- return "space";
- }
- var initial = String.fromCharCode(key);
- if (/^[A-z0-9]+$/.test(initial)) {
- return initial.toLowerCase();
- } else {
- return false;
- }
- },
- reactOnKey: function (e) {
- var that = this;
- var a = $(".jconfirm");
- if (a.eq(a.length - 1)[0] !== this.$el[0]) {
- return false;
- }
- var key = e.which;
- if (this.$content.find(":input").is(":focus") && /13|32/.test(key)) {
- return false;
- }
- var keyChar = this._getKey(key);
- if (keyChar === "esc" && this.escapeKey) {
- if (this.escapeKey === true) {
- this.$scrollPane.trigger("click");
- } else {
- if (typeof this.escapeKey === "string" || typeof this.escapeKey === "function") {
- var buttonKey;
- if (typeof this.escapeKey === "function") {
- buttonKey = this.escapeKey();
- } else {
- buttonKey = this.escapeKey;
- }
- if (buttonKey) {
- if (typeof this.buttons[buttonKey] === "undefined") {
- console.warn("Invalid escapeKey, no buttons found with key " + buttonKey);
- } else {
- this["$_" + buttonKey].trigger("click");
- }
- }
- }
- }
- }
- $.each(this.buttons, function (key, button) {
- if (button.keys.indexOf(keyChar) !== -1) {
- that["$_" + key].trigger("click");
- }
- });
- },
- setDialogCenter: function () {
- console.info("setDialogCenter is deprecated, dialogs are centered with CSS3 tables");
- },
- _unwatchContent: function () {
- clearInterval(this._timer);
- },
- close: function (onClosePayload) {
- var that = this;
- if (typeof this.onClose === "function") {
- this.onClose(onClosePayload);
- }
- this._unwatchContent();
- $(window).unbind("resize." + this._id);
- $(window).unbind("keyup." + this._id);
- $(window).unbind("jcKeyDown." + this._id);
- if (this.draggable) {
- $(window).unbind("mousemove." + this._id);
- $(window).unbind("mouseup." + this._id);
- this.$titleContainer.unbind("mousedown");
- }
- that.$el.removeClass(that.loadedClass);
- $("body").removeClass("jconfirm-no-scroll-" + that._id);
- that.$jconfirmBoxContainer.removeClass("jconfirm-no-transition");
- setTimeout(function () {
- that.$body.addClass(that.closeAnimationParsed);
- that.$jconfirmBg.addClass("jconfirm-bg-h");
- var closeTimer = that.closeAnimation === "none" ? 1 : that.animationSpeed;
- setTimeout(function () {
- that.$el.remove();
- var l = w.jconfirm.instances;
- var i = w.jconfirm.instances.length - 1;
- for (i; i >= 0; i--) {
- if (w.jconfirm.instances[i]._id === that._id) {
- w.jconfirm.instances.splice(i, 1);
- }
- }
- if (!w.jconfirm.instances.length) {
- if (that.scrollToPreviousElement && w.jconfirm.lastFocused && w.jconfirm.lastFocused.length && $.contains(document, w.jconfirm.lastFocused[0])) {
- var $lf = w.jconfirm.lastFocused;
- if (that.scrollToPreviousElementAnimate) {
- var st = $(window).scrollTop();
- var ot = w.jconfirm.lastFocused.offset().top;
- var wh = $(window).height();
- if (!(ot > st && ot < st + wh)) {
- var scrollTo = ot - Math.round(wh / 3);
- $("html, body").animate({ scrollTop: scrollTo }, that.animationSpeed, "swing", function () {
- $lf.focus();
- });
- } else {
- $lf.focus();
- }
- } else {
- $lf.focus();
- }
- w.jconfirm.lastFocused = false;
- }
- }
- if (typeof that.onDestroy === "function") {
- that.onDestroy();
- }
- }, closeTimer * 0.4);
- }, 50);
- return true;
- },
- open: function () {
- if (this.isOpen()) {
- return false;
- }
- this._buildHTML();
- this._bindEvents();
- this._open();
- return true;
- },
- setStartingPoint: function () {
- var el = false;
- if (this.animateFromElement !== true && this.animateFromElement) {
- el = this.animateFromElement;
- w.jconfirm.lastClicked = false;
- } else {
- if (w.jconfirm.lastClicked && this.animateFromElement === true) {
- el = w.jconfirm.lastClicked;
- w.jconfirm.lastClicked = false;
- } else {
- return false;
- }
- }
- if (!el) {
- return false;
- }
- var offset = el.offset();
- var iTop = el.outerHeight() / 2;
- var iLeft = el.outerWidth() / 2;
- iTop -= this.$jconfirmBox.outerHeight() / 2;
- iLeft -= this.$jconfirmBox.outerWidth() / 2;
- var sourceTop = offset.top + iTop;
- sourceTop = sourceTop - this._scrollTop();
- var sourceLeft = offset.left + iLeft;
- var wh = $(window).height() / 2;
- var ww = $(window).width() / 2;
- var targetH = wh - this.$jconfirmBox.outerHeight() / 2;
- var targetW = ww - this.$jconfirmBox.outerWidth() / 2;
- sourceTop -= targetH;
- sourceLeft -= targetW;
- if (Math.abs(sourceTop) > wh || Math.abs(sourceLeft) > ww) {
- return false;
- }
- this.$jconfirmBoxContainer.css("transform", "translate(" + sourceLeft + "px, " + sourceTop + "px)");
- },
- _open: function () {
- var that = this;
- if (typeof that.onOpenBefore === "function") {
- that.onOpenBefore();
- }
- this.$body.removeClass(this.animationParsed);
- this.$jconfirmBg.removeClass("jconfirm-bg-h");
- this.$body.focus();
- that.$jconfirmBoxContainer.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
- setTimeout(function () {
- that.$body.css(that._getCSS(that.animationSpeed, 1));
- that.$body.css({ "transition-property": that.$body.css("transition-property") + ", margin" });
- that.$jconfirmBoxContainer.addClass("jconfirm-no-transition");
- that._modalReady.resolve();
- if (typeof that.onOpen === "function") {
- that.onOpen();
- }
- that.$el.addClass(that.loadedClass);
- }, this.animationSpeed);
- },
- loadedClass: "jconfirm-open",
- isClosed: function () {
- return !this.$el || this.$el.parent().length === 0;
- },
- isOpen: function () {
- return !this.isClosed();
- },
- toggle: function () {
- if (!this.isOpen()) {
- this.open();
- } else {
- this.close();
- }
- },
- };
- w.jconfirm.instances = [];
- w.jconfirm.lastFocused = false;
- w.jconfirm.pluginDefaults = {
- template:
- '<div class="jconfirm"><div class="jconfirm-bg jconfirm-bg-h"></div><div class="jconfirm-scrollpane"><div class="jconfirm-row"><div class="jconfirm-cell"><div class="jconfirm-holder"><div class="jc-bs3-container"><div class="jc-bs3-row"><div class="jconfirm-box-container jconfirm-animated"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="jconfirm-closeIcon">×</div><div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title"></span></div><div class="jconfirm-content-pane"><div class="jconfirm-content"></div></div><div class="jconfirm-buttons"></div><div class="jconfirm-clear"></div></div></div></div></div></div></div></div></div></div>',
- title: "Hello",
- titleClass: "",
- type: "default",
- typeAnimated: true,
- draggable: true,
- dragWindowGap: 15,
- dragWindowBorder: true,
- animateFromElement: true,
- alignMiddle: true,
- smoothContent: true,
- content: "Are you sure to continue?",
- buttons: {},
- defaultButtons: { ok: { action: function () {} }, close: { action: function () {} } },
- contentLoaded: function () {},
- icon: "",
- lazyOpen: false,
- bgOpacity: null,
- theme: "light",
- animation: "scale",
- closeAnimation: "scale",
- animationSpeed: 400,
- animationBounce: 1,
- escapeKey: true,
- rtl: false,
- container: "body",
- containerFluid: false,
- backgroundDismiss: false,
- backgroundDismissAnimation: "shake",
- autoClose: false,
- closeIcon: null,
- closeIconClass: false,
- watchInterval: 100,
- columnClass: "col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",
- boxWidth: "50%",
- scrollToPreviousElement: true,
- scrollToPreviousElementAnimate: true,
- useBootstrap: true,
- offsetTop: 40,
- offsetBottom: 40,
- bootstrapClasses: { container: "container", containerFluid: "container-fluid", row: "row" },
- onContentReady: function () {},
- onOpenBefore: function () {},
- onOpen: function () {},
- onClose: function () {},
- onDestroy: function () {},
- onAction: function () {},
- };
- var keyDown = false;
- $(window).on("keydown", function (e) {
- if (!keyDown) {
- var $target = $(e.target);
- var pass = false;
- if ($target.closest(".jconfirm-box").length) {
- pass = true;
- }
- if (pass) {
- $(window).trigger("jcKeyDown");
- }
- keyDown = true;
- }
- });
- $(window).on("keyup", function () {
- keyDown = false;
- });
- w.jconfirm.lastClicked = false;
- $(document).on("mousedown", "button, a, [jc-source]", function () {
- w.jconfirm.lastClicked = $(this);
- });
- });
|