mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
✨ Add scroll-effect (shadow) to header bar
This commit is contained in:
parent
0f992dbe3b
commit
841a98e009
3 changed files with 57 additions and 1 deletions
44
modules/ppcp-settings/resources/js/hooks/useIsScrolled.js
Normal file
44
modules/ppcp-settings/resources/js/hooks/useIsScrolled.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
* Taken from WooCommerce core:
|
||||
* https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/client/admin/client/hooks/useIsScrolled.js
|
||||
*/
|
||||
|
||||
import { useEffect, useRef, useState } from '@wordpress/element';
|
||||
|
||||
const isAtBottom = () =>
|
||||
window.innerHeight + window.scrollY >= document.body.scrollHeight;
|
||||
|
||||
const useIsScrolled = () => {
|
||||
const [ isScrolled, setIsScrolled ] = useState( false );
|
||||
const [ atBottom, setAtBottom ] = useState( isAtBottom() );
|
||||
const rafHandle = useRef( null );
|
||||
useEffect( () => {
|
||||
const updateIsScrolled = () => {
|
||||
setIsScrolled( window.pageYOffset > 20 );
|
||||
setAtBottom( isAtBottom() );
|
||||
};
|
||||
|
||||
const scrollListener = () => {
|
||||
rafHandle.current =
|
||||
window.requestAnimationFrame( updateIsScrolled );
|
||||
};
|
||||
|
||||
window.addEventListener( 'scroll', scrollListener );
|
||||
|
||||
window.addEventListener( 'resize', scrollListener );
|
||||
|
||||
return () => {
|
||||
window.removeEventListener( 'scroll', scrollListener );
|
||||
window.removeEventListener( 'resize', scrollListener );
|
||||
window.cancelAnimationFrame( rafHandle.current );
|
||||
};
|
||||
}, [] );
|
||||
|
||||
return {
|
||||
isScrolled,
|
||||
atBottom,
|
||||
atTop: ! isScrolled,
|
||||
};
|
||||
};
|
||||
|
||||
export default useIsScrolled;
|
Loading…
Add table
Add a link
Reference in a new issue