1
0

Add hover state on tucked menus

This commit is contained in:
suroh 2025-03-22 09:05:37 +01:00
parent d02316e00d
commit 9397424aae

@ -80,10 +80,46 @@ ul {
}
input:checked + .indicator:after {
transform: rotateY(0deg);
opacity: 1;
}
}
</style>
<script type="module" webc:scoped></script>
<script type="module" webc:scoped>
customElements.define('alx-nav', class AlxNav extends HTMLElement {
static hoveredNavs = new Set()
static allNavs = []
#prechecked
constructor() {
super()
const navToggle = this.querySelector('input[type="radio"]')
this.#prechecked = navToggle.checked
AlxNav.allNavs.push(this)
this.addEventListener('mouseenter', () => {
if (!this.classList.contains('hidden')) {
navToggle.checked = true
AlxNav.hoveredNavs.add(this)
}
})
this.addEventListener('mouseleave', () => {
console.log('leave')
AlxNav.hoveredNavs.delete(this)
if (!AlxNav.hoveredNavs.size) {
AlxNav.allNavs.forEach(n => n.setDefaultState())
} else {
navToggle.checked = false
}
})
}
setDefaultState() {
const navToggle = this.querySelector('input[type="radio"]')
navToggle.checked = this.#prechecked
}
})
</script>