$(function() {
// 1. Pastikan #top_menu ada di lokasi yang kamu mau
if ($(".ol-sidebar-content").length && $("#top_menu").length === 0) {
$(".ol-sidebar-content").prepend('
');
}
// 2. Ambil nav sidebar asli
const $origNav = $(".ol-sidebar .sidebar-nav").first();
const $clone = $origNav.clone(true, true);
// 3. Bersihkan & ubah class utk versi topnav
$clone
.removeClass() // hapus "sidebar-nav"
.attr("id", "topnav-nav")
.addClass("topnav-nav");
// ubah UL root
$clone.find("> ul, > .px-14px, ul.px-14px").each(function() {
$(this).removeClass().addClass("topnav-root");
});
// ===== LEVEL 1 (sidebar-first-li) -> .topnav-item
$clone.find("li.sidebar-first-li").each(function() {
const $li = $(this);
const hasSub = $li.find("ul.first-sub-menu").length > 0;
const isActive = $li.hasClass("active"); // <== gunakan langsung class active asli
$li
.removeClass("sidebar-first-li first-li-have-sub active showMenu")
.addClass("topnav-item")
.toggleClass("has-sub", hasSub)
.toggleClass("is-active", isActive);
// Ambil asli supaya kita bisa buat struktur icon + label
const $a = $li.children("a").first();
if ($a.length) {
const $icon = $a.find(".icon").first();
const $textNode = $a.find(".text span").first(); // Course
const labelText = $textNode.length ?
$textNode.text().trim() :
$a.text().trim();
// rebuild isi
$a.empty();
if ($icon.length) {
$icon.addClass("topnav-icon");
$a.append($icon);
}
// Label utama kita bungkus dengan span.topnav-mainlabel
const $labelSpan = $('').text(
labelText
);
$a.append($labelSpan);
}
});
// ===== LEVEL 2 WRAPPER UL (first-sub-menu) -> .topnav-dropdown
$clone.find("ul.first-sub-menu").each(function() {
$(this).removeClass("first-sub-menu").addClass("topnav-dropdown");
});
// ===== LEVEL 2 LI (sidebar-second-li) -> .topnav-subitem
$clone.find("li.sidebar-second-li").each(function() {
const $li2 = $(this);
const hasSub2 = $li2.find("ul.second-sub-menu").length > 0;
const isActive2 = $li2.hasClass("active"); // <== gunakan langsung class active asli
$li2
.removeClass("sidebar-second-li second-li-have-sub active")
.addClass("topnav-subitem")
.toggleClass("has-sub2", hasSub2)
.toggleClass("is-active", isActive2); // <-- ini yg akan bikin highlight Manage Courses
});
// ===== LEVEL 3 WRAPPER UL (second-sub-menu) -> .topnav-subdropdown
$clone.find("ul.second-sub-menu").each(function() {
$(this).removeClass("second-sub-menu").addClass("topnav-subdropdown");
});
// ===== LEVEL 3 LI (sidebar-third-li) -> .topnav-subsubitem
$clone.find("li.sidebar-third-li").each(function() {
const $li3 = $(this);
const isActive3 = $li3.hasClass("active");
$li3
.removeClass("sidebar-third-li active")
.addClass("topnav-subsubitem")
.toggleClass("is-active", isActive3);
});
// group title
$clone.find(".first-sub-menu-title").each(function() {
$(this)
.removeClass("first-sub-menu-title fs-14px mb-18px")
.addClass("topnav-group-title");
});
// just in case
$clone.find("div.text").addClass("topnav-text");
$clone.find("span.icon").addClass("topnav-icon");
// 4. Masukkan clone ke #top_menu
$("#top_menu").empty().append($clone);
// 5. Dropdown hover behavior
// level 1 hover → show .topnav-dropdown
$("#top_menu .topnav-item").each(function() {
const $li = $(this);
const $dd = $li.children(".topnav-dropdown");
if ($dd.length) {
$li.css("position", "relative");
$li
.on("mouseenter", function() {
$dd.stop(true, true).fadeIn(120);
})
.on("mouseleave", function() {
$dd.stop(true, true).fadeOut(120);
});
}
});
// level 2 hover → show .topnav-subdropdown
$("#top_menu .topnav-subitem").each(function() {
const $li2 = $(this);
const $dd2 = $li2.children(".topnav-subdropdown");
if ($dd2.length) {
$li2.css("position", "relative");
$li2
.on("mouseenter", function() {
$dd2.stop(true, true).fadeIn(120);
})
.on("mouseleave", function() {
$dd2.stop(true, true).fadeOut(120);
});
}
});
});