PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 4.3.1 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 2 months ago MediaHub 1 month ago Onboarding 2 months ago Popup 2 months ago Skeletons 1 month ago WhatsNew 2 months ago charts 2 months ago test 2 months ago AdminMenuSync.js 2 months ago ChartEmptyState.js 2 months ago ChooseDate.js 2 months ago ColorPicker.js 2 months ago ExtendPlugins.js 2 months ago Filters.js 2 months ago Link.js 2 months ago Navbar.js 1 month ago NoFound.js 2 months ago PageHeader.js 2 months ago PluginRecommendations.js 2 months ago PostScheduleField.js 2 months ago PrestoPlayerIcon.js 2 months ago ProGateOverlay.js 2 months ago QuickAccess.js 2 months ago RankedTable.js 2 months ago StatCard.js 2 months ago TopMedia.js 2 months ago TopPerformingMedia.js 2 months ago TopUsers.js 2 months ago TruncatedTitle.js 2 months ago UpgradeNotice.js 2 months ago UpgradeToPro.js 2 months ago VideoModal.js 2 months ago WelcomeBanner.js 2 months 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