-
+
`;
}
diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts
index 3000c3ba91..ddc424f20d 100644
--- a/src/panels/config/automation/ha-automation-editor.ts
+++ b/src/panels/config/automation/ha-automation-editor.ts
@@ -14,8 +14,6 @@ import {
mdiStopCircleOutline,
mdiTransitConnection,
} from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import { UnsubscribeFunc } from "home-assistant-js-websocket";
import {
css,
@@ -54,7 +52,6 @@ import {
showAlertDialog,
showConfirmationDialog,
} from "../../../dialogs/generic/show-dialog-box";
-import "../../../layouts/ha-app-layout";
import "../../../layouts/hass-subpage";
import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin";
import { haStyle } from "../../../resources/styles";
diff --git a/src/panels/config/core/updates/dialog-join-beta.ts b/src/panels/config/core/updates/dialog-join-beta.ts
index c6647b93a6..600ac954c9 100644
--- a/src/panels/config/core/updates/dialog-join-beta.ts
+++ b/src/panels/config/core/updates/dialog-join-beta.ts
@@ -5,7 +5,6 @@ import { customElement, property, state } from "lit/decorators";
import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/ha-alert";
import { createCloseHeading } from "../../../../components/ha-dialog";
-import "../../../../components/ha-header-bar";
import { HassDialog } from "../../../../dialogs/make-dialog-manager";
import { haStyleDialog } from "../../../../resources/styles";
import { HomeAssistant } from "../../../../types";
diff --git a/src/panels/config/dashboard/ha-config-dashboard.ts b/src/panels/config/dashboard/ha-config-dashboard.ts
index 7c539b720d..b8d8ee15ab 100644
--- a/src/panels/config/dashboard/ha-config-dashboard.ts
+++ b/src/panels/config/dashboard/ha-config-dashboard.ts
@@ -6,8 +6,6 @@ import {
mdiPower,
mdiUpdate,
} from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import { HassEntities, UnsubscribeFunc } from "home-assistant-js-websocket";
import {
css,
@@ -28,6 +26,7 @@ import "../../../components/ha-list-item";
import "../../../components/ha-menu-button";
import "../../../components/ha-svg-icon";
import "../../../components/ha-tip";
+import "../../../components/ha-top-app-bar-fixed";
import { CloudStatus } from "../../../data/cloud";
import {
RepairsIssue,
@@ -41,7 +40,6 @@ import {
} from "../../../data/update";
import { showQuickBar } from "../../../dialogs/quick-bar/show-dialog-quick-bar";
import { showRestartDialog } from "../../../dialogs/restart/show-dialog-restart";
-import "../../../layouts/ha-app-layout";
import { PageNavigation } from "../../../layouts/hass-tabs-subpage";
import { SubscribeMixin } from "../../../mixins/subscribe-mixin";
import { haStyle } from "../../../resources/styles";
@@ -182,43 +180,43 @@ class HaConfigDashboard extends SubscribeMixin(LitElement) {
this._repairsIssues;
return html`
-
-
-
-
- ${this.hass.localize("panel.config")}
-
-
-
+
+
+ ${this.hass.localize("panel.config")}
-
- ${this.hass.localize("ui.panel.config.updates.check_updates")}
-
-
+
+
+
-
- ${this.hass.localize(
- "ui.panel.config.system_dashboard.restart_homeassistant"
- )}
-
-
-
-
-
+
+ ${this.hass.localize("ui.panel.config.updates.check_updates")}
+
+
+
+
+ ${this.hass.localize(
+ "ui.panel.config.system_dashboard.restart_homeassistant"
+ )}
+
+
+
${this._tip}
-
+
`;
}
diff --git a/src/panels/config/network/supervisor-hostname.ts b/src/panels/config/network/supervisor-hostname.ts
index 85dd0bf471..ac03896260 100644
--- a/src/panels/config/network/supervisor-hostname.ts
+++ b/src/panels/config/network/supervisor-hostname.ts
@@ -10,7 +10,6 @@ import "../../../components/ha-card";
import "../../../components/ha-circular-progress";
import "../../../components/ha-expansion-panel";
import "../../../components/ha-formfield";
-import "../../../components/ha-header-bar";
import "../../../components/ha-icon-button";
import "../../../components/ha-radio";
import "../../../components/ha-settings-row";
diff --git a/src/panels/config/network/supervisor-network.ts b/src/panels/config/network/supervisor-network.ts
index e0a087886e..e6ac16e72b 100644
--- a/src/panels/config/network/supervisor-network.ts
+++ b/src/panels/config/network/supervisor-network.ts
@@ -14,7 +14,6 @@ import "../../../components/ha-card";
import "../../../components/ha-circular-progress";
import "../../../components/ha-expansion-panel";
import "../../../components/ha-formfield";
-import "../../../components/ha-header-bar";
import "../../../components/ha-icon-button";
import "../../../components/ha-radio";
import { extractApiErrorMessage } from "../../../data/hassio/common";
@@ -549,12 +548,6 @@ export class HassioNetwork extends LitElement {
static get styles(): CSSResultGroup {
return [
css`
- ha-header-bar {
- --mdc-theme-on-primary: var(--primary-text-color);
- --mdc-theme-primary: var(--mdc-theme-surface);
- flex-shrink: 0;
- }
-
mwc-tab-bar {
border-bottom: 1px solid
var(--mdc-dialog-scroll-divider-color, rgba(0, 0, 0, 0.12));
@@ -573,11 +566,6 @@ export class HassioNetwork extends LitElement {
mwc-button.scan {
margin-left: 8px;
}
-
- :host([rtl]) app-toolbar {
- direction: rtl;
- text-align: right;
- }
ha-expansion-panel {
--expansion-panel-summary-padding: 0 16px;
margin: 4px 0;
diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts
index 68cc411a2c..7858cde13c 100644
--- a/src/panels/config/script/ha-script-editor.ts
+++ b/src/panels/config/script/ha-script-editor.ts
@@ -9,8 +9,6 @@ import {
mdiPlay,
mdiTransitConnection,
} from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import {
css,
CSSResultGroup,
@@ -54,7 +52,6 @@ import {
triggerScript,
} from "../../../data/script";
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
-import "../../../layouts/ha-app-layout";
import "../../../layouts/hass-subpage";
import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin";
import { haStyle } from "../../../resources/styles";
diff --git a/src/panels/developer-tools/ha-panel-developer-tools.ts b/src/panels/developer-tools/ha-panel-developer-tools.ts
index 9f9f6f1f7f..728398a2c9 100644
--- a/src/panels/developer-tools/ha-panel-developer-tools.ts
+++ b/src/panels/developer-tools/ha-panel-developer-tools.ts
@@ -1,12 +1,9 @@
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import "@polymer/paper-tabs/paper-tab";
+import "@polymer/paper-tabs/paper-tabs";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import { navigate } from "../../common/navigate";
import "../../components/ha-menu-button";
-import "../../components/ha-tabs";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import { HomeAssistant, Route } from "../../types";
import "./developer-tools-router";
@@ -27,57 +24,54 @@ class PanelDeveloperTools extends LitElement {
protected render(): TemplateResult {
const page = this._page;
return html`
-
-
-
-
- ${this.hass.localize("panel.developer_tools")}
-
-
-
- ${this.hass.localize("ui.panel.developer-tools.tabs.yaml.title")}
-
-
- ${this.hass.localize(
- "ui.panel.developer-tools.tabs.states.title"
- )}
-
-
- ${this.hass.localize(
- "ui.panel.developer-tools.tabs.services.title"
- )}
-
-
- ${this.hass.localize(
- "ui.panel.developer-tools.tabs.templates.title"
- )}
-
-
- ${this.hass.localize(
- "ui.panel.developer-tools.tabs.events.title"
- )}
-
-
- ${this.hass.localize(
- "ui.panel.developer-tools.tabs.statistics.title"
- )}
-
-
-
-
-
+
+
`;
}
@@ -99,14 +93,36 @@ class PanelDeveloperTools extends LitElement {
haStyle,
css`
:host {
+ display: block;
+ height: 100%;
color: var(--primary-text-color);
--paper-card-header-color: var(--primary-text-color);
}
+ .header {
+ background-color: var(--app-header-background-color);
+ color: var(--app-header-text-color, white);
+ border-bottom: var(--app-header-border-bottom, none);
+ }
+ .toolbar {
+ height: var(--header-height);
+ display: flex;
+ align-items: center;
+ font-size: 20px;
+ padding: 0 16px;
+ font-weight: 400;
+ box-sizing: border-box;
+ }
+ .main-title {
+ margin: 0 0 0 24px;
+ line-height: 20px;
+ flex-grow: 1;
+ }
developer-tools-router {
display: block;
- height: calc(100vh - 104px);
+ height: calc(100% - var(--header-height) - 48px);
+ overflow: auto;
}
- ha-tabs {
+ paper-tabs {
margin-left: max(env(safe-area-inset-left), 24px);
margin-right: max(env(safe-area-inset-right), 24px);
--paper-tabs-selection-bar-color: var(
diff --git a/src/panels/energy/ha-panel-energy.ts b/src/panels/energy/ha-panel-energy.ts
index a81a6afef2..6c32b790ff 100644
--- a/src/panels/energy/ha-panel-energy.ts
+++ b/src/panels/energy/ha-panel-energy.ts
@@ -1,5 +1,3 @@
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import {
css,
CSSResultGroup,
@@ -11,12 +9,12 @@ import {
import { customElement, property, state } from "lit/decorators";
import "../../components/ha-menu-button";
import { LovelaceConfig } from "../../data/lovelace";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
import "../lovelace/components/hui-energy-period-selector";
import { Lovelace } from "../lovelace/types";
import "../lovelace/views/hui-view";
+import "../../components/ha-top-app-bar-fixed";
const ENERGY_LOVELACE_CONFIG: LovelaceConfig = {
views: [
@@ -62,24 +60,23 @@ class PanelEnergy extends LitElement {
protected render(): TemplateResult {
return html`
-
-
-
-
- ${this.hass.localize("panel.energy")}
- ${this.narrow
- ? ""
- : html`
-
- `}
-
-
+
+
+ ${this.hass.localize("panel.energy")}
+ ${this.narrow
+ ? ""
+ : html`
+
+ `}
-
+
`;
}
@@ -119,10 +116,6 @@ class PanelEnergy extends LitElement {
return [
haStyle,
css`
- app-toolbar {
- display: flex;
- justify-content: space-between;
- }
hui-energy-period-selector {
width: 100%;
padding-left: 16px;
diff --git a/src/panels/history/ha-panel-history.ts b/src/panels/history/ha-panel-history.ts
index 5a4af1673a..b5f1c2bc13 100644
--- a/src/panels/history/ha-panel-history.ts
+++ b/src/panels/history/ha-panel-history.ts
@@ -1,6 +1,4 @@
import { mdiFilterRemove, mdiRefresh } from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import {
addDays,
differenceInHours,
@@ -54,10 +52,11 @@ import {
HistoryResult,
subscribeHistory,
} from "../../data/history";
-import "../../layouts/ha-app-layout";
import { SubscribeMixin } from "../../mixins/subscribe-mixin";
import { haStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
+import "../../components/ha-top-app-bar-fixed";
+import "../../components/ha-icon-button-arrow-prev";
class HaPanelHistory extends SubscribeMixin(LitElement) {
@property({ attribute: false }) hass!: HomeAssistant;
@@ -137,40 +136,40 @@ class HaPanelHistory extends SubscribeMixin(LitElement) {
protected render() {
return html`
-
-
-
- ${this._showBack
- ? html`
-
- `
- : html`
-
- `}
- ${this.hass.localize("panel.history")}
- ${this._targetPickerValue
- ? html`
-
- `
- : ""}
-
-
-
+
+ ${this._showBack
+ ? html`
+
+ `
+ : html`
+
+ `}
+ ${this.hass.localize("panel.history")}
+ ${this._targetPickerValue
+ ? html`
+
+ `
+ : ""}
+
@@ -210,7 +209,7 @@ class HaPanelHistory extends SubscribeMixin(LitElement) {
`}
-
+
`;
}
diff --git a/src/panels/logbook/ha-panel-logbook.ts b/src/panels/logbook/ha-panel-logbook.ts
index 45adbd6180..aba47b77d4 100644
--- a/src/panels/logbook/ha-panel-logbook.ts
+++ b/src/panels/logbook/ha-panel-logbook.ts
@@ -1,6 +1,4 @@
import { mdiRefresh } from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import {
addDays,
endOfToday,
@@ -24,9 +22,10 @@ import "../../components/entity/ha-entity-picker";
import "../../components/ha-date-range-picker";
import type { DateRangePickerRanges } from "../../components/ha-date-range-picker";
import "../../components/ha-icon-button";
+import "../../components/ha-icon-button-arrow-prev";
import "../../components/ha-menu-button";
+import "../../components/ha-top-app-bar-fixed";
import { filterLogbookCompatibleEntities } from "../../data/logbook";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
import "./ha-logbook";
@@ -64,29 +63,28 @@ export class HaPanelLogbook extends LitElement {
protected render() {
return html`
-
-
-
- ${this._showBack
- ? html`
-
- `
- : html`
-
- `}
- ${this.hass.localize("panel.logbook")}
-
-
-
+
+ ${this._showBack
+ ? html`
+
+ `
+ : html`
+
+ `}
+ ${this.hass.localize("panel.logbook")}
+
-
+
`;
}
diff --git a/src/panels/lovelace/components/hui-energy-period-selector.ts b/src/panels/lovelace/components/hui-energy-period-selector.ts
index ef733beeb4..4cfc118b69 100644
--- a/src/panels/lovelace/components/hui-energy-period-selector.ts
+++ b/src/panels/lovelace/components/hui-energy-period-selector.ts
@@ -44,7 +44,7 @@ export class HuiEnergyPeriodSelector extends SubscribeMixin(LitElement) {
@property() public collectionKey?: string;
- @property({ type: Boolean, reflect: true }) public narrow = false;
+ @property({ type: Boolean, reflect: true }) public narrow?;
@state() _startDate?: Date;
@@ -56,7 +56,9 @@ export class HuiEnergyPeriodSelector extends SubscribeMixin(LitElement) {
public connectedCallback() {
super.connectedCallback();
- toggleAttribute(this, "narrow", this.offsetWidth < 600);
+ if (this.narrow !== false) {
+ toggleAttribute(this, "narrow", this.offsetWidth < 600);
+ }
}
public hassSubscribe(): UnsubscribeFunc[] {
diff --git a/src/panels/lovelace/hui-editor.ts b/src/panels/lovelace/hui-editor.ts
index 4d200be7a5..9bf7cb9cc5 100644
--- a/src/panels/lovelace/hui-editor.ts
+++ b/src/panels/lovelace/hui-editor.ts
@@ -1,8 +1,6 @@
import { undoDepth } from "@codemirror/commands";
import "@material/mwc-button";
import { mdiClose } from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import { dump, load } from "js-yaml";
import {
css,
@@ -25,11 +23,11 @@ import {
showAlertDialog,
showConfirmationDialog,
} from "../../dialogs/generic/show-dialog-box";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import type { HomeAssistant } from "../../types";
import { showToast } from "../../util/toast";
import type { Lovelace } from "./types";
+import "../../components/ha-top-app-bar-fixed";
const lovelaceStruct = type({
title: optional(string()),
@@ -50,43 +48,38 @@ class LovelaceFullConfigEditor extends LitElement {
protected render(): TemplateResult | void {
return html`
-
-
-
-
-
- ${this.hass!.localize(
- "ui.panel.lovelace.editor.raw_editor.header"
- )}
-
-
+ ${this.hass!.localize(
+ "ui.panel.lovelace.editor.raw_editor.save"
+ )}
-
+
`;
}
@@ -142,15 +135,11 @@ class LovelaceFullConfigEditor extends LitElement {
css`
:host {
--code-mirror-height: 100%;
- }
-
- ha-app-layout {
- height: 100vh;
- }
-
- app-toolbar {
- background-color: var(--app-header-edit-background-color, #455a64);
- color: var(--app-header-edit-text-color, #fff);
+ --app-header-background-color: var(
+ --app-header-edit-background-color,
+ #455a64
+ );
+ --app-header-text-color: var(--app-header-edit-text-color, #fff);
}
mwc-button[disabled] {
@@ -158,14 +147,14 @@ class LovelaceFullConfigEditor extends LitElement {
border-radius: 4px;
}
- .comments {
- font-size: 16px;
- }
-
.content {
height: calc(100vh - var(--header-height));
}
+ .comments {
+ font-size: 16px;
+ }
+
.save-button {
opacity: 0;
font-size: 14px;
diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts
index ae5bef430e..84ffc69bbe 100644
--- a/src/panels/lovelace/hui-root.ts
+++ b/src/panels/lovelace/hui-root.ts
@@ -16,9 +16,6 @@ import {
mdiShape,
mdiViewDashboard,
} from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-scroll-effects/effects/waterfall";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import "@polymer/paper-tabs/paper-tab";
import "@polymer/paper-tabs/paper-tabs";
import {
@@ -35,7 +32,6 @@ import { ifDefined } from "lit/directives/if-defined";
import memoizeOne from "memoize-one";
import { isComponentLoaded } from "../../common/config/is_component_loaded";
import { fireEvent } from "../../common/dom/fire_event";
-import scrollToTarget from "../../common/dom/scroll-to-target";
import { shouldHandleRequestSelectedEvent } from "../../common/mwc/handle-request-selected-event";
import { navigate } from "../../common/navigate";
import { constructUrlCurrentPath } from "../../common/url/construct-url";
@@ -66,8 +62,6 @@ import {
} from "../../dialogs/generic/show-dialog-box";
import { showQuickBar } from "../../dialogs/quick-bar/show-dialog-quick-bar";
import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-ha-voice-command-dialog";
-import "../../layouts/ha-app-layout";
-import type { haAppLayout } from "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import type { HomeAssistant } from "../../types";
import { documentationUrl } from "../../util/documentation-url";
@@ -93,7 +87,7 @@ class HUIRoot extends LitElement {
@state() private _curView?: number | "hass-unused-entities";
- @query("ha-app-layout", true) private _appLayout!: haAppLayout;
+ @query("#view", true) _view!: HTMLDivElement;
private _viewCache?: { [viewId: string]: HUIView };
@@ -121,20 +115,20 @@ class HUIRoot extends LitElement {
typeof this._curView === "number" ? views[this._curView] : undefined;
return html`
-
-
- ${this._editMode
- ? html`
-
-
+
+ ${this._editMode
+ ? html`
+
+ ${views.map(
+ (view) => html`
+ e.user === this.hass!.user?.id
+ )) ||
+ view.visible === false)
+ ),
+ })}
+ >
+ ${this._editMode
+ ? html`
+
+ `
+ : ""}
+ ${view.icon
+ ? html`
+
+ `
+ : view.title || "Unnamed view"}
+ ${this._editMode
+ ? html`
+
+
+ `
+ : ""}
+
+ `
+ )}
+ ${this._editMode
+ ? html`
+
+ `
+ : ""}
+
`
: ""}
-
+
-
+
`;
}
@@ -668,10 +672,6 @@ class HUIRoot extends LitElement {
return this.lovelace!.editMode;
}
- private get _layout(): any {
- return this.shadowRoot!.getElementById("layout");
- }
-
private get _viewRoot(): HTMLDivElement {
return this.shadowRoot!.getElementById("view") as HTMLDivElement;
}
@@ -862,7 +862,7 @@ class HUIRoot extends LitElement {
const path = this.config.views[viewIndex].path || viewIndex;
this._navigateToView(path);
}
- scrollToTarget(this, this._layout.header.scrollTarget);
+ this._view.scrollTo(0, 0);
}
private _selectView(viewIndex: HUIRoot["_curView"], force: boolean): void {
@@ -920,12 +920,9 @@ class HUIRoot extends LitElement {
const configBackground = viewConfig.background || this.config.background;
if (configBackground) {
- this._appLayout.style.setProperty(
- "--lovelace-background",
- configBackground
- );
+ this.style.setProperty("--lovelace-background", configBackground);
} else {
- this._appLayout.style.removeProperty("--lovelace-background");
+ this.style.removeProperty("--lovelace-background");
}
root.appendChild(view);
@@ -942,20 +939,43 @@ class HUIRoot extends LitElement {
-webkit-user-select: none;
-moz-user-select: none;
}
-
- ha-app-layout {
- min-height: 100%;
+ .header {
+ background-color: var(--app-header-background-color);
+ color: var(--app-header-text-color, white);
+ border-bottom: var(--app-header-border-bottom, none);
+ position: fixed;
+ top: 0;
+ width: var(--mdc-top-app-bar-width, 100%);
+ z-index: 2;
+ }
+ .edit-mode .header {
+ background-color: var(--app-header-edit-background-color, #455a64);
+ color: var(--app-header-edit-text-color, white);
+ }
+ .toolbar {
+ height: var(--header-height);
+ display: flex;
+ align-items: center;
+ font-size: 20px;
+ padding: 0 16px;
+ font-weight: 400;
+ box-sizing: border-box;
+ }
+ .main-title {
+ margin: 0 0 0 24px;
+ line-height: 20px;
+ flex-grow: 1;
+ }
+ .action-items {
+ white-space: nowrap;
+ display: flex;
+ align-items: center;
}
ha-tabs {
width: 100%;
height: 100%;
margin-left: 4px;
}
- paper-tabs {
- margin-left: 12px;
- margin-left: max(env(safe-area-inset-left), 12px);
- margin-right: env(safe-area-inset-right);
- }
ha-tabs,
paper-tabs {
--paper-tabs-selection-bar-color: var(
@@ -964,15 +984,13 @@ class HUIRoot extends LitElement {
);
text-transform: uppercase;
}
-
- .edit-mode app-header,
- .edit-mode app-toolbar {
- background-color: var(--app-header-edit-background-color, #455a64);
- color: var(--app-header-edit-text-color, #fff);
- }
.edit-mode div[main-title] {
pointer-events: auto;
}
+ .edit-mode paper-tabs {
+ background-color: var(--app-header-edit-background-color, #455a64);
+ color: var(--app-header-edit-text-color, #fff);
+ }
paper-tab.iron-selected .edit-icon {
display: inline-flex;
}
@@ -995,14 +1013,15 @@ class HUIRoot extends LitElement {
background-color: var(--accent-color);
border-radius: 4px;
}
- app-toolbar a {
+ a {
color: var(--text-primary-color, white);
}
mwc-button.warning:not([disabled]) {
color: var(--error-color);
}
#view {
- min-height: calc(
+ margin-top: var(--header-height);
+ height: calc(
100vh - var(--header-height) - env(safe-area-inset-top) -
env(safe-area-inset-bottom)
);
@@ -1015,15 +1034,17 @@ class HUIRoot extends LitElement {
*/
position: relative;
display: flex;
+ overflow: auto;
}
/**
* In edit mode we have the tab bar on a new line *
*/
.edit-mode #view {
- min-height: calc(
+ height: calc(
100vh - var(--header-height) - 48px - env(safe-area-inset-top) -
env(safe-area-inset-bottom)
);
+ margin-top: calc(var(--header-height) + 48px);
}
#view > * {
/**
diff --git a/src/panels/map/ha-panel-map.ts b/src/panels/map/ha-panel-map.ts
index ca1d5456ec..5fb3ecd83e 100644
--- a/src/panels/map/ha-panel-map.ts
+++ b/src/panels/map/ha-panel-map.ts
@@ -1,13 +1,12 @@
import { mdiPencil } from "@mdi/js";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import { css, CSSResultGroup, html, LitElement, PropertyValues } from "lit";
import { customElement, property } from "lit/decorators";
import { computeStateDomain } from "../../common/entity/compute_state_domain";
import { navigate } from "../../common/navigate";
-import "../../components/ha-menu-button";
import "../../components/ha-icon-button";
+import "../../components/ha-menu-button";
+import "../../components/ha-top-app-bar-fixed";
import "../../components/map/ha-map";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
@@ -21,30 +20,28 @@ class HaPanelMap extends LitElement {
protected render() {
return html`
-
-
-
-
- ${this.hass.localize("panel.map")}
- ${!__DEMO__ && this.hass.user?.is_admin
- ? html` `
- : ""}
-
-
+
+
+ ${this.hass.localize("panel.map")}
+ ${!__DEMO__ && this.hass.user?.is_admin
+ ? html` `
+ : ""}
-
+
`;
}
diff --git a/src/panels/media-browser/ha-panel-media-browser.ts b/src/panels/media-browser/ha-panel-media-browser.ts
index 2de0f6c4de..cab9c9826d 100644
--- a/src/panels/media-browser/ha-panel-media-browser.ts
+++ b/src/panels/media-browser/ha-panel-media-browser.ts
@@ -1,6 +1,4 @@
import { mdiArrowLeft } from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import "@material/mwc-button";
import {
css,
@@ -33,7 +31,6 @@ import {
ResolvedMediaSource,
resolveMediaSource,
} from "../../data/media_source";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import type { HomeAssistant, Route } from "../../types";
import "./ha-bar-media-player";
@@ -44,6 +41,7 @@ import {
getEntityIdFromCameraMediaSource,
isCameraMediaSource,
} from "../../data/camera";
+import "../../components/ha-top-app-bar-fixed";
const createMediaPanelUrl = (entityId: string, items: MediaPlayerItemId[]) => {
let path = `/media-browser/${entityId}`;
@@ -82,36 +80,35 @@ class PanelMediaBrowser extends LitElement {
protected render(): TemplateResult {
return html`
-
-
-
- ${this._navigateIds.length > 1
- ? html`
-
- `
- : html`
-
- `}
-
- ${!this._currentItem
- ? this.hass.localize(
- "ui.components.media-browser.media-player-browser"
- )
- : this._currentItem.title}
-
-
-
-
+
+ ${this._navigateIds.length > 1
+ ? html`
+
+ `
+ : html`
+
+ `}
+
+ ${!this._currentItem
+ ? this.hass.localize(
+ "ui.components.media-browser.media-player-browser"
+ )
+ : this._currentItem.title}
+
+
-
+
-
-
-
- ${this.hass.localize("panel.profile")}
-
-
+
+
+ ${this.hass.localize("panel.profile")}
@@ -205,7 +200,7 @@ class HaPanelProfile extends LitElement {
@hass-refresh-tokens=${this._refreshRefreshTokens}
>
-
+
`;
}
diff --git a/src/panels/shopping-list/ha-panel-shopping-list.ts b/src/panels/shopping-list/ha-panel-shopping-list.ts
index 7a3947dd44..41d9c63931 100644
--- a/src/panels/shopping-list/ha-panel-shopping-list.ts
+++ b/src/panels/shopping-list/ha-panel-shopping-list.ts
@@ -1,6 +1,4 @@
import { mdiMicrophone } from "@mdi/js";
-import "@polymer/app-layout/app-header/app-header";
-import "@polymer/app-layout/app-toolbar/app-toolbar";
import {
css,
CSSResultGroup,
@@ -14,8 +12,8 @@ import memoizeOne from "memoize-one";
import { isComponentLoaded } from "../../common/config/is_component_loaded";
import "../../components/ha-icon-button";
import "../../components/ha-menu-button";
+import "../../components/ha-top-app-bar-fixed";
import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-ha-voice-command-dialog";
-import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles";
import { HomeAssistant } from "../../types";
import { HuiErrorCard } from "../lovelace/cards/hui-error-card";
@@ -51,31 +49,29 @@ class PanelShoppingList extends LitElement {
protected render(): TemplateResult {
return html`
-
-
-
-
- ${this.hass.localize("panel.shopping_list")}
- ${this._conversation(this.hass.config.components)
- ? html`
-
- `
- : ""}
-
-
+
+
+ ${this.hass.localize("panel.shopping_list")}
+ ${this._conversation(this.hass.config.components)
+ ? html`
+
+ `
+ : ""}
-
+
`;
}
@@ -87,21 +83,6 @@ class PanelShoppingList extends LitElement {
return [
haStyle,
css`
- :host {
- display: block;
- height: 100%;
- }
- app-header {
- --mdc-theme-primary: var(--app-header-text-color);
- }
- :host([narrow]) app-toolbar mwc-button {
- width: 65px;
- }
- .heading {
- overflow: hidden;
- white-space: nowrap;
- margin-top: 4px;
- }
#columns {
display: flex;
flex-direction: row;
diff --git a/src/resources/styles.ts b/src/resources/styles.ts
index a67cd35753..e94aedc60c 100644
--- a/src/resources/styles.ts
+++ b/src/resources/styles.ts
@@ -175,24 +175,6 @@ export const haStyle = css`
line-height: var(--paper-font-body1_-_line-height);
}
- app-header-layout,
- ha-app-layout {
- background-color: var(--primary-background-color);
- }
-
- app-header,
- app-toolbar {
- background-color: var(--app-header-background-color);
- font-weight: 400;
- color: var(--app-header-text-color, white);
- }
-
- app-toolbar {
- height: var(--header-height);
- border-bottom: var(--app-header-border-bottom);
- box-sizing: border-box;
- }
-
app-header div[sticky] {
height: 48px;
}
diff --git a/yarn.lock b/yarn.lock
index 4c7fef9b88..ffe0f51be5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2732,7 +2732,7 @@ __metadata:
languageName: node
linkType: hard
-"@material/mwc-top-app-bar@npm:^0.27.0":
+"@material/mwc-top-app-bar@npm:0.27.0, @material/mwc-top-app-bar@npm:^0.27.0":
version: 0.27.0
resolution: "@material/mwc-top-app-bar@npm:0.27.0"
dependencies:
@@ -9451,6 +9451,7 @@ __metadata:
"@material/mwc-tab-bar": 0.27.0
"@material/mwc-textarea": 0.27.0
"@material/mwc-textfield": 0.27.0
+ "@material/mwc-top-app-bar": 0.27.0
"@material/mwc-top-app-bar-fixed": 0.27.0
"@material/top-app-bar": =14.0.0-canary.53b3cad2f.0
"@material/web": =1.0.0-pre.4