mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import { Controller } from "@hotwired/stimulus";
|
|
|
|
// Connects to data-controller="tabs--components"
|
|
export default class extends Controller {
|
|
static classes = ["navBtnActive", "navBtnInactive"];
|
|
static targets = ["panel", "navBtn"];
|
|
static values = { urlParamKey: String };
|
|
|
|
show(e) {
|
|
const btn = e.target.closest("button");
|
|
const selectedTabId = btn.dataset.id;
|
|
|
|
this.navBtnTargets.forEach((navBtn) => {
|
|
if (navBtn.dataset.id === selectedTabId) {
|
|
navBtn.classList.add(...this.navBtnActiveClasses);
|
|
navBtn.classList.remove(...this.navBtnInactiveClasses);
|
|
} else {
|
|
navBtn.classList.add(...this.navBtnInactiveClasses);
|
|
navBtn.classList.remove(...this.navBtnActiveClasses);
|
|
}
|
|
});
|
|
|
|
this.panelTargets.forEach((panel) => {
|
|
if (panel.dataset.id === selectedTabId) {
|
|
panel.classList.remove("hidden");
|
|
} else {
|
|
panel.classList.add("hidden");
|
|
}
|
|
});
|
|
|
|
// Update URL with the selected tab
|
|
if (this.urlParamKeyValue) {
|
|
const url = new URL(window.location.href);
|
|
url.searchParams.set(this.urlParamKeyValue, selectedTabId);
|
|
window.history.replaceState({}, "", url);
|
|
}
|
|
}
|
|
}
|