fix: disable smooth scroll for users who prefer reduced motion (#958)
This commit is contained in:
		
							parent
							
								
									56f5a45221
								
							
						
					
					
						commit
						37c85ec7e2
					
				
					 1 changed files with 6 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
import { store } from '../_store/store'
 | 
			
		||||
 | 
			
		||||
// via https://github.com/tootsuite/mastodon/blob/f59ed3a4fafab776b4eeb92f805dfe1fecc17ee3/app/javascript/mastodon/scroll.js
 | 
			
		||||
const easingOutQuint = (x, t, b, c, d) =>
 | 
			
		||||
  c * ((t = t / d - 1) * t * t * t * t + 1) + b
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +64,10 @@ function testSupportsSmoothScroll () {
 | 
			
		|||
export const hasNativeSmoothScroll = process.browser && testSupportsSmoothScroll()
 | 
			
		||||
 | 
			
		||||
export function smoothScroll (node, topOrLeft, horizontal) {
 | 
			
		||||
  if (hasNativeSmoothScroll) {
 | 
			
		||||
  if (store.get().reduceMotion) {
 | 
			
		||||
    // don't do smooth-scroll at all for users who prefer reduced motion
 | 
			
		||||
    node[horizontal ? 'scrollLeft' : 'scrollTop'] = topOrLeft
 | 
			
		||||
  } else if (hasNativeSmoothScroll) {
 | 
			
		||||
    return node.scrollTo({
 | 
			
		||||
      [horizontal ? 'left' : 'top']: topOrLeft,
 | 
			
		||||
      behavior: 'smooth'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue