+ Loaded Components
+
+ The following components are currently loaded:
+
+
+
+ `;
+ }
+
+ static get properties() {
+ return {
+ _hass: Object,
+ _components: Array,
+
+ _opened: {
+ type: Boolean,
+ value: false,
+ },
+ };
+ }
+
+ ready() {
+ super.ready();
+ }
+
+ showDialog({ hass }) {
+ this.hass = hass;
+ this._opened = true;
+ this._components = this.hass.config.components.sort();
+ setTimeout(() => this.$.dialog.center(), 0);
+ }
+}
+
+customElements.define('ha-loaded-components', HaLoadedComponents);
diff --git a/src/panels/dev-info/ha-panel-dev-info.js b/src/panels/dev-info/ha-panel-dev-info.js
index 71abb887c5..a0ad9dcac9 100644
--- a/src/panels/dev-info/ha-panel-dev-info.js
+++ b/src/panels/dev-info/ha-panel-dev-info.js
@@ -17,7 +17,11 @@ import '../../resources/ha-style.js';
import formatDateTime from '../../common/datetime/format_date_time.js';
import formatTime from '../../common/datetime/format_time.js';
-class HaPanelDevInfo extends PolymerElement {
+import EventsMixin from '../../mixins/events-mixin.js';
+
+let registeredDialog = false;
+
+class HaPanelDevInfo extends EventsMixin(PolymerElement) {
static get template() {
return html`