diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 2906ff5dbf..11b91740a3 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -418,21 +418,21 @@ class HaSidebar extends SubscribeMixin(ScrollableFadeMixin(LitElement)) { return html`
${renderList( - this._renderPanels(beforeSpacer, selectedPanel), - "before-spacer", - true - )} + this._renderPanels(beforeSpacer, selectedPanel), + "before-spacer", + true + )} ${this.renderScrollableFades()}
${this._renderSpacer()} ${renderList( - html` + html` ${this._renderPanels(afterSpacer, selectedPanel)} ${this._renderFixedPanels(selectedPanel)} `, - "after-spacer", - false - )} + "after-spacer", + false + )}
`; } @@ -674,20 +674,13 @@ class HaSidebar extends SubscribeMixin(ScrollableFadeMixin(LitElement)) { } } const tooltip = this._tooltip; - const allListbox = this.shadowRoot!.querySelectorAll("ha-md-list")!; - const listbox = [...allListbox].find((lb) => lb.contains(item)); - - const top = - item.offsetTop + - 11 + - (listbox?.offsetTop ?? 0) - - (listbox?.scrollTop ?? 0); + const itemRect = item.getBoundingClientRect(); tooltip.innerText = itemText?.innerText ?? ""; tooltip.style.display = "block"; tooltip.style.position = "fixed"; - tooltip.style.top = `${top}px`; - tooltip.style.left = `calc(${item.offsetLeft + item.clientWidth + 8}px + var(--safe-area-inset-left, 0px))`; + tooltip.style.top = `${itemRect.top + itemRect.height / 2 - tooltip.offsetHeight / 2}px`; + tooltip.style.left = `calc(${itemRect.right + 8}px)`; } private _hideTooltip() {