// https://forum.vuejs.org/t/how-to-use-helper-functions-for-imported-modules-in-vuejs-vue-template/6266/5 export default { directives: { lazy: { bind(img,binding){ // console.log('lazy bind', img, binding); // show only the first image if(binding.value === 0){ img.setAttribute('src', img.getAttribute('data-src')) img.removeAttribute('data-src') img.classList.remove('lazy') } } }, switcher: { inserted(el,binding){ // switch images on mousemove el.addEventListener('mousemove', function(event) { let figs = this.querySelectorAll('figure') // console.log('mousemove', this, event, figs.length); // let len = figs.length // let w = this.clientWidth; // let g = w / len; // let delta = Math.floor(event.layerX / g) let delta = Math.floor(event.layerX / (this.clientWidth / figs.length)) // console.log('delta', delta); figs.forEach((fig, index) => { // console.log(index); if(index == delta){ // fig.style.display = "block" fig.classList.remove("hide") fig.classList.add("show") }else{ // fig.style.display = "none" fig.classList.remove("show") fig.classList.add("hide") } }) }) } } }, mounted() { // lazy load images on mouseover console.log('card mounted', this.$options.name); // if (this.$options.name ==! 'ModalCard') { this.$el.addEventListener('mouseover', function(event) { let imgs = this.querySelectorAll('.images figure img.lazy') console.log('mousemove', this, imgs); imgs.forEach((img) => { // console.log('forEach img',img); img.setAttribute('src', img.getAttribute('data-src')) img.removeAttribute('data-src') img.classList.remove('lazy') }) }, {once : true}) // } }, methods: { activateLazyLoad () { console.log('card activateLazyLoad', this.$options.name); this.$el.addEventListener('mousemove', function(event) { let imgs = this.querySelectorAll('.images figure img.lazy') console.log('mousemove', this, imgs); imgs.forEach((img) => { // console.log('forEach img',img); img.setAttribute('src', img.getAttribute('data-src')) img.removeAttribute('data-src') img.classList.remove('lazy') }) }, {once : true}) } // deg2rad (deg) { // return deg * (Math.PI / 180) // }, } }