From b8317ae322004b6bd2fad173cfae51e6f1db4304 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Fri, 13 Feb 2026 14:36:08 +0200 Subject: [PATCH] fix layout --- src/panels/lovelace/views/hui-view-footer.ts | 82 ++++++++++++++++---- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/src/panels/lovelace/views/hui-view-footer.ts b/src/panels/lovelace/views/hui-view-footer.ts index 18b828a554..889dc9b9a4 100644 --- a/src/panels/lovelace/views/hui-view-footer.ts +++ b/src/panels/lovelace/views/hui-view-footer.ts @@ -13,6 +13,7 @@ import type { } from "../../../data/lovelace/config/view"; import type { HomeAssistant } from "../../../types"; import type { HuiCard } from "../cards/hui-card"; +import { computeCardGridSize } from "../common/compute-card-grid-size"; import { showCreateCardDialog } from "../editor/card-editor/show-create-card-dialog"; import { showEditCardDialog } from "../editor/card-editor/show-edit-card-dialog"; import { replaceView } from "../editor/config-util"; @@ -66,7 +67,12 @@ export class HuiViewFooter extends LitElement { const element = document.createElement("hui-card"); element.hass = this.hass; element.preview = this.lovelace.editMode; + element.layout = "grid"; element.config = cardConfig; + element.addEventListener("card-updated", (ev: Event) => { + ev.stopPropagation(); + this.requestUpdate(); + }); element.load(); return element; } @@ -133,6 +139,38 @@ export class HuiViewFooter extends LitElement { this.lovelace.saveConfig(updatedConfig); } + private _renderCard(card: HuiCard, editMode: boolean) { + const gridOptions = card.getGridOptions(); + const { rows } = computeCardGridSize(gridOptions); + + return html` +
+ ${editMode + ? html` + + ${card} + + ` + : card} +
+ `; + } + render() { if (!this.lovelace) return nothing; @@ -164,22 +202,10 @@ export class HuiViewFooter extends LitElement { ` : nothing}
- ${editMode - ? card + ${card + ? this._renderCard(card, editMode) + : editMode ? html` - - ${card} - - ` - : html` ` - : card} + : nothing}
`; @@ -228,7 +254,15 @@ export class HuiViewFooter extends LitElement { } .container { + --row-height: var(--ha-section-grid-row-height, 56px); + --row-gap: var(--ha-section-grid-row-gap, 8px); + --column-gap: var(--ha-section-grid-column-gap, 8px); position: relative; + display: grid; + grid-template-columns: repeat(12, minmax(0, 1fr)); + grid-auto-rows: auto; + row-gap: var(--row-gap); + column-gap: var(--column-gap); } .container.edit-mode { @@ -238,6 +272,20 @@ export class HuiViewFooter extends LitElement { border-start-end-radius: 0; } + .card { + position: relative; + grid-column: 1 / -1; + grid-row: span var(--row-size, 1); + } + + .card.fit-rows { + height: calc( + (var(--row-size, 1) * (var(--row-height) + var(--row-gap))) - var( + --row-gap + ) + ); + } + .actions-container { position: relative; height: 34px; @@ -269,6 +317,8 @@ export class HuiViewFooter extends LitElement { } .add { + grid-column: 1 / -1; + margin: 0 auto; position: relative; display: flex; flex-direction: row;