parent
d02316e00d
commit
9397424aae
@ -80,10 +80,46 @@ ul {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input:checked + .indicator:after {
|
input:checked + .indicator:after {
|
||||||
transform: rotateY(0deg);
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user