bootstrap-italia
Version:
Bootstrap Italia è un tema Bootstrap 5 per la creazione di applicazioni web nel pieno rispetto delle linee guida di design per i siti internet e i servizi digitali della PA
49 lines (41 loc) • 1.43 kB
JavaScript
/**
* --------------------------------------------------------------------------
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
import anime from 'animejs/lib/anime.es.js'
const AnimeDefault = {
duration: 800,
easing: 'easeInOutSine',
}
/**
*
* @param {number} scrollTop
* @param {Object} config - duration, easing, complete, update, ...
*/
export const documentScrollTo = (scrollTop, config) => {
if (typeof window === 'undefined' || typeof document === 'undefined') {
return
}
const onComplete = (typeof config === 'object' ? config : {}).complete
const scrollElement = window.document.scrollingElement || window.document.body || window.document.documentElement
const prevScrollBehavior = scrollElement.style.scrollBehavior
config = {
scrollTop: scrollTop || 0,
...AnimeDefault,
...(typeof config === 'object' ? config : {}),
}
scrollElement.style.scrollBehavior = 'auto'
config.complete = (anim) => {
scrollElement.style.scrollBehavior = prevScrollBehavior
if (typeof onComplete === 'function') {
onComplete(anim)
}
}
anime({
targets: scrollElement,
...config,
})
}