mirror of
				https://github.com/home-assistant/frontend.git
				synced 2025-10-31 06:29:43 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			20221213.1
			...
			dev-tools-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 94215dc50b | 
							
								
								
									
										138
									
								
								src/dialogs/developert-tools/ha-developer-tools-dialog.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								src/dialogs/developert-tools/ha-developer-tools-dialog.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | |||||||
|  | import { mdiClose } from "@mdi/js"; | ||||||
|  | import "@polymer/paper-tabs"; | ||||||
|  | import { | ||||||
|  |   css, | ||||||
|  |   CSSResultGroup, | ||||||
|  |   html, | ||||||
|  |   LitElement, | ||||||
|  |   PropertyValues, | ||||||
|  |   TemplateResult, | ||||||
|  | } from "lit"; | ||||||
|  | import { customElement, property, state, query } from "lit/decorators"; | ||||||
|  | import { fireEvent } from "../../common/dom/fire_event"; | ||||||
|  | import { haStyleDialog } from "../../resources/styles"; | ||||||
|  | import type { HomeAssistant, Route } from "../../types"; | ||||||
|  | import "../../components/ha-dialog"; | ||||||
|  | import "../../components/ha-tabs"; | ||||||
|  | import "../../components/ha-icon-button"; | ||||||
|  | import "../../panels/developer-tools/developer-tools-router"; | ||||||
|  | import type { HaDialog } from "../../components/ha-dialog"; | ||||||
|  | import "@material/mwc-button/mwc-button"; | ||||||
|  |  | ||||||
|  | @customElement("ha-developer-tools-dialog") | ||||||
|  | export class HaDeveloperToolsDialog extends LitElement { | ||||||
|  |   @property({ attribute: false }) public hass!: HomeAssistant; | ||||||
|  |  | ||||||
|  |   @state() private _opened = false; | ||||||
|  |  | ||||||
|  |   @state() private _route: Route = { | ||||||
|  |     prefix: "/developer-tools", | ||||||
|  |     path: "/state", | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   @query("ha-dialog", true) private _dialog!: HaDialog; | ||||||
|  |  | ||||||
|  |   public async showDialog(): Promise<void> { | ||||||
|  |     this._opened = true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public async closeDialog(): Promise<void> { | ||||||
|  |     this._opened = false; | ||||||
|  |     fireEvent(this, "dialog-closed", { dialog: this.localName }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected render(): TemplateResult { | ||||||
|  |     if (!this._opened) { | ||||||
|  |       return html``; | ||||||
|  |     } | ||||||
|  |     return html` | ||||||
|  |       <ha-dialog open @closed=${this.closeDialog}> | ||||||
|  |         <div class="header"> | ||||||
|  |           <ha-tabs | ||||||
|  |             scrollable | ||||||
|  |             attr-for-selected="page-name" | ||||||
|  |             .selected=${this._route.path.substr(1)} | ||||||
|  |             @iron-activate=${this.handlePageSelected} | ||||||
|  |           > | ||||||
|  |             <paper-tab page-name="state"> | ||||||
|  |               ${this.hass.localize( | ||||||
|  |                 "ui.panel.developer-tools.tabs.states.title" | ||||||
|  |               )} | ||||||
|  |             </paper-tab> | ||||||
|  |             <paper-tab page-name="service"> | ||||||
|  |               ${this.hass.localize( | ||||||
|  |                 "ui.panel.developer-tools.tabs.services.title" | ||||||
|  |               )} | ||||||
|  |             </paper-tab> | ||||||
|  |             <paper-tab page-name="template"> | ||||||
|  |               ${this.hass.localize( | ||||||
|  |                 "ui.panel.developer-tools.tabs.templates.title" | ||||||
|  |               )} | ||||||
|  |             </paper-tab> | ||||||
|  |             <paper-tab page-name="event"> | ||||||
|  |               ${this.hass.localize( | ||||||
|  |                 "ui.panel.developer-tools.tabs.events.title" | ||||||
|  |               )} | ||||||
|  |             </paper-tab> | ||||||
|  |             <paper-tab page-name="statistics"> | ||||||
|  |               ${this.hass.localize( | ||||||
|  |                 "ui.panel.developer-tools.tabs.statistics.title" | ||||||
|  |               )} | ||||||
|  |             </paper-tab> | ||||||
|  |           </ha-tabs> | ||||||
|  |           <ha-icon-button | ||||||
|  |             .path=${mdiClose} | ||||||
|  |             @click=${this.closeDialog} | ||||||
|  |           ></ha-icon-button> | ||||||
|  |         </div> | ||||||
|  |         <developer-tools-router | ||||||
|  |           .route=${this._route} | ||||||
|  |           .narrow=${document.body.clientWidth < 600} | ||||||
|  |           .hass=${this.hass} | ||||||
|  |         ></developer-tools-router> | ||||||
|  |       </ha-dialog> | ||||||
|  |     `; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected firstUpdated(changedProps: PropertyValues) { | ||||||
|  |     super.updated(changedProps); | ||||||
|  |     this.hass.loadBackendTranslation("title"); | ||||||
|  |     this.hass.loadFragmentTranslation("developer-tools"); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private handlePageSelected(ev) { | ||||||
|  |     const newPage = ev.detail.item.getAttribute("page-name"); | ||||||
|  |     if (newPage !== this._route.path.substr(1)) { | ||||||
|  |       this._route = { | ||||||
|  |         prefix: "/developer-tools", | ||||||
|  |         path: `/${newPage}`, | ||||||
|  |       }; | ||||||
|  |     } else { | ||||||
|  |       // scrollTo(0, 0); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static get styles(): CSSResultGroup { | ||||||
|  |     return [ | ||||||
|  |       haStyleDialog, | ||||||
|  |       css` | ||||||
|  |         ha-dialog { | ||||||
|  |           --mdc-dialog-min-width: 100vw; | ||||||
|  |           --mdc-dialog-min-height: 100vh; | ||||||
|  |         } | ||||||
|  |         .header { | ||||||
|  |           display: flex; | ||||||
|  |         } | ||||||
|  |         ha-tabs { | ||||||
|  |           flex: 1; | ||||||
|  |         } | ||||||
|  |       `, | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | declare global { | ||||||
|  |   interface HTMLElementTagNameMap { | ||||||
|  |     "ha-developer-tools-dialog": HaDeveloperToolsDialog; | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								src/dialogs/developert-tools/show-dialog-developer-tools.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/dialogs/developert-tools/show-dialog-developer-tools.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | import { fireEvent } from "../../common/dom/fire_event"; | ||||||
|  |  | ||||||
|  | export const loadDeveloperToolDialog = () => | ||||||
|  |   import("./ha-developer-tools-dialog"); | ||||||
|  |  | ||||||
|  | export const showDeveloperToolDialog = (element: HTMLElement): void => { | ||||||
|  |   fireEvent(element, "show-dialog", { | ||||||
|  |     dialogTag: "ha-developer-tools-dialog", | ||||||
|  |     dialogImport: loadDeveloperToolDialog, | ||||||
|  |     dialogParams: {}, | ||||||
|  |   }); | ||||||
|  | }; | ||||||
| @@ -1,5 +1,6 @@ | |||||||
| import type { PropertyValues } from "lit"; | import type { PropertyValues } from "lit"; | ||||||
| import tinykeys from "tinykeys"; | import tinykeys from "tinykeys"; | ||||||
|  | import { showDeveloperToolDialog } from "../dialogs/developert-tools/show-dialog-developer-tools"; | ||||||
| import { | import { | ||||||
|   QuickBarParams, |   QuickBarParams, | ||||||
|   showQuickBar, |   showQuickBar, | ||||||
| @@ -32,6 +33,7 @@ export default <T extends Constructor<HassElement>>(superClass: T) => | |||||||
|       tinykeys(window, { |       tinykeys(window, { | ||||||
|         e: (ev) => this._showQuickBar(ev), |         e: (ev) => this._showQuickBar(ev), | ||||||
|         c: (ev) => this._showQuickBar(ev, true), |         c: (ev) => this._showQuickBar(ev, true), | ||||||
|  |         d: () => showDeveloperToolDialog(this), | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user