mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-18 14:56:37 +00:00
Fix double toolbars on error/loading in dev tools (#6380)
This commit is contained in:
parent
d1dd8231cd
commit
90e14762e3
@ -28,7 +28,7 @@ import {
|
|||||||
getLovelaceCollection,
|
getLovelaceCollection,
|
||||||
LovelaceConfig,
|
LovelaceConfig,
|
||||||
} from "../../../../src/data/lovelace";
|
} from "../../../../src/data/lovelace";
|
||||||
import "../../../../src/layouts/loading-screen";
|
import "../../../../src/layouts/hass-loading-screen";
|
||||||
import { generateDefaultViewConfig } from "../../../../src/panels/lovelace/common/generate-lovelace-config";
|
import { generateDefaultViewConfig } from "../../../../src/panels/lovelace/common/generate-lovelace-config";
|
||||||
import "./hc-layout";
|
import "./hc-layout";
|
||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
@ -47,7 +47,7 @@ class HcCast extends LitElement {
|
|||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
if (this.lovelaceConfig === undefined) {
|
if (this.lovelaceConfig === undefined) {
|
||||||
return html` <loading-screen></loading-screen>> `;
|
return html` <hass-loading-screen no-toolbar></hass-loading-screen>> `;
|
||||||
}
|
}
|
||||||
|
|
||||||
const error =
|
const error =
|
||||||
|
@ -27,7 +27,7 @@ import {
|
|||||||
saveTokens,
|
saveTokens,
|
||||||
} from "../../../../src/common/auth/token_storage";
|
} from "../../../../src/common/auth/token_storage";
|
||||||
import "../../../../src/components/ha-icon";
|
import "../../../../src/components/ha-icon";
|
||||||
import "../../../../src/layouts/loading-screen";
|
import "../../../../src/layouts/hass-loading-screen";
|
||||||
import { registerServiceWorker } from "../../../../src/util/register-service-worker";
|
import { registerServiceWorker } from "../../../../src/util/register-service-worker";
|
||||||
import "./hc-layout";
|
import "./hc-layout";
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ export class HcConnect extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.castManager === undefined || this.loading) {
|
if (this.castManager === undefined || this.loading) {
|
||||||
return html` <loading-screen></loading-screen> `;
|
return html` <hass-loading-screen no-toolbar></hass-loading-screen> `;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.castManager === null) {
|
if (this.castManager === null) {
|
||||||
|
@ -19,7 +19,7 @@ import {
|
|||||||
reloadHassioAddons,
|
reloadHassioAddons,
|
||||||
} from "../../../src/data/hassio/addon";
|
} from "../../../src/data/hassio/addon";
|
||||||
import "../../../src/layouts/hass-tabs-subpage";
|
import "../../../src/layouts/hass-tabs-subpage";
|
||||||
import "../../../src/layouts/loading-screen";
|
import "../../../src/layouts/hass-loading-screen";
|
||||||
import { HomeAssistant, Route } from "../../../src/types";
|
import { HomeAssistant, Route } from "../../../src/types";
|
||||||
import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories";
|
import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories";
|
||||||
import { supervisorTabs } from "../hassio-tabs";
|
import { supervisorTabs } from "../hassio-tabs";
|
||||||
@ -108,7 +108,7 @@ class HassioAddonStore extends LitElement {
|
|||||||
</mwc-list-item>
|
</mwc-list-item>
|
||||||
</ha-button-menu>
|
</ha-button-menu>
|
||||||
${repos.length === 0
|
${repos.length === 0
|
||||||
? html`<loading-screen></loading-screen>`
|
? html`<hass-loading-screen no-toolbar></hass-loading-screen>`
|
||||||
: html`
|
: html`
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<search-input
|
<search-input
|
||||||
|
@ -12,7 +12,7 @@ import {
|
|||||||
fetchHassioAddonDocumentation,
|
fetchHassioAddonDocumentation,
|
||||||
HassioAddonDetails,
|
HassioAddonDetails,
|
||||||
} from "../../../../src/data/hassio/addon";
|
} from "../../../../src/data/hassio/addon";
|
||||||
import "../../../../src/layouts/loading-screen";
|
import "../../../../src/layouts/hass-loading-screen";
|
||||||
import "../../../../src/components/ha-circular-progress";
|
import "../../../../src/components/ha-circular-progress";
|
||||||
import { haStyle } from "../../../../src/resources/styles";
|
import { haStyle } from "../../../../src/resources/styles";
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
@ -44,7 +44,7 @@ class HassioAddonDocumentationDashboard extends LitElement {
|
|||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
${this._content
|
${this._content
|
||||||
? html`<ha-markdown .content=${this._content}></ha-markdown>`
|
? html`<ha-markdown .content=${this._content}></ha-markdown>`
|
||||||
: html`<loading-screen></loading-screen>`}
|
: html`<hass-loading-screen no-toolbar></hass-loading-screen>`}
|
||||||
</div>
|
</div>
|
||||||
</ha-card>
|
</ha-card>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,7 +13,7 @@ import {
|
|||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import "../../../src/components/ha-card";
|
import "../../../src/components/ha-card";
|
||||||
import { fetchHassioLogs } from "../../../src/data/hassio/supervisor";
|
import { fetchHassioLogs } from "../../../src/data/hassio/supervisor";
|
||||||
import "../../../src/layouts/loading-screen";
|
import "../../../src/layouts/hass-loading-screen";
|
||||||
import { haStyle } from "../../../src/resources/styles";
|
import { haStyle } from "../../../src/resources/styles";
|
||||||
import { HomeAssistant } from "../../../src/types";
|
import { HomeAssistant } from "../../../src/types";
|
||||||
import "../components/hassio-ansi-to-html";
|
import "../components/hassio-ansi-to-html";
|
||||||
@ -98,7 +98,7 @@ class HassioSupervisorLog extends LitElement {
|
|||||||
? html`<hassio-ansi-to-html
|
? html`<hassio-ansi-to-html
|
||||||
.content=${this._content}
|
.content=${this._content}
|
||||||
></hassio-ansi-to-html>`
|
></hassio-ansi-to-html>`
|
||||||
: html`<loading-screen></loading-screen>`}
|
: html`<hass-loading-screen no-toolbar></hass-loading-screen>`}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<mwc-button @click=${this._refresh}>Refresh</mwc-button>
|
<mwc-button @click=${this._refresh}>Refresh</mwc-button>
|
||||||
|
@ -12,29 +12,56 @@ import "./hass-subpage";
|
|||||||
|
|
||||||
@customElement("hass-error-screen")
|
@customElement("hass-error-screen")
|
||||||
class HassErrorScreen extends LitElement {
|
class HassErrorScreen extends LitElement {
|
||||||
@property()
|
@property({ type: Boolean }) public toolbar = true;
|
||||||
public error?: string;
|
|
||||||
|
@property() public error?: string;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
return html`
|
return html`
|
||||||
<hass-subpage>
|
${this.toolbar
|
||||||
<div class="content">
|
? html`<div class="toolbar">
|
||||||
<h3>${this.error}</h3>
|
<ha-icon-button-arrow-prev
|
||||||
<slot>
|
@click=${this._handleBack}
|
||||||
<mwc-button @click=${this._backTapped}>go back</mwc-button>
|
></ha-icon-button-arrow-prev>
|
||||||
</slot>
|
</div>`
|
||||||
</div>
|
: ""}
|
||||||
</hass-subpage>
|
<div class="content">
|
||||||
|
<h3>${this.error}</h3>
|
||||||
|
<slot>
|
||||||
|
<mwc-button @click=${this._handleBack}>go back</mwc-button>
|
||||||
|
</slot>
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _backTapped(): void {
|
private _handleBack(): void {
|
||||||
history.back();
|
history.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles(): CSSResultArray {
|
static get styles(): CSSResultArray {
|
||||||
return [
|
return [
|
||||||
css`
|
css`
|
||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
background-color: var(--primary-background-color);
|
||||||
|
}
|
||||||
|
.toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 20px;
|
||||||
|
height: 65px;
|
||||||
|
padding: 0 16px;
|
||||||
|
pointer-events: none;
|
||||||
|
background-color: var(--app-header-background-color);
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--app-header-text-color, white);
|
||||||
|
border-bottom: var(--app-header-border-bottom, none);
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
ha-icon-button-arrow-prev {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
.content {
|
.content {
|
||||||
height: calc(100% - 64px);
|
height: calc(100% - 64px);
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -16,7 +16,10 @@ import { HomeAssistant } from "../types";
|
|||||||
|
|
||||||
@customElement("hass-loading-screen")
|
@customElement("hass-loading-screen")
|
||||||
class HassLoadingScreen extends LitElement {
|
class HassLoadingScreen extends LitElement {
|
||||||
@property({ type: Boolean }) public rootnav? = false;
|
@property({ type: Boolean, attribute: "no-toolbar" })
|
||||||
|
public noToolbar = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean }) public rootnav = false;
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
|
||||||
@ -24,20 +27,22 @@ class HassLoadingScreen extends LitElement {
|
|||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
return html`
|
return html`
|
||||||
<app-toolbar>
|
${this.noToolbar
|
||||||
${this.rootnav
|
? ""
|
||||||
? html`
|
: html`<div class="toolbar">
|
||||||
<ha-menu-button
|
${this.rootnav
|
||||||
.hass=${this.hass}
|
? html`
|
||||||
.narrow=${this.narrow}
|
<ha-menu-button
|
||||||
></ha-menu-button>
|
.hass=${this.hass}
|
||||||
`
|
.narrow=${this.narrow}
|
||||||
: html`
|
></ha-menu-button>
|
||||||
<ha-icon-button-arrow-prev
|
`
|
||||||
@click=${this._handleBack}
|
: html`
|
||||||
></ha-icon-button-arrow-prev>
|
<ha-icon-button-arrow-prev
|
||||||
`}
|
@click=${this._handleBack}
|
||||||
</app-toolbar>
|
></ha-icon-button-arrow-prev>
|
||||||
|
`}
|
||||||
|
</div>`}
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<ha-circular-progress active></ha-circular-progress>
|
<ha-circular-progress active></ha-circular-progress>
|
||||||
</div>
|
</div>
|
||||||
@ -57,6 +62,23 @@ class HassLoadingScreen extends LitElement {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: var(--primary-background-color);
|
background-color: var(--primary-background-color);
|
||||||
}
|
}
|
||||||
|
.toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 20px;
|
||||||
|
height: 65px;
|
||||||
|
padding: 0 16px;
|
||||||
|
pointer-events: none;
|
||||||
|
background-color: var(--app-header-background-color);
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--app-header-text-color, white);
|
||||||
|
border-bottom: var(--app-header-border-bottom, none);
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
ha-menu-button,
|
||||||
|
ha-icon-button-arrow-prev {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
.content {
|
.content {
|
||||||
height: calc(100% - 64px);
|
height: calc(100% - 64px);
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -169,9 +169,9 @@ export class HassRouterPage extends UpdatingElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show error screen
|
// Show error screen
|
||||||
const errorEl = document.createElement("hass-error-screen");
|
this.appendChild(
|
||||||
errorEl.error = `Error while loading page ${newPage}.`;
|
this.createErrorScreen(`Error while loading page ${newPage}.`)
|
||||||
this.appendChild(errorEl);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// If we don't show loading screen, just show the panel.
|
// If we don't show loading screen, just show the panel.
|
||||||
@ -252,6 +252,12 @@ export class HassRouterPage extends UpdatingElement {
|
|||||||
return document.createElement("hass-loading-screen");
|
return document.createElement("hass-loading-screen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected createErrorScreen(error: string) {
|
||||||
|
const errorEl = document.createElement("hass-error-screen");
|
||||||
|
errorEl.error = error;
|
||||||
|
return errorEl;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rebuild the current panel.
|
* Rebuild the current panel.
|
||||||
*
|
*
|
||||||
|
@ -36,7 +36,7 @@ class HassSubpage extends LitElement {
|
|||||||
class=${classMap({ hidden: !this.showBackButton })}
|
class=${classMap({ hidden: !this.showBackButton })}
|
||||||
></ha-icon-button-arrow-prev>
|
></ha-icon-button-arrow-prev>
|
||||||
|
|
||||||
<div main-title>${this.header}</div>
|
<div class="main-title">${this.header}</div>
|
||||||
<slot name="toolbar-icon"></slot>
|
<slot name="toolbar-icon"></slot>
|
||||||
</div>
|
</div>
|
||||||
<div class="content" @scroll=${this._saveScrollPos}><slot></slot></div>
|
<div class="content" @scroll=${this._saveScrollPos}><slot></slot></div>
|
||||||
@ -74,7 +74,6 @@ class HassSubpage extends LitElement {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
ha-menu-button,
|
|
||||||
ha-icon-button-arrow-prev,
|
ha-icon-button-arrow-prev,
|
||||||
::slotted([slot="toolbar-icon"]) {
|
::slotted([slot="toolbar-icon"]) {
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
@ -84,7 +83,7 @@ class HassSubpage extends LitElement {
|
|||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
[main-title] {
|
.main-title {
|
||||||
margin: 0 0 0 24px;
|
margin: 0 0 0 24px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import {
|
|
||||||
css,
|
|
||||||
CSSResult,
|
|
||||||
customElement,
|
|
||||||
html,
|
|
||||||
LitElement,
|
|
||||||
TemplateResult,
|
|
||||||
} from "lit-element";
|
|
||||||
import "../components/ha-circular-progress";
|
|
||||||
|
|
||||||
@customElement("loading-screen")
|
|
||||||
class LoadingScreen extends LitElement {
|
|
||||||
protected render(): TemplateResult {
|
|
||||||
return html` <ha-circular-progress active></ha-circular-progress> `;
|
|
||||||
}
|
|
||||||
|
|
||||||
static get styles(): CSSResult {
|
|
||||||
return css`
|
|
||||||
:host {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
interface HTMLElementTagNameMap {
|
|
||||||
"loading-screen": LoadingScreen;
|
|
||||||
}
|
|
||||||
}
|
|
@ -40,6 +40,18 @@ class DeveloperToolsRouter extends HassRouterPage {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
protected createLoadingScreen() {
|
||||||
|
const loadingScreen = super.createLoadingScreen();
|
||||||
|
loadingScreen.noToolbar = true;
|
||||||
|
return loadingScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected createErrorScreen(error: string) {
|
||||||
|
const errorEl = super.createErrorScreen(error);
|
||||||
|
errorEl.toolbar = false;
|
||||||
|
return errorEl;
|
||||||
|
}
|
||||||
|
|
||||||
protected updatePageEl(el) {
|
protected updatePageEl(el) {
|
||||||
if ("setProperties" in el) {
|
if ("setProperties" in el) {
|
||||||
// As long as we have Polymer pages
|
// As long as we have Polymer pages
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import "@polymer/app-layout/app-header-layout/app-header-layout";
|
|
||||||
import "@polymer/app-layout/app-header/app-header";
|
import "@polymer/app-layout/app-header/app-header";
|
||||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||||
|
import "../../layouts/ha-app-layout";
|
||||||
import "../../components/ha-icon-button";
|
import "../../components/ha-icon-button";
|
||||||
import "@polymer/paper-tabs/paper-tab";
|
import "@polymer/paper-tabs/paper-tab";
|
||||||
import "@polymer/paper-tabs/paper-tabs";
|
import "@polymer/paper-tabs/paper-tabs";
|
||||||
@ -36,7 +36,7 @@ class PanelDeveloperTools extends LitElement {
|
|||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
const page = this._page;
|
const page = this._page;
|
||||||
return html`
|
return html`
|
||||||
<app-header-layout>
|
<ha-app-layout>
|
||||||
<app-header fixed slot="header">
|
<app-header fixed slot="header">
|
||||||
<app-toolbar>
|
<app-toolbar>
|
||||||
<ha-menu-button
|
<ha-menu-button
|
||||||
@ -78,7 +78,7 @@ class PanelDeveloperTools extends LitElement {
|
|||||||
.narrow=${this.narrow}
|
.narrow=${this.narrow}
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
></developer-tools-router>
|
></developer-tools-router>
|
||||||
</app-header-layout>
|
</ha-app-layout>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +107,10 @@ class PanelDeveloperTools extends LitElement {
|
|||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
--paper-card-header-color: var(--primary-text-color);
|
--paper-card-header-color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
|
developer-tools-router {
|
||||||
|
display: block;
|
||||||
|
height: calc(100vh - 112px);
|
||||||
|
}
|
||||||
paper-tabs {
|
paper-tabs {
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
--paper-tabs-selection-bar-color: #fff;
|
--paper-tabs-selection-bar-color: #fff;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user