document.addEventListener("DOMContentLoaded", function () {
const stateMap = new WeakMap();
// Define your desktop redirect rules here
const redirectMap = {
"properties": "https://relyabilitycare.com.au/properties",
"services": "https://relyabilitycare.com.au/services"
};
document.addEventListener("click", function (e) {
const isMobile = window.matchMedia("(max-width: 768px)").matches;
// DESKTOP BEHAVIOR: Redirect on PC click
if (!isMobile) {
const clickedDropdown = e.target.closest(".custom-dropdown");
if (clickedDropdown) {
const textKey = clickedDropdown.textContent.trim().toLowerCase();
// Match the text key against our map layout rules
for (const key in redirectMap) {
if (textKey.includes(key)) {
window.location.href = redirectMap[key];
return;
}
}
}
return;
}
// MOBILE BEHAVIOR: Keeps your toggle logic completely intact
const clickedDropdown = e.target.closest(".custom-dropdown");
const allDropdowns = document.querySelectorAll(".custom-dropdown");
// CLICK OUTSIDE → CLOSE ALL
if (!clickedDropdown) {
allDropdowns.forEach(d => {
stateMap.set(d, false);
d.setAttribute("data-state", "closed");
});
return;
}
// GET JS STATE (NOT DOM)
const isOpen = stateMap.get(clickedDropdown) || false;
// CLOSE OTHERS
allDropdowns.forEach(d => {
if (d !== clickedDropdown) {
stateMap.set(d, false);
d.setAttribute("data-state", "closed");
}
});
// TOGGLE CURRENT (JS decides)
const newState = !isOpen;
stateMap.set(clickedDropdown, newState);
clickedDropdown.setAttribute(
"data-state",
newState ? "open" : "closed"
);
});
});
Recent Comments