From d3e1d556869b376dbcd1807ef2e50abf3375217b Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Tue, 17 Mar 2026 09:11:15 +0100 Subject: [PATCH] Fix negative monetary values displayed as positive (#30178) --- src/common/entity/compute_state_display.ts | 1 + .../entity/compute_state_display.test.ts | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/common/entity/compute_state_display.ts b/src/common/entity/compute_state_display.ts index d875dc4b48..48044a160a 100644 --- a/src/common/entity/compute_state_display.ts +++ b/src/common/entity/compute_state_display.ts @@ -144,6 +144,7 @@ const computeStateToPartsFromEntityAttributes = ( fraction: "value", literal: "literal", currency: "unit", + minusSign: "value", }; const valueParts: ValuePart[] = []; diff --git a/test/common/entity/compute_state_display.test.ts b/test/common/entity/compute_state_display.test.ts index 8d9f59f207..707b6a5010 100644 --- a/test/common/entity/compute_state_display.test.ts +++ b/test/common/entity/compute_state_display.test.ts @@ -684,6 +684,26 @@ describe("computeStateDisplayFromEntityAttributes with numeric device classes", ); expect(result).toBe("$12.00"); }); + + it("Should format negative monetary device_class", () => { + const result = computeStateDisplayFromEntityAttributes( + // eslint-disable-next-line @typescript-eslint/no-empty-function + (() => {}) as any, + { + language: "en", + } as FrontendLocaleData, + [], + {} as HassConfig, + undefined, + "number.test", + { + device_class: "monetary", + unit_of_measurement: "USD", + }, + "-12" + ); + expect(result).toBe("-$12.00"); + }); }); describe("computeStateDisplayFromEntityAttributes datetime device calss", () => {