PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / components / AdminMenuSync.js
presto-player / src / admin / dashboard / components Last commit date
Emails 1 month ago EngagementChart 1 month ago MediaHub 1 month ago Onboarding 1 month ago Popup 1 month ago Skeletons 1 week ago WhatsNew 1 month ago charts 1 month ago test 1 month ago AdminMenuSync.js 1 month ago ChartEmptyState.js 1 month ago ChooseDate.js 1 month ago ColorPicker.js 1 month ago ExtendPlugins.js 1 month ago Filters.js 1 month ago Link.js 1 month ago Navbar.js 1 week ago NoFound.js 1 month ago PageHeader.js 1 month ago PluginRecommendations.js 1 month ago PostScheduleField.js 1 month ago PrestoPlayerIcon.js 1 month ago ProGateOverlay.js 1 month ago QuickAccess.js 1 month ago RankedTable.js 1 month ago StatCard.js 1 month ago TopMedia.js 1 month ago TopPerformingMedia.js 1 month ago TopUsers.js 1 month ago TruncatedTitle.js 1 month ago UpgradeNotice.js 1 month ago UpgradeToPro.js 1 month ago VideoModal.js 1 month ago WelcomeBanner.js 1 month ago
AdminMenuSync.js
45 lines
1 import { useEffect } from "react";
2 import { useLocation } from "../router/router";
3
4 /**
5 * Syncs the WordPress admin sidebar submenu highlight with the active
6 * dashboard tab. When the user navigates via the in-app Navbar tabs,
7 * the URL changes via pushState but the server-rendered sidebar doesn't
8 * update. This component listens for tab changes and toggles the
9 * 'current' CSS class on the matching sidebar <li>.
10 *
11 * Follows the same pattern as SureDash's AdminMenuSync component.
12 */
13 const AdminMenuSync = () => {
14 const location = useLocation();
15 const currentTab = location.params?.tab;
16
17 useEffect(() => {
18 const pageSlug = "presto-dashboard";
19 // The Dashboard submenu's href has no `tab` param, so treat the
20 // "Dashboard" tab (and the bare URL) as the same target.
21 const pageUrl = currentTab && currentTab !== "Dashboard"
22 ? `admin.php?page=${pageSlug}&tab=${currentTab}`
23 : `admin.php?page=${pageSlug}`;
24
25 // Find matching sidebar link by href suffix.
26 const matchingLinks = document.querySelectorAll(
27 `.wp-submenu-wrap li > a[href$="${pageUrl}"]`
28 );
29
30 // Remove 'current' from all submenu items under our menu.
31 document
32 .querySelectorAll("#toplevel_page_presto-dashboard .wp-submenu li")
33 .forEach((li) => li.classList.remove("current"));
34
35 // Add 'current' to matching item(s).
36 matchingLinks.forEach((a) => {
37 a.parentElement.classList.add("current");
38 });
39 }, [currentTab]);
40
41 return null;
42 };
43
44 export default AdminMenuSync;
45