🔀 Merge branch 'temp/settings-ui'

# Conflicts:
#	modules/ppcp-settings/resources/js/data/onboarding/hooks.js
#	modules/ppcp-settings/resources/js/data/onboarding/reducer.js
This commit is contained in:
Philipp Stracker 2024-12-09 16:35:41 +01:00
commit 5c50a3d970
No known key found for this signature in database
53 changed files with 2094 additions and 1671 deletions

View file

@ -0,0 +1,39 @@
import { useEffect, useState } from '@wordpress/element';
const checkIfCurrentTab = ( id ) => {
return id && window.location.hash === `#${ id }`;
};
const determineInitialState = ( id, initiallyOpen ) => {
if ( initiallyOpen !== null ) {
return initiallyOpen;
}
return checkIfCurrentTab( id );
};
export function useAccordionState( { id = '', initiallyOpen = null } ) {
const [ isOpen, setIsOpen ] = useState(
determineInitialState( id, initiallyOpen )
);
useEffect( () => {
const handleHashChange = () => {
if ( checkIfCurrentTab( id ) ) {
setIsOpen( true );
}
};
window.addEventListener( 'hashchange', handleHashChange );
return () => {
window.removeEventListener( 'hashchange', handleHashChange );
};
}, [ id ] );
const toggleOpen = ( ev ) => {
setIsOpen( ! isOpen );
ev?.preventDefault();
return false;
};
return { isOpen, toggleOpen };
}