Ocelot-Social/webapp/mixins/scrollToAnchor.js
roschaefer db1bcdd3d2 refactor: register vue-scrollto in nuxt.config.js
This will allow us to use this.$scrollTo in components. I'm now also
using this in the mixin. With so many `this`s it gets horribly
difficult to properly test the mixin in isolation. So I decided to test
the mixin on the component directly.
2019-10-01 17:25:28 +02:00

24 lines
554 B
JavaScript

function scrollToAnchor(anchor, { checkAnchor, $scrollTo }) {
if (typeof checkAnchor !== 'function')
throw new Error(
'You must define `checkAnchor` on the component if you use scrollToAnchor mixin!',
)
if (!checkAnchor(anchor)) return
setTimeout(() => {
$scrollTo(anchor, 1000)
}, 250)
}
export default {
watch: {
$route(to, from) {
const anchor = to && to.hash
scrollToAnchor(anchor, this)
},
},
mounted() {
const anchor = this.$route && this.$route.hash
scrollToAnchor(anchor, this)
},
}