diff --git a/src/dialogs/more-info/controls/more-info-update.ts b/src/dialogs/more-info/controls/more-info-update.ts index 4bb768c1c7..2cb21c2345 100644 --- a/src/dialogs/more-info/controls/more-info-update.ts +++ b/src/dialogs/more-info/controls/more-info-update.ts @@ -29,6 +29,13 @@ import { } from "../../../data/update"; import type { HomeAssistant } from "../../../types"; import { showAlertDialog } from "../../generic/show-dialog-box"; +import { fireEvent } from "../../../common/dom/fire_event"; + +declare global { + interface HASSDomEvents { + "more-info-update-clicked": undefined; + } +} @customElement("more-info-update") class MoreInfoUpdate extends LitElement { @@ -406,6 +413,8 @@ class MoreInfoUpdate extends LitElement { } this.hass.callService("update", "install", installData); + + fireEvent(this, "more-info-update-clicked"); } private _createBackupChanged(ev) { diff --git a/src/dialogs/more-info/ha-more-info-dialog.ts b/src/dialogs/more-info/ha-more-info-dialog.ts index 4ae42dd862..df6d0921fe 100644 --- a/src/dialogs/more-info/ha-more-info-dialog.ts +++ b/src/dialogs/more-info/ha-more-info-dialog.ts @@ -12,7 +12,7 @@ import { import type { HassEntity } from "home-assistant-js-websocket"; import type { PropertyValues } from "lit"; import { LitElement, css, html, nothing } from "lit"; -import { customElement, property, state } from "lit/decorators"; +import { customElement, property, state, query } from "lit/decorators"; import { cache } from "lit/directives/cache"; import { join } from "lit/directives/join"; import { dynamicElement } from "../../common/dom/dynamic-element-directive"; @@ -50,6 +50,7 @@ import { getSensorNumericDeviceClasses } from "../../data/sensor"; import { haStyleDialog } from "../../resources/styles"; import "../../state-summary/state-card-content"; import type { HomeAssistant } from "../../types"; +import type { HaDialog } from "../../components/ha-dialog"; import { DOMAINS_WITH_MORE_INFO, EDITABLE_DOMAINS_WITH_ID, @@ -112,6 +113,8 @@ export class MoreInfoDialog extends LitElement { @state() private _sensorNumericDeviceClasses?: string[] = []; + @query("ha-dialog") private _dialog?: HaDialog; + public showDialog(params: MoreInfoDialogParams) { this._entityId = params.entityId; if (!this._entityId) { @@ -271,6 +274,11 @@ export class MoreInfoDialog extends LitElement { this._infoEditMode = ev.detail; } + private _handleScrollToTopEvent(ev: Event): void { + ev.stopPropagation(); + this._dialog!.scrollToPos(0, 0); + } + private _goToRelated(ev): void { if (!shouldHandleRequestSelectedEvent(ev)) return; this._setView("related"); @@ -521,6 +529,7 @@ export class MoreInfoDialog extends LitElement { @show-child-view=${this._showChildView} @entity-entry-updated=${this._entryUpdated} @toggle-edit-mode=${this._handleToggleInfoEditModeEvent} + @more-info-update-clicked=${this._handleScrollToTopEvent} > ${cache( this._childView