website/assets/js/main.js
2018-01-25 11:03:20 +03:00

96 lines
2.8 KiB
JavaScript

import '../scss/styles.scss'; // strange thing huh?
import { tns } from './vendor/slider/tiny-slider.module.js';
((w, d) => {
const app = {};
app.polyfill = {
capitalize: (str) => {
return str.charAt(0).toUpperCase() + str.slice(1);
},
isSupport: (str) => {
const h1 = document.createElement('h1');
return !(!(`webkit${app.polyfill.capitalize(str)}` in h1.style) && !(str in h1.style));
},
init: () => {
const els = Array.prototype.slice.call(d.querySelectorAll('.__polyfill'));
if (els.length) {
els.map(item => {
const supports = item.getAttribute('data-supports');
if (!app.polyfill.isSupport(supports)) {
item.classList.add('polyfill-fallback');
}
})
}
}
}
app.menu = {
init: () => {
const clicker = Array.prototype.slice.call(d.querySelectorAll('.__menuopen'));
const menu = d.querySelector('.__menu');
const modificator = 'top-menu__show';
if (clicker.length && menu) {
clicker
.map(item => {
item.addEventListener('click', (e) => {
e.preventDefault();
menu.classList.contains(modificator) ?
menu.classList.remove(modificator) :
menu.classList.add(modificator)
;
}, false)
})
}
}
}
app.slider = {
props: {
slider: null
},
init: () => {
const slider_container = d.querySelector('.__slider');
const slider_nav = d.querySelector('.__slider-nav');
if (slider_container && slider_nav) {
app.slider.props.slider = tns({
container: slider_container,
items: 3,
slideBy: 1,
autoplay: false,
loop: false,
nav: false,
gutter: 32,
controlsContainer: slider_nav,
responsive: {
320: {
items: 1,
gutter: 20,
fixedWidth: 265
},
650: {
gutter: 30
},
1200: {
items: 3,
fixedWidth: 350
}
}
});
}
}
}
for (const m in app) {
app[m].init();
}
})(window, document);