mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-16 13:56:35 +00:00
Merge branch 'rc'
This commit is contained in:
commit
bbe3a9e0c2
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "home-assistant-frontend"
|
name = "home-assistant-frontend"
|
||||||
version = "20250701.0"
|
version = "20250702.0"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
license-files = ["LICENSE*"]
|
license-files = ["LICENSE*"]
|
||||||
description = "The Home Assistant frontend"
|
description = "The Home Assistant frontend"
|
||||||
|
@ -366,6 +366,7 @@ export class HaAreaPicker extends LitElement {
|
|||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.autofocus=${this.autofocus}
|
.autofocus=${this.autofocus}
|
||||||
.label=${this.label}
|
.label=${this.label}
|
||||||
|
.helper=${this.helper}
|
||||||
.notFoundLabel=${this.hass.localize(
|
.notFoundLabel=${this.hass.localize(
|
||||||
"ui.components.area-picker.no_match"
|
"ui.components.area-picker.no_match"
|
||||||
)}
|
)}
|
||||||
|
@ -78,6 +78,7 @@ export class HaAreasFloorsDisplayEditor extends LitElement {
|
|||||||
handle-selector=".handle"
|
handle-selector=".handle"
|
||||||
@item-moved=${this._floorMoved}
|
@item-moved=${this._floorMoved}
|
||||||
.disabled=${this.disabled || !canReorderFloors}
|
.disabled=${this.disabled || !canReorderFloors}
|
||||||
|
invert-swap
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
${repeat(
|
${repeat(
|
||||||
|
@ -584,11 +584,14 @@ export class HaCodeEditor extends ReactiveElement {
|
|||||||
|
|
||||||
:host(.fullscreen) {
|
:host(.fullscreen) {
|
||||||
position: fixed !important;
|
position: fixed !important;
|
||||||
top: var(--header-height, 56px) !important;
|
top: calc(var(--header-height, 56px) + 8px) !important;
|
||||||
left: 0 !important;
|
left: 8px !important;
|
||||||
right: 0 !important;
|
right: 8px !important;
|
||||||
bottom: 0 !important;
|
bottom: 8px !important;
|
||||||
z-index: 9999 !important;
|
z-index: 9999 !important;
|
||||||
|
border-radius: 12px !important;
|
||||||
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3) !important;
|
||||||
|
overflow: hidden !important;
|
||||||
background-color: var(
|
background-color: var(
|
||||||
--code-editor-background-color,
|
--code-editor-background-color,
|
||||||
var(--card-background-color)
|
var(--card-background-color)
|
||||||
|
@ -566,6 +566,7 @@ export default class HaAutomationTriggerRow extends LitElement {
|
|||||||
text: html`
|
text: html`
|
||||||
<ha-yaml-editor
|
<ha-yaml-editor
|
||||||
read-only
|
read-only
|
||||||
|
disable-fullscreen
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.defaultValue=${this._triggered}
|
.defaultValue=${this._triggered}
|
||||||
></ha-yaml-editor>
|
></ha-yaml-editor>
|
||||||
|
@ -10,7 +10,7 @@ import {
|
|||||||
mdiPlusCircle,
|
mdiPlusCircle,
|
||||||
mdiRestore,
|
mdiRestore,
|
||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import type { CSSResultGroup, TemplateResult } from "lit";
|
import type { CSSResultGroup, PropertyValues, TemplateResult } from "lit";
|
||||||
import { LitElement, css, html, nothing } from "lit";
|
import { LitElement, css, html, nothing } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property, state } from "lit/decorators";
|
||||||
import { ifDefined } from "lit/directives/if-defined";
|
import { ifDefined } from "lit/directives/if-defined";
|
||||||
@ -273,22 +273,24 @@ export class HaConfigDevicePage extends LitElement {
|
|||||||
findBatteryChargingEntity(this.hass, entities)
|
findBatteryChargingEntity(this.hass, entities)
|
||||||
);
|
);
|
||||||
|
|
||||||
public willUpdate(changedProps) {
|
public willUpdate(changedProps: PropertyValues<this>) {
|
||||||
super.willUpdate(changedProps);
|
super.willUpdate(changedProps);
|
||||||
|
|
||||||
if (changedProps.has("deviceId") || changedProps.has("entries")) {
|
if (changedProps.has("deviceId")) {
|
||||||
this._deviceActions = [];
|
this._deviceActions = [];
|
||||||
this._deviceAlerts = [];
|
this._deviceAlerts = [];
|
||||||
this._deleteButtons = [];
|
this._deleteButtons = [];
|
||||||
this._diagnosticDownloadLinks = [];
|
this._diagnosticDownloadLinks = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changedProps.has("deviceId") || changedProps.has("entries")) {
|
||||||
this._fetchData();
|
this._fetchData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected firstUpdated(changedProps) {
|
protected firstUpdated(changedProps: PropertyValues) {
|
||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
loadDeviceRegistryDetailDialog();
|
loadDeviceRegistryDetailDialog();
|
||||||
this._fetchData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updated(changedProps) {
|
protected updated(changedProps) {
|
||||||
@ -989,6 +991,7 @@ export class HaConfigDevicePage extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _getDeleteActions() {
|
private _getDeleteActions() {
|
||||||
|
const deviceId = this.deviceId;
|
||||||
const device = this.hass.devices[this.deviceId];
|
const device = this.hass.devices[this.deviceId];
|
||||||
|
|
||||||
if (!device) {
|
if (!device) {
|
||||||
@ -1058,12 +1061,18 @@ export class HaConfigDevicePage extends LitElement {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (this.deviceId !== deviceId) {
|
||||||
|
// abort if the device has changed
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (buttons.length > 0) {
|
if (buttons.length > 0) {
|
||||||
this._deleteButtons = buttons;
|
this._deleteButtons = buttons;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _getDeviceActions() {
|
private async _getDeviceActions() {
|
||||||
|
const deviceId = this.deviceId;
|
||||||
const device = this.hass.devices[this.deviceId];
|
const device = this.hass.devices[this.deviceId];
|
||||||
|
|
||||||
if (!device) {
|
if (!device) {
|
||||||
@ -1157,14 +1166,25 @@ export class HaConfigDevicePage extends LitElement {
|
|||||||
|
|
||||||
// load matter device actions async to avoid an UI with 0 actions when the matter integration needs very long to get node diagnostics
|
// load matter device actions async to avoid an UI with 0 actions when the matter integration needs very long to get node diagnostics
|
||||||
matter.getMatterDeviceActions(this, this.hass, device).then((actions) => {
|
matter.getMatterDeviceActions(this, this.hass, device).then((actions) => {
|
||||||
|
if (this.deviceId !== deviceId) {
|
||||||
|
// abort if the device has changed
|
||||||
|
return;
|
||||||
|
}
|
||||||
this._deviceActions = [...actions, ...(this._deviceActions || [])];
|
this._deviceActions = [...actions, ...(this._deviceActions || [])];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.deviceId !== deviceId) {
|
||||||
|
// abort if the device has changed
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this._deviceActions = deviceActions;
|
this._deviceActions = deviceActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _getDeviceAlerts() {
|
private async _getDeviceAlerts() {
|
||||||
|
const deviceId = this.deviceId;
|
||||||
|
|
||||||
const device = this.hass.devices[this.deviceId];
|
const device = this.hass.devices[this.deviceId];
|
||||||
|
|
||||||
if (!device) {
|
if (!device) {
|
||||||
@ -1188,6 +1208,11 @@ export class HaConfigDevicePage extends LitElement {
|
|||||||
deviceAlerts.push(...alerts);
|
deviceAlerts.push(...alerts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.deviceId !== deviceId) {
|
||||||
|
// abort if the device has changed
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this._deviceAlerts = deviceAlerts;
|
this._deviceAlerts = deviceAlerts;
|
||||||
if (deviceAlerts.length) {
|
if (deviceAlerts.length) {
|
||||||
this._deviceAlertsActionsTimeout = window.setTimeout(() => {
|
this._deviceAlertsActionsTimeout = window.setTimeout(() => {
|
||||||
|
@ -406,11 +406,7 @@ class HaConfigIntegrationsDashboard extends KeyboardShortcutMixin(
|
|||||||
${!this._showDisabled && this.narrow && disabledConfigEntries.length
|
${!this._showDisabled && this.narrow && disabledConfigEntries.length
|
||||||
? html`<span class="badge">${disabledConfigEntries.length}</span>`
|
? html`<span class="badge">${disabledConfigEntries.length}</span>`
|
||||||
: ""}
|
: ""}
|
||||||
<ha-button-menu
|
<ha-button-menu multi @action=${this._handleMenuAction}>
|
||||||
multi
|
|
||||||
@action=${this._handleMenuAction}
|
|
||||||
@click=${this._preventDefault}
|
|
||||||
>
|
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
slot="trigger"
|
slot="trigger"
|
||||||
.label=${this.hass.localize("ui.common.menu")}
|
.label=${this.hass.localize("ui.common.menu")}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import type { HassEntity } from "home-assistant-js-websocket";
|
import type { HassEntity } from "home-assistant-js-websocket";
|
||||||
import { css, html, LitElement, nothing } from "lit";
|
import { css, html, LitElement, nothing } from "lit";
|
||||||
import { classMap } from "lit/directives/class-map";
|
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property, state } from "lit/decorators";
|
||||||
|
import { classMap } from "lit/directives/class-map";
|
||||||
import { styleMap } from "lit/directives/style-map";
|
import { styleMap } from "lit/directives/style-map";
|
||||||
import memoizeOne from "memoize-one";
|
import memoizeOne from "memoize-one";
|
||||||
import { ensureArray } from "../../../common/array/ensure-array";
|
import { ensureArray } from "../../../common/array/ensure-array";
|
||||||
@ -14,6 +14,7 @@ import { stateActive } from "../../../common/entity/state_active";
|
|||||||
import { domainColorProperties } from "../../../common/entity/state_color";
|
import { domainColorProperties } from "../../../common/entity/state_color";
|
||||||
import "../../../components/ha-control-button";
|
import "../../../components/ha-control-button";
|
||||||
import "../../../components/ha-control-button-group";
|
import "../../../components/ha-control-button-group";
|
||||||
|
import "../../../components/ha-domain-icon";
|
||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import type { AreaRegistryEntry } from "../../../data/area_registry";
|
import type { AreaRegistryEntry } from "../../../data/area_registry";
|
||||||
import { forwardHaptic } from "../../../data/haptics";
|
import { forwardHaptic } from "../../../data/haptics";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user