KeymailSpecials2/wwwroot/js/modules/modal.js

129 lines
3.4 KiB
JavaScript

CNVS.Modal = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.lightbox.js', id: 'canvas-lightbox-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().magnificPopup;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-modal', event: 'pluginModalReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
var closeButtonIcon = '<i class="bi-x-lg"></i>';
selector.each( function(){
var element = jQuery(this),
elTarget = element.attr('data-target'),
elTargetValue = '__cnvs_' + elTarget.split('#')[1],
elDelay = element.attr('data-delay') || 500,
elTimeout = element.attr('data-timeout'),
elAnimateIn = element.attr('data-animate-in'),
elAnimateOut = element.attr('data-animate-out'),
elBgClick = element.attr('data-bg-click'),
elCloseBtn = element.attr('data-close-btn'),
elCookies = element.attr('data-cookies'),
elCookiePath = element.attr('data-cookie-path'),
elCookieExp = element.attr('data-cookie-expire');
if( elCookies == "false" ) {
__core.cookie.remove( elTargetValue );
}
if( elCookies == 'true' ) {
var elementCookie = __core.cookie.get( elTargetValue );
if( typeof elementCookie !== 'undefined' && elementCookie == '0' ) {
return true;
}
}
if( elBgClick == 'false' ) {
elBgClick = false;
} else {
elBgClick = true;
}
if( elCloseBtn == 'false' ) {
elCloseBtn = false;
} else {
elCloseBtn = true;
}
elDelay = Number(elDelay) + 500;
setTimeout(function() {
jQuery.magnificPopup.open({
items: { src: elTarget },
type: 'inline',
mainClass: 'mfp-no-margins mfp-fade',
closeBtnInside: false,
fixedContentPos: true,
closeOnBgClick: elBgClick,
showCloseBtn: elCloseBtn,
removalDelay: 500,
closeIcon: closeButtonIcon,
callbacks: {
open: function(){
if( elAnimateIn != '' ) {
jQuery(elTarget).addClass( elAnimateIn + ' animated' );
}
},
beforeClose: function(){
if( elAnimateOut != '' ) {
jQuery(elTarget).removeClass( elAnimateIn ).addClass( elAnimateOut );
}
},
afterClose: function() {
if( elAnimateIn != '' || elAnimateOut != '' ) {
jQuery(elTarget).removeClass( elAnimateIn + ' ' + elAnimateOut + ' animated' );
}
}
}
}, 0);
}, elDelay );
if( document.querySelector('.modal-cookies-close') ) {
document.querySelector('.modal-cookies-close').onclick = function() {
jQuery.magnificPopup.close();
if( elCookies == 'true' ) {
var cookieOps = {};
if( elCookieExp ) {
cookieOps.expires = Number( elCookieExp );
}
if( elCookiePath ) {
cookieOps.path = elCookiePath;
}
__core.cookie.set( elTargetValue, '0', cookieOps );
}
};
}
if( elTimeout != '' ) {
setTimeout(function() {
jQuery.magnificPopup.close();
}, elDelay + Number(elTimeout) );
}
});
});
}
};
}();