From 0c0e82a3bae56c256ae2e871ec6e30be9672fb0f Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 25 Jan 2020 14:49:36 +0100 Subject: [PATCH] Move get dialog logic entity registry (#4579) --- .../config/entities/ha-config-entities.ts | 17 +++++++++-------- .../show-dialog-entity-registry-detail.ts | 12 +++++++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/panels/config/entities/ha-config-entities.ts b/src/panels/config/entities/ha-config-entities.ts index 9b90e28dae..ea9fdd0b2e 100644 --- a/src/panels/config/entities/ha-config-entities.ts +++ b/src/panels/config/entities/ha-config-entities.ts @@ -60,6 +60,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { @property() private _filter = ""; @property() private _selectedEntities: string[] = []; @query("ha-data-table") private _dataTable!: HaDataTable; + private getDialog?: () => DialogEntityRegistryDetail | undefined; private _columns = memoize( (narrow, _language): DataTableColumnContainer => { @@ -206,14 +207,14 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { public disconnectedCallback() { super.disconnectedCallback(); - const dialog = document - .querySelector("home-assistant")! - .shadowRoot!.querySelector("dialog-entity-registry-detail") as - | DialogEntityRegistryDetail - | undefined; - if (dialog) { - dialog.closeDialog(); + if (!this.getDialog) { + return; } + const dialog = this.getDialog(); + if (!dialog) { + return; + } + dialog.closeDialog(); } protected render(): TemplateResult | void { @@ -482,7 +483,7 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { if (!entry) { return; } - showEntityRegistryDetailDialog(this, { + this.getDialog = showEntityRegistryDetailDialog(this, { entry, }); } diff --git a/src/panels/config/entities/show-dialog-entity-registry-detail.ts b/src/panels/config/entities/show-dialog-entity-registry-detail.ts index dcf295380e..4549579af4 100644 --- a/src/panels/config/entities/show-dialog-entity-registry-detail.ts +++ b/src/panels/config/entities/show-dialog-entity-registry-detail.ts @@ -1,5 +1,6 @@ import { fireEvent } from "../../../common/dom/fire_event"; import { EntityRegistryEntry } from "../../../data/entity_registry"; +import { DialogEntityRegistryDetail } from "./dialog-entity-registry-detail"; export interface EntityRegistryDetailDialogParams { entry: EntityRegistryEntry; @@ -10,13 +11,22 @@ export const loadEntityRegistryDetailDialog = () => /* webpackChunkName: "entity-registry-detail-dialog" */ "./dialog-entity-registry-detail" ); +const getDialog = () => { + return document + .querySelector("home-assistant")! + .shadowRoot!.querySelector("dialog-entity-registry-detail") as + | DialogEntityRegistryDetail + | undefined; +}; + export const showEntityRegistryDetailDialog = ( element: HTMLElement, systemLogDetailParams: EntityRegistryDetailDialogParams -): void => { +): (() => DialogEntityRegistryDetail | undefined) => { fireEvent(element, "show-dialog", { dialogTag: "dialog-entity-registry-detail", dialogImport: loadEntityRegistryDetailDialog, dialogParams: systemLogDetailParams, }); + return getDialog; };