vue-scroll-reveal
Version:
A Vue 3 directive to wrap @jlmake's excellent ScrollReveal library.
48 lines (45 loc) • 1.24 kB
JavaScript
import ScrollReveal from 'scrollreveal';
function reveal(el, value, modifiers) {
const options = value || {};
if (modifiers) {
if (modifiers.reset) {
options.reset = true;
}
if (modifiers.nomobile) {
options.mobile = false;
}
if (modifiers.nodesktop) {
options.desktop = false;
}
}
if (typeof options.class === 'string') {
el.classList.add(options.class);
delete options.class;
}
ScrollReveal().reveal(el, options);
}
const vScrollReveal = {
mounted(el, { value, modifiers }) {
reveal(el, value, modifiers);
},
updated(el, { value, modifiers }) {
reveal(el, value, modifiers);
},
getSSRProps() {
return {};
}
};
function createScrollRevealDirective(defaultOptions) {
return {
mounted(el, { value, modifiers }) {
reveal(el, Object.assign({}, defaultOptions, value), modifiers);
},
updated(el, { value, modifiers }) {
reveal(el, Object.assign({}, defaultOptions, value), modifiers);
},
getSSRProps() {
return {};
}
};
}
export { createScrollRevealDirective, vScrollReveal };