+ // Lock menu scroll when menu scroll to avoid fleeing / detached dropdown
+ onMenuScrollEvent () {
+ document.querySelector('menu').scrollTo(0, 0)
+ }
+
+ onDropdownOpenChange (opened: boolean) {
+ if (this.screenService.isInMobileView()) return
+
+ // Close dropdown when window scroll to avoid dropdown quick jump for re-position
+ const onWindowScroll = () => {
+ this.dropdown?.close()
+ window.removeEventListener('scroll', onWindowScroll)
+ }
+
+ if (opened) {
+ window.addEventListener('scroll', onWindowScroll)
+ document.querySelector('menu').scrollTo(0, 0) // Reset menu scroll to easy lock
+ document.querySelector('menu').addEventListener('scroll', this.onMenuScrollEvent)
+ } else {
+ document.querySelector('menu').removeEventListener('scroll', this.onMenuScrollEvent)
+ }
+ }
+