= 1024) mobileMenuOpen = false" data-astro-cid-pux6a34n data-at-top=true data-site-nav style=min-height:4rem;height:4rem x-data="{ mobileMenuOpen: false, init() { this.$watch('mobileMenuOpen', open => { document.querySelectorAll('main, footer').forEach(el => el.inert = open); this.$nextTick(() => { if (open) this.$refs.mobilePanel.querySelector('a')?.focus(); else if (this.$el.contains(document.activeElement)) { const target = this.$refs.menuToggle.getClientRects().length ? this.$refs.menuToggle : this.$el.querySelector('.site-nav-brand'); target.focus(); } }); }); }, trapMenuFocus(event) { if (!this.mobileMenuOpen || event.key !== 'Tab') return; const items = [...this.$el.querySelectorAll('a[href], button')].filter(el => el.getClientRects().length && !el.closest('[inert]')); const first = items[0], last = items[items.length - 1]; if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); } else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); } }, destroy() { document.querySelectorAll('main, footer').forEach(el => el.inert = false); document.documentElement.classList.remove('mobile-nav-open'); document.body.classList.remove('mobile-nav-open'); } }" x-effect="document.documentElement.classList.toggle('mobile-nav-open', mobileMenuOpen); document.body.classList.toggle('mobile-nav-open', mobileMenuOpen)">
tosa.io
Projects
Dev Notes
About
EN
DE
Get in touch
Home
Projects
Dev Notes
About
Get in touch
EN
DE
Redirecting...