woocommerce-paypal-payments/modules/ppcp-settings/resources/js/Components/ReusableComponents/TabNavigation.js

32 lines
823 B
JavaScript
Raw Normal View History

2024-10-24 13:54:50 +02:00
import { TabPanel } from '@wordpress/components';
2024-10-28 15:58:40 +01:00
import { getQuery, updateQueryString } from '@woocommerce/navigation';
import { useEffect, useState } from '@wordpress/element';
2024-10-24 13:54:50 +02:00
const TabNavigation = ( { tabs } ) => {
2024-10-28 15:58:40 +01:00
const initialPanel = getQuery()?.panel ?? tabs[ 0 ].name;
const [ activePanel, setActivePanel ] = useState( initialPanel );
const updatePanelUri = ( tabName ) => {
setActivePanel( tabName );
};
2024-10-24 13:54:50 +02:00
2024-10-28 15:58:40 +01:00
useEffect( () => {
updateQueryString( { panel: activePanel }, '/', getQuery() );
}, [ activePanel ] );
2024-10-24 13:54:50 +02:00
return (
<TabPanel
className={ `ppcp-r-tabs ${ activePanel }` }
initialTabName={ activePanel }
onSelect={ updatePanelUri }
tabs={ tabs }
2024-10-24 13:54:50 +02:00
>
{ ( tab ) => {
return tab.component || <>{ tab.title ?? tab.name }</>;
} }
2024-10-24 13:54:50 +02:00
</TabPanel>
);
};
export default TabNavigation;