/**
* Template Name: OnePage
* Updated: Jan 09 2024 with Bootstrap v5.3.2
* Template URL: [Link]
* Author: [Link]
* License: [Link]
*/
(function() {
"use strict";
/**
* Easy selector helper function
*/
const select = (el, all = false) => {
el = [Link]()
if (all) {
return [...[Link](el)]
} else {
return [Link](el)
}
}
/**
* Easy event listener function
*/
const on = (type, el, listener, all = false) => {
let selectEl = select(el, all)
if (selectEl) {
if (all) {
[Link](e => [Link](type, listener))
} else {
[Link](type, listener)
}
}
}
/**
* Easy on scroll event listener
*/
const onscroll = (el, listener) => {
[Link]('scroll', listener)
}
/**
* Navbar links active state on scroll
*/
let navbarlinks = select('#navbar .scrollto', true)
const navbarlinksActive = () => {
let position = [Link] + 200
[Link](navbarlink => {
if (![Link]) return
let section = select([Link])
if (!section) return
if (position >= [Link] && position <= ([Link] +
[Link])) {
[Link]('active')
} else {
[Link]('active')
}
})
}
[Link]('load', navbarlinksActive)
onscroll(document, navbarlinksActive)
/**
* Scrolls to an element with header offset
*/
const scrollto = (el) => {
let header = select('#header')
let offset = [Link]
let elementPos = select(el).offsetTop
[Link]({
top: elementPos - offset,
behavior: 'smooth'
})
}
/**
* Toggle .header-scrolled class to #header when page is scrolled
*/
let selectHeader = select('#header')
if (selectHeader) {
const headerScrolled = () => {
if ([Link] > 100) {
[Link]('header-scrolled')
} else {
[Link]('header-scrolled')
}
}
[Link]('load', headerScrolled)
onscroll(document, headerScrolled)
}
/**
* Back to top button
*/
let backtotop = select('.back-to-top')
if (backtotop) {
const toggleBacktotop = () => {
if ([Link] > 100) {
[Link]('active')
} else {
[Link]('active')
}
}
[Link]('load', toggleBacktotop)
onscroll(document, toggleBacktotop)
}
/**
* Mobile nav toggle
*/
on('click', '.mobile-nav-toggle', function(e) {
select('#navbar').[Link]('navbar-mobile')
[Link]('bi-list')
[Link]('bi-x')
})
/**
* Mobile nav dropdowns activate
*/
on('click', '.navbar .dropdown > a', function(e) {
if (select('#navbar').[Link]('navbar-mobile')) {
[Link]()
[Link]('dropdown-active')
}
}, true)
/**
* Scrool with ofset on links with a class name .scrollto
*/
on('click', '.scrollto', function(e) {
if (select([Link])) {
[Link]()
let navbar = select('#navbar')
if ([Link]('navbar-mobile')) {
[Link]('navbar-mobile')
let navbarToggle = select('.mobile-nav-toggle')
[Link]('bi-list')
[Link]('bi-x')
}
scrollto([Link])
}
}, true)
/**
* Scroll with ofset on page load with hash links in the url
*/
[Link]('load', () => {
if ([Link]) {
if (select([Link])) {
scrollto([Link])
}
}
});
/**
* Preloader
*/
let preloader = select('#preloader');
if (preloader) {
[Link]('load', () => {
[Link]()
});
}
/**
* Initiate glightbox
*/
const glightbox = GLightbox({
selector: '.glightbox'
});
/**
* Testimonials slider
*/
new Swiper('.testimonials-slider', {
speed: 600,
loop: true,
autoplay: {
delay: 5000,
disableOnInteraction: false
},
slidesPerView: 'auto',
pagination: {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
},
breakpoints: {
320: {
slidesPerView: 1,
spaceBetween: 20
},
1200: {
slidesPerView: 3,
spaceBetween: 20
}
}
});
/**
* Porfolio isotope and filter
*/
[Link]('load', () => {
let portfolioContainer = select('.portfolio-container');
if (portfolioContainer) {
let portfolioIsotope = new Isotope(portfolioContainer, {
itemSelector: '.portfolio-item'
});
let portfolioFilters = select('#portfolio-flters li', true);
on('click', '#portfolio-flters li', function(e) {
[Link]();
[Link](function(el) {
[Link]('filter-active');
});
[Link]('filter-active');
[Link]({
filter: [Link]('data-filter')
});
[Link]('arrangeComplete', function() {
[Link]()
});
}, true);
}
});
/**
* Initiate portfolio lightbox
*/
const portfolioLightbox = GLightbox({
selector: '.portfolio-lightbox'
});
/**
* Portfolio details slider
*/
new Swiper('.portfolio-details-slider', {
speed: 400,
loop: true,
autoplay: {
delay: 5000,
disableOnInteraction: false
},
pagination: {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
}
});
/**
* Animation on scroll
*/
[Link]('load', () => {
[Link]({
duration: 1000,
easing: 'ease-in-out',
once: true,
mirror: false
})
});
/**
* Initiate Pure Counter
*/
new PureCounter();
})()