From d7b88232345ca6baf74590c01de21542a3229375 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 3 Apr 2023 14:59:31 +0200 Subject: [PATCH] Prevent document scroll when modal drawer is open (#16033) --- src/components/ha-drawer.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/components/ha-drawer.ts b/src/components/ha-drawer.ts index dd1a6d99be..d26dcf79f4 100644 --- a/src/components/ha-drawer.ts +++ b/src/components/ha-drawer.ts @@ -3,8 +3,26 @@ import { styles } from "@material/mwc-drawer/mwc-drawer.css"; import { css } from "lit"; import { customElement } from "lit/decorators"; +const blockingElements = (document as any).$blockingElements; + @customElement("ha-drawer") export class HaDrawer extends DrawerBase { + protected createAdapter() { + return { + ...super.createAdapter(), + trapFocus: () => { + blockingElements.push(this); + this.appContent.inert = true; + document.body.style.overflow = "hidden"; + }, + releaseFocus: () => { + blockingElements.remove(this); + this.appContent.inert = false; + document.body.style.overflow = ""; + }, + }; + } + static override styles = [ styles, css`