OwlCyberSecurity - MANAGER
Edit File: jquery.jquery-confirm.min.js
/*! * jquery-confirm v3.3.2 (http://craftpip.github.io/jquery-confirm/) * Author: Boniface Pereira * Website: www.craftpip.com * Contact: hey@craftpip.com * * Copyright 2013-2017 jquery-confirm * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) */ if ( typeof jQuery === 'undefined' ) { throw new Error( 'jquery-confirm requires jQuery' ); } var jconfirm, Jconfirm; ( function( $, 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, {}, jconfirm.pluginDefaults.defaultButtons, ( 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, {}, jconfirm.pluginDefaults.defaultButtons, ( jconfirm.defaults || {} ).defaultButtons || {} ); options.buttons = buttons; } return 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, {}, jconfirm.pluginDefaults.defaultButtons, ( jconfirm.defaults || {} ).defaultButtons || {} ); var firstBtn = Object.keys( buttons )[ 0 ]; options.buttons[ firstBtn ] = buttons[ firstBtn ]; } return 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 jconfirm( options ); }; jconfirm = function( options ) { if ( typeof options === 'undefined' ) { options = {}; } var pluginOptions = $.extend( true, {}, jconfirm.pluginDefaults ); if ( jconfirm.defaults ) { pluginOptions = $.extend( true, pluginOptions, jconfirm.defaults ); } pluginOptions = $.extend( true, {}, pluginOptions, options ); var instance = new Jconfirm( pluginOptions ); jconfirm.instances.push( instance ); return instance; }; Jconfirm = function( options ) { $.extend( this, options ); this._init(); }; Jconfirm.prototype = { _init: function() { var that = this; if ( !jconfirm.instances.length ) { 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(); } } ); this._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 ) { that.$contentPane.css( { height: contentHeight } ).scrollTop( 0 ); 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 = jconfirm.instances; var i = jconfirm.instances.length - 1; for ( i; i >= 0; i -- ) { if ( jconfirm.instances[ i ]._id === that._id ) { jconfirm.instances.splice( i, 1 ); } } if ( !jconfirm.instances.length ) { if ( that.scrollToPreviousElement && jconfirm.lastFocused && jconfirm.lastFocused.length && $.contains( document, jconfirm.lastFocused[ 0 ] ) ) { var $lf = jconfirm.lastFocused; if ( that.scrollToPreviousElementAnimate ) { var st = $( window ).scrollTop(); var ot = 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(); } 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; jconfirm.lastClicked = false; } else { if ( jconfirm.lastClicked && this.animateFromElement === true ) { el = jconfirm.lastClicked; 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.css( 'display' ) === ''; }, isOpen: function() { return !this.isClosed(); }, toggle: function() { if ( !this.isOpen() ) { this.open(); } else { this.close(); } }, }; jconfirm.instances = []; jconfirm.lastFocused = false; 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; } ); jconfirm.lastClicked = false; $( document ).on( 'mousedown', 'button, a', function() { jconfirm.lastClicked = $( this ); } ); } )( jQuery, window );