import { useState, useEffect } from "@wordpress/element"; import { __ } from "@wordpress/i18n"; import { GeneratorSettingsPageArrow, SiteAvailabilityIcon, AdvancedIcon, ToolsIcon } from "../../../icons/icons"; import { SiteAvailability, Advanced, Tools } from "./SettingsOptions"; import "./setting-styles.scss"; const Settings = (props) => { const { setPage, initialTab } = props; const [settingsOptions, setSettingsOptions] = useState(sp_pcp_block_settings?.settings); const tabs = [ { label: __("Site Availability", "post-carousel"), Icon: SiteAvailabilityIcon, value: "site-availability", Render: SiteAvailability, }, { label: __("Advanced Controls", "post-carousel"), Icon: AdvancedIcon, value: "advanced", Render: Advanced, }, { label: __("Tools", "post-carousel"), Icon: ToolsIcon, value: "tools", Render: Tools, }, ]; // Get default tab from prop, hash or use 'site-availability' const getInitialTab = () => { if (initialTab) { return initialTab; } const hash = window.location.hash.replace("#", ""); const tabValue = hash.split("=")[1]; return tabValue || "site-availability"; }; const [settingTab, setSettingTab] = useState(getInitialTab()); // Update hash when tab changes useEffect(() => { window.location.hash = `#settings=${settingTab}`; }, [settingTab]); // Listen for hash changes (back button, direct URL) useEffect(() => { const handleHashChange = () => { const hash = window.location.hash.replace("#", ""); const tabValue = hash.split("=")[1]; if (tabValue) { setSettingTab(tabValue); } }; window.addEventListener("hashchange", handleHashChange); return () => window.removeEventListener("hashchange", handleHashChange); }, []); return ( <> {tabs?.map(({ label, value, Icon }) => ( setSettingTab(value)} > {" "} {label} ))} {tabs?.map(({ value, Render }) => settingTab === value ? (<> >) : null )} Classic Shortcode Generator Setting > ); }; export default Settings;