meet-dagur4's picture
Upload 100 files
4e479e5
(function() {
"use strict";
/**
* Easy selector helper function
*/
const select = (el, all = false) => {
el = el.trim()
if (all) {
return [...document.querySelectorAll(el)]
} else {
return document.querySelector(el)
}
}
/**
* Easy event listener function
*/
const on = (type, el, listener, all = false) => {
let selectEl = select(el, all)
if (selectEl) {
if (all) {
selectEl.forEach(e => e.addEventListener(type, listener))
} else {
selectEl.addEventListener(type, listener)
}
}
}
/**
* Scrolls to an element with header offset
*/
const scrollto = (el) => {
window.scrollTo({
top: 0,
behavior: 'smooth'
})
}
/**
* Mobile nav toggle
*/
on('click', '.mobile-nav-toggle', function(e) {
select('#navbar').classList.toggle('navbar-mobile')
this.classList.toggle('bi-list')
this.classList.toggle('bi-x')
})
/**
* Scrool with ofset on links with a class name .scrollto
*/
on('click', '#navbar .nav-link', function(e) {
let section = select(this.hash)
if (section) {
e.preventDefault()
let navbar = select('#navbar')
let header = select('#header')
let sections = select('section', true)
let navlinks = select('#navbar .nav-link', true)
navlinks.forEach((item) => {
item.classList.remove('active')
})
this.classList.add('active')
if (navbar.classList.contains('navbar-mobile')) {
navbar.classList.remove('navbar-mobile')
let navbarToggle = select('.mobile-nav-toggle')
navbarToggle.classList.toggle('bi-list')
navbarToggle.classList.toggle('bi-x')
}
if (this.hash == '#header') {
header.classList.remove('header-top')
sections.forEach((item) => {
item.classList.remove('section-show')
})
return;
}
if (!header.classList.contains('header-top')) {
header.classList.add('header-top')
setTimeout(function() {
sections.forEach((item) => {
item.classList.remove('section-show')
})
section.classList.add('section-show')
}, 350);
} else {
sections.forEach((item) => {
item.classList.remove('section-show')
})
section.classList.add('section-show')
}
scrollto(this.hash)
}
}, true)
/**
* Activate/show sections on load with hash links
*/
window.addEventListener('load', () => {
if (window.location.hash) {
let initial_nav = select(window.location.hash)
if (initial_nav) {
let header = select('#header')
let navlinks = select('#navbar .nav-link', true)
header.classList.add('header-top')
navlinks.forEach((item) => {
if (item.getAttribute('href') == window.location.hash) {
item.classList.add('active')
} else {
item.classList.remove('active')
}
})
setTimeout(function() {
initial_nav.classList.add('section-show')
}, 350);
scrollto(window.location.hash)
}
}
});
/**
* Skills animation
*/
let skilsContent = select('.skills-content');
if (skilsContent) {
new Waypoint({
element: skilsContent,
offset: '80%',
handler: function(direction) {
let progress = select('.progress .progress-bar', true);
progress.forEach((el) => {
el.style.width = el.getAttribute('aria-valuenow') + '%'
});
}
})
}
/**
* 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
*/
window.addEventListener('load', () => {
let portfolioContainer = select('.portfolio-container');
if (portfolioContainer) {
let portfolioIsotope = new Isotope(portfolioContainer, {
itemSelector: '.portfolio-item',
layoutMode: 'fitRows'
});
let portfolioFilters = select('#portfolio-flters li', true);
on('click', '#portfolio-flters li', function(e) {
e.preventDefault();
portfolioFilters.forEach(function(el) {
el.classList.remove('filter-active');
});
this.classList.add('filter-active');
portfolioIsotope.arrange({
filter: this.getAttribute('data-filter')
});
}, true);
}
});
/**
* Initiate portfolio lightbox
*/
const portfolioLightbox = GLightbox({
selector: '.portfolio-lightbox'
});
/**
* Initiate portfolio details lightbox
*/
const portfolioDetailsLightbox = GLightbox({
selector: '.portfolio-details-lightbox',
width: '90%',
height: '90vh'
});
/**
* 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
}
});
/**
* Initiate Pure Counter
*/
new PureCounter();
})()