first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:18:17 +03:00
commit 7b2b27a42c
1660 changed files with 123050 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
CNVS.Accordion = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-accordions', event: 'pluginAccordionsReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elState = element.attr('data-state'),
elActive = element.attr('data-active') || 1,
elActiveClass = element.attr('data-active-class') || '',
elCollapsible = element.attr('data-collapsible') || 'false',
windowHash = location.hash,
accActive;
elActive = Number( elActive ) - 1;
if( typeof windowHash !== 'undefined' && windowHash != '' ) {
accActive = element.find('.accordion-header'+ windowHash);
if( accActive.length > 0 ) {
elActive = accActive.index() / 2;
}
}
element.find('.accordion-content').hide();
if( elState != 'closed' ) {
element.find('.accordion-header:eq('+ Number(elActive) +')').addClass('accordion-active ' + elActiveClass).next().show();
}
element.find('.accordion-header').off( 'click' ).on( 'click', function(){
var clickTarget = jQuery(this);
if( clickTarget.next().is(':hidden') ) {
element.find('.accordion-header').removeClass('accordion-active ' + elActiveClass).next().slideUp("normal");
clickTarget.toggleClass('accordion-active ' + elActiveClass, true).next().stop(true,true).slideDown("normal", function(){
if( ( jQuery('body').hasClass('device-sm') || jQuery('body').hasClass('device-xs') ) && element.hasClass('scroll-on-open') ) {
__core.scrollTo((__core.offset(clickTarget).top - __core.getVars.topScrollOffset - 40), 800, 'easeOutQuad');
}
__core.runContainerModules( clickTarget.next()[0] );
});
} else {
if( elCollapsible == 'true' ) {
clickTarget.toggleClass('accordion-active ' + elActiveClass, false).next().stop(true,true).slideUp("normal");
}
}
return false;
});
});
});
}
};
}();

View File

@@ -0,0 +1,56 @@
CNVS.AdaptiveColorScheme = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-adaptivecolorscheme', event: 'pluginAdaptiveColorSchemeReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var adaptiveEl = document.querySelector('[data-adaptive-light-class],[data-adaptive-dark-class]');
var adaptLightClass;
var adaptDarkClass;
if( __core.getVars.elBody.contains(adaptiveEl) ) {
adaptLightClass = adaptiveEl.getAttribute( 'data-adaptive-light-class' );
adaptDarkClass = adaptiveEl.getAttribute( 'data-adaptive-dark-class' );
}
var adaptClasses = function(dark) {
if( dark ) {
__core.getVars.elBody.classList.add( 'dark' );
} else {
__core.getVars.elBody.classList.remove('dark');
}
if( __core.getVars.elBody.contains(adaptiveEl) ) {
if( dark ) {
adaptiveEl.classList.remove( adaptLightClass );
adaptiveEl.classList.add( adaptDarkClass );
} else {
adaptiveEl.classList.remove( adaptDarkClass );
adaptiveEl.classList.add( adaptLightClass );
}
}
__base.setBSTheme();
};
if( window.matchMedia ) {
adaptClasses( window.matchMedia('(prefers-color-scheme: dark)').matches );
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) {
adaptClasses( e.matches );
});
}
}
};
}();

View File

@@ -0,0 +1,160 @@
CNVS.AjaxForm = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.form.js', id: 'canvas-form-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().validate && jQuery().ajaxSubmit;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-form', event: 'pluginFormReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
$body = jQuery('body'),
elForm = element.find('form'),
elFormId = elForm.attr('id'),
elAlert = element.attr('data-alert-type'),
elLoader = element.attr('data-loader'),
elResult = element.find('.form-result'),
elRedirect = element.attr('data-redirect'),
defaultBtn, alertType;
if( !elAlert ) {
elAlert = 'notify';
}
if( elFormId ) {
$body.addClass( elFormId + '-ready' );
}
element.find('form').validate({
errorPlacement: function(error, elementItem) {
if( elementItem.parents('.form-group').length > 0 ) {
error.appendTo( elementItem.parents('.form-group') );
} else {
error.insertAfter( elementItem );
}
},
focusCleanup: true,
submitHandler: function(form) {
if( element.hasClass( 'custom-submit' ) ) {
jQuery(form).submit();
return true;
}
elResult.hide();
if( elLoader == 'button' ) {
defaultBtn = jQuery(form).find('button');
defaultBtnText = defaultBtn.html();
defaultBtn.html('<i class="bi-arrow-repeat icon-spin m-0"></i>');
} else {
jQuery(form).find('.form-process').fadeIn();
}
if( elFormId ) {
$body.removeClass( elFormId + '-ready ' + elFormId + '-complete ' + elFormId + '-success ' + elFormId + '-error' ).addClass( elFormId + '-processing' );
}
jQuery(form).ajaxSubmit({
target: elResult,
dataType: 'json',
success: function(data) {
if( elLoader == 'button' ) {
defaultBtn.html( defaultBtnText );
} else {
jQuery(form).find('.form-process').fadeOut();
}
if( data.alert != 'error' && elRedirect ){
window.location.replace( elRedirect );
return true;
}
if( elAlert == 'inline' ) {
if( data.alert == 'error' ) {
alertType = 'alert-danger';
} else {
alertType = 'alert-success';
}
elResult.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 );
} else if( elAlert == 'notify' ) {
elResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html('');
__modules.notifications(elResult);
}
if( data.alert != 'error' ) {
jQuery(form).resetForm();
jQuery(form).find('.btn-group > .btn').removeClass('active');
if( (typeof tinyMCE != 'undefined') && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden() ){
tinymce.activeEditor.setContent('');
}
var rangeSlider = jQuery(form).find('.input-range-slider');
if( rangeSlider.length > 0 ) {
rangeSlider.each( function(){
var range = jQuery(this).data('ionRangeSlider');
range.reset();
});
}
var ratings = jQuery(form).find('.input-rating');
if( ratings.length > 0 ) {
ratings.each( function(){
jQuery(this).rating('reset');
});
}
var selectPicker = jQuery(form).find('.selectpicker');
if( selectPicker.length > 0 ) {
selectPicker.each( function(){
jQuery(this).selectpicker('val', '');
jQuery(this).selectpicker('deselectAll');
});
}
jQuery(form).find('.input-select2,select[data-selectsplitter-firstselect-selector]').change();
jQuery(form).trigger( 'formSubmitSuccess', data );
$body.removeClass( elFormId + '-error' ).addClass( elFormId + '-success' );
} else {
jQuery(form).trigger( 'formSubmitError', data );
$body.removeClass( elFormId + '-success' ).addClass( elFormId + '-error' );
}
if( elFormId ) {
$body.removeClass( elFormId + '-processing' ).addClass( elFormId + '-complete' );
}
if( jQuery(form).find('.g-recaptcha').children('div').length > 0 ) {
grecaptcha.reset();
}
}
});
}
});
});
});
}
};
}();

View File

@@ -0,0 +1,104 @@
CNVS.AjaxTrigger = function() {
var __core = SEMICOLON.Core;
var _load = function(params) {
fetch(params.loader).then( function(response) {
return response.text();
}).then( function(html) {
_scripts(params.loadCSS, params.loadJS);
var domParser = new DOMParser();
var parsedHTML = domParser.parseFromString(html, 'text/html');
if( params.placement == 'append' ) {
params.container?.insertAdjacentHTML('beforeend', parsedHTML.body.innerHTML);
} else {
params.container?.insertAdjacentHTML('afterbegin', parsedHTML.body.innerHTML);
}
if( params.triggerHide == 'true' ) {
params.trigger.classList.add('d-none');
}
__core.runContainerModules(params.container);
__core.viewport();
if( params.triggerDisable == 'true' ) {
setTimeout( function() {
params.trigger.onclick = function(e) {
e.stopPropagation();
e.preventDefault();
return false;
};
}, 1000);
}
}).catch( function(err) {
var errorDIV = document.createElement("div");
errorDIV.classList.add( 'd-inline-block', 'text-danger', 'me-3' );
errorDIV.innerText = 'Content Cannot be Loaded!';
params.container?.prepend( errorDIV, ': ' + err );
});
};
var _scripts = function(loadCSS=false, loadJS=false) {
if( loadCSS ) {
loadCSS = JSON.parse(loadCSS);
if( loadCSS.length > 0 ) {
loadCSS.forEach( function(css) {
__core.loadCSS(css);
});
}
}
if( loadJS ) {
loadJS = JSON.parse(loadJS);
if( loadJS.length > 0 ) {
loadJS.forEach( function(js) {
__core.loadJS(js);
});
}
}
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-ajaxtrigger', event: 'pluginAjaxTriggerReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var params = {
trigger: el,
loader: el.getAttribute('data-ajax-loader'),
triggerType: el.getAttribute('data-ajax-trigger-type') || 'click',
loadDelay: el.getAttribute('data-ajax-load-delay') || 2222,
container: document.querySelector( el.getAttribute('data-ajax-container') ),
contentPlacement: el.getAttribute('data-ajax-insertion') || 'append',
triggerHide: el.getAttribute('data-ajax-trigger-hide') || 'true',
triggerDisable: el.getAttribute('data-ajax-trigger-disable') || 'true',
loadCSS: el.getAttribute('data-ajax-loadcss') || false,
loadJS: el.getAttribute('data-ajax-loadjs') || false,
}
if( params.triggerType == 'load' ) {
setTimeout( function() {
_load(params);
}, Number(params.loadDelay));
} else {
params.trigger.onclick = function(e) {
e.preventDefault();
_load(params);
};
}
});
}
};
}();

View File

@@ -0,0 +1,95 @@
CNVS.Animations = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-animations', event: 'pluginAnimationsReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var SELECTOR = '[data-animate]',
ANIMATE_CLASS_NAME = 'animated';
var isAnimated = function(element) {
element.classList.contains(ANIMATE_CLASS_NAME);
};
var intersectionObserver = new IntersectionObserver(
function(entries, observer) {
entries.forEach( function(entry) {
var element = entry.target,
elAnimation = element.getAttribute('data-animate'),
elAnimOut = element.getAttribute('data-animate-out'),
elAnimDelay = element.getAttribute('data-delay'),
elAnimDelayOut = element.getAttribute('data-delay-out'),
elAnimDelayTime = 0,
elAnimDelayOutTime = 3000,
elAnimations = elAnimation.split(' ');
if( element.closest('.fslider.no-thumbs-animate') ) {
return true;
}
if( element.closest('.swiper-slide') ) {
return true;
}
if( elAnimDelay ) {
elAnimDelayTime = Number( elAnimDelay ) + 500;
} else {
elAnimDelayTime = 500;
}
if( elAnimOut && elAnimDelayOut ) {
elAnimDelayOutTime = Number( elAnimDelayOut ) + elAnimDelayTime;
}
if( !element.classList.contains('animated') ) {
element.classList.add('not-animated');
if( entry.intersectionRatio > 0 ) {
setTimeout( function() {
element.classList.remove('not-animated');
elAnimations.forEach( function(item) {
element.classList.add(item);
});
element.classList.add('animated');
}, elAnimDelayTime);
if( elAnimOut ) {
setTimeout( function() {
elAnimations.forEach( function(item) {
element.classList.remove(item);
});
elAnimOut.split(' ').forEach( function(item) {
element.classList.add(item);
});
}, elAnimDelayOutTime);
}
}
}
if( !element.classList.contains('not-animated') ) {
observer.unobserve(element);
}
});
}
);
var elements = [].filter.call(document.querySelectorAll(SELECTOR), function(element) {
return !isAnimated(element, ANIMATE_CLASS_NAME);
});
elements.forEach( function(element) {
return intersectionObserver.observe(element);
});
}
};
}();

18
public/js/modules/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,18 @@
CNVS.Bootstrap = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
__core.loadJS({ file: 'plugins.bootstrap.js', id: 'canvas-bootstrap-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof bootstrap !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-bootstrap', event: 'pluginBootstrapReady' });
});
}
};
}();

View File

@@ -0,0 +1,96 @@
CNVS.BSComponents = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.bootstrap.js', id: 'canvas-bootstrap-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof bootstrap !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-bscomponents', event: 'pluginBsComponentsReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var tooltips = [].slice.call(__core.getVars.baseEl.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltips.map( function(tooltipEl) {
return new bootstrap.Tooltip(tooltipEl, {container: 'body'});
});
var popovers = [].slice.call(__core.getVars.baseEl.querySelectorAll('[data-bs-toggle="popover"]'));
var popoverList = popovers.map( function(popoverEl) {
return new bootstrap.Popover(popoverEl, {container: 'body'});
});
var tabs = document.querySelectorAll('[data-bs-toggle="tab"],[data-bs-toggle="pill"]');
var tabTargetShow = function(target) {
var tabTrigger = new bootstrap.Tab(target);
tabTrigger.show();
if( __core.getVars.hash && document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]') ) {
setTimeout( function(){
__core.scrollTo((__core.offset(target).top - __core.getVars.topScrollOffset - 20), 0, false, 'smooth');
}, 1000);
}
};
document.querySelectorAll('.canvas-tabs').forEach( function(el) {
var activeTab = el.getAttribute('data-active');
if( activeTab ) {
activeTab = Number(activeTab) - 1;
tabTargetShow(el.querySelectorAll('[data-bs-target]')[activeTab]);
}
});
document.querySelectorAll('.tab-hover').forEach( function(el) {
el.querySelectorAll('[data-bs-target]').forEach( function(tab) {
tab.addEventListener( 'mouseenter', function() {
tabTargetShow(tab);
});
});
});
if( __core.getVars.hash && document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]') ) {
tabTargetShow(document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]'));
}
tabs.forEach( function(el) {
el.addEventListener('shown.bs.tab', function(e) {
if( !el.classList.contains('container-modules-loaded') ) {
var tabContent = el.getAttribute('data-bs-target') ? el.getAttribute('data-bs-target') : el.getAttribute('href');
__core.runContainerModules(document.querySelector(tabContent));
document.querySelector(tabContent).querySelectorAll('.flexslider').forEach( function(flex) {
setTimeout( function() {
jQuery(flex).find('.slide').resize();
}, 500);
});
el.classList.add('container-modules-loaded');
}
});
});
document.querySelectorAll('.style-msg .btn-close').forEach( function(el) {
el.onclick = function(e) {
e.preventDefault();
el.closest( '.style-msg' ).classList.add('d-none');
};
});
});
}
};
}();

View File

@@ -0,0 +1,37 @@
CNVS.Buttons = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-buttons', event: 'pluginButtonsReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el){
var text = el.innerHTML;
el.innerHTML = '';
var inner = document.createElement('div');
inner.classList.add('button-inner');
var span = document.createElement('span');
span.innerHTML = text;
inner.append(span);
var span2 = span.cloneNode(true);
span.after(span2);
el.append(inner);
});
}
};
}();

View File

@@ -0,0 +1,268 @@
CNVS.CanvasSlider = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.swiper.js', id: 'canvas-swiper-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof Swiper !== "undefined";
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-swiper', event: 'pluginSwiperReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
if( !element.classList.contains('swiper_wrapper') ) {
return true;
}
if( element.querySelectorAll('.swiper-slide').length < 1 ) {
return true;
}
var elDirection = element.getAttribute('data-direction') || 'horizontal',
elSpeed = element.getAttribute('data-speed') || 300,
elAutoPlay = element.getAttribute('data-autoplay'),
elAutoPlayDisableOnInteraction = element.getAttribute('data-autoplay-disable-on-interaction') || true,
elPauseOnHover = element.getAttribute('data-hover'),
elLoop = element.getAttribute('data-loop'),
elStart = element.getAttribute('data-start') || 1,
elEffect = element.getAttribute('data-effect') || 'slide',
elGrabCursor = element.getAttribute('data-grab'),
elParallax = element.getAttribute('data-parallax'),
elAutoHeight = element.getAttribute('data-autoheight'),
slideNumberTotal = element.querySelector('.slide-number-total'),
slideNumberCurrent = element.querySelector('.slide-number-current'),
elVideoAutoPlay = element.getAttribute('data-video-autoplay'),
elSettings = element.getAttribute('data-settings'),
elPagination, elPaginationClickable;
elAutoPlay = elAutoPlay ? Number( elAutoPlay ) : 999999999;
elPauseOnHover = elPauseOnHover == 'true' ? true : false;
elAutoPlayDisableOnInteraction = elAutoPlayDisableOnInteraction == 'false' ? false : true;
elLoop = elLoop == 'true' ? true : false;
elParallax = elParallax == 'true' ? true : false;
elGrabCursor = elGrabCursor == 'false' ? false : true;
elAutoHeight = elAutoHeight == 'true' ? true : false;
elVideoAutoPlay = elVideoAutoPlay == 'false' ? false : true;
elStart = elStart == 'random' ? Math.floor( Math.random() * element.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)').length ) : Number( elStart ) - 1;
if( element.querySelector('.swiper-pagination') ) {
elPagination = element.querySelector('.swiper-pagination');
elPaginationClickable = true;
} else {
elPagination = '';
elPaginationClickable = false;
}
var elementNavNext = element.querySelector('.slider-arrow-right'),
elementNavPrev = element.querySelector('.slider-arrow-left'),
elementScollBar = element.querySelector('.swiper-scrollbar');
var cnvsSwiper = new Swiper( element.querySelector('.swiper-parent'), {
direction: elDirection,
speed: Number( elSpeed ),
autoplay: {
delay: elAutoPlay,
pauseOnMouseEnter: elPauseOnHover,
disableOnInteraction: elAutoPlayDisableOnInteraction
},
loop: elLoop,
initialSlide: elStart,
effect: elEffect,
parallax: elParallax,
slidesPerView: 1,
grabCursor: elGrabCursor,
autoHeight: elAutoHeight,
pagination: {
el: elPagination,
clickable: elPaginationClickable
},
navigation: {
prevEl: elementNavPrev,
nextEl: elementNavNext
},
scrollbar: {
el: elementScollBar
},
on: {
afterInit: function(swiper) {
__base.sliderDimensions();
if( element.querySelectorAll('.yt-bg-player').length > 0 ) {
element.querySelectorAll('.yt-bg-player').forEach( function(el) {
el.setAttribute('data-autoplay', 'false');
el.classList.remove('customjs');
});
__modules.youtubeBgVideo();
var activeYTVideo = jQuery('.swiper-slide-active').find('.yt-bg-player:not(.customjs)');
activeYTVideo.on('YTPReady', function() {
setTimeout( function() {
activeYTVideo.filter('.mb_YTPlayer').YTPPlay();
}, 1200);
});
}
document.querySelectorAll('.swiper-slide-active [data-animate]').forEach( function(el) {
var toAnimateDelay = el.getAttribute('data-delay'),
toAnimateDelayTime = 0;
if( toAnimateDelay ) {
toAnimateDelayTime = Number( toAnimateDelay ) + 750;
} else {
toAnimateDelayTime = 750;
}
if( !el.classList.contains('animated') ) {
el.classList.add('not-animated');
var elementAnimation = el.getAttribute('data-animate');
setTimeout( function() {
el.classList.remove('not-animated');
( elementAnimation + ' animated').split(" ").forEach( function(_class) {
el.classList.add(_class);
});
}, toAnimateDelayTime);
}
});
element.querySelectorAll('[data-animate]').forEach( function(el) {
var elementAnimation = el.getAttribute('data-animate');
if( el.closest('.swiper-slide').classList.contains('swiper-slide-active') ) {
return true;
}
( elementAnimation + ' animated').split(" ").forEach( function(_class) {
el.classList.remove(_class);
});
el.classList.add('not-animated');
});
if( elAutoHeight ) {
setTimeout( function() {
swiper.updateAutoHeight(300);
}, 1000);
}
},
transitionStart: function(swiper) {
element.querySelectorAll('[data-animate]').forEach( function(el) {
var elementAnimation = el.getAttribute('data-animate');
if( el.closest('.swiper-slide').classList.contains('swiper-slide-active') ) {
return true;
}
( elementAnimation + ' animated').split(" ").forEach( function(_class) {
el.classList.remove(_class);
});
el.classList.add('not-animated');
});
SEMICOLON.Base.sliderMenuClass();
},
transitionEnd: function(swiper) {
if( slideNumberCurrent ){
if( elLoop == true ) {
slideNumberCurrent.innerHTML = Number( element.querySelector('.swiper-slide.swiper-slide-active').getAttribute('data-swiper-slide-index') ) + 1;
} else {
slideNumberCurrent.innerHTML = swiper.activeIndex + 1;
}
}
element.querySelectorAll('.swiper-slide').forEach( function(slide) {
if( slide.querySelector('video') && elVideoAutoPlay == true ) {
slide.querySelector('video').pause();
}
if( slide.querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)') ) {
jQuery(slide).find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPause();
}
});
element.querySelectorAll('.swiper-slide:not(.swiper-slide-active)').forEach( function(slide) {
if( slide.querySelector('video') ) {
if( slide.querySelector('video').currentTime != 0 ) {
slide.querySelector('video').currentTime = 0;
}
}
var activeYTPlayer = slide.querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)');
if( activeYTPlayer ) {
jQuery(activeYTPlayer).YTPSeekTo( activeYTPlayer.getAttribute('data-start') );
}
});
if( element.querySelector('.swiper-slide.swiper-slide-active').querySelector('video') && elVideoAutoPlay == true ) {
element.querySelector('.swiper-slide.swiper-slide-active').querySelector('video').play();
}
if( element.querySelector('.swiper-slide.swiper-slide-active').querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)') && elVideoAutoPlay == true ) {
jQuery(element).find('.swiper-slide.swiper-slide-active').find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPlay();
}
element.querySelectorAll('.swiper-slide.swiper-slide-active [data-animate]').forEach( function(el) {
var toAnimateDelay = el.getAttribute('data-delay'),
toAnimateDelayTime = 0;
if( toAnimateDelay ) {
toAnimateDelayTime = Number( toAnimateDelay ) + 300;
} else {
toAnimateDelayTime = 300;
}
if( !el.classList.contains('animated') ) {
el.classList.add('not-animated');
var elementAnimation = el.getAttribute('data-animate');
setTimeout( function() {
el.classList.remove('not-animated');
( elementAnimation + ' animated').split(" ").forEach( function(_class) {
el.classList.add(_class);
});
}, toAnimateDelayTime);
}
});
}
}
});
if( slideNumberCurrent ) {
if( elLoop == true ) {
slideNumberCurrent.innerHTML = cnvsSwiper.realIndex + 1;
} else {
slideNumberCurrent.innerHTML = cnvsSwiper.activeIndex + 1;
}
}
if( slideNumberTotal ) {
slideNumberTotal.innerHTML = element.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)').length;
}
});
});
}
};
}();

View File

@@ -0,0 +1,138 @@
CNVS.Carousel = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.carousel.js', id: 'canvas-carousel-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().owlCarousel;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-carousel', event: 'pluginCarouselReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elItems = element.attr('data-items') || 4,
elItemsXs = element.attr('data-items-xs') || Number( elItems ),
elItemsSm = element.attr('data-items-sm') || Number( elItemsXs ),
elItemsMd = element.attr('data-items-md') || Number( elItemsSm ),
elItemsLg = element.attr('data-items-lg') || Number( elItemsMd ),
elItemsXl = element.attr('data-items-xl') || Number( elItemsLg ),
elItemsXxl = element.attr('data-items-xxl') || Number( elItemsXl ),
elLoop = element.attr('data-loop'),
elAutoPlay = element.attr('data-autoplay'),
elSpeed = element.attr('data-speed') || 250,
elAnimateIn = element.attr('data-animate-in'),
elAnimateOut = element.attr('data-animate-out'),
elAutoWidth = element.attr('data-auto-width'),
elNav = element.attr('data-nav'),
elNavPrev = element.attr('data-nav-prev') || '<i class="uil uil-angle-left-b"></i>',
elNavNext = element.attr('data-nav-next') || '<i class="uil uil-angle-right-b"></i>',
elPagi = element.attr('data-pagi'),
elMargin = element.attr('data-margin') || 20,
elStage = element.attr('data-stage-padding') || 0,
elMerge = element.attr('data-merge'),
elStart = element.attr('data-start') || 0,
elRewind = element.attr('data-rewind'),
elSlideBy = element.attr('data-slideby') || 1,
elCenter = element.attr('data-center'),
elLazy = element.attr('data-lazyload'),
elVideo = element.attr('data-video'),
elRTL = element.attr('data-rtl'),
elAutoPlayTime = 5000,
elAutoPlayHoverP = true;
if( elSlideBy == 'page' ) {
elSlideBy = 'page';
} else {
elSlideBy = Number(elSlideBy);
}
if( elLoop == 'true' ){ elLoop = true; } else { elLoop = false; }
if( !elAutoPlay ){
elAutoPlay = false;
elAutoPlayHoverP = false;
} else {
elAutoPlayTime = Number(elAutoPlay);
elAutoPlay = true;
}
if( !elAnimateIn ) { elAnimateIn = false; }
if( !elAnimateOut ) { elAnimateOut = false; }
if( elAutoWidth == 'true' ){ elAutoWidth = true; } else { elAutoWidth = false; }
if( elNav == 'false' ){ elNav = false; } else { elNav = true; }
if( elPagi == 'false' ){ elPagi = false; } else { elPagi = true; }
if( elRewind == 'true' ){ elRewind = true; } else { elRewind = false; }
if( elMerge == 'true' ){ elMerge = true; } else { elMerge = false; }
if( elCenter == 'true' ){ elCenter = true; } else { elCenter = false; }
if( elLazy == 'true' ){ elLazy = true; } else { elLazy = false; }
if( elVideo == 'true' ){ elVideo = true; } else { elVideo = false; }
if( elRTL == 'true' || jQuery('body').hasClass('rtl') ){ elRTL = true; } else { elRTL = false; }
var carousel = element.owlCarousel({
margin: Number(elMargin),
loop: elLoop,
stagePadding: Number(elStage),
merge: elMerge,
startPosition: Number(elStart),
rewind: elRewind,
slideBy: elSlideBy,
center: elCenter,
lazyLoad: elLazy,
autoWidth: elAutoWidth,
nav: elNav,
navText: [elNavPrev,elNavNext],
autoplay: elAutoPlay,
autoplayTimeout: elAutoPlayTime,
autoplayHoverPause: elAutoPlayHoverP,
dots: elPagi,
smartSpeed: Number(elSpeed),
fluidSpeed: Number(elSpeed),
video: elVideo,
animateIn: elAnimateIn,
animateOut: elAnimateOut,
rtl: elRTL,
responsive:{
0:{ items: elItemsXs },
576:{ items: elItemsSm },
768:{ items: elItemsMd },
992:{ items: elItemsLg },
1200:{ items: elItemsXl },
1400:{ items: elItemsXxl }
},
onInitialized: function(){
__base.sliderDimensions(element.parents('.slider-element')[0]);
__core.runContainerModules(element[0]);
if( element.find('.owl-dot').length > 0 ) {
element.addClass('with-carousel-dots');
}
}
});
jQuery(window).on( 'lazyLoadLoaded', function(){
if( element.find('.lazy').length == element.find('.lazy.lazy-loaded').length ) {
lazyLoadInstance.update();
setTimeout( function(){
carousel.trigger( 'refresh.owl.carousel' );
}, 500);
}
});
});
});
}
};
}();

View File

@@ -0,0 +1,56 @@
CNVS.Clipboard = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.clipboard.js', id: 'canvas-clipboard-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof ClipboardJS !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-clipboard', event: 'pluginClipboardReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var clipboards = [],
count = 0;
selector.forEach( function(el) {
var trigger = el.querySelector('button'),
triggerText = trigger.innerHTML,
copiedtext = trigger.getAttribute('data-copied') || 'Copied',
copiedTimeout = trigger.getAttribute('data-copied-timeout') || 5000;
clipboards[count] = new ClipboardJS( trigger, {
target: function(content) {
return content.closest('.clipboard-copy').querySelector('code');
}
});
clipboards[count].on('success', function(e) {
trigger.innerHTML = copiedtext;
trigger.disabled = true;
setTimeout( function() {
trigger.innerHTML = triggerText;
trigger.disabled = false;
}, Number(copiedTimeout));
});
count++;
});
});
}
};
}();

View File

@@ -0,0 +1,33 @@
CNVS.CodeHighlight = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadCSS({ file: 'components/prism.css', id: 'canvas-prism-css', cssFolder: true });
__core.loadJS({ file: 'plugins.prism.js', id: 'canvas-prism-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof Prism !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-codehighlight', event: 'pluginCodeHighlightReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
Prism.highlightElement( el.querySelector('code') );
});
});
}
};
}();

View File

@@ -0,0 +1,161 @@
CNVS.Conditional = function() {
var __core = SEMICOLON.Core;
var _eval = function(field, value, conditions, check, target) {
if( ! field || ! conditions ) {
return false;
}
var fulfilled = false;
if( check == 'validate' ) {
if( value ) {
if ( target.getAttribute('aria-invalid') == 'false' ) {
fulfilled = true;
} else {
fulfilled = false;
}
}
} else {
switch( conditions.operator ) {
case '==':
if( value == conditions.value ) {
fulfilled = true;
}
break;
case '!=':
if( value != conditions.value ) {
fulfilled = true;
}
break;
case '>':
if( value > conditions.value ) {
fulfilled = true;
}
break;
case '<':
if( value < conditions.value ) {
fulfilled = true;
}
break;
case '<=':
if( value <= conditions.value ) {
fulfilled = true;
}
break;
case '>=':
if( value >= conditions.value ) {
fulfilled = true;
}
break;
case 'in':
if( conditions.value.includes( value ) ) {
fulfilled = true;
}
break;
default:
fulfilled = false;
break;
}
}
if( fulfilled ) {
field.classList.add('condition-fulfilled');
field.querySelectorAll('input,select,textarea,button').forEach( function(el) {
el.disabled = false;
});
} else {
field.classList.remove('condition-fulfilled');
field.querySelectorAll('input,select,textarea,button').forEach( function(el) {
el.disabled = true;
});
}
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-conditional', event: 'pluginConditionalReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var field = el,
condition = field.getAttribute( 'data-condition' ) || '==',
conditionTarget = field.getAttribute( 'data-condition-target' ),
conditionValue = field.getAttribute( 'data-condition-value' ),
conditionCheck = field.getAttribute( 'data-condition-check' ) || 'value',
target = document.querySelector('[id*="'+conditionTarget+'"]'),
value = target.value,
targetType = target.type,
eventType;
var conditions = {
operator: condition,
field: conditionTarget,
value: conditionValue
}
var targetTag = target.tagName.toLowerCase();
if( targetType == 'checkbox' || targetTag == 'select' || targetType == 'radio' ) {
eventType = 'change';
} else {
eventType = 'input';
}
if( targetType == 'checkbox' ) {
value = target.checked ? target.value : 0;
}
if( targetType == 'radio' ) {
value = target.checked ? target.value : '';
}
_eval(field, value, conditions, conditionCheck, target);
target.addEventListener( eventType, function() {
if( targetType == 'checkbox' ) {
value = target.checked ? target.value : 0;
} else if( targetType == 'radio' ) {
value = target.checked ? target.value : '';
} else {
value = target.value;
}
_eval(field, value, conditions, conditionCheck, target);
});
if( conditionCheck == 'validate' ) {
var mutationObserver = new MutationObserver( function(mutations) {
mutations.forEach( function(mutation) {
_eval(field, value, conditions, conditionCheck, target);
});
});
mutationObserver.observe( target, {
attributes: true,
characterData: true,
childList: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
}
});
}
};
}();

View File

@@ -0,0 +1,200 @@
CNVS.Cookies = function() {
var __core = SEMICOLON.Core;
var _resetPage = function(btn) {
if( !btn.closest('#gdpr-preferences') ) {
return false;
}
setTimeout( function() {
window.location.reload();
}, 500);
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-cookie', event: 'pluginCookieReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var cookieBar = document.querySelector('.gdpr-settings'),
elSpeed = cookieBar?.getAttribute('data-speed') || 300,
elExpire = cookieBar?.getAttribute('data-expire') || 30,
elDelay = cookieBar?.getAttribute('data-delay') || 1500,
elPersist = cookieBar?.getAttribute('data-persistent'),
elDirection = 'bottom',
elHeight = cookieBar?.offsetHeight + 100,
elWidth = cookieBar?.offsetWidth + 100,
elSize,
elSettings = document.querySelector('.gdpr-cookie-settings'),
elSwitches = elSettings?.querySelectorAll('[data-cookie-name]');
if( !cookieBar && !elSettings ) {
return true;
}
if( elPersist == 'true' ) {
__core.cookie.set('__cnvs_cookies_accept', '');
__core.cookie.remove('__cnvs_cookies_decline');
}
if( cookieBar ) {
if( cookieBar?.classList.contains('gdpr-settings-sm') && cookieBar?.classList.contains('gdpr-settings-right') ) {
elDirection = 'right';
} else if( cookieBar?.classList.contains('gdpr-settings-sm') ) {
elDirection = 'left';
}
if( elDirection == 'left' ) {
elSize = -elWidth;
cookieBar.style.right = 'auto';
cookieBar.style.marginLeft = '1rem';
} else if( elDirection == 'right' ) {
elSize = -elWidth;
cookieBar.style.left = 'auto';
cookieBar.style.marginRight = '1rem';
} else {
elSize = -elHeight;
}
cookieBar.style[elDirection] = elSize + 'px';
if( __core.cookie.get('__cnvs_cookies_accept') != '1' ) {
setTimeout( function() {
cookieBar.style.display = 'block';
cookieBar.style.pointerEvents = 'auto';
cookieBar.style[elDirection] = 0;
cookieBar.style.opacity = 1;
}, Number( elDelay ) );
}
}
var gdprAcceptBtn = document.querySelectorAll('.gdpr-accept'),
gdprDeclineBtn = document.querySelectorAll('.gdpr-decline'),
gdprSaveCookies = document.querySelectorAll('.gdpr-save-cookies');
if( gdprAcceptBtn.length > 0 ) {
gdprAcceptBtn.forEach( function(btn){
btn.onclick = function(e) {
e.preventDefault();
if( cookieBar ) {
cookieBar.style[elDirection] = elSize + 'px';
cookieBar.style.opacity = 0;
cookieBar.ontransitionend = function() {
cookieBar.style.display = 'none';
cookieBar.style.pointerEvents = 'none';
};
}
__core.cookie.set('__cnvs_cookies_accept', '1', elExpire);
__core.cookie.set('__cnvs_cookies_decline', '0', elExpire);
_resetPage(btn);
};
});
}
if( gdprDeclineBtn.length > 0 ) {
gdprDeclineBtn.forEach( function(btn){
btn.onclick = function(e) {
e.preventDefault();
if( cookieBar ) {
cookieBar.style[elDirection] = elSize + 'px';
cookieBar.style.opacity = 0;
cookieBar.ontransitionend = function() {
cookieBar.style.display = 'none';
cookieBar.style.pointerEvents = 'none';
};
}
__core.cookie.set('__cnvs_cookies_accept', '0', elExpire);
__core.cookie.set('__cnvs_cookies_decline', '1', elExpire);
_resetPage(btn);
};
});
}
var acceptCookies = __core.cookie.get('__cnvs_cookies_accept'),
declineCookies = __core.cookie.get('__cnvs_cookies_decline'),
cookiesAllowed = (acceptCookies || acceptCookies != '0') && (!declineCookies || declineCookies != '1');
elSwitches?.forEach( function(el) {
var elCookie = '__cnvs_gdpr_' + el.getAttribute('data-cookie-name'),
getCookie = __core.cookie.get(elCookie);
if( typeof getCookie !== 'undefined' && getCookie == '1' && cookiesAllowed ) {
el.checked = true;
} else {
el.checked = false;
}
});
if( gdprSaveCookies.length > 0 ) {
gdprSaveCookies.forEach( function(btn){
btn.onclick = function(e) {
e.preventDefault();
__core.cookie.set('__cnvs_cookies_accept', '1', elExpire);
__core.cookie.set('__cnvs_cookies_decline', '0', elExpire);
elSwitches.forEach( function(el) {
var elCookie = '__cnvs_gdpr_' + el.getAttribute( 'data-cookie-name' );
if( el.checked == true ) {
__core.cookie.set(elCookie, '1', elExpire);
} else {
__core.cookie.remove(elCookie, '');
}
});
if( elSettings.closest( '.mfp-content' ).length > 0 ) {
jQuery$.magnificPopup.close();
}
_resetPage(btn);
};
});
}
document.querySelectorAll('.gdpr-container')?.forEach( function(element) {
var elCookie = '__cnvs_gdpr_' + element.getAttribute('data-cookie-name'),
elContent = element.getAttribute('data-cookie-content'),
elContentAjax = element.getAttribute('data-cookie-content-ajax'),
getCookie = __core.cookie.get(elCookie);
if( typeof getCookie !== 'undefined' && getCookie == '1' && cookiesAllowed ) {
element.classList.add('gdpr-content-active');
if( elContentAjax ) {
fetch( elContentAjax ).then( function(response) {
return response.text();
}).then( function(html) {
var domParser = new DOMParser();
var parsedHTML = domParser.parseFromString(html, 'text/html');
element?.insertAdjacentHTML('beforeend', parsedHTML.body.innerHTML);
}).catch( function(err) {
console.log(err);
});
} else {
if( elContent ) {
element.innerHTML += elContent;
}
}
__core.runContainerModules(element);
} else {
element.classList.add('gdpr-content-blocked');
}
});
}
};
}();

View File

@@ -0,0 +1,95 @@
CNVS.Countdown = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.countdown.js', id: 'canvas-countdown-js', jsFolder: true });
__core.loadJS({ file: 'components/moment.js', id: 'canvas-moment-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof moment !== "undefined" && jQuery().countdown;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-countdown', event: 'pluginCountdownReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elFormat = element.attr( 'data-format' ) || 'dHMS',
elSince = element.attr( 'data-since' ),
elYear = element.attr( 'data-year' ),
elMonth = element.attr( 'data-month' ),
elDay = element.attr( 'data-day' ),
elHour = element.attr( 'data-hour' ),
elMin = element.attr( 'data-minute' ),
elSec = element.attr( 'data-second' ),
elRedirect = element.attr( 'data-redirect' ),
dateFormat, setDate;
if( elYear ){
dateFormat = elYear;
}
if( elMonth && elMonth < 13 ){
dateFormat = dateFormat +"-"+ ( elMonth < 10 ? '0'+elMonth : elMonth);
} else {
if( elYear ) {
dateFormat = dateFormat +"-01";
}
}
if( elDay && elDay < 32 ){
dateFormat = dateFormat +"-"+ ( elDay < 10 ? '0'+elDay : elDay);
} else {
if( elYear ) {
dateFormat = dateFormat +"-01";
}
}
setDate = dateFormat != '' ? new Date( moment( dateFormat ) ) : new Date();
if( elHour && elHour < 25 ){
setDate.setHours( setDate.getHours() + Number( elHour ) );
}
if( elMin && elMin < 60 ){
setDate.setMinutes( setDate.getMinutes() + Number( elMin ) );
}
if( elSec && elSec < 60 ){
setDate.setSeconds( setDate.getSeconds() + Number( elSec ) );
}
if( !elRedirect ) {
elRedirect = false;
}
if( elSince == 'true' ) {
element.countdown({
since: setDate,
format: elFormat,
expiryUrl: elRedirect,
});
} else {
element.countdown({
until: setDate,
format: elFormat,
expiryUrl: elRedirect,
});
}
});
});
}
};
}();

View File

@@ -0,0 +1,74 @@
CNVS.Counter = function() {
var __core = SEMICOLON.Core;
var _run = function(elCounter, elFormat) {
if( elFormat.comma == 'true' ) {
var reFormat = '\\B(?=(\\d{'+ elFormat.places +'})+(?!\\d))',
regExp = new RegExp( reFormat, "g" );
elCounter.find('span').countTo({
formatter: function(value, options) {
value = value.toFixed( options.decimals );
value = value.replace( regExp, elFormat.sep );
return value;
}
});
} else {
elCounter.find('span').countTo();
}
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.counter.js', id: 'canvas-counter-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().countTo;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-counter', event: 'pluginCounterReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each(function(){
var element = jQuery(this),
elComma = element.find('span').attr('data-comma'),
elSep = element.find('span').attr('data-sep') || ',',
elPlaces = element.find('span').attr('data-places') || 3;
var elCommaObj = {
comma: elComma,
sep: elSep,
places: Number( elPlaces )
}
if( element.hasClass('counter-instant') ) {
_run(element, elCommaObj);
return;
}
var observer = new IntersectionObserver( function(entries, observer) {
entries.forEach( function(entry) {
if (entry.isIntersecting) {
_run(element, elCommaObj);
observer.unobserve(entry.target);
}
});
}, {rootMargin: '0px 0px 50px'});
observer.observe( element[0] );
});
});
}
};
}();

View File

@@ -0,0 +1,59 @@
CNVS.Cursor = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
__core.initFunction({ class: 'has-plugin-cursor', event: 'pluginCursorReady' });
var cursor = document.querySelector('.cnvs-cursor');
var cursorFollower = document.querySelector('.cnvs-cursor-follower');
var cursorDot = document.querySelector('.cnvs-cursor-dot');
var addCursorEl = function(selector, parent) {
var el = document.createElement('div');
el.classList.add(selector.split('.')[1]);
parent.prepend( el );
return document.querySelector(selector);
};
if( !cursor ) {
cursor = addCursorEl('.cnvs-cursor', __core.getVars.elWrapper);
}
if( !cursorFollower ) {
cursorFollower = addCursorEl('.cnvs-cursor-follower', cursor);
}
if( !cursorDot ) {
cursorDot = addCursorEl('.cnvs-cursor-dot', cursor);
}
var onMouseMove = function(event) {
cursor.style.transform = "translate3d("+ event.clientX + 'px'+","+event.clientY+'px'+",0px)";
}
document.addEventListener('mousemove', onMouseMove);
document.querySelectorAll('a,button').forEach( function(el) {
el.addEventListener('mouseenter', function() {
cursor.classList.add('cnvs-cursor-action');
});
el.addEventListener('mouseleave', function() {
cursor.classList.remove('cnvs-cursor-action');
});
});
document.querySelectorAll('.cursor-disable').forEach( function(el) {
el.addEventListener('mouseenter', function() {
cursor.classList.add('cnvs-cursor-disabled');
});
el.addEventListener('mouseleave', function() {
cursor.classList.remove('cnvs-cursor-disabled');
});
});
}
};
}();

View File

@@ -0,0 +1,41 @@
CNVS.DataClasses = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-dataclasses', event: 'pluginDataClassesReady' });
selector = __core.getSelector( selector, false, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var classes = el.getAttribute('data-class');
classes = classes.split(/ +/);
if( classes.length > 0 ) {
classes.forEach( function(_class) {
var deviceClass = _class.split(":");
if( __core.getVars.elBody.classList.contains(deviceClass[0] == 'dark' ? deviceClass[0] : 'device-' + deviceClass[0]) ) {
el.classList.add(deviceClass[1]);
} else {
el.classList.remove(deviceClass[1]);
}
});
}
});
__core.getVars.resizers.dataClasses = function() {
setTimeout( function() {
__modules.dataClasses();
}, 333);
};
}
};
}();

View File

@@ -0,0 +1,52 @@
CNVS.DataHeights = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-dataheights', event: 'pluginDataHeightsReady' });
selector = __core.getSelector( selector, false, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var heightXs = el.getAttribute('data-height-xs') || 'auto',
heightSm = el.getAttribute('data-height-sm') || heightXs,
heightMd = el.getAttribute('data-height-md') || heightSm,
heightLg = el.getAttribute('data-height-lg') || heightMd,
heightXl = el.getAttribute('data-height-xl') || heightLg,
heightXxl = el.getAttribute('data-height-xxl') || heightXl,
body = __core.getVars.elBody.classList,
elHeight;
if( body.contains('device-xs') ) {
elHeight = heightXs;
} else if( body.contains('device-sm') ) {
elHeight = heightSm;
} else if( body.contains('device-md') ) {
elHeight = heightMd;
} else if( body.contains('device-lg') ) {
elHeight = heightLg;
} else if( body.contains('device-xl') ) {
elHeight = heightXl;
} else if( body.contains('device-xxl') ) {
elHeight = heightXxl;
}
if( elHeight ) {
el.style.height = !isNaN( elHeight ) ? elHeight + 'px' : elHeight;
}
});
__core.getVars.resizers.dataHeights = function() {
__modules.dataHeights();
};
}
};
}();

View File

@@ -0,0 +1,18 @@
CNVS.Easing = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
__core.loadJS({ file: 'plugins.easing.js', id: 'canvas-easing-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof jQuery.easing["easeOutQuad"] !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-easing', event: 'pluginEasingReady' });
});
}
};
}();

View File

@@ -0,0 +1,78 @@
CNVS.Filter = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-isotope-filter', event: 'pluginGridFilterReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function() {
var element = jQuery(this),
elCon = element.attr('data-container'),
elActClass = element.attr('data-active-class'),
elDefFilter = element.attr('data-default');
if( !elActClass ) {
elActClass = 'activeFilter';
}
if( !jQuery(elCon).hasClass('grid-container') ) {
return false;
}
element.find('a').off( 'click' ).on( 'click', function(){
element.find('li').removeClass( elActClass );
jQuery(this).parent('li').addClass( elActClass );
var selector = jQuery(this).attr('data-filter');
jQuery(elCon).isotope({ filter: selector });
return false;
});
if( elDefFilter ) {
element.find('li').removeClass( elActClass );
element.find('[data-filter="'+ elDefFilter +'"]').parent('li').addClass( elActClass );
jQuery(elCon).isotope({ filter: elDefFilter });
}
jQuery(elCon).on( 'arrangeComplete layoutComplete', function(event, filteredItems) {
jQuery(elCon).addClass('grid-container-filterable');
if( jQuery(elCon).attr('data-lightbox') == 'gallery' ) {
jQuery(elCon).find("[data-lightbox]").removeClass('grid-lightbox-filtered');
filteredItems.forEach( function(item) {
jQuery(item.element).find("[data-lightbox]").addClass('grid-lightbox-filtered');
});
}
__modules.lightbox();
});
});
jQuery('.grid-shuffle').off( 'click' ).on( 'click', function(){
var element = jQuery(this),
elCon = element.attr('data-container');
if( !jQuery(elCon).hasClass('grid-container') ) {
return false;
}
jQuery(elCon).isotope('shuffle');
});
});
}
};
}();

View File

@@ -0,0 +1,117 @@
CNVS.FlexSlider = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.flexslider.js', id: 'canvas-flexslider-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().flexslider;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-flexslider', event: 'pluginFlexSliderReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each(function() {
var element = jQuery(this),
elLazy = element.find('.lazy'),
elAnimation = element.attr('data-animation') || 'slide',
elEasing = element.attr('data-easing') || 'swing',
elDirection = element.attr('data-direction') || 'horizontal',
elReverse = element.attr('data-reverse'),
elSlideshow = element.attr('data-slideshow'),
elPause = element.attr('data-pause') || 5000,
elSpeed = element.attr('data-speed') || 600,
elVideo = element.attr('data-video'),
elPagi = element.attr('data-pagi'),
elArrows = element.attr('data-arrows'),
elArrowLeft = element.attr('data-arrow-left') || 'uil uil-angle-left-b',
elArrowRight = element.attr('data-arrow-right') || 'uil uil-angle-right-b',
elThumbs = element.attr('data-thumbs'),
elHover = element.attr('data-hover'),
elSheight = element.attr('data-smooth-height'),
elTouch = element.attr('data-touch'),
elUseCSS = false;
if( elEasing == 'swing' ) {
elEasing = 'swing';
elUseCSS = true;
}
if( elReverse == 'true' ) { elReverse = true; } else { elReverse = false; }
if( elSlideshow == "false" ) { elSlideshow = false; } else { elSlideshow = true; }
if( !elVideo ) { elVideo = false; }
if( elSheight == 'false' ) { elSheight = false; } else { elSheight = true; }
if( elDirection == 'vertical' ) { elSheight = false; }
if( elPagi == 'false' ) { elPagi = false; } else { elPagi = true; }
if( elThumbs == 'true' ) { elPagi = 'thumbnails'; } else { elPagi = elPagi; }
if( elArrows == 'false' ) { elArrows = false; } else { elArrows = true; }
if( elHover == 'false' ) { elHover = false; } else { elHover = true; }
if( elTouch == 'false' ) { elTouch = false; } else { elTouch = true; }
element.find('.flexslider').flexslider({
selector: ".slider-wrap > .slide",
animation: elAnimation,
easing: elEasing,
direction: elDirection,
reverse: elReverse,
slideshow: elSlideshow,
slideshowSpeed: Number(elPause),
animationSpeed: Number(elSpeed),
pauseOnHover: elHover,
video: elVideo,
controlNav: elPagi,
directionNav: elArrows,
smoothHeight: elSheight,
useCSS: elUseCSS,
touch: elTouch,
start: function( slider ){
__modules.animations();
__modules.lightbox();
jQuery('.flex-prev').html('<i class="'+ elArrowLeft +'"></i>');
jQuery('.flex-next').html('<i class="'+ elArrowRight +'"></i>');
setTimeout( function(){
if( slider.parents( '.grid-container.has-init-isotope' ).length > 0 ) {
slider.parents( '.grid-container.has-init-isotope' ).isotope('layout');
}
}, 1200 );
if( typeof skrollrInstance !== "undefined" ) {
skrollrInstance.refresh();
}
},
after: function( slider ){
if( slider.parents( '.grid-container.has-init-isotope' ).length > 0 && !slider.hasClass('flexslider-grid-relayout') ) {
slider.parents( '.grid-container.has-init-isotope' ).isotope('layout');
slider.addClass('flexslider-grid-relayout');
}
jQuery('.menu-item:visible').find('.flexslider .slide').resize();
}
});
// jQuery(window).on( 'lazyLoadLoaded', function(){
// if( elLazy.length == element.find('.lazy.lazy-loaded').length ) {
// lazyLoadInstance.update();
// setTimeout( function() {
// element.find('.flexslider .slide').resize();
// }, 500 );
// }
// });
});
});
}
};
}();

View File

@@ -0,0 +1,59 @@
CNVS.Flickr = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.flickrfeed.js', id: 'canvas-flickrfeed-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().jflickrfeed;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-flickr', event: 'pluginFlickrFeedReady' });
selector = __core.getSelector( selector, true, false );
if( selector.length < 1 ){
return true;
}
selector.each(function() {
var element = jQuery(this),
elID = element.attr('data-id'),
elCount = element.attr('data-count') || 9,
elType = element.attr('data-type'),
elTypeGet = 'photos_public.gne';
if( elType == 'group' ) { elTypeGet = 'groups_pool.gne'; }
element.jflickrfeed({
feedapi: elTypeGet,
limit: Number(elCount),
qstrings: {
id: elID
},
itemTemplate: '<a class="grid-item" href="{{image_b}}" title="{{title}}" data-lightbox="gallery-item">' +
'<img src="{{image_s}}" alt="{{title}}" />' +
'</a>'
}, function(data) {
element.removeClass('customjs');
__core.imagesLoaded(element[0]);
__modules.lightbox();
element[0].addEventListener( 'CanvasImagesLoaded', function() {
__modules.gridInit();
__modules.masonryThumbs();
});
});
});
});
}
};
}();

View File

@@ -0,0 +1,63 @@
CNVS.FontSizer = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-fontsizer', event: 'pluginFontSizerReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(elem) {
var target = elem.getAttribute('data-target');
var targetEl = document.querySelector(target);
var step = elem.getAttribute('data-step') || 10;
var min = elem.getAttribute('data-min') || 12;
var max = elem.getAttribute('data-max') || 24;
var defaultSize = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]);
var percent = defaultSize * Number(step) * .01;
var defaultBtn = elem.querySelector('.font-size-default');
var minusBtn = elem.querySelector('.font-size-minus');
var plusBtn = elem.querySelector('.font-size-plus');
if( defaultBtn ) {
defaultBtn.onclick = function(e) {
e.preventDefault();
targetEl.style.fontSize = defaultSize + 'px';
};
}
if( minusBtn ) {
elem.querySelector('.font-size-minus').onclick = function(e) {
e.preventDefault();
var current = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]);
var newSize = current - percent;
if( newSize >= min ) {
targetEl.style.fontSize = newSize + 'px';
}
};
}
if( plusBtn ) {
elem.querySelector('.font-size-plus').onclick = function(e) {
e.preventDefault();
var current = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]);
var newSize = current + percent;
if( newSize <= max ) {
targetEl.style.fontSize = newSize + 'px';
}
};
}
});
}
};
}();

View File

@@ -0,0 +1,70 @@
CNVS.FullVideo = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-html5video', event: 'pluginHtml5VideoReady' });
selector = __core.getSelector( selector, false, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elVideo = element.querySelector('video'),
elRatio = element.getAttribute('data-ratio') || '16/9';
if( !elVideo ) {
return true;
}
elRatio = elRatio.split('/');
elVideo.style.left = '';
elVideo.style.top = '';
var divWidth = element.offsetWidth,
divHeight = element.offsetHeight,
elWidth = ( Number(elRatio[0])*divHeight)/Number(elRatio[1]),
elHeight = divHeight;
if( elWidth < divWidth ) {
elWidth = divWidth;
elHeight = (Number(elRatio[1])*divWidth)/Number(elRatio[0]);
}
elVideo.style.width = elWidth + 'px';
elVideo.style.height = elHeight + 'px';
if( elHeight > divHeight ) {
elVideo.style.left = '';
elVideo.style.top = -( ( elHeight - divHeight )/2 ) + 'px';
}
if( elWidth > divWidth ) {
elVideo.style.left = -( ( elWidth - divWidth )/2 ) + 'px';
elVideo.style.top = '';
}
if( SEMICOLON.Mobile.any() && !element.classList.contains('no-placeholder') ) {
var placeholderImg = elVideo.getAttribute('poster') || elVideo.getAttribute('data-poster');
if( placeholderImg != '' ) {
element.innerHTML += '<div class="video-placeholder" style="background-image: url('+ placeholderImg +');"></div>';
}
elVideo.classList.add('d-none');
}
});
__core.getVars.resizers.html5video = function() {
__modules.html5Video();
};
}
};
}();

View File

@@ -0,0 +1,126 @@
CNVS.GoogleMaps = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
if( !__core.getOptions.gmapAPI ) {
console.warn( 'No API Key defined for Google Maps! Please set an API Key in js/functions.js File!' );
return true;
}
__core.loadJS({ file: 'https://maps.google.com/maps/api/js?key='+__core.getOptions.gmapAPI+"&callback=SEMICOLON.Modules.gmap", id: 'canvas-gmapapi-js' });
__core.loadJS({ file: 'plugins.gmap.js', id: 'canvas-gmap-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof google !== "undefined" && jQuery().gMap;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-gmap', event: 'pluginGmapReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function() {
var element = jQuery(this),
elLat = element.attr( 'data-latitude' ),
elLon = element.attr( 'data-longitude' ),
elAdd = element.attr( 'data-address' ),
elCon = element.attr( 'data-content' ),
elScroll = element.attr( 'data-scrollwheel' ) || true,
elType = element.attr( 'data-maptype' ) || 'ROADMAP',
elZoom = element.attr( 'data-zoom' ) || 12,
elStyles = element.attr( 'data-styles' ),
elMarkers = element.attr( 'data-markers' ),
elIcon = element.attr( 'data-icon' ),
elConPan = element.attr( 'data-control-pan' ) || false,
elConZoom = element.attr( 'data-control-zoom' )|| false,
elConMapT = element.attr( 'data-control-maptype' )|| false,
elConScale = element.attr( 'data-control-scale' )|| false,
elConStreetV = element.attr( 'data-control-streetview' )|| false,
elConOverview = element.attr( 'data-control-overview' )|| false;
if( elAdd ) {
elLat = elLon = false;
} else {
if( !elLat && !elLon ) {
console.log( 'Google Map co-ordinates not entered.' );
return true;
}
}
if( elStyles ) { elStyles = JSON.parse( elStyles ); }
if( elScroll == 'false' ) { elScroll = false; }
if( elConPan == 'true' ) { elConPan = true; }
if( elConZoom == 'true' ) { elConZoom = true; }
if( elConMapT == 'true' ) { elConMapT = true; }
if( elConScale == 'true' ) { elConScale = true; }
if( elConStreetV == 'true' ) { elConStreetV = true; }
if( elConOverview == 'true' ) { elConOverview = true; }
if( elMarkers ) {
elMarkers = Function( 'return ' + elMarkers )();
} else {
if( elAdd ) {
elMarkers = [
{
address: elAdd,
html: elCon ? elCon : elAdd
}
]
} else {
elMarkers = [
{
latitude: elLat,
longitude: elLon,
html: elCon ? elCon : false
}
]
}
}
if( elIcon ) {
elIcon = Function( 'return ' + elIcon )();
} else {
elIcon = {
image: "https://www.google.com/mapfiles/marker.png",
shadow: "https://www.google.com/mapfiles/shadow50.png",
iconsize: [20, 34],
shadowsize: [37, 34],
iconanchor: [9, 34],
shadowanchor: [19, 34]
};
}
element.gMap({
controls: {
panControl: elConPan,
zoomControl: elConZoom,
mapTypeControl: elConMapT,
scaleControl: elConScale,
streetViewControl: elConStreetV,
overviewMapControl: elConOverview
},
scrollwheel: elScroll,
maptype: elType,
markers: elMarkers,
icon: elIcon,
latitude: elLat,
longitude: elLon,
address: elAdd,
zoom: Number( elZoom ),
styles: elStyles
});
});
});
}
};
}();

View File

@@ -0,0 +1,46 @@
CNVS.GoToTop = function() {
var __core = SEMICOLON.Core;
var _init = function(element) {
var elSpeed = element.getAttribute('data-speed') || 700,
elEasing = element.getAttribute('data-easing');
element.onclick = function(e) {
__core.scrollTo(0, Number(elSpeed), elEasing);
e.preventDefault();
};
};
var _scroll = function(element) {
var body = __core.getVars.elBody.classList;
var elMobile = element.getAttribute('data-mobile') || 'false',
elOffset = element.getAttribute('data-offset') || 450;
if( elMobile == 'false' && ( body.contains('device-xs') || body.contains('device-sm') || body.contains('device-md') ) ) {
return true;
}
if( window.scrollY > Number(elOffset) ) {
body.add('gototop-active');
} else {
body.remove('gototop-active');
}
};
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
_init(selector[0]);
_scroll(selector[0]);
window.addEventListener('scroll', function(){
_scroll(selector[0]);
}, {passive:true});
}
};
}();

95
public/js/modules/grid.js Normal file
View File

@@ -0,0 +1,95 @@
CNVS.Grid = function() {
var __core = SEMICOLON.Core;
var _reLayout = function(el) {
el.filter('.has-init-isotope').isotope('layout');
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.isotope.js', id: 'canvas-isotope-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-isotope', event: 'pluginIsotopeReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function() {
var element = jQuery(this),
elTransition = element.attr('data-transition') || '0.65s',
elLayoutMode = element.attr('data-layout') || 'masonry',
elStagger = element.attr('data-stagger') || 0,
elBase = element.attr('data-basewidth') || '.portfolio-item:not(.wide):eq(0)',
elOriginLeft = true,
elGrid;
_reLayout(element);
if( __core.getVars.isRTL ) {
elOriginLeft = false;
}
if( element.hasClass('portfolio') || element.hasClass('post-timeline') ){
elGrid = element.filter(':not(.has-init-isotope)').isotope({
layoutMode: elLayoutMode,
isOriginLeft: elOriginLeft,
transitionDuration: elTransition,
stagger: Number( elStagger ),
percentPosition: true,
masonry: {
columnWidth: element.find( elBase )[0]
}
});
} else {
elGrid = element.filter(':not(.has-init-isotope)').isotope({
layoutMode: elLayoutMode,
isOriginLeft: elOriginLeft,
transitionDuration: elTransition,
stagger: Number( elStagger ),
percentPosition: true,
});
}
if( element.data('isotope') ) {
element.addClass('has-init-isotope');
}
var int = setInterval( function() {
if( element.find('.lazy.lazy-loaded').length == element.find('.lazy').length ) {
setTimeout( function() {
_reLayout(element);
}, 666);
clearInterval(int);
}
}, 1000);
window.addEventListener( 'lazyLoadLoaded', function() {
_reLayout(element);
});
window.addEventListener( 'load', function() {
_reLayout(element);
});
__core.getVars.resizers.isotope = function() {
_reLayout(element);
};
});
});
}
};
}();

View File

@@ -0,0 +1,210 @@
CNVS.Headers = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
var __modules = SEMICOLON.Modules;
var _offset = function() {
var elHeader = __core.getVars.elHeader;
var elHeaderInc = document.querySelector('.include-header');
__core.getVars.headerOffset = elHeader.offsetTop;
if( __core.getVars.elHeader?.classList.contains('floating-header') || elHeaderInc?.classList.contains('include-topbar') ) {
__core.getVars.headerOffset = __core.offset(elHeader).top;
}
__core.getVars.elHeaderWrap?.classList.add('position-absolute');
__core.getVars.headerWrapOffset = __core.getVars.headerOffset + __core.getVars.elHeaderWrap?.offsetTop;
__core.getVars.elHeaderWrap?.classList.remove('position-absolute');
if( elHeader.hasAttribute('data-sticky-offset') ) {
var headerDefinedOffset = elHeader.getAttribute('data-sticky-offset');
if( headerDefinedOffset == 'full' ) {
__core.getVars.headerWrapOffset = __core.viewport().height;
var headerOffsetNegative = elHeader.getAttribute('data-sticky-offset-negative');
if( typeof headerOffsetNegative !== 'undefined' ) {
if( headerOffsetNegative == 'auto' ) {
__core.getVars.headerWrapOffset = __core.getVars.headerWrapOffset - elHeader.offsetHeight - 1;
} else {
__core.getVars.headerWrapOffset = __core.getVars.headerWrapOffset - Number(headerOffsetNegative) - 1;
}
}
} else {
__core.getVars.headerWrapOffset = Number(headerDefinedOffset);
}
}
};
var _sticky = function(stickyOffset) {
if( !__core.getVars.elBody.classList.contains('is-expanded-menu') && __core.getVars.mobileSticky != 'true' ) {
return true;
}
if( window.scrollY > stickyOffset ) {
if( !__core.getVars.elBody.classList.contains('side-header') ) {
__core.getVars.elHeader.classList.add('sticky-header');
_changeMenuClass('sticky');
if( __core.getVars.elBody.classList.contains('is-expanded-menu') && __core.getVars.stickyShrink == 'true' && !__core.getVars.elHeader.classList.contains('no-sticky') ) {
if( ( window.scrollY - stickyOffset ) > Number( __core.getVars.stickyShrinkOffset ) ) {
__core.getVars.elHeader.classList.add('sticky-header-shrink');
} else {
__core.getVars.elHeader.classList.remove('sticky-header-shrink');
}
}
}
} else {
_removeSticky();
if( __core.getVars.mobileSticky == 'true' ) {
_changeMenuClass('responsive');
}
}
};
var _removeSticky = function() {
__core.getVars.elHeader.className = __core.getVars.headerClasses;
__core.getVars.elHeader.classList.remove('sticky-header', 'sticky-header-shrink');
if( __core.getVars.elHeaderWrap ) {
__core.getVars.elHeaderWrap.className = __core.getVars.headerWrapClasses;
}
if( !__core.getVars.elHeaderWrap?.classList.contains('force-not-dark') ) {
__core.getVars.elHeaderWrap?.classList.remove('not-dark');
}
__base.sliderMenuClass();
};
var _changeMenuClass = function(type) {
var newClassesArray = '';
if( 'responsive' == type ) {
if( __core.getVars.elBody.classList.contains('is-expanded-menu') ){
return true;
}
if( __core.getVars.mobileHeaderClasses ) {
newClassesArray = __core.getVars.mobileHeaderClasses.split(/ +/);
}
} else {
if( !__core.getVars.elHeader.classList.contains('sticky-header') ){
return true;
}
if( __core.getVars.stickyHeaderClasses ) {
newClassesArray = __core.getVars.stickyHeaderClasses.split(/ +/);
}
}
var noOfNewClasses = newClassesArray.length;
if( noOfNewClasses > 0 ) {
var i = 0;
for( i=0; i<noOfNewClasses; i++ ) {
if( newClassesArray[i] == 'not-dark' ) {
__core.getVars.elHeader.classList.remove('dark');
if( !__core.getVars.elHeaderWrap?.classList.contains('.not-dark') ) {
__core.getVars.elHeaderWrap?.classList.add('not-dark');
}
} else if( newClassesArray[i] == 'dark' ) {
__core.getVars.elHeaderWrap?.classList.remove('not-dark force-not-dark');
if( !__core.getVars.elHeader.classList.contains( newClassesArray[i] ) ) {
__core.getVars.elHeader.classList.add( newClassesArray[i] );
}
} else if( !__core.getVars.elHeader.classList.contains( newClassesArray[i] ) ) {
__core.getVars.elHeader.classList.add( newClassesArray[i] );
}
}
}
__base.setBSTheme();
};
var _includeHeader = function() {
var elHeaderInc = document.querySelector('.include-header');
var elHeader = __core.getVars.elHeader;
__core.getVars.headerHeight = elHeader.offsetHeight;
if( !elHeaderInc ) {
return true;
}
elHeaderInc.style.marginTop = '';
if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) {
return true;
}
if( elHeader.classList.contains('floating-header') || elHeaderInc.classList.contains('include-topbar') ) {
__core.getVars.headerHeight = elHeader.offsetHeight + __core.offset(elHeader).top;
}
elHeaderInc.style.marginTop = (__core.getVars.headerHeight * -1) + 'px';
__modules.sliderParallax();
}
var _sideHeader = function() {
var headerTrigger = document.getElementById("header-trigger");
if( headerTrigger ) {
headerTrigger.onclick = function(e) {
e.preventDefault();
__core.getVars.elBody.classList.contains('open-header') && __core.getVars.elBody.classList.toggle("side-header-open");
};
}
};
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var elHeader = __core.getVars.elHeader;
var isSticky = elHeader.classList.contains('no-sticky') ? false : true;
var headerWrapClone = elHeader.querySelector('.header-wrap-clone');
__core.getVars.stickyHeaderClasses = elHeader.getAttribute('data-sticky-class');
__core.getVars.mobileHeaderClasses = elHeader.getAttribute('data-responsive-class');
__core.getVars.stickyShrink = elHeader.getAttribute('data-sticky-shrink') || 'true';
__core.getVars.stickyShrinkOffset = elHeader.getAttribute('data-sticky-shrink-offset') || 300;
__core.getVars.mobileSticky = elHeader.getAttribute('data-mobile-sticky') || 'false';
__core.getVars.headerHeight = elHeader.offsetHeight;
if( !headerWrapClone ) {
headerWrapClone = document.createElement('div');
headerWrapClone.classList = 'header-wrap-clone';
__core.getVars.elHeaderWrap?.parentNode.insertBefore( headerWrapClone, __core.getVars.elHeaderWrap?.nextSibling);
headerWrapClone = elHeader.querySelector('.header-wrap-clone');
}
if( isSticky ) {
setTimeout( function() {
_offset();
_sticky( __core.getVars.headerWrapOffset );
_changeMenuClass('sticky');
}, 500);
window.addEventListener('scroll', function(){
_sticky( __core.getVars.headerWrapOffset );
}, {passive:true});
}
_changeMenuClass('responsive');
_includeHeader();
_sideHeader();
__core.getVars.resizers.headers = function() {
setTimeout( function() {
_removeSticky();
if( isSticky ) {
_offset();
_sticky( __core.getVars.headerWrapOffset );
_changeMenuClass('sticky');
}
_changeMenuClass('responsive');
_includeHeader();
}, 250);
};
}
};
}();

View File

@@ -0,0 +1,47 @@
CNVS.Hover3D = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-hover3d', event: 'pluginHover3DReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var height = el.clientHeight;
var width = el.clientWidth;
el.addEventListener( 'mousemove', function(e) {
var xVal = e.layerX;
var yVal = e.layerY;
var yRotation = 20 * ((xVal - width / 2) / width);
var xRotation = -20 * ((yVal - height / 2) / height);
var transform = 'perspective(500px) scale(1.1) rotateX(' + xRotation + 'deg) rotateY(' + yRotation + 'deg) rotateZ(0)';
el.style.transform = transform;
});
el.addEventListener( 'mouseout', function() {
el.style.transform = 'perspective(500px) scale(1) rotateX(0) rotateY(0) rotateZ(0)';
});
el.addEventListener( 'mousedown', function() {
el.style.transform = 'perspective(500px) scale(0.9) rotateX(0) rotateY(0) rotateZ(0)';
});
el.addEventListener( 'mouseup', function() {
el.style.transform = 'perspective(500px) scale(1.1) rotateX(0) rotateY(0) rotateZ(0)';
});
});
}
};
}();

View File

@@ -0,0 +1,156 @@
CNVS.HoverAnimations = function() {
var __core = SEMICOLON.Core;
var _t, _x;
var _showOverlay = function(params) {
clearTimeout(_x);
_t = setTimeout( function() {
params.element.classList.add( 'not-animated' );
(params.elAnimateOut + ' not-animated').split(" ").forEach( function(_class) {
params.element.classList.remove(_class);
});
(params.elAnimate + ' animated').split(" ").forEach( function(_class) {
params.element.classList.add(_class);
});
}, params.elDelayT );
};
var _hideOverlay = function(params) {
params.element.classList.add( 'not-animated' );
(params.elAnimate + ' not-animated').split(" ").forEach( function(_class) {
params.element.classList.remove(_class);
});
(params.elAnimateOut + ' animated').split(" ").forEach( function(_class) {
params.element.classList.add(_class);
});
if( params.elReset == 'true' ) {
_x = setTimeout( function() {
(params.elAnimateOut + ' animated').split(" ").forEach( function(_class) {
params.element.classList.remove(_class);
});
params.element.classList.add( 'not-animated' );
}, Number( params.elSpeed ) );
}
clearTimeout(_t);
};
var _isInsideElement = function(touch){
var rect = element.getBoundingClientRect();
return (
touch.clientX >= rect.left &&
touch.clientX <= rect.right &&
touch.clientY >= rect.top &&
touch.clientY <= rect.bottom
);
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-hoveranimation', event: 'pluginHoverAnimationReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elAnimate = element.getAttribute( 'data-hover-animate' ),
elAnimateOut = element.getAttribute( 'data-hover-animate-out' ) || 'fadeOut',
elSpeed = element.getAttribute( 'data-hover-speed' ) || 600,
elDelay = element.getAttribute( 'data-hover-delay' ),
elParent = element.getAttribute( 'data-hover-parent' ),
elReset = element.getAttribute( 'data-hover-reset' ) || 'false',
elMobile = element.getAttribute( 'data-hover-mobile' ) || 'true';
if( elMobile != 'true' ) {
if( elMobile == 'false' ) {
if( !__core.getVars.elBody.classList.contains('device-up-lg') ) {
return true;
}
} else {
if( !__core.getVars.elBody.classList.contains('device-up-' + elMobile) ) {
return true;
}
}
}
element.classList.add( 'not-animated' );
if( !elParent ) {
if( element.closest( '.bg-overlay' ) ) {
elParent = element.closest( '.bg-overlay' );
} else {
elParent = element;
}
} else {
if( elParent == 'self' ) {
elParent = element;
} else {
elParent = element.closest( elParent );
}
}
var elDelayT = 0;
if( elDelay ) {
elDelayT = Number( elDelay );
}
if( elSpeed ) {
element.style.animationDuration = Number( elSpeed ) + 'ms';
}
var params = {
element: element,
elAnimate: elAnimate,
elAnimateOut: elAnimateOut,
elSpeed: elSpeed,
elDelayT: elDelayT,
elParent: elParent,
elReset: elReset,
}
elParent.addEventListener( 'mouseenter', function(){
_showOverlay(params);
}, false);
elParent.addEventListener( 'mouseleave', function(){
_hideOverlay(params);
}, false);
// elParent.addEventListener( 'touchstart', function(e){
// e.preventDefault();
// _showOverlay(params);
// elParent.addEventListener('touchmove', function(e){
// if (!_isInsideElement(e.touches[0])) {
// _hideOverlay(params);
// elParent.removeEventListener('touchmove');
// }
// });
// elParent.addEventListener('touchend', function(){
// _hideOverlay(params);
// elParent.removeEventListener('touchmove');
// elParent.removeEventListener('touchend');
// });
// });
});
}
};
}();

View File

@@ -0,0 +1,75 @@
CNVS.Instagram = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
var _get = function(element, loader, limit, fetchAlert) {
var alert = element.closest('.instagram-widget-alert');
if( !alert ) {
alert = document.createElement('div');
alert.classList.add( 'alert', 'alert-warning', 'instagram-widget-alert', 'text-center' );
element.insertAdjacentElement( 'beforebegin', alert );
alert.innerHTML = '<div class="spinner-grow spinner-grow-sm me-2" role="status"><span class="visually-hidden">Loading...</span></div> ' + fetchAlert;
}
fetch(loader).then( function(response) {
return response.json();
}).then( function(images) {
if( images.length > 0 ) {
alert.remove();
for (var i = 0; i < limit; i++) {
if ( i === limit )
continue;
var photo = images[i],
thumb = photo.media_url;
if( photo.media_type === 'VIDEO' ) {
thumb = photo.thumbnail_url;
}
element.innerHTML += '<a class="grid-item" href="'+ photo.permalink +'" target="_blank"><img src="'+ thumb +'" alt="Image"></a>';
}
}
element.classList.remove('customjs');
__core.imagesLoaded(element);
element.addEventListener( 'CanvasImagesLoaded', function() {
__modules.masonryThumbs();
__modules.lightbox();
});
}).catch( function(err) {
console.log(err);
alert.classList.remove( 'alert-warning' );
alert.classList.add( 'alert-danger' );
alert.innerHTML = 'Could not fetch Photos from Instagram API. Please try again later.';
});
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-instagram', event: 'pluginInstagramReady' });
selector = __core.getSelector( selector, false, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elLimit = element.getAttribute('data-count') || 12,
elLoader = element.getAttribute('data-loader') || 'include/instagram/instagram.php',
elFetch = element.getAttribute('data-fetch-message') || 'Fetching Photos from Instagram...';
if( Number( elLimit ) > 12 ) {
elLimit = 12;
}
_get(element, elLoader, elLimit, elFetch);
});
}
};
}();

View File

@@ -0,0 +1,37 @@
CNVS.LazyLoad = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.lazyload.js', id: 'canvas-lazyload-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof LazyLoad !== "undefined"
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-lazyload', event: 'pluginlazyLoadReady' });
window.lazyLoadInstance = new LazyLoad({
threshold: 0,
elements_selector: '.lazy:not(.lazy-loaded)',
class_loading: 'lazy-loading',
class_loaded: 'lazy-loaded',
class_error: 'lazy-error',
callback_loaded: function(el) {
__core.addEvent( window, 'lazyLoadLoaded' );
if( el.parentNode.getAttribute('data-lazy-container') == 'true' ) {
__core.runContainerModules( el.parentNode );
}
}
});
});
}
};
}();

View File

@@ -0,0 +1,187 @@
CNVS.Lightbox = 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-lightbox', event: 'pluginLightboxReady' });
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),
elType = element.attr('data-lightbox'),
elCloseButton = element.attr('data-close-button') || 'outside',
elDisableUnder = element.attr('data-disable-under') || 600,
elFixedContent = element.attr('data-content-position') || 'auto',
elZoom = element.attr('data-zoom'),
$body = jQuery('body');
elCloseButton = elCloseButton == 'inside' ? true : false;
elFixedContent = elFixedContent == 'fixed' ? true : false;
if( elType == 'image' ) {
var settings = {
type: 'image',
tLoading: '',
closeOnContentClick: true,
closeBtnInside: elCloseButton,
fixedContentPos: true,
mainClass: 'mfp-no-margins mfp-fade',
image: {
verticalFit: true
},
closeIcon: closeButtonIcon,
};
if( elZoom == 'true' ) {
settings.zoom = {
enabled: true,
duration: 300,
easing: 'ease-in-out',
opener: function(openerElement) {
return openerElement.is('img') ? openerElement : openerElement.find('img');
}
};
}
element.magnificPopup(settings);
}
if( elType == 'gallery' ) {
if( element.find('a[data-lightbox="gallery-item"]').parent('.clone').hasClass('clone') ) {
element.find('a[data-lightbox="gallery-item"]').parent('.clone').find('a[data-lightbox="gallery-item"]').attr('data-lightbox','');
}
if( element.find('a[data-lightbox="gallery-item"]').parents('.cloned').hasClass('cloned') ) {
element.find('a[data-lightbox="gallery-item"]').parents('.cloned').find('a[data-lightbox="gallery-item"]').attr('data-lightbox','');
}
element.magnificPopup({
delegate: element.hasClass('grid-container-filterable') ? 'a.grid-lightbox-filtered[data-lightbox="gallery-item"]' : 'a[data-lightbox="gallery-item"]',
type: 'image',
tLoading: '',
closeOnContentClick: true,
closeBtnInside: elCloseButton,
fixedContentPos: true,
mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side
image: {
verticalFit: true
},
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [0,1] // Will preload 0 - before current, and 1 after the current image
},
closeIcon: closeButtonIcon,
});
}
if( elType == 'iframe' ) {
element.magnificPopup({
disableOn: Number( elDisableUnder ),
type: 'iframe',
tLoading: '',
removalDelay: 160,
preloader: false,
closeBtnInside: elCloseButton,
fixedContentPos: elFixedContent,
closeIcon: closeButtonIcon,
});
}
if( elType == 'inline' ) {
element.magnificPopup({
type: 'inline',
tLoading: '',
mainClass: 'mfp-no-margins mfp-fade',
closeBtnInside: elCloseButton,
fixedContentPos: true,
overflowY: 'scroll',
closeIcon: closeButtonIcon,
});
}
if( elType == 'ajax' ) {
element.magnificPopup({
type: 'ajax',
tLoading: '',
closeBtnInside: elCloseButton,
autoFocusLast: false,
closeIcon: closeButtonIcon,
callbacks: {
ajaxContentAdded: function(mfpResponse) {
__core.runContainerModules( document.querySelector('.mfp-content') );
},
open: function() {
$body.addClass('ohidden');
},
close: function() {
$body.removeClass('ohidden');
}
}
});
}
if( elType == 'ajax-gallery' ) {
element.magnificPopup({
delegate: 'a[data-lightbox="ajax-gallery-item"]',
type: 'ajax',
tLoading: '',
closeBtnInside: elCloseButton,
closeIcon: closeButtonIcon,
autoFocusLast: false,
gallery: {
enabled: true,
preload: 0,
navigateByImgClick: false
},
callbacks: {
ajaxContentAdded: function(mfpResponse) {
__core.runContainerModules( document.querySelector('.mfp-content') );
},
open: function() {
$body.addClass('ohidden');
},
close: function() {
$body.removeClass('ohidden');
}
}
});
}
element.on( 'mfpOpen', function(){
var lightboxItem = jQuery.magnificPopup.instance.currItem.el,
lightboxClass = jQuery( lightboxItem ).attr('data-lightbox-class'),
lightboxBgClass = jQuery( lightboxItem ).attr('data-lightbox-bg-class');
if( lightboxClass != '' ) {
jQuery(jQuery.magnificPopup.instance.container).addClass( lightboxClass );
}
if( lightboxBgClass != '' ) {
jQuery(jQuery.magnificPopup.instance.bgOverlay).addClass( lightboxBgClass );
}
});
});
});
}
};
}();

44
public/js/modules/logo.js Normal file
View File

@@ -0,0 +1,44 @@
CNVS.Logo = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var head = __core.getVars.elHead,
style,
css;
if( selector[0].querySelector('.logo-dark') ) {
style = document.createElement('style');
head.appendChild(style);
css = '.dark #header-wrap:not(.not-dark) #logo [class^="logo-"], .dark .header-row:not(.not-dark) #logo [class^="logo-"] { display: none; } .dark #header-wrap:not(.not-dark) #logo .logo-dark, .dark .header-row:not(.not-dark) #logo .logo-dark { display: flex; }';
style.appendChild(document.createTextNode(css));
}
if( selector[0].querySelector('.logo-sticky') ) {
style = document.createElement('style');
head.appendChild(style);
css = '.sticky-header #logo [class^="logo-"] { display: none !important; } .sticky-header #logo .logo-sticky { display: flex !important; }';
style.appendChild(document.createTextNode(css));
}
if( selector[0].querySelector('.logo-sticky-shrink') ) {
style = document.createElement('style');
head.appendChild(style);
css = '.sticky-header-shrink #logo [class^="logo-"] { display: none; } .sticky-header-shrink #logo .logo-sticky-shrink { display: flex; }';
style.appendChild(document.createTextNode(css));
}
if( selector[0].querySelector('.logo-mobile') ) {
style = document.createElement('style');
head.appendChild(style);
css = 'body:not(.is-expanded-menu) #logo [class^="logo-"] { display: none; } body:not(.is-expanded-menu) #logo .logo-mobile { display: flex; }';
style.appendChild(document.createTextNode(css));
}
}
};
}();

View File

@@ -0,0 +1,78 @@
CNVS.MasonryThumbs = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-masonrythumbs', event: 'pluginMasonryThumbsReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function() {
var element = jQuery(this),
elChildren = element.children(),
elBig = element.attr('data-big');
if( elChildren.length < 1 ) {
return false;
}
elChildren.removeClass('grid-item-big').css({ 'width': '' });
var compStyle = window.getComputedStyle( elChildren.eq(0)[0] );
var firstElementWidth = Number(compStyle.getPropertyValue('width').split('px')[0]);
if( element.filter('.has-init-isotope').length > 0 ) {
element.isotope({
masonry: {
columnWidth: firstElementWidth
}
});
}
if( elBig ) {
elBig = elBig.split(",");
var elBigNum = '',
bigi = '';
for( bigi = 0; bigi < elBig.length; bigi++ ){
elBigNum = Number(elBig[bigi]) - 1;
elChildren.eq(elBigNum).addClass('grid-item-big');
}
}
setTimeout( function() {
element.find('.grid-item-big').css({ width: (firstElementWidth * 2) + 'px' });
}, 500);
setTimeout( function() {
element.filter('.has-init-isotope').isotope( 'layout' );
}, 1000);
element[0].addEventListener( 'transitionend', function() {
__modules.readmore();
});
});
__core.getVars.resizers.masonryThumbs = function() {
__modules.masonryThumbs();
};
});
}
};
}();

View File

@@ -0,0 +1,105 @@
CNVS.MediaActions = function() {
var __core = SEMICOLON.Core;
var _pauseEv = ['ended', 'error', 'pause', 'seeking', 'waiting'];
var _playEv = ['play', 'playing', 'timeupdate'];
var _volume = function(mediaEl) {
var mediaWrap = mediaEl.closest('.media-wrap');
if( mediaEl.volume < 0.1 || mediaEl.muted == true ) {
mediaWrap.classList.add('media-is-muted');
} else {
mediaWrap.classList.remove('media-is-muted');
}
};
var _time = function(duration) {
var minutes = (duration / 60).toFixed(0);
var seconds = (duration % 60).toFixed(0);
return minutes + ':' + (seconds < 10 ? '0' + seconds : seconds);
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-mediaactions', event: 'pluginMediaActionsReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(mediaWrap) {
var mediaEl = mediaWrap.querySelector('video,audio');
var mediaTrigger = mediaWrap.querySelector('.media-trigger-playback');
var volumeTrigger = mediaWrap.querySelector('.media-trigger-volume');
var mediaDuration = mediaWrap.querySelector('.media-duration');
if( !mediaEl ) {
return true;
}
_pauseEv.forEach( function(_event) {
mediaEl.addEventListener(_event, function(){
mediaWrap.classList.remove('media-is-playing');
_volume(mediaEl);
});
});
_playEv.forEach( function(_event) {
mediaEl.addEventListener(_event, function(){
mediaWrap.classList.add('media-is-playing');
_volume(mediaEl);
if( mediaDuration ) {
mediaDuration.innerHTML = _time(mediaEl.currentTime);
}
});
});
mediaEl.addEventListener('volumechange', function(){
_volume(mediaEl);
});
var ifLoaded = setInterval( function(){
if( mediaEl.readyState === 4 ) {
if( mediaDuration ) {
mediaDuration.innerHTML = _time(mediaEl.duration);
}
clearInterval(ifLoaded);
}
}, 1000);
if( mediaTrigger ) {
mediaTrigger.onclick = function(e) {
e.preventDefault();
if (mediaEl.paused) {
mediaEl.play();
} else {
mediaEl.pause();
}
};
}
if( volumeTrigger ) {
volumeTrigger.onclick = function(e) {
e.preventDefault();
if (mediaEl.muted) {
mediaEl.muted = false;
} else {
mediaEl.muted = true;
}
};
}
});
}
};
}();

565
public/js/modules/menus.js Normal file
View File

@@ -0,0 +1,565 @@
CNVS.Menus = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
var _init = function() {
__core.getVars.headerWrapHeight = __core.getVars.elHeaderWrap?.offsetHeight;
var onClickMenus = [].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) {
return elem.matches('.on-click');
});
var onClickTopMenus = document.querySelectorAll('.top-links.on-click');
var onClickMenuCurrent = [];
onClickMenus.forEach( function(pMenu) {
onClickMenuCurrent.push(pMenu.querySelector('.current'));
});
var onClickTopMenuCurrent = [];
onClickTopMenus.forEach( function(topMenu) {
onClickTopMenuCurrent.push(topMenu.querySelector('.current'));
});
document.addEventListener('click', function(e) {
if( !e.target.closest('.primary-menu-trigger') && !e.target.closest('.primary-menu') ) {
_reset();
_functions();
}
if ( !e.target.closest('.primary-menu.on-click') ) {
onClickMenus.forEach( function(pMenu) {
pMenu.querySelectorAll('.menu-item').forEach( function(item) {
item.classList.remove('current');
});
});
onClickMenuCurrent?.forEach( function(current) {
current?.classList.add('current');
});
}
if ( !e.target.closest('.top-links.on-click') ) {
onClickTopMenus.forEach( function(topMenu) {
topMenu.querySelectorAll('.top-links-sub-menu,.top-links-section').forEach( function(item) {
item.classList.remove('d-block');
});
});
onClickTopMenus.forEach( function(topMenu) {
topMenu.querySelectorAll('.top-links-item').forEach( function(item) {
item.classList.remove('current');
});
});
onClickTopMenuCurrent?.forEach( function(current) {
current?.classList.add('current');
});
}
}, false);
document.querySelectorAll( '.menu-item' ).forEach(function(el) {
if( el.querySelectorAll('.sub-menu-container').length > 0 ) {
el.classList.add('sub-menu');
}
if( !el.classList.contains('mega-menu-title') && el.querySelectorAll('.sub-menu-container').length > 0 && el.querySelectorAll('.sub-menu-trigger').length < 1 ) {
var subMenuTrigger = document.createElement('button');
subMenuTrigger.classList = 'sub-menu-trigger fa-solid fa-chevron-right';
subMenuTrigger.innerHTML = '<span class="visually-hidden">Open Sub-Menu</span>';
el.append( subMenuTrigger );
}
});
};
var _reset = function() {
var body = __core.getVars.elBody,
subMenusSel = '.mega-menu-content, .sub-menu-container',
menuItemSel = '.menu-item';
document.querySelectorAll('.primary-menu-trigger').forEach( function(el) {
el.classList.remove('primary-menu-trigger-active');
});
__core.getVars.elPrimaryMenus.forEach( function(el) {
if( !body.classList.contains('is-expanded-menu') ) {
el.querySelector('.menu-container')?.classList.remove('d-block');
} else {
el.querySelector('.menu-container')?.classList.remove('d-block', 'd-none');
el.querySelectorAll(subMenusSel)?.forEach( function(item) {
item.classList.remove('d-none');
});
document.querySelectorAll('.menu-container:not(.mobile-primary-menu)').forEach( function(el) {
el.style.display = '';
});
__core.getVars.elPrimaryMenus.forEach( function(el) {
el.querySelectorAll('.mobile-primary-menu')?.forEach( function(elem) {
elem.classList.remove('d-block');
});
});
}
el.querySelectorAll(subMenusSel)?.forEach( function(item) {
item.classList.remove('d-block');
});
el.classList.remove('primary-menu-active');
var classes = body.className.split(" ").filter( function(classText) {
return !classText.startsWith('primary-menu-open');
});
body.className = classes.join(" ").trim();
});
};
var _withIcon = function() {
document.querySelectorAll('.mega-menu-content, .sub-menu-container').forEach( function(subMenu) {
subMenu.querySelectorAll('.menu-item').forEach( function(item) {
var link = item.querySelector('.menu-link');
link?.querySelector('i') && link.querySelector('span')?.classList.add('menu-subtitle-icon-offset');
});
});
};
var _arrows = function() {
var addArrow = function(menuItemDiv) {
if( menuItemDiv && !menuItemDiv.querySelector('.sub-menu-indicator') ) {
var arrow = document.createElement("i");
arrow.classList.add('sub-menu-indicator');
var customArrow = menuItemDiv.closest('.primary-menu')?.getAttribute('data-arrow-class') || 'fa-solid fa-caret-down';
customArrow && customArrow.split(" ").forEach( function(className) {
arrow.classList.add(className);
});
menuItemDiv.append(arrow);
}
};
// Arrows for Top Links Items
document.querySelectorAll( '.top-links-item' ).forEach( function(menuItem) {
var menuItemDiv = menuItem.querySelector(':scope > a');
menuItem.querySelector(':scope > .top-links-sub-menu, :scope > .top-links-section') && addArrow( menuItemDiv );
});
// Arrows for Primary Menu Items
document.querySelectorAll( '.menu-item' ).forEach( function(menuItem) {
var menuItemDiv = menuItem.querySelector(':scope > .menu-link > div');
( !menuItem.classList.contains('mega-menu-title') && menuItem.querySelector(':scope > .sub-menu-container, :scope > .mega-menu-content') ) && addArrow( menuItemDiv );
});
// Arrows for Page Menu Items
document.querySelectorAll( '.page-menu-item' ).forEach( function(menuItem) {
var menuItemDiv = menuItem.querySelector(':scope > a > div');
menuItem.querySelector(':scope > .page-menu-sub-menu') && addArrow( menuItemDiv );
});
};
var _invert = function(subMenuEl) {
var subMenus = subMenuEl || document.querySelectorAll( '.mega-menu-content, .sub-menu-container, .top-links-section' );
// if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) {
// return false;
// }
if( subMenus.length < 1 ) {
return false;
}
var primaryMenus;
subMenus.forEach( function(el) {
primaryMenus = el.closest('.header-row')?.querySelectorAll('.primary-menu');
el.classList.remove('menu-pos-invert');
var elChildren = el.querySelectorAll(':scope > *');
elChildren.forEach( function(elChild) {
elChild.style.display = 'block';
});
el.style.display = 'block';
var viewportOffset = el.getBoundingClientRect();
if( el.closest('.mega-menu-small') ) {
var outside = __core.viewport().width - (viewportOffset.left + viewportOffset.width);
if( outside < 0 ) {
el.style.left = outside + 'px';
}
}
if( __core.getVars.elBody.classList.contains('rtl') ) {
if( viewportOffset.left < 0 ) {
el.classList.add('menu-pos-invert');
}
}
if( __core.viewport().width - (viewportOffset.left + viewportOffset.width) < 0 ) {
el.classList.add('menu-pos-invert');
}
});
subMenus.forEach( function(el) {
var elChildren = el.querySelectorAll(':scope > *');
elChildren.forEach( function(elChild) {
elChild.style.display = '';
});
el.style.display = '';
});
primaryMenus?.forEach( function(pMenu){
pMenu.classList.add('primary-menu-init');
});
};
var _hover = function() {
if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) {
return true;
}
var menuHoverDelay = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-primary-menu-submenu-display-speed') || 666;
if( !isNaN(menuHoverDelay.split('ms')[0]) ) {
menuHoverDelay = menuHoverDelay.split('ms')[0];
} else if( !isNaN(menuHoverDelay.split('s')[0]) ) {
menuHoverDelay = menuHoverDelay.split('s')[0] * 1000;
}
[].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) {
return !elem.matches('.on-click');
}).forEach( function(pMenu) {
pMenu.querySelectorAll('.sub-menu').forEach( function(item){
var _t;
item.addEventListener('mouseenter', function() {
clearTimeout(_t);
item.classList.add('menu-item-hover');
_invert(item.querySelectorAll('.mega-menu-content, .sub-menu-container'));
});
item.addEventListener('mouseleave', function() {
_t = setTimeout( function(){
item.classList.remove('menu-item-hover');
}, Number(menuHoverDelay));
});
});
});
};
var _functions = function() {
var subMenusSel = '.mega-menu-content, .sub-menu-container',
menuItemSel = '.menu-item',
subMenuSel = '.sub-menu',
subMenuTriggerSel = '.sub-menu-trigger',
body = __core.getVars.elBody.classList;
var triggersBtn = document.querySelectorAll( subMenuTriggerSel );
var triggerLinks = new Array;
triggersBtn.forEach( function(el) {
var triggerLink = el.closest('.menu-item').querySelector('.menu-link[href^="#"]');
if( triggerLink ) {
triggerLinks.push(triggerLink);
}
});
var triggers = [].slice.call(triggersBtn).concat([].slice.call(triggerLinks));
document.querySelectorAll(subMenuTriggerSel).forEach( function(el) {
el.classList.remove('icon-rotate-90')
});
/**
* Mobile Menu Functionality
*/
if( !body.contains('is-expanded-menu') ) {
// Reset Menus to their Closed State
__core.getVars.elPrimaryMenus.forEach( function(el) {
el.querySelectorAll(subMenusSel).forEach( function(elem) {
elem.classList.add('d-none');
body.remove("primary-menu-open");
})
});
triggers.forEach( function(trigger) {
trigger.onclick = function(e) {
e.preventDefault();
var triggerEl = trigger;
if( !trigger.classList.contains('sub-menu-trigger') ) {
triggerEl = trigger.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel);
}
__core.siblings(triggerEl.closest(menuItemSel)).forEach( function(item) {
item.querySelectorAll(subMenusSel).forEach( function(item) {
item.classList.add('d-none');
});
});
if( triggerEl.closest('.mega-menu-content') ) {
var parentSubMenuContainers = [];
__core.parents(triggerEl, menuItemSel).forEach( function(item) {
parentSubMenuContainers.push(item.querySelector(':scope > ' + subMenusSel));
});
[].slice.call(triggerEl.closest('.mega-menu-content').querySelectorAll(subMenusSel)).filter( function(item) {
return !parentSubMenuContainers.includes(item);
}).forEach( function(item) {
item.classList.add('d-none');
});
}
_triggerState(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, 'd-none');
};
});
}
/**
* On-Click Menu Functionality
*/
if( body.contains('is-expanded-menu') ) {
if( body.contains('side-header') || body.contains('overlay-menu') ) {
__core.getVars.elPrimaryMenus.forEach( function(pMenu) {
pMenu.classList.add('on-click');
pMenu.querySelectorAll(subMenuTriggerSel).forEach( function(item) {
item.style.zIndex = '-1';
});
});
}
[].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) {
return elem.matches('.on-click');
}).forEach( function(pMenu) {
var menuItemSubs = __core.has( pMenu.querySelectorAll(menuItemSel), subMenuTriggerSel );
menuItemSubs.forEach( function(el) {
var triggerEl = el.querySelector(':scope > .menu-link');
triggerEl.onclick = function(e) {
e.preventDefault();
__core.siblings(triggerEl.closest(menuItemSel)).forEach( function(item) {
item.querySelectorAll(subMenusSel).forEach( function(item) {
item.classList.remove('d-block');
});
});
if( triggerEl.closest('.mega-menu-content') ) {
var parentSubMenuContainers = [];
__core.parents(triggerEl, menuItemSel).forEach( function(item) {
parentSubMenuContainers.push(item.querySelector(':scope > ' + subMenusSel));
});
[].slice.call(triggerEl.closest('.mega-menu-content').querySelectorAll(subMenusSel)).filter( function(item) {
return !parentSubMenuContainers.includes(item);
}).forEach( function(item) {
item.classList.remove('d-block');
});
}
_triggerState(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, 'd-block');
};
});
});
}
/**
* Top-Links On-Click Functionality
*/
document.querySelectorAll('.top-links').forEach( function(item) {
if( item.classList.contains('on-click') || !body.contains('device-up-lg') ) {
item.querySelectorAll('.top-links-item').forEach( function(menuItem) {
if( menuItem.querySelectorAll('.top-links-sub-menu,.top-links-section').length > 0 ) {
var triggerEl = menuItem.querySelector(':scope > a');
triggerEl.onclick = function(e) {
e.preventDefault();
__core.siblings(menuItem).forEach( function(item) {
item.querySelectorAll('.top-links-sub-menu, .top-links-section').forEach( function(item) {
item.classList.remove('d-block');
});
});
menuItem.querySelector(':scope > .top-links-sub-menu, :scope > .top-links-section').classList.toggle('d-block');
__core.siblings(menuItem).forEach( function(item) {
item.classList.remove('current');
});
menuItem.classList.toggle('current');
};
}
})
}
});
_invert( document.querySelectorAll('.top-links-section') );
};
var _triggerState = function(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, classCheck) {
triggerEl.closest('.menu-container').querySelectorAll(subMenuTriggerSel).forEach( function(el) {
el.classList.remove('icon-rotate-90');
});
var triggerredSubMenus = triggerEl.closest(menuItemSel).querySelector( ':scope > ' + subMenusSel );
var childSubMenus = triggerEl.closest(menuItemSel).querySelectorAll( subMenusSel );
if( classCheck == 'd-none' ) {
if( triggerredSubMenus.classList.contains('d-none') ) {
triggerredSubMenus.classList.remove('d-none');
} else {
childSubMenus.forEach( function(item) {
item.classList.add('d-none');
});
}
} else {
if( triggerredSubMenus.classList.contains('d-block') ) {
childSubMenus.forEach( function(item) {
item.classList.remove('d-block');
});
} else {
triggerredSubMenus.classList.add('d-block');
}
}
_current(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel);
}
var _current = function(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel) {
[].slice.call(triggerEl.closest('.menu-container').querySelectorAll(menuItemSel)).forEach( function(item) {
item.classList.remove('current');
});
var setCurrent = function(item, menuItemSel, subMenusSel) {
if( !__core.isHidden(item.closest(menuItemSel).querySelector(':scope > ' + subMenusSel)) ) {
item.closest(menuItemSel).classList.add('current');
item.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel)?.classList.add('icon-rotate-90');
} else {
item.closest(menuItemSel).classList.remove('current');
item.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel)?.classList.remove('icon-rotate-90');
}
};
setCurrent(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel);
__core.parents(triggerEl, menuItemSel).forEach( function(item) {
setCurrent(item, menuItemSel, subMenusSel, subMenuTriggerSel);
});
};
var _trigger = function() {
var body = __core.getVars.elBody.classList;
document.querySelectorAll('.primary-menu-trigger').forEach( function(menuTrigger) {
menuTrigger.onclick = function(e) {
e.preventDefault();
var elTarget = menuTrigger.getAttribute( 'data-target' ) || '*';
if( __core.filtered( __core.getVars.elPrimaryMenus, elTarget ).length < 1 ) {
return;
}
if( !body.contains('is-expanded-menu') ) {
__core.getVars.elPrimaryMenus.forEach( function(el) {
if( el.querySelectorAll('.mobile-primary-menu').length > 0 ) {
el.matches(elTarget) && el.querySelectorAll('.mobile-primary-menu').forEach( function(elem) {
elem.classList.toggle('d-block');
});
} else {
el.matches(elTarget) && el.querySelectorAll('.menu-container').forEach( function(elem) {
elem.classList.toggle('d-block');
});
}
});
}
menuTrigger.classList.toggle('primary-menu-trigger-active');
__core.getVars.elPrimaryMenus.forEach( function(elem) {
elem.matches(elTarget) && elem.classList.toggle('primary-menu-active');
});
body.toggle('primary-menu-open');
if( elTarget != '*' ) {
body.toggle('primary-menu-open-' + elTarget.replace(/[^a-zA-Z0-9-]/g, ""));
} else {
body.toggle('primary-menu-open-all');
}
};
});
};
var _fullWidth = function() {
var body = __core.getVars.elBody.classList;
if( !body.contains('is-expanded-menu') ) {
document.querySelectorAll('.mega-menu-content, .top-search-form').forEach( function(el) {
el.style.width = '';
});
return true;
}
var headerWidth = document.querySelector('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content')?.closest('.header-row').offsetWidth;
if( __core.getVars.elHeader.querySelectorAll('.container-fullwidth').length > 0 ) {
document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) {
el.style.width = headerWidth + 'px';
});
}
document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content, .top-search-form').forEach( function(el) {
el.style.width = headerWidth + 'px';
});
if( __core.getVars.elHeader.classList.contains('full-header') ) {
document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) {
el.style.width = headerWidth + 'px';
});
}
if( __core.getVars.elHeader.classList.contains('floating-header') ) {
var floatingHeaderPadding = getComputedStyle(document.querySelector('#header')).getPropertyValue('--cnvs-header-floating-padding');
document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) {
el.style.width = (headerWidth + (Number(floatingHeaderPadding.split('px')[0]) *2)) + 'px';
});
}
};
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
_init();
_reset();
_withIcon();
_arrows();
_invert();
_hover();
_functions();
_trigger();
_fullWidth();
var windowWidth = __core.viewport().width;
__core.getVars.resizers.menus = function() {
if( windowWidth != __core.viewport().width ) {
__base.menus();
}
};
__core.getVars.recalls.menureset = function() {
_reset();
_functions();
};
}
};
}();

128
public/js/modules/modal.js Normal file
View File

@@ -0,0 +1,128 @@
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) );
}
});
});
}
};
}();

View File

@@ -0,0 +1,60 @@
CNVS.NavTree = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-navtree', event: 'pluginNavTreeReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elSpeed = element.attr('data-speed') || 250,
elEasing = element.attr('data-easing') || 'swing',
elArrow = element.attr('data-arrow-class') || 'fa-solid fa-angle-right';
element.find( 'ul li:has(ul)' ).addClass('sub-menu');
element.find( 'ul li:has(ul) > a' ).filter(':not(:has(.sub-menu-indicator))').append( '<i class="sub-menu-indicator '+ elArrow +'"></i>' );
if( element.hasClass('on-hover') ){
element.find( 'ul li:has(ul):not(.active)' ).hover( function(e){
jQuery(this).children('ul').stop(true, true).slideDown( Number(elSpeed), elEasing);
}, function(){
jQuery(this).children('ul').delay(250).slideUp( Number(elSpeed), elEasing);
});
} else {
element.find( 'ul li:has(ul) > a' ).off( 'click' ).on( 'click', function(){
var childElement = jQuery(this);
element.find( 'ul li' ).not(childElement.parents()).removeClass('active');
childElement.parent().children('ul').slideToggle( Number(elSpeed), elEasing, function(){
jQuery(this).find('ul').hide();
jQuery(this).find('li.active').removeClass('active');
});
element.find( 'ul li > ul' ).not(childElement.parent().children('ul')).not(childElement.parents('ul')).slideUp( Number(elSpeed), elEasing );
childElement.parent('li:has(ul)').toggleClass('active');
return true;
});
}
});
});
}
};
}();

View File

@@ -0,0 +1,186 @@
CNVS.Notifications = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.bootstrap.js', id: 'canvas-bootstrap-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && typeof bootstrap !== "undefined";
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-notify', event: 'pluginNotifyReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
var element = selector,
elPosition = element.attr('data-notify-position') || 'top-right',
elType = element.attr('data-notify-type'),
elMsg = element.attr('data-notify-msg') || 'Please set a message!',
elTimeout = element.attr('data-notify-timeout') || 5000,
elClose = element.attr('data-notify-close') || 'true',
elAutoHide = element.attr('data-notify-autohide') || 'true',
elId = 'toast-' + Math.floor( Math.random() * 10000 ),
elTrigger = element.attr('data-notify-trigger') || 'self',
elTarget = element.attr('data-notify-target'),
elCloseHtml = '',
elPosClass, elTypeClass, elCloseClass;
if( jQuery(elTarget).length > 0 && elTrigger == 'self' ) {
var toast = bootstrap.Toast.getOrCreateInstance(jQuery(elTarget).get(0));
toast.hide();
jQuery(elTarget).get(0).addEventListener('hidden.bs.toast', function() {
CNVS.Notifications.init( selector );
});
}
switch( elType ){
case 'primary':
elTypeClass = 'text-white bg-primary border-0';
break;
case 'warning':
elTypeClass = 'text-dark bg-warning border-0';
break;
case 'error':
elTypeClass = 'text-white bg-danger border-0';
break;
case 'success':
elTypeClass = 'text-white bg-success border-0';
break;
case 'info':
elTypeClass = 'bg-info text-dark border-0';
break;
case 'dark':
elTypeClass = 'text-white bg-dark border-0';
break;
default:
elTypeClass = '';
break;
}
switch( elPosition ){
case 'top-left':
elPosClass = 'top-0 start-0';
break;
case 'top-center':
elPosClass = 'top-0 start-50 translate-middle-x';
break;
case 'middle-left':
elPosClass = 'top-50 start-0 translate-middle-y';
break;
case 'middle-center':
elPosClass = 'top-50 start-50 translate-middle';
break;
case 'middle-right':
elPosClass = 'top-50 end-0 translate-middle-y';
break;
case 'bottom-left':
elPosClass = 'bottom-0 start-0';
break;
case 'bottom-center':
elPosClass = 'bottom-0 start-50 translate-middle-x';
break;
case 'bottom-right':
elPosClass = 'bottom-0 end-0';
break;
default:
elPosClass = 'top-0 end-0';
break;
}
if( elType == 'info' || elType == 'warning' || !elType ) {
elCloseClass = '';
} else {
elCloseClass = 'btn-close-white';
}
if( elClose == 'true' ) {
elCloseHtml = '<button type="button" class="btn-close '+ elCloseClass +' btn-sm me-2 mt-2 ms-auto" data-bs-dismiss="toast" aria-label="Close"></button>';
}
if( elAutoHide != 'true' ) {
elAutoHide = false;
} else {
elAutoHide = true;
}
let elTemplate = '<div class="position-fixed '+ elPosClass +' p-3" style="z-index: 999999;">'+
'<div id="'+ elId +'" class="toast p-2 hide '+ elTypeClass +'" role="alert" aria-live="assertive" aria-atomic="true">'+
'<div class="d-flex">'+
'<div class="toast-body">'+
elMsg +
'</div>'+
elCloseHtml +
'</div>'+
'</div>';
'</div>';
if( elTrigger == 'self' ) {
if( !elTarget ) {
element.attr( 'data-notify-target', '#'+elId );
jQuery('body').append( elTemplate );
}
}
var toastElList = [].slice.call(document.querySelectorAll('.toast'));
var toastList = toastElList.map( function(toastEl) {
return new bootstrap.Toast(toastEl);
});
toastList.forEach( function(toast) {
toast.hide();
});
var toastElement = element.attr('data-notify-target'),
toastInstance = jQuery(toastElement),
elMsgOld = toastInstance.find('.toast-body');
if( jQuery(toastElement).length > 0 ) {
var toast = new bootstrap.Toast( toastInstance.get(0) ,{
delay: Number(elTimeout),
autohide: elAutoHide,
});
toast.show();
if( elTrigger == 'self' ) {
toastInstance.get(0).addEventListener('hidden.bs.toast', function() {
toastInstance.parent().remove();
element.get(0).removeAttribute( 'data-notify-target' );
});
}
}
return false;
});
}
};
}();

View File

@@ -0,0 +1,298 @@
CNVS.OnePage = function() {
var __core = SEMICOLON.Core;
var _init = function(selector) {
_hash();
if( __core.getVars.elLinkScrolls ) {
__core.getVars.elLinkScrolls.forEach( function(el) {
_getSettings( el, 'scrollTo' );
el.onclick = function(e) {
e.preventDefault();
_scroller( el, 'scrollTo', true );
};
});
}
if( __core.getVars.elOnePageMenus ) {
__core.getVars.elOnePageMenus.forEach( function(onePageMenu) {
__core.getVars.elOnePageActiveClass = onePageMenu.getAttribute('data-active-class') || 'current';
__core.getVars.elOnePageParentSelector = onePageMenu.getAttribute('data-parent') || 'li';
__core.getVars.elOnePageActiveOnClick = onePageMenu.getAttribute('data-onclick-active') || 'false';
onePageMenu.querySelectorAll('[data-href]').forEach( function(el) {
_getSettings( el, 'onePage' );
el.onclick = function(e) {
e.preventDefault();
_scroller( el, 'onePage', true );
};
});
});
}
};
var _hash = function() {
if( __core.getOptions.scrollExternalLinks != true ) {
return false;
}
if( document.querySelector('a[data-href="'+ __core.getVars.hash +'"]') || document.querySelector('a[data-scrollto="'+ __core.getVars.hash +'"]') ) {
window.onbeforeunload = function() {
__core.scrollTo(0, 0, false, 'auto');
};
__core.scrollTo(0, 0, false, 'auto');
var section = document.querySelector(__core.getVars.hash);
if( section ) {
var int = setInterval( function() {
var settings = section.getAttribute('data-onepage-settings') && JSON.parse( section.getAttribute('data-onepage-settings') );
if( settings ) {
_scroll(section, settings, 0);
clearInterval(int);
}
}, 250);
}
}
};
var _getSection = function(el, type) {
var anchor;
if( type == 'scrollTo' ) {
anchor = el.getAttribute('data-scrollto');
} else {
anchor = el.getAttribute('data-href');
}
var section = document.querySelector( anchor );
return section;
};
var _getSettings = function(el, type) {
var section = _getSection(el, type);
if( !section ) {
return false;
}
section.removeAttribute('data-onepage-settings');
var settings = _settings( section, el );
setTimeout( function() {
if( !section.hasAttribute('data-onepage-settings') ) {
section.setAttribute( 'data-onepage-settings', JSON.stringify( settings ) );
}
__core.getVars.pageSectionEls = document.querySelectorAll('[data-onepage-settings]');
}, 1000);
};
var _scroller = function(el, type, clicker = false) {
var section = _getSection(el, type),
sectionId = section.getAttribute('id'),
settings;
if( !section ) {
return false;
}
if( clicker == true ) {
settings = _settings(section, el, false);
} else {
settings = JSON.parse(section.getAttribute('data-onepage-settings'));
}
if( type != 'scrollTo' && __core.getVars.elOnePageActiveOnClick == 'true' ) {
parent = el.closest('.one-page-menu');
parent.querySelectorAll(__core.getVars.elOnePageParentSelector).forEach( function(el) {
el.classList.remove( __core.getVars.elOnePageActiveClass );
});
parent.querySelector('a[data-href="#' + sectionId + '"]').closest(__core.getVars.elOnePageParentSelector).classList.add( __core.getVars.elOnePageActiveClass );
}
if( !__core.getVars.elBody.classList.contains('is-expanded-menu') || __core.getVars.elBody.classList.contains('overlay-menu') ) {
__core.getVars.recalls.menureset();
}
_scroll(section, settings, 250);
};
var _scroll = function(section, settings, timeout) {
setTimeout( function() {
var sectionOffset = __core.offset(section).top;
if( !settings ) {
return false;
}
__core.scrollTo((sectionOffset - Number(settings.offset)), settings.speed, settings.easing);
}, Number(timeout));
};
var _position = function() {
__core.getVars.elOnePageMenus && __core.getVars.elOnePageMenus.forEach( function(el) {
el.querySelectorAll('[data-href]').forEach( function(item) {
item.closest(__core.getVars.elOnePageParentSelector).classList.remove( __core.getVars.elOnePageActiveClass );
});
});
__core.getVars.elOnePageMenus && __core.getVars.elOnePageMenus.forEach( function(el) {
el.querySelector('[data-href="#' + _current() + '"]')?.closest(__core.getVars.elOnePageParentSelector).classList.add( __core.getVars.elOnePageActiveClass );
});
};
var _current = function() {
var currentOnePageSection;
if( typeof __core.getVars.pageSectionEls === 'undefined' ) {
return true;
}
__core.getVars.pageSectionEls.forEach( function(el) {
var settings = el.getAttribute('data-onepage-settings') && JSON.parse( el.getAttribute('data-onepage-settings') );
if( settings ) {
var h = __core.offset(el).top - settings.offset - 5,
y = window.scrollY;
if( ( y >= h ) && ( y < h + el.offsetHeight ) && el.getAttribute('id') != currentOnePageSection && el.getAttribute('id') ) {
currentOnePageSection = el.getAttribute('id');
}
}
});
return currentOnePageSection;
};
var _settings = function(section, element, json=true) {
var body = __core.getVars.elBody.classList;
if( typeof section === 'undefined' || element.length < 1 ) {
return true;
}
if( section.hasAttribute('data-onepage-settings') && json ) {
return true;
}
var defaults = {
offset: __core.getVars.topScrollOffset,
speed: 1250,
easing: false
};
var settings = {},
parentSettings = {},
parent = element.closest( '.one-page-menu' );
parentSettings.offset = parent?.getAttribute( 'data-offset' ) || defaults.offset;
parentSettings.speed = parent?.getAttribute( 'data-speed' ) || defaults.speed;
parentSettings.easing = parent?.getAttribute( 'data-easing' ) || defaults.easing;
var elementSettings = {
offset: element.getAttribute( 'data-offset' ) || parentSettings.offset,
speed: element.getAttribute( 'data-speed' ) || parentSettings.speed,
easing: element.getAttribute( 'data-easing' ) || parentSettings.easing,
};
var elOffsetXXL = element.getAttribute( 'data-offset-xxl' ),
elOffsetXL = element.getAttribute( 'data-offset-xl' ),
elOffsetLG = element.getAttribute( 'data-offset-lg' ),
elOffsetMD = element.getAttribute( 'data-offset-md' ),
elOffsetSM = element.getAttribute( 'data-offset-sm' ),
elOffsetXS = element.getAttribute( 'data-offset-xs' );
if( !elOffsetXS ) {
elOffsetXS = Number(elementSettings.offset);
}
if( !elOffsetSM ) {
elOffsetSM = Number(elOffsetXS);
}
if( !elOffsetMD ) {
elOffsetMD = Number(elOffsetSM);
}
if( !elOffsetLG ) {
elOffsetLG = Number(elOffsetMD);
}
if( !elOffsetXL ) {
elOffsetXL = Number(elOffsetLG);
}
if( !elOffsetXXL ) {
elOffsetXXL = Number(elOffsetXL);
}
if( body.contains('device-xs') ) {
elementSettings.offset = elOffsetXS;
} else if( body.contains('device-sm') ) {
elementSettings.offset = elOffsetSM;
} else if( body.contains('device-md') ) {
elementSettings.offset = elOffsetMD;
} else if( body.contains('device-lg') ) {
elementSettings.offset = elOffsetLG;
} else if( body.contains('device-xl') ) {
elementSettings.offset = elOffsetXL;
} else if( body.contains('device-xxl') ) {
elementSettings.offset = elOffsetXXL;
}
settings.offset = Number(elementSettings.offset);
settings.speed = Number(elementSettings.speed);
settings.easing = elementSettings.easing;
return settings;
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-onepage', event: 'pluginOnePageReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var scrollToLinks = __core.filtered( selector, '[data-scrollto]' ),
onePageLinks = __core.filtered( selector, '.one-page-menu' );
if( scrollToLinks.length > 0 ) {
__core.getVars.elLinkScrolls = scrollToLinks;
}
if( onePageLinks.length > 0 ) {
__core.getVars.elOnePageMenus = onePageLinks;
}
_init(selector);
_position();
window.addEventListener('scroll', function(){
_position();
}, {passive:true});
__core.getVars.resizers.onepage = function() {
_init(selector);
_position();
};
}
};
}();

View File

@@ -0,0 +1,92 @@
CNVS.PageMenu = function() {
var __core = SEMICOLON.Core;
var _sticky = function(stickyOffset) {
var pageMenu = __core.getVars.elPageMenu;
if( window.scrollY > stickyOffset ) {
if( __core.getVars.elBody.classList.contains('device-up-lg') ) {
pageMenu.classList.add('sticky-page-menu');
} else {
if( pageMenu.getAttribute('data-mobile-sticky') == 'true' ) {
pageMenu.classList.add('sticky-page-menu');
}
}
} else {
pageMenu.classList.remove('sticky-page-menu');
}
};
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var pageMenu = __core.getVars.elPageMenu,
pageMenuWrap = pageMenu.querySelector('#page-menu-wrap'),
pageMenuClone = pageMenu.querySelector('.page-menu-wrap-clone');
if( !pageMenuClone ) {
pageMenuClone = document.createElement('div');
pageMenuClone.classList = 'page-menu-wrap-clone';
pageMenuWrap.parentNode.insertBefore( pageMenuClone, pageMenuWrap.nextSibling);
pageMenuClone = pageMenu.querySelector('.page-menu-wrap-clone');
}
pageMenuClone.style.height = pageMenu.querySelector('#page-menu-wrap').offsetHeight + 'px';
pageMenu.querySelector('#page-menu-trigger').onclick = function(e) {
e.preventDefault();
__core.getVars.elBody.classList.remove('top-search-open');
pageMenu.classList.toggle('page-menu-open');
};
pageMenu.querySelector('nav').onclick = function(e) {
__core.getVars.elBody.classList.remove('top-search-open');
document.getElementById('top-cart').classList.remove('top-cart-open');
};
document.addEventListener('click', function(e) {
if( !e.target.closest('#page-menu') ) {
pageMenu.classList.remove('page-menu-open');
}
}, false);
if( pageMenu.classList.contains('no-sticky') || pageMenu.classList.contains('dots-menu') ) {
return true;
}
var headerHeight;
if( __core.getVars.elHeader.classList.contains('no-sticky') ) {
headerHeight = 0;
} else if( __core.getVars.elHeader.getAttribute('data-sticky-shrink') == 'false' ) {
headerHeight = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-header-height').split('px')[0];
} else {
headerHeight = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-header-height-shrink').split('px')[0];
}
pageMenu.style.setProperty("--cnvs-page-submenu-sticky-offset", headerHeight+'px');
setTimeout(function() {
__core.getVars.pageMenuOffset = __core.offset(pageMenu).top - headerHeight;
_sticky( __core.getVars.pageMenuOffset );
}, 500);
window.addEventListener('scroll', function(){
_sticky( __core.getVars.pageMenuOffset );
}, {passive:true});
__core.getVars.resizers.pagemenu = function() {
setTimeout( function() {
__core.getVars.pageMenuOffset = __core.offset(pageMenu).top - headerHeight;
_sticky( __core.getVars.pageMenuOffset );
}, 250);
};
}
};
}();

View File

@@ -0,0 +1,164 @@
CNVS.PageTransition = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
var body = __core.getVars.elBody;
__core.initFunction({ class: 'has-plugin-pagetransition', event: 'pluginPageTransitionReady' });
if( body.classList.contains('no-transition') ) {
return true;
}
if( !body.classList.contains('page-transition') ) {
body.classList.add('page-transition');
}
window.onpageshow = function(event) {
if(event.persisted) {
window.location.reload();
}
};
var pageTransition = document.querySelector('.page-transition-wrap');
var elAnimIn = body.getAttribute('data-animation-in') || 'fadeIn',
elSpeedIn = body.getAttribute('data-speed-in') || 1000,
elTimeoutActive = false,
elTimeout = body.getAttribute('data-loader-timeout'),
elLoader = body.getAttribute('data-loader'),
elLoaderColor = body.getAttribute('data-loader-color'),
elLoaderHtml = body.getAttribute('data-loader-html'),
elLoaderAppend = '',
elLoaderCSSVar = '';
if( !elTimeout ) {
elTimeoutActive = false;
elTimeout = false;
} else {
elTimeoutActive = true;
elTimeout = Number(elTimeout);
}
if( elLoaderColor ) {
if( elLoaderColor == 'theme' ) {
elLoaderCSSVar = ' style="--cnvs-loader-color:var(--cnvs-themecolor);"';
} else {
elLoaderCSSVar = ' style="--cnvs-loader-color:'+elLoaderColor+';"';
}
}
var elLoaderBefore = '<div class="css3-spinner"'+elLoaderCSSVar+'>',
elLoaderAfter = '</div>';
if( elLoader == '2' ) {
elLoaderAppend = '<div class="css3-spinner-flipper"></div>';
} else if( elLoader == '3' ) {
elLoaderAppend = '<div class="css3-spinner-double-bounce1"></div><div class="css3-spinner-double-bounce2"></div>';
} else if( elLoader == '4' ) {
elLoaderAppend = '<div class="css3-spinner-rect1"></div><div class="css3-spinner-rect2"></div><div class="css3-spinner-rect3"></div><div class="css3-spinner-rect4"></div><div class="css3-spinner-rect5"></div>';
} else if( elLoader == '5' ) {
elLoaderAppend = '<div class="css3-spinner-cube1"></div><div class="css3-spinner-cube2"></div>';
} else if( elLoader == '6' ) {
elLoaderAppend = '<div class="css3-spinner-scaler"></div>';
} else if( elLoader == '7' ) {
elLoaderAppend = '<div class="css3-spinner-grid-pulse"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>';
} else if( elLoader == '8' ) {
elLoaderAppend = '<div class="css3-spinner-clip-rotate"><div></div></div>';
} else if( elLoader == '9' ) {
elLoaderAppend = '<div class="css3-spinner-ball-rotate"><div></div><div></div><div></div></div>';
} else if( elLoader == '10' ) {
elLoaderAppend = '<div class="css3-spinner-zig-zag"><div></div><div></div></div>';
} else if( elLoader == '11' ) {
elLoaderAppend = '<div class="css3-spinner-triangle-path"><div></div><div></div><div></div></div>';
} else if( elLoader == '12' ) {
elLoaderAppend = '<div class="css3-spinner-ball-scale-multiple"><div></div><div></div><div></div></div>';
} else if( elLoader == '13' ) {
elLoaderAppend = '<div class="css3-spinner-ball-pulse-sync"><div></div><div></div><div></div></div>';
} else if( elLoader == '14' ) {
elLoaderAppend = '<div class="css3-spinner-scale-ripple"><div></div><div></div><div></div></div>';
} else {
elLoaderAppend = '<div class="css3-spinner-bounce1"></div><div class="css3-spinner-bounce2"></div><div class="css3-spinner-bounce3"></div>';
}
if( !elLoaderHtml ) {
elLoaderHtml = elLoaderAppend;
}
elLoaderHtml = elLoaderBefore + elLoaderHtml + elLoaderAfter;
if( elAnimIn == 'fadeIn' ) {
__core.getVars.elWrapper.classList.add('op-1');
} else {
__core.getVars.elWrapper.classList.add('not-animated');
}
if( !pageTransition ) {
var divPT = document.createElement('div');
divPT.classList.add('page-transition-wrap');
divPT.innerHTML = elLoaderHtml;
body.prepend( divPT );
pageTransition = document.querySelector('.page-transition-wrap');
}
if( elSpeedIn ) {
__core.getVars.elWrapper.style.setProperty('--cnvs-animate-duration', Number(elSpeedIn)+'ms');
if( elAnimIn == 'fadeIn' ) {
pageTransition.style.setProperty('--cnvs-animate-duration', Number(elSpeedIn)+'ms');
}
}
var endPageTransition = function() {
elAnimIn.split(" ").forEach( function(_class) {
pageTransition.classList.remove(_class);
});
pageTransition.classList.add('fadeOut', 'animated');
var removePageTransition = function() {
pageTransition.remove();
if( elAnimIn != 'fadeIn' ) {
__core.getVars.elWrapper.classList.remove('not-animated');
(elAnimIn + ' animated').split(" ").forEach(function(_class) {
__core.getVars.elWrapper.classList.add(_class);
});
}
};
var displayContent = function() {
body.classList.remove('page-transition');
setTimeout(function() {
(elAnimIn + ' animated').split(" ").forEach( function(_class) {
__core.getVars.elWrapper.classList.remove(_class);
});
}, 333);
setTimeout(function() {
__core.getVars.elWrapper.style.removeProperty('--cnvs-animate-duration');
}, 666);
};
pageTransition.addEventListener('transitionend', removePageTransition);
pageTransition.addEventListener('animationend', removePageTransition);
__core.getVars.elWrapper.addEventListener('transitionend', displayContent);
__core.getVars.elWrapper.addEventListener('animationend', displayContent);
return true;
};
if( document.readyState === 'complete' ) {
endPageTransition();
}
if( elTimeoutActive ) {
setTimeout( endPageTransition, elTimeout );
}
window.addEventListener('load', function(){
endPageTransition();
});
}
};
}();

View File

@@ -0,0 +1,198 @@
CNVS.PortfolioAjax = function() {
var __core = SEMICOLON.Core;
var _newNextPrev = function(portPostId) {
var portNext = _getNext(portPostId);
var portPrev = _getPrev(portPostId);
var portNav = document.getElementById('portfolio-navigation');
if( !document.getElementById('prev-portfolio') && portPrev ) {
var prevPortItem = document.createElement('a');
prevPortItem.setAttribute('href', '#');
prevPortItem.setAttribute('id', 'prev-portfolio');
prevPortItem.setAttribute('data-id', portPrev);
prevPortItem.innerHTML = '<i class="bi-arrow-left"></i>';
prevPortItem && portNav?.insertBefore(prevPortItem, document.getElementById('close-portfolio'));
}
if( !document.getElementById('next-portfolio') && portNext ) {
var nextPortItem = document.createElement('a');
nextPortItem.setAttribute('href', '#');
nextPortItem.setAttribute('id', 'next-portfolio');
nextPortItem.setAttribute('data-id', portNext);
nextPortItem.innerHTML = '<i class="bi-arrow-right"></i>';
nextPortItem && portNav?.insertBefore(nextPortItem, document.getElementById('close-portfolio'));
}
};
var _load = function(portPostId, prevPostPortId, getIt) {
if( !getIt ) {
getIt = false;
}
var portNext = _getNext(portPostId);
var portPrev = _getPrev(portPostId);
if( getIt == false ) {
_close();
__core.getVars.elBody.classList.add('portfolio-ajax-loading');
// __core.getVars.portfolioAjax.loader.classList.add('loader-overlay-display');
var portfolioDataLoader = document.getElementById(portPostId).getAttribute('data-loader');
fetch(portfolioDataLoader).then( function(response) {
return response.text();
}).then( function(html) {
__core.getVars.portfolioAjax.container.innerHTML = html;
var nextPortfolio = document.getElementById('next-portfolio'),
prevPortfolio = document.getElementById('prev-portfolio');
nextPortfolio?.classList.add('d-none');
prevPortfolio?.classList.add('d-none');
if( portNext ) {
nextPortfolio?.setAttribute('data-id', portNext);
nextPortfolio?.classList.remove('d-none');
}
if( portPrev ) {
prevPortfolio?.setAttribute('data-id', portPrev);
prevPortfolio?.classList.remove('d-none');
}
_initAjax(portPostId);
_open();
__core.getVars.portfolioAjax.items.forEach( function(item) {
item.classList.remove('portfolio-active');
});
document.getElementById(portPostId).classList.add('portfolio-active');
}).catch( function(error) {
console.warn('Something went wrong.', error);
});
}
};
var _close = function() {
if( __core.getVars.portfolioAjax.wrapper && __core.getVars.portfolioAjax.wrapper.offsetHeight > 32 ) {
__core.getVars.elBody.classList.remove('portfolio-ajax-loading');
// __core.getVars.portfolioAjax.loader.classList.add('loader-overlay-display');
__core.getVars.portfolioAjax.wrapper.classList.remove('portfolio-ajax-opened');
__core.getVars.portfolioAjax.wrapper.querySelector('#portfolio-ajax-single').addEventListener('transitionend', function() {
__core.getVars.portfolioAjax.wrapper.querySelector('#portfolio-ajax-single').remove();
});
__core.getVars.portfolioAjax.items.forEach( function(item) {
item.classList.remove('portfolio-active');
});
}
};
var _open = function() {
var countImages = __core.getVars.portfolioAjax.container.querySelectorAll('img').length;
if( countImages < 1 ) {
_display();
} else {
__core.imagesLoaded(__core.getVars.portfolioAjax.container);
__core.getVars.portfolioAjax.container.addEventListener( 'CanvasImagesLoaded', function() {
_display();
});
}
};
var _display = function() {
__core.getVars.portfolioAjax.container.style.display = 'block';
__core.getVars.portfolioAjax.wrapper.classList.add('portfolio-ajax-opened');
__core.getVars.elBody.classList.remove('portfolio-ajax-loading');
// __core.getVars.portfolioAjax.loader.classList.remove('loader-overlay-display');
setTimeout( function() {
__core.runContainerModules( __core.getVars.portfolioAjax.wrapper );
__core.scrollTo((__core.getVars.portfolioAjax.wrapperOffset - __core.getVars.topScrollOffset - 60), false, false);
}, 500);
}
var _getNext = function(portPostId) {
var portNext = false;
var hasNext = document.getElementById(portPostId).nextElementSibling;
if( hasNext ) {
portNext = hasNext.getAttribute('id');
}
return portNext;
};
var _getPrev = function(portPostId) {
var portPrev = false;
var hasPrev = document.getElementById(portPostId).previousElementSibling;
if( hasPrev ) {
portPrev = hasPrev.getAttribute('id');
}
return portPrev;
};
var _initAjax = function(portPostId) {
__core.getVars.portfolioAjax.prevItem = document.getElementById(portPostId);
_newNextPrev(portPostId);
document.querySelectorAll('#next-portfolio, #prev-portfolio').forEach( function(el) {
el.onclick = function(e) {
e.preventDefault();
_close();
var portPostId = el.getAttribute('data-id');
document.getElementById(portPostId).classList.add('portfolio-active');
_load(portPostId, __core.getVars.portfolioAjax.prevItem);
};
})
document.getElementById('close-portfolio').onclick = function(e) {
e.preventDefault();
_close();
};
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-ajaxportfolio', event: 'pluginAjaxPortfolioReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
__core.getVars.portfolioAjax.items = selector[0].querySelectorAll('.portfolio-item');
__core.getVars.portfolioAjax.wrapper = document.getElementById('portfolio-ajax-wrap');
__core.getVars.portfolioAjax.wrapperOffset = __core.offset(__core.getVars.portfolioAjax.wrapper).top;
__core.getVars.portfolioAjax.container = document.getElementById('portfolio-ajax-container');
__core.getVars.portfolioAjax.loader = document.getElementById('portfolio-ajax-loader');
__core.getVars.portfolioAjax.prevItem = '';
selector[0].querySelectorAll('.portfolio-ajax-trigger').forEach( function(el) {
if( !el.querySelector('i:nth-child(2)') ) {
el.innerHTML += '<i class="bi-arrow-repeat icon-spin"></i>';
}
el.onclick = function(e) {
e.preventDefault();
var portPostId = e.target.closest('.portfolio-item').getAttribute('id');
if( !e.target.closest('.portfolio-item').classList.contains('portfolio-active') ) {
_load(portPostId, __core.getVars.portfolioAjax.prevItem);
}
};
});
}
};
}();

View File

@@ -0,0 +1,81 @@
CNVS.PricingSwitcher = function() {
var __core = SEMICOLON.Core;
var _staticValue;
var _switcher = function(check, switcher, pricing, defClass, actClass) {
var value;
if( check.type == 'checkbox' ) {
_staticValue = check.checked;
} else if( check.type == 'radio' ) {
if( check.checked ) {
_staticValue = check.value;
}
} else {
_staticValue = check.value;
}
value = _staticValue;
switcher.querySelectorAll('.pts-switch')?.forEach( function(elem) {
actClass.split(" ").forEach( function(_class) {
elem.classList.remove(_class);
});
defClass.split(" ").forEach( function(_class) {
elem.classList.add(_class);
});
});
pricing.querySelectorAll('.pts-content')?.forEach( function(elem) {
elem.classList.add('d-none');
});
if( check.type == 'checkbox' ) {
value = value ? 'true' : 'false';
}
defClass.split(" ").forEach( function(_class) {
switcher.querySelector('.pts-' + value)?.classList.remove(_class);
});
actClass.split(" ").forEach( function(_class) {
switcher.querySelector('.pts-' + value)?.classList.add(_class);
});
pricing.querySelectorAll('.pts-content-' + value).forEach( function(el) {
el.classList.remove('d-none');
});
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-pricing-switcher', event: 'pluginPricingSwitcherReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elCheck = element.querySelectorAll('[type="checkbox"], [type="radio"], select'),
elDefClass = element.getAttribute('data-default-class') || 'text-muted op-05',
elActClass = element.getAttribute('data-active-class') || 'fw-bold',
elPricing = document.querySelector( element.getAttribute('data-container') );
elCheck.forEach( function(el) {
_switcher(el, element, elPricing, elDefClass, elActClass);
el.addEventListener( 'change', function() {
_switcher(el, element, elPricing, elDefClass, elActClass);
});
});
});
}
};
}();

View File

@@ -0,0 +1,56 @@
CNVS.Progress = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().countTo;
}).then( function(cond) {
__core.initFunction({ class: 'has-plugin-progress', event: 'pluginProgressReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elValue = element.getAttribute('data-percent') || 90,
elSpeed = element.getAttribute('data-speed') || 1200,
elBar = element.querySelector('.skill-progress-percent');
elSpeed = Number(elSpeed) + 'ms';
elBar.style.setProperty( '--cnvs-progress-speed', elSpeed );
var observer = new IntersectionObserver( function(entries, observer){
entries.forEach( function(entry) {
if (entry.isIntersecting) {
if (!elBar.classList.contains('skill-animated')) {
__modules.counter(element.querySelector('.counter'));
if ( element.classList.contains('skill-progress-vertical') ) {
elBar.style.height = elValue + "%";
elBar.classList.add('skill-animated');
} else {
elBar.style.width = elValue + "%";
elBar.classList.add('skill-animated');
}
}
observer.unobserve( entry.target );
}
});
}, {rootMargin: '0px 0px 50px'});
observer.observe( elBar );
});
});
}
};
}();

View File

@@ -0,0 +1,72 @@
CNVS.Quantity = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-quantity', event: 'pluginQuantityReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var plus = element.querySelector('.plus'),
minus = element.querySelector('.minus'),
input = element.querySelector('.qty');
var eventChange = new Event("change");
plus.onclick = function(e) {
e.preventDefault();
var value = input.value,
step = input.getAttribute('step') || 1,
max = input.getAttribute('max'),
intRegex = /^\d+$/;
if( max && ( Number(elValue) >= Number( max ) ) ) {
return false;
}
if( intRegex.test( value ) ) {
var valuePlus = Number(value) + Number(step);
input.value = valuePlus;
} else {
input.value = Number(step);
}
input.dispatchEvent(eventChange);
};
minus.onclick = function(e) {
e.preventDefault();
var value = input.value,
step = input.getAttribute('step') || 1,
min = input.getAttribute('min'),
intRegex = /^\d+$/;
if( !min || min < 0 ) {
min = 1;
}
if( intRegex.test( value ) ) {
if( Number(value) > Number(min) ) {
var valueMinus = Number(value) - Number(step);
input.value = valueMinus;
}
} else {
input.value = Number(step);
}
input.dispatchEvent(eventChange);
};
});
}
};
}();

View File

@@ -0,0 +1,121 @@
CNVS.ReadMore = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
var _HEXtoRGBA = function(hex, op) {
var c;
if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){
c= hex.substring(1).split('');
if(c.length==3){
c= [c[0], c[0], c[1], c[1], c[2], c[2]];
}
c= '0x'+c.join('');
return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+','+op+')';
}
console.log('Bad Hex');
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-readmore', event: 'pluginReadMoreReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var element = el,
elSize = element.getAttribute('data-readmore-size') || '10rem',
elSpeed = element.getAttribute('data-readmore-speed') || 500,
elScrollUp = element.getAttribute('data-readmore-scrollup') || 'false',
elTrigger = element.getAttribute('data-readmore-trigger') || '.read-more-trigger',
elTriggerO = element.getAttribute('data-readmore-trigger-open') || 'Read More',
elTriggerC = element.getAttribute('data-readmore-trigger-close') || 'Read Less',
elMask;
element.style.height = '';
element.classList.remove('read-more-wrap-open');
var elHeight = element.offsetHeight;
var elTriggerElement = element.querySelector( elTrigger );
elTriggerElement.classList.remove('d-none');
var elHeightN = elHeight + elTriggerElement.offsetHeight;
elTriggerElement.innerHTML = elTriggerO;
elSpeed = Number( elSpeed );
element.classList.add('read-more-wrap');
element.style.height = elSize;
element.style.transitionDuration = elSpeed + 'ms';
if( !element.querySelector('.read-more-mask') ) {
element.innerHTML += '<div class="read-more-mask"></div>';
}
elMask = element.querySelector('.read-more-mask');
var elMaskD = element.getAttribute('data-readmore-mask') || 'true',
elMaskColor = element.getAttribute('data-readmore-maskcolor') || '#FFF',
elMaskSize = element.getAttribute('data-readmore-masksize') || '100%';
if( elMaskD == 'true' ) {
elMask.style.height = elMaskSize;
elMask.style.backgroundImage = 'linear-gradient( '+ _HEXtoRGBA( elMaskColor, 0 ) +', '+ _HEXtoRGBA( elMaskColor, 1 ) +' )';
elMask.classList.add('op-ts', 'op-1');
} else {
elMask.classList.add('d-none');
}
var elTriggerEl = element.querySelector(elTrigger);
// console.log( (element.getBoundingClientRect().top + document.body.scrollTop - __core.getVars.topScrollOffset) );
elTriggerEl.onclick = function(e) {
e.preventDefault();
if( element.classList.contains('read-more-wrap-open') ) {
element.style.height = elSize;
element.classList.remove('read-more-wrap-open');
elTriggerEl.innerHTML = elTriggerO;
setTimeout( function() {
if( elScrollUp == 'true' ) {
__core.scrollTo((element.offsetTop - __core.getVars.topScrollOffset), false, false);
}
}, elSpeed );
if( elMaskD == 'true' ) {
elMask.classList.add('op-ts', 'op-1');
}
} else {
if( elTriggerC == 'false' ) {
elTriggerEl.classList.add('d-none');
}
element.style.height = elHeightN + 'px';
element.style.overflow = '';
element.classList.add('read-more-wrap-open');
if( elTriggerEl ) {
elTriggerEl.innerHTML = elTriggerC;
}
if( elMaskD == 'true' ) {
elMask.classList.remove('op-1');
elMask.classList.add('op-0');
}
}
elTriggerEl = element.querySelector(elTrigger);
};
});
__core.getVars.resizers.readmore = function() {
__modules.readmore();
};
}
};
}();

View File

@@ -0,0 +1,33 @@
CNVS.ResizeVideos = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.fitvids.js', id: 'canvas-fitvids-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().fitVids;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-fitvids', event: 'pluginFitVidsReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.parent().fitVids({
customSelector: 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]',
ignore: '.no-fv'
});
});
}
};
}();

View File

@@ -0,0 +1,81 @@
CNVS.RoundedSkills = function() {
var __core = SEMICOLON.Core;
var _run = function(element, properties) {
element.easyPieChart({
size: properties.size,
animate: properties.speed,
scaleColor: false,
trackColor: properties.trackcolor,
lineWidth: properties.width,
lineCap: 'square',
barColor: properties.color
});
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.piechart.js', id: 'canvas-piechart-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().easyPieChart;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-piechart', event: 'pluginRoundedSkillReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each(function(){
var element = jQuery(this),
elSize = element.attr('data-size') || 140,
elSpeed = element.attr('data-speed') || 2000,
elWidth = element.attr('data-width') || 4,
elColor = element.attr('data-color') || '#0093BF',
elTrackColor = element.attr('data-trackcolor') || 'rgba(0,0,0,0.04)';
var properties = {
size: Number( elSize ),
speed: Number( elSpeed ),
width: Number( elWidth ),
color: elColor,
trackcolor: elTrackColor
};
element.css({ 'width': elSize+'px', 'height': elSize+'px', 'line-height': elSize+'px' });
if( jQuery('body').hasClass('device-up-lg') ){
element.animate({opacity:0}, 10);
var observer = new IntersectionObserver( function(entries, observer){
entries.forEach( function(entry){
if (entry.isIntersecting) {
if (!element.hasClass('skills-animated')) {
setTimeout( function(){
element.css({opacity: 1});
}, 100);
_run(element, properties);
element.addClass('skills-animated');
}
observer.unobserve( entry.target );
}
});
}, {rootMargin: '0px 0px 50px'});
observer.observe( element[0] );
} else {
_run(element, properties);
}
});
});
}
};
}();

View File

@@ -0,0 +1,100 @@
CNVS.SchemeToggle = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
var __modules = SEMICOLON.Modules;
var _toggle = function(element, sibling=false, action=false) {
var bodyClassToggle = element.getAttribute('data-bodyclass-toggle') || 'dark';
var classAdd = element.getAttribute('data-add-class') || 'scheme-toggler-active';
var classRemove = element.getAttribute('data-remove-class') || 'scheme-toggler-active';
var htmlAdd = element.getAttribute('data-add-html');
var htmlRemove = element.getAttribute('data-remove-html');
var toggleType = element.getAttribute('data-type') || 'trigger';
var remember = element.getAttribute('data-remember') || 'false';
if( __core.contains( bodyClassToggle, __core.getVars.elBody ) ) {
__core.classesFn('add', classAdd, element);
__core.classesFn('remove', classRemove, element);
element.classList.add('body-state-toggled');
// Set Storage
if( remember == "true" && action ) {
__core.cookie.set('__cnvs_body_color_scheme', 'dark', 7);
}
if( 'checkbox' == toggleType && sibling ) {
element.querySelector('input[type=checkbox]').checked = true;
} else {
if( htmlAdd ) {
element.innerHTML = htmlAdd;
}
}
} else {
__core.classesFn('add', classRemove, element);
__core.classesFn('remove', classAdd, element);
element.classList.remove('body-state-toggled');
// Remove Storage
if( remember == "true" && action ) {
__core.cookie.remove('__cnvs_body_color_scheme');
}
if( 'checkbox' == toggleType && sibling ) {
element.querySelector('input[type=checkbox]').checked = false;
} else {
if( htmlRemove ) {
element.innerHTML = htmlRemove;
}
}
}
__base.setBSTheme();
__modules.dataClasses();
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-schemetoggler', event: 'pluginSchemeTogglerReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ) {
return false;
}
selector.forEach( function(element) {
var bodyClassToggle = element.getAttribute('data-bodyclass-toggle') || 'dark';
var toggleType = element.getAttribute('data-type') || 'trigger';
_toggle(element);
if( 'checkbox' == toggleType ) {
var elementCheck = element.querySelector('input[type=checkbox]');
elementCheck.addEventListener( 'change', function() {
__core.classesFn('toggle', bodyClassToggle, __core.getVars.elBody);
_toggle(element, false, true);
__core.siblings(element, selector).forEach( function(el) {
_toggle(el, true);
});
});
} else {
element.onclick = function(e) {
e.preventDefault();
__core.classesFn('toggle', bodyClassToggle, __core.getVars.elBody);
_toggle(element, false, true);
__core.siblings(element, selector).forEach( function(el) {
_toggle(el, true);
});
};
}
});
}
};
}();

View File

@@ -0,0 +1,193 @@
CNVS.ScrollDetect = function() {
var __core = SEMICOLON.Core;
var _detects = [];
var _percent = function(params) {
var percent = 0,
ratio = 0,
start = 0,
end = 0;
var onScroll = function(params) {
fastdom.measure( function(){
var position = window.scrollY;
if( position >= params.start && position <= params.end ) {
var startViewScroll = position - params.start;
var offsetScroll = position - params.offset;
percent = (startViewScroll / params.range.full) * 100;
start = (startViewScroll / params.range.start);
if( position > (params.start + params.height) && position < (params.offset) ) {
start = 1;
end = 0;
} else if( position >= (params.offset) ) {
start = 1;
end = (offsetScroll / params.range.end);
} else {
end = 0;
}
ratio = start - end;
} else if( position > params.end ) {
percent = 100;
ratio = 0;
start = end = 1;
} else {
percent = ratio = start = end = 0;
}
if( ratio > 0 ) {
params.elem.classList.add('scroll-detect-inview');
} else {
params.elem.classList.remove('scroll-detect-inview');
}
if( start > 0 && start < 1 ) {
params.elem.classList.add('scroll-detect-inview-start');
} else {
params.elem.classList.remove('scroll-detect-inview-start');
}
if( end > 0 && end < 1 ) {
params.elem.classList.add('scroll-detect-inview-end');
} else {
params.elem.classList.remove('scroll-detect-inview-end');
}
params.elem.style.setProperty('--cnvs-scroll-percent', percent);
params.elem.style.setProperty('--cnvs-scroll-ratio', ratio);
params.elem.style.setProperty('--cnvs-scroll-start', start);
params.elem.style.setProperty('--cnvs-scroll-end', end);
});
};
onScroll(params);
};
var _handle = function() {
_detects.forEach( function(settings) {
_percent(settings);
});
}
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.fastdom.js', id: 'canvas-fastdom-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof fastdom !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-scrolldetect', event: 'pluginScrollDetectReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var resizeObserver = new ResizeObserver( function(entries) {
entries.forEach( function(entry) {
if( !doing ) {
var doing = setTimeout( function() {
initParams(selector);
doing = false;
}, 333);
}
});
});
var initParams = function(selector) {
_detects = [];
selector.forEach( function(elem) {
var elemWidth = elem.offsetWidth,
elemHeight = elem.offsetHeight,
elemOffset = __core.offset(elem).top,
viewportHeight = __core.getVars.viewport.height,
includeWidth = elem.getAttribute('data-include-width'),
includeHeight = elem.getAttribute('data-include-height'),
includeOffset = elem.getAttribute('data-include-offset'),
scrollOffset = elem.getAttribute('data-scroll-offset'),
parallaxRatio = elem.getAttribute('data-parallax-ratio'),
params = {};
if( scrollOffset ) {
scrollOffset = scrollOffset.split('%');
if( scrollOffset.length > 1 ) {
elemOffset = elemOffset + (viewportHeight * Number(scrollOffset[0]) * 0.01);
} else if( scrollOffset.length == 1 && scrollOffset[0] ) {
elemOffset = elemOffset + Number(scrollOffset[0]);
}
}
var scrollStart = elemOffset - viewportHeight,
scrollEnd = elemOffset + elemHeight,
scrollRange = scrollEnd - scrollStart;
params.elem = elem;
params.start = scrollStart;
params.end = scrollEnd;
params.range = {
start: elemHeight,
end: elemHeight,
full: scrollRange,
};
params.width = elemWidth;
params.height = elemHeight;
params.offset = elemOffset;
if( includeWidth == 'true' || (elem.classList.contains('parallax') && elem.getAttribute('data-parallax-direction') == 'horizontal') ) {
elem.style.setProperty('--cnvs-scroll-width', params.width);
}
if( includeHeight == 'true' || (elem.classList.contains('parallax') && elem.getAttribute('data-parallax-direction') != 'horizontal') ) {
elem.style.setProperty('--cnvs-scroll-height', params.height);
}
if( includeOffset == 'true' ) {
elem.style.setProperty('--cnvs-scroll-offset', params.offset);
}
if( !isNaN(parallaxRatio) ) {
elem.style.setProperty('--cnvs-parallax-ratio', parallaxRatio);
}
_percent(params);
_detects.push(params);
resizeObserver.observe(elem);
});
};
initParams(selector);
_handle();
// var ticking = false;
window.addEventListener("scroll", function(){
fastdom.mutate( function(){
_handle();
});
// if (!ticking) {
// window.requestAnimationFrame( function(){
// _handle();
// ticking = false;
// });
// ticking = true;
// }
}, {passive: true});
resizeObserver.observe(document.documentElement);
});
}
};
}();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,31 @@
CNVS.SidePanel = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var body = __core.getVars.elBody.classList;
document.addEventListener('click', function(e) {
if( !e.target.closest('#side-panel') && !e.target.closest('.side-panel-trigger') ) {
body.remove('side-panel-open');
}
}, false);
document.querySelectorAll('.side-panel-trigger').forEach( function(el) {
el.onclick = function(e) {
e.preventDefault();
body.toggle('side-panel-open');
if( body.contains('device-touch') && body.contains('side-push-panel') ) {
body.toggle('ohidden');
}
};
});
}
};
}();

View File

@@ -0,0 +1,76 @@
CNVS.SliderDimensions = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var slider = document.querySelector('.slider-element'),
sliderParallaxEl = document.querySelector('.slider-parallax'),
body = __core.getVars.elBody,
parallaxElHeight = sliderParallaxEl?.offsetHeight,
parallaxElWidth = sliderParallaxEl?.offsetWidth,
slInner = sliderParallaxEl?.querySelector('.slider-inner'),
slSwiperW = slider.querySelector('.swiper-wrapper'),
slSwiperS = slider.querySelector('.swiper-slide'),
slFlexHeight = slider.classList.contains('h-auto') || slider.classList.contains('min-vh-0');
if( body.classList.contains('device-up-lg') ) {
setTimeout(function() {
if( slInner ) {
slInner.style.height = parallaxElHeight + 'px';
}
if( slFlexHeight ) {
parallaxElHeight = slider.querySelector('.slider-inner')?.querySelector('*').offsetHeight;
slider.style.height = parallaxElHeight + 'px';
if( slInner ) {
slInner.style.height = parallaxElHeight + 'px';
}
}
}, 500);
if( slFlexHeight && slSwiperS ) {
var slSwiperFC = slSwiperS.querySelector('*');
if( slSwiperFC.classList.contains('container') || slSwiperFC.classList.contains('container-fluid') ) {
slSwiperFC = slSwiperFC.querySelector('*');
}
if( slSwiperFC.offsetHeight > slSwiperW.offsetHeight ) {
slSwiperW.style.height = 'auto';
}
}
if( body.classList.contains('side-header') && slInner ) {
slInner.style.width = parallaxElWidth + 'px';
}
if( !body.classList.contains('stretched') ) {
parallaxElWidth = __core.getVars.elWrapper.offsetWidth;
if( slInner ) {
slInner.style.width = parallaxElWidth + 'px';
}
}
} else {
if( slSwiperW ) {
slSwiperW.style.height = '';
}
if( sliderParallaxEl ) {
sliderParallaxEl.style.height = '';
}
if( slInner ) {
slInner.style.width = '';
slInner.style.height = '';
}
}
__core.getVars.resizers.sliderdimensions = function() {
__base.sliderDimensions();
};
}
};
}();

View File

@@ -0,0 +1,94 @@
CNVS.SliderMenuClass = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
var _swiper = function() {
if( !__core.getVars.elHeader.classList.contains('ignore-slider') && ( __core.getVars.elBody.classList.contains('is-expanded-menu') || ( __core.getVars.elHeader.classList.contains('transparent-header-responsive') && !__core.getVars.elBody.classList.contains('primary-menu-open') ) ) ) {
var activeSlide = __core.getVars.elSlider.querySelector('.swiper-slide-active');
_schemeChanger(activeSlide);
}
};
var _revolution = function() {
if( !__core.getVars.elHeader.classList.contains('ignore-slider') && ( __core.getVars.elBody.classList.contains('is-expanded-menu') || ( __core.getVars.elHeader.classList.contains('transparent-header-responsive') && !__core.getVars.elBody.classList.contains('primary-menu-open') ) ) ) {
var activeSlide = __core.getVars.elSlider.querySelector('.active-revslide');
_schemeChanger(activeSlide);
}
};
var _schemeChanger = function(activeSlide) {
if( !activeSlide ) {
return;
}
var darkExists = false,
oldClassesArray,
noOfOldClasses;
if( activeSlide.classList.contains('dark') ){
if( __core.getVars.headerClasses ) {
oldClassesArray = __core.getVars.headerClasses;
} else {
oldClassesArray = '';
}
noOfOldClasses = oldClassesArray.length;
if( noOfOldClasses > 0 ) {
for( var i=0; i<noOfOldClasses; i++ ) {
if( oldClassesArray[i] == 'dark' ) {
darkExists = true;
break;
}
}
}
var headerToChange = document.querySelector('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)');
if( headerToChange ) {
headerToChange.classList.add('dark');
}
if( !darkExists ) {
var headerToChange = document.querySelector('#header.transparent-header.sticky-header,#header.transparent-header.semi-transparent.sticky-header,#header.transparent-header.floating-header.sticky-header');
if( headerToChange ) {
headerToChange.classList.remove('dark');
}
}
__core.getVars.elHeaderWrap.classList.remove('not-dark');
} else {
if( __core.getVars.elBody.classList.contains('dark') ) {
activeSlide.classList.add('not-dark');
document.querySelector('#header.transparent-header:not(.semi-transparent,.floating-header)').classList.remove('dark');
document.querySelector('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)')?.querySelector('#header-wrap').classList.add('not-dark');
} else {
document.querySelector('#header.transparent-header:not(.semi-transparent,.floating-header)').classList.remove('dark');
__core.getVars.elHeaderWrap.classList.remove('not-dark');
}
}
if( __core.getVars.elHeader.classList.contains('sticky-header') ) {
__base.headers();
}
};
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) {
return true;
}
_swiper();
_revolution();
__base.setBSTheme();
__core.getVars.resizers.slidermenuclass = function() {
__base.sliderMenuClass();
};
}
};
}();

View File

@@ -0,0 +1,171 @@
CNVS.SliderParallax = function() {
var __core = SEMICOLON.Core;
var __mobile = SEMICOLON.Mobile;
var _settings;
var _transform;
var _transform2;
var _parallax = function(_settings) {
if( !_settings.sliderPx.el ) {
return true;
}
fastdom.measure( function(){
_settings.scrollPos.y = window.scrollY;
if( _settings.body.classList.contains('is-expanded-menu') && !_settings.isMobile ) {
if( ( _settings.height + _settings.sliderPx.offset + 50 ) > _settings.scrollPos.y ){
_settings.classes.add('slider-parallax-visible');
_settings.classes.remove('slider-parallax-invisible');
if ( _settings.scrollPos.y > _settings.sliderPx.offset ) {
if( typeof _settings.sliderPx.el.querySelector('.slider-inner') === 'object' ) {
_transform = ((_settings.scrollPos.y-_settings.sliderPx.offset) * -.4);
_transform2 = ((_settings.scrollPos.y-_settings.sliderPx.offset) * -.15);
_setParallax(0, _transform, _settings.sliderPx.inner);
_setParallax(0, _transform2, _settings.sliderPx.caption);
} else {
_transform = ((_settings.scrollPos.y-_settings.sliderPx.offset) / 1.5);
_transform2 = ((_settings.scrollPos.y-_settings.sliderPx.offset) / 7);
_setParallax(0, _transform, _settings.sliderPx.el);
_setParallax(0, _transform2, _settings.sliderPx.caption);
}
} else {
if( _settings.sliderPx.el.querySelector('.slider-inner') ) {
_setParallax(0, 0, _settings.sliderPx.inner);
_setParallax(0, 0, _settings.sliderPx.caption);
} else {
_setParallax(0, 0, _settings.sliderPx.el);
_setParallax(0, 0, _settings.sliderPx.caption);
}
}
} else {
_settings.classes.add('slider-parallax-invisible');
_settings.classes.remove('slider-parallax-visible');
}
} else {
if( _settings.sliderPx.el.querySelector('.slider-inner') ) {
_setParallax(0, 0, _settings.sliderPx.inner);
_setParallax(0, 0, _settings.sliderPx.caption);
} else {
_setParallax(0, 0, _settings.sliderPx.el);
_setParallax(0, 0, _settings.sliderPx.caption);
}
_settings.classes.add('slider-parallax-visible');
_settings.classes.remove('slider-parallax-invisible');
}
});
};
var _offset = function() {
var sliderPx = __core.getVars.sliderParallax;
var sliderParallaxOffsetTop = 0,
headerHeight = __core.getVars.elHeader?.offsetHeight || 0;
if( __core.getVars.elBody.classList.contains('side-header') || (__core.getVars.elHeader && __core.getNext(__core.getVars.elHeader, '.include-header').length > 0) ) {
headerHeight = 0;
}
// if( $pageTitle.length > 0 ) {
// sliderParallaxOffsetTop = $pageTitle.outerHeight() + headerHeight - 20;
// } else {
// sliderParallaxOffsetTop = headerHeight - 20;
// }
if( __core.getNext(__core.getVars.elSlider, '#header').length > 0 ) {
sliderParallaxOffsetTop = 0;
}
sliderPx.offset = sliderParallaxOffsetTop;
};
var _setParallax = function(xPos, yPos, el) {
if( el ) {
fastdom.mutate( function(){
el.style.transform = "translate3d(" + xPos + ", " + yPos + "px, 0)";
});
}
};
var _elementFade = function(_settings) {
if( _settings.sliderPx.el.length < 1 ) {
return true;
}
fastdom.mutate( function(){
if( _settings.body.classList.contains('is-expanded-menu') && !_settings.isMobile ) {
var tHeaderOffset;
if( (_settings.header && _settings.header.classList.contains('transparent-header')) || _settings.body.classList.contains('side-header') ) {
tHeaderOffset = 100;
} else {
tHeaderOffset = 0;
}
if( _settings.sliderPx.el.classList.contains('slider-parallax-visible') ) {
_settings.sliderPx.el.querySelectorAll('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').forEach( function(el) {
el.style.opacity = 1 - ( ( ( _settings.scrollPos.y - tHeaderOffset ) * 1.85 ) / _settings.height );
});
}
} else {
_settings.sliderPx.el.querySelectorAll('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').forEach( function(el) {
el.style.opacity = 1;
});
}
});
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.fastdom.js', id: 'canvas-fastdom-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof fastdom !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
_settings = {
sliderPx: __core.getVars.sliderParallax,
body: __core.getVars.elBody,
header: __core.getVars.elHeader,
scrollPos: __core.getVars.scrollPos,
isMobile: __mobile.any(),
get height() {
return this.sliderPx.el.offsetHeight;
},
get classes() {
return this.sliderPx.el.classList;
},
};
if( _settings.sliderPx.el.querySelector('.slider-inner') ) {
_setParallax(0, 0, _settings.sliderPx.inner);
_setParallax(0, 0, _settings.sliderPx.caption);
} else {
_setParallax(0, 0, _settings.sliderPx.el);
_setParallax(0, 0, _settings.sliderPx.caption);
}
window.addEventListener('scroll', function(){
_parallax(_settings);
_elementFade(_settings);
}, {passive:true});
__core.getVars.resizers.sliderparallax = function() {
_parallax(_settings);
_elementFade(_settings);
};
});
}
};
}();

View File

@@ -0,0 +1,34 @@
CNVS.StickFooterOnSmall = function() {
var __core = SEMICOLON.Core;
var __base = SEMICOLON.Base;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
__core.getVars.elFooter.style.marginTop = '';
var windowH = __core.viewport().height,
wrapperH = __core.getVars.elWrapper.offsetHeight;
if( !__core.getVars.elBody.classList.contains('sticky-footer') && __core.getVars.elFooter !== 'undefined' && __core.getVars.elWrapper.contains( __core.getVars.elFooter ) ) {
if( windowH > wrapperH ) {
__core.getVars.elFooter.style.marginTop = (windowH - wrapperH)+'px';
}
}
if( __core.getVars.elAppMenu ) {
if((__core.viewport().height - (__core.getVars.elAppMenu.getBoundingClientRect().top + __core.getVars.elAppMenu.getBoundingClientRect().height)) === 0) {
__core.getVars.elFooter.style.marginBottom = __core.getVars.elAppMenu.offsetHeight+'px';
}
}
__core.getVars.resizers.stickfooter = function() {
__base.stickFooterOnSmall();
};
}
};
}();

View File

@@ -0,0 +1,39 @@
CNVS.StickySidebar = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.stickysidebar.js', id: 'canvas-stickysidebar-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().scwStickySidebar;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-stickysidebar', event: 'pluginStickySidebarReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return false;
}
selector.each( function(){
var element = jQuery(this),
elTop = element.attr('data-offset-top') || 110,
elBottom = element.attr('data-offset-bottom') || 50;
element.scwStickySidebar({
additionalMarginTop: Number(elTop),
additionalMarginBottom: Number(elBottom)
});
});
});
}
};
}();

View File

@@ -0,0 +1,84 @@
CNVS.Subscribe = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.form.js', id: 'canvas-form-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().validate && jQuery().ajaxSubmit;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-form', event: 'pluginFormReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elAlert = element.attr('data-alert-type'),
elLoader = element.attr('data-loader'),
elResult = element.find('.widget-subscribe-form-result'),
elRedirect = element.attr('data-redirect'),
defButton, defButtonText, alertType;
element.find('form').validate({
submitHandler: function(form) {
elResult.hide();
if( elLoader == 'button' ) {
defButton = jQuery(form).find('button');
defButtonText = defButton.html();
defButton.html('<i class="bi-arrow-repeat icon-spin nomargin"></i>');
} else {
jQuery(form).find('.bi-envelope-plus').removeClass('bi-envelope-plus').addClass('bi-arrow-repeat icon-spin');
}
jQuery(form).ajaxSubmit({
target: elResult,
dataType: 'json',
resetForm: true,
success: function(data) {
if( elLoader == 'button' ) {
defButton.html( defButtonText );
} else {
jQuery(form).find('.bi-arrow-repeat').removeClass('bi-arrow-repeat icon-spin').addClass('bi-envelope-plus');
}
if( data.alert != 'error' && elRedirect ){
window.location.replace( elRedirect );
return true;
}
if( elAlert == 'inline' ) {
if( data.alert == 'error' ) {
alertType = 'alert-danger';
} else {
alertType = 'alert-success';
}
elResult.addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 );
} else {
elResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html('');
__modules.notifications(elResult);
}
}
});
}
});
});
});
}
};
}();

View File

@@ -0,0 +1,69 @@
CNVS.TextRotator = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.textrotator.js', id: 'canvas-textrotator-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().Morphext && typeof Typed !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-textrotator', event: 'pluginTextRotatorReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elTyped = element.attr('data-typed') || 'false',
elRotator = element.find('.t-rotate'),
elAnimation = element.attr('data-rotate') || 'fade',
elSpeed = element.attr('data-speed') || 1200,
elSep = element.attr('data-separator') || ',';
if( elTyped == 'true' ) {
var elTexts = elRotator.html().split( elSep ),
elLoop = element.attr('data-loop') || 'true',
elShuffle = element.attr('data-shuffle'),
elCur = element.attr('data-cursor') || 'true',
elSpeed = element.attr('data-speed') || 50,
elBackSpeed = element.attr('data-backspeed') || 30,
elBackDelay = element.attr('data-backdelay');
if( elLoop == 'true' ) { elLoop = true; } else { elLoop = false; }
if( elShuffle == 'true' ) { elShuffle = true; } else { elShuffle = false; }
if( elCur == 'true' ) { elCur = true; } else { elCur = false; }
elRotator.html( '' ).addClass('plugin-typed-init');
var typed = new Typed( elRotator[0], {
strings: elTexts,
typeSpeed: Number( elSpeed ),
loop: elLoop,
shuffle: elShuffle,
showCursor: elCur,
backSpeed: Number( elBackSpeed ),
backDelay: Number( elBackDelay )
});
} else {
var pluginData = elRotator.Morphext({
animation: elAnimation,
separator: elSep,
speed: Number(elSpeed)
});
}
});
});
}
};
}();

View File

@@ -0,0 +1,48 @@
CNVS.TextSplitter = function() {
var __core = SEMICOLON.Core;
var _getText = function(element) {
return element.textContent || element.innerText;
};
var _joiner = function(arr, joiner='span', glue=' ') {
return arr.map( function(chunk) {
return '<'+ joiner +'>' + chunk + '</'+ joiner +'>';
}).join(glue);
};
var _words = function(element, joiner='span') {
return _joiner(_getText(element).split(' '), joiner, ' ');
};
var _letters = function(element, joiner='span') {
return _joiner(_getText(element).split(''), joiner, '');
};
var _splitter = function(el, type = 'word') {
el.innerHTML = type == 'letter' ? _letters(el) : _words(el);
el.querySelectorAll('span')?.forEach( function(elem, index) {
elem.style.setProperty('--cnvs-split-index', index + 1);
});
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var type = el.getAttribute('data-split-type') || 'word';
_splitter(el, type);
});
}
};
}();

85
public/js/modules/tips.js Normal file
View File

@@ -0,0 +1,85 @@
CNVS.Tips = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
return {
init: function(selector) {
__core.loadJS({ file: 'plugins.bootstrap.js', id: 'canvas-bootstrap-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof bootstrap !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
if( typeof cnvsTips === "undefined" || cnvsTips.length < 1 ) {
return false;
}
__core.initFunction({ class: 'has-plugin-tips', event: 'pluginTipsReady' });
var body = __core.getVars.elBody.classList;
if( body.contains('init-plugin-tips') ) {
return false;
}
var randomIndex = Math.floor(Math.random() * cnvsTips.length);
var randomTip = cnvsTips[randomIndex];
var tipsEl = document.getElementById('cnvs-tips-element');
if( !tipsEl ) {
var tipsHTML = '<div class="position-fixed bottom-0 end-0 p-3 text-start" style="z-index: 699;"><div id="cnvs-tips-element" data-notify-trigger="custom" data-notify-target="#cnvs-tips-element" data-notify-timeout="7777" class="toast hide p-3" role="alert" aria-live="assertive" aria-atomic="true" style="--bs-toast-max-width:400px;--bs-toast-bg: rgba(var(--bs-body-bg-rgb),.925);"><div class="toast-header bg-transparent border-0 mb-0 align-items-center pb-1"><h5 id="cnvs-tips-element-title" class="me-auto fs-6 fw-semibold mb-0"></h5><button type="button" class="btn-close me-1" data-bs-dismiss="toast" aria-label="Close"></button></div><div id="cnvs-tips-element-content" class="toast-body small pt-1"></div><a href="#" id="cnvs-tips-element-disable" class="text-muted text-decoration-underline op-06 h-op-08 px-2 pb-2 ms-1 mt-1 d-inline-block" data-cookies="true" style="font-size:.75rem;text-underline-offset:3px;">Disable Random Tips</a></div></div>';
__core.getVars.elWrapper.insertAdjacentHTML('beforeend', tipsHTML);
tipsEl = document.getElementById('cnvs-tips-element');
}
var tipsTitle = document.getElementById('cnvs-tips-element-title');
var tipsContent = document.getElementById('cnvs-tips-element-content');
var tipsDisable = document.getElementById('cnvs-tips-element-disable');
var tipsEnable = document.getElementById('cnvs-tips-element-enable');
tipsTitle.innerHTML = randomTip.title;
tipsContent.innerHTML = randomTip.content;
if( tipsDisable ) {
tipsDisable.onclick = function(e) {
e.preventDefault();
var tipsToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('cnvs-tips-element'));
tipsToast.hide();
__core.cookie.set('__cnvs_tips_cookies', 'hide', 1);
};
}
if( tipsEnable ) {
tipsEnable.onclick = function(e) {
e.preventDefault();
__core.cookie.remove('__cnvs_tips_cookies');
window.location.reload();
};
}
(function(){
var enabled = true;
if( __core.cookie.get('__cnvs_tips_cookies' ) == 'hide' ) {
enabled = false;
}
if( enabled ) {
body.add('init-plugin-tips');
setTimeout(function(){
__modules.notifications(tipsEl);
}, Math.floor(Math.random() * 5000));
}
})();
});
}
};
}();

View File

@@ -0,0 +1,43 @@
CNVS.Toggle = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined';
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-toggles', event: 'pluginTogglesReady' });
selector = __core.getSelector( selector );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elSpeed = element.attr('data-speed') || 300,
elState = element.attr('data-state');
if( elState != 'open' ){
element.children('.toggle-content').hide();
} else {
element.addClass('toggle-active').children('.toggle-content').slideDown( Number(elSpeed) );
}
element.children('.toggle-header').off( 'click' ).on( 'click', function(){
element.toggleClass('toggle-active').children('.toggle-content').slideToggle( Number(elSpeed) );
return true;
});
});
});
}
};
}();

View File

@@ -0,0 +1,29 @@
CNVS.TopCart = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
if( !document.getElementById('top-cart-trigger') ) {
return false;
}
document.getElementById('top-cart-trigger').onclick = function(e) {
e.stopPropagation();
e.preventDefault();
selector[0].classList.toggle('top-cart-open');
};
document.addEventListener('click', function(e) {
if( !e.target.closest('#top-cart') ) {
selector[0].classList.remove('top-cart-open');
}
}, false);
}
};
}();

View File

@@ -0,0 +1,59 @@
CNVS.TopSearch = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
var searchForm = document.querySelector('.top-search-form');
if( !searchForm ) {
return true;
}
searchForm.closest('.header-row')?.classList.add( 'top-search-parent' );
var topSearchParent = document.querySelector('.top-search-parent'),
timeout;
selector[0].onclick = function(e) {
e.stopPropagation();
e.preventDefault();
clearTimeout( timeout );
__core.getVars.elBody.classList.toggle('top-search-open');
document.getElementById('top-cart')?.classList.remove('top-cart-open');
__core.getVars.recalls.menureset();
if( __core.getVars.elBody.classList.contains('top-search-open') ) {
topSearchParent?.classList.add('position-relative');
} else {
timeout = setTimeout( function() {
topSearchParent?.classList.remove('position-relative');
}, 500);
}
__core.getVars.elBody.classList.remove("primary-menu-open");
__core.getVars.elPageMenu && __core.getVars.elPageMenu.classList.remove('page-menu-open');
if (__core.getVars.elBody.classList.contains('top-search-open')){
searchForm.querySelector('input').focus();
}
};
document.addEventListener( 'click', function(e) {
if (!e.target.closest('.top-search-form')) {
__core.getVars.elBody.classList.remove('top-search-open');
timeout = setTimeout( function() {
topSearchParent?.classList.remove('position-relative');
}, 500);
}
}, false);
}
};
}();

View File

@@ -0,0 +1,116 @@
CNVS.Twitter = function() {
var __core = SEMICOLON.Core;
var __modules = SEMICOLON.Modules;
var _build = function(tweet, element, username) {
var elFontClass = element.getAttribute('data-font-class') || 'font-body';
var status = tweet.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
return '<a href="'+url+'" target="_blank">'+url+'</a>';
}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
return reply.charAt(0)+'<a href="https://twitter.com/'+reply.substring(1)+'" target="_blank">'+reply.substring(1)+'</a>';
});
if( element.classList.contains('fslider') ) {
var slide = document.createElement('div');
slide.classList.add('slide');
slide.innerHTML += '<p class="mb-3 '+elFontClass+'">'+status+'</p><small class="d-block"><a href="https://twitter.com/'+username+'/statuses/'+tweet.id_str+'" target="_blank">'+_time(tweet.created_at)+'</a></small>';
element.querySelector('.slider-wrap').append(slide);
} else {
element.innerHTML += '<li><i class="fa-brands fa-x-twitter"></i><div><span>'+status+'</span><small><a href="https://twitter.com/'+username+'/statuses/'+tweet.id_str+'" target="_blank">'+_time(tweet.created_at)+'</a></small></div></li>';
}
}
var _time = function(time_value) {
var parsed_date = new Date(time_value);
var relative_to = new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (120*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-twitter', event: 'pluginTwitterFeedReady' });
selector = __core.getSelector( selector, false, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(element) {
var elUser = element.getAttribute('data-username') || 'twitter',
elCount = element.getAttribute('data-count') || 3,
elLoader = element.getAttribute('data-loader') || 'include/twitter/tweets.php',
elFetch = element.getAttribute('data-fetch-message') || 'Fetching Tweets from Twitter...';
var alert = element.querySelector('.twitter-widget-alert');
if( !alert ) {
alert = document.createElement('div');
alert.classList.add( 'alert', 'alert-warning', 'twitter-widget-alert', 'text-center' );
element.prepend(alert);
alert.innerHTML = '<div class="spinner-grow spinner-grow-sm me-2" role="status"><span class="visually-hidden">Loading...</span></div> ' + elFetch;
}
fetch( elLoader + '?username='+ elUser ).then( function(response) {
return response.json();
}).then( function(tweets) {
if( typeof tweets === 'object' && !tweets.isArray() ) {
return false;
}
alert.remove();
var i = 0;
tweets?.some( function(tw) {
if( i == Number(elCount) ) {
return;
}
_build(tw, element, elUser);
i++;
});
if( element.classList.contains('fslider') ) {
var timer = setInterval( function() {
if( element.querySelectorAll('.slide').length > 1 ) {
element.classList.remove('customjs');
setTimeout( function() {
__modules.flexSlider();
jQuery(element).find( '.flexslider .slide' ).resize();
}, 500);
clearInterval(timer);
}
}, 1000);
}
}).catch( function(err) {
console.log(err);
alert.classList.remove( 'alert-warning' );
alert.classList.add( 'alert-danger' );
alert.innerHTML = 'Could not fetch Tweets from Twitter API. Please try again later.';
});
});
}
};
}();

View File

@@ -0,0 +1,33 @@
CNVS.VideoFacade = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-videofacade', event: 'pluginVideoFacadeReady' });
selector = __core.getSelector( selector, false );
selector.forEach( function(element) {
element.onclick = function(e) {
e.preventDefault();
var videoContent = element.getAttribute('data-video-html'),
videoRatio = element.getAttribute('data-video-ratio') || 'ratio ratio-16x9',
videoPreviewEl = element.querySelector('.video-facade-preview'),
videoContentEl = element.querySelector('.video-facade-content');
videoPreviewEl.classList.add('d-none');
videoContentEl.innerHTML += videoContent;
videoRatio.split(" ").forEach( function(ratioClass) {
videoContentEl.classList.add(ratioClass);
});
};
});
}
};
}();

View File

@@ -0,0 +1,89 @@
CNVS.ViewportDetect = function() {
var __core = SEMICOLON.Core;
var _setBSTheme = function(target) {
if( target.classList.contains('dark') ) {
target.setAttribute('data-bs-theme', 'dark');
} else {
target.removeAttribute('data-bs-theme');
}
};
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.initFunction({ class: 'has-plugin-viewportdetect', event: 'pluginViewportDetectReady' });
selector = __core.getSelector( selector, false );
if( selector.length < 1 ){
return true;
}
selector.forEach( function(el) {
var elDelay = el.getAttribute('data-delay') || 0;
var elClass = el.getAttribute('data-viewport-class') || "";
var elClassOut = el.getAttribute('data-viewport-class-out') || "";
var elClassTarget = el.getAttribute('data-viewport-class-target');
var elThreshold = el.getAttribute('data-viewport-threshold') || "0";
var elRootMargin = el.getAttribute('data-viewport-rootmargin') || "0px";
elClass = elClass.split(" ");
elClassOut = elClassOut.split(" ");
var hasDark = false;
if( elClass.includes('dark') || elClassOut.includes('dark') ) {
hasDark = true;
}
elClassTarget = elClassTarget ? document.querySelector(elClassTarget) : false;
var observer = new IntersectionObserver( function(el) {
el.forEach( function(entry) {
var elTarget = entry.target;
if( !elClassTarget ) {
elClassTarget = elTarget;
}
if( entry.isIntersecting ) {
setTimeout( function() {
elTarget.classList.add('is-in-viewport');
elClass.forEach( function(_class) {
_class && elClassTarget.classList.add(_class);
});
elClassOut.forEach( function(_class) {
_class && elClassTarget.classList.remove(_class);
});
hasDark && _setBSTheme(elClassTarget);
}, Number(elDelay));
} else {
elTarget.classList.remove('is-in-viewport');
elClass.forEach( function(_class) {
_class && elClassTarget.classList.remove(_class);
});
elClassOut.forEach( function(_class) {
_class && elClassTarget.classList.add(_class);
});
hasDark && _setBSTheme(elClassTarget);
}
});
}, {
threshold: parseFloat(elThreshold),
rootMargin: elRootMargin,
});
observer.observe(el);
});
}
};
}();

View File

@@ -0,0 +1,113 @@
CNVS.YoutubeBG = function() {
var __core = SEMICOLON.Core;
return {
init: function(selector) {
if( __core.getSelector(selector, false, false).length < 1 ){
return true;
}
__core.loadJS({ file: 'plugins.youtube.js', id: 'canvas-youtube-js', jsFolder: true });
__core.isFuncTrue( function() {
return typeof jQuery !== 'undefined' && jQuery().YTPlayer;
}).then( function(cond) {
if( !cond ) {
return false;
}
__core.initFunction({ class: 'has-plugin-youtubebg', event: 'pluginYoutubeBgVideoReady' });
selector = __core.getSelector( selector, true, '.mb_YTPlayer,.customjs' );
if( selector.length < 1 ){
return true;
}
selector.each( function(){
var element = jQuery(this),
elVideo = element.attr('data-video'),
elMute = element.attr('data-mute') || true,
elRatio = element.attr('data-ratio') || '16/9',
elQuality = element.attr('data-quality') || 'hd720',
elOpacity = element.attr('data-opacity') || 1,
elContainer = element.attr('data-container') || 'parent',
elOptimize = element.attr('data-optimize') || true,
elLoop = element.attr('data-loop') || true,
elControls = element.attr('data-controls') || false,
elVolume = element.attr('data-volume') || 50,
elStart = element.attr('data-start') || 0,
elStop = element.attr('data-stop') || 0,
elAutoPlay = element.attr('data-autoplay') || true,
elFullScreen = element.attr('data-fullscreen') || false,
elCoverImage = element.attr('data-coverimage') || '',
elPauseOnBlur = element.attr('data-pauseonblur') || true,
elPlayIfVisible = element.attr('data-playifvisible') || false;
if( elMute == 'false' ) {
elMute = false;
}
if( elContainer == 'parent' ) {
var parent = element.parent();
if( parent.attr('id') ) {
elContainer = '#' + parent.attr('id');
} else {
var ytPid = 'yt-bg-player-parent-' + Math.floor( Math.random() * 10000 );
parent.attr( 'id', ytPid );
elContainer = '#' + ytPid;
}
}
if( elOptimize == 'false' ) {
elOptimize = false;
}
if( elLoop == 'false' ) {
elLoop = false;
}
if( elControls == 'true' ) {
elControls = true;
}
if( elAutoPlay == 'false' ) {
elAutoPlay = false;
}
if( elFullScreen == 'true' ) {
elFullScreen = true;
}
if( elPauseOnBlur == 'true' ) {
elPauseOnBlur = true;
}
if( elPlayIfVisible == 'true' ) {
elPlayIfVisible = true;
}
element.YTPlayer({
videoURL: elVideo,
mute: elMute,
ratio: elRatio,
quality: elQuality,
opacity: Number(elOpacity),
containment: elContainer,
optimizeDisplay: elOptimize,
loop: elLoop,
vol: Number(elVolume),
startAt: Number(elStart),
stopAt: Number(elStop),
autoPlay: elAutoPlay,
realfullscreen: elFullScreen,
showYTLogo: false,
showControls: false,
coverImage: elCoverImage,
stopMovieOnBlur: elPauseOnBlur,
playOnlyIfVisible: elPlayIfVisible,
});
});
});
}
};
}();