155 files

This commit is contained in:
Home Assistant Version Control committed 2026-10-04 20:46:32 +00:00
1 parent a212615470
commit 0ff8c287a8
155 files changed
+19264 -3148

No files matched your search

@@ -9,9 +9,10 @@
import { LitElement, html, css, nothing } from "lit";
import { property, state } from "lit/decorators.js";
import { t, langOf, formatNumber } from "../styles";
import { t, langOf, formatNumber, haTimeZoneHint } from "../styles";
import type { HomeAssistant, ReadingSlot, ReadingValue } from "../types";
import { runWs } from "../helpers/ws-run";
import { haWallTime } from "../helpers/ha-time";
import { PART_QTY_RANGE } from "../helpers/setting-ranges";
import { focusModalShell, modalShellStyles, renderModalShell } from "../helpers/modal-shell";
import { PhotoUploadController } from "../helpers/photo-upload-controller";
@@ -245,15 +246,20 @@ export class MaintenanceHistoryEditDialog extends LitElement {
/** #170: remove the entry altogether (after a confirm). The backend
* re-anchors last_performed on what remains; photos stay in the object's
* documents, consumed parts are not restocked. */
* documents, and the parts the entry used go back to stock — the confirm
* names them. */
private async _delete(): Promise<void> {
if (!this._draft || !this._originalSnapshot) return;
const L = this._lang;
const used = (this._originalSnapshot.used_parts || []).filter((u) => u.quantity > 0);
const parts = used.map((u) => `${formatNumber(u.quantity, L)}× ${u.name || u.part_id}`).join(", ");
// The confirm dialog, not the browser's native modal — this dialog is
// also mounted on dashboards (DRY audit 2026-09-26).
const confirmed = await confirmAction(this.hass, {
title: t("history_delete_entry", L),
message: t("history_delete_confirm", L),
message: parts
? `${t("history_delete_confirm_entry", L)} ${t("history_delete_returns_parts", L).replace("{parts}", parts)}`
: t("history_delete_confirm_entry", L),
confirmText: t("delete", L),
danger: true,
});
@@ -386,10 +392,14 @@ export class MaintenanceHistoryEditDialog extends LitElement {
.hass=${this.hass}
.lang=${L}
.label=${t("history_edit_timestamp", L)}
.value=${d.timestamp.slice(0, 19)}
.helper=${haTimeZoneHint(L)}
.value=${haWallTime(d.timestamp)}
@value-changed=${(e: CustomEvent) => {
// Always "YYYY-MM-DDTHH:MM:SS" from the field; the naive value
// means local time, exactly as the datetime-local input did.
// means HA local time — the backend reads it so. The field
// therefore shows HA's wall clock (an imported "+00:00" stamp's
// own digits were UTC) and names HA's zone when the history
// list shows another one (the profile's "local" zone).
const v = e.detail.value as string;
if (v) this._set("timestamp", v);
}}