Support translating number selector UoM (#148162)

This commit is contained in:
karwosts 2025-07-04 11:06:33 -07:00 committed by GitHub
parent bb1e263149
commit 0b2db2510f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 19 additions and 1 deletions

View File

@ -94,6 +94,7 @@ async def _get_options_dict(handler: SchemaCommonFlowHandler | None) -> dict:
max=6, max=6,
mode=selector.NumberSelectorMode.BOX, mode=selector.NumberSelectorMode.BOX,
unit_of_measurement="decimals", unit_of_measurement="decimals",
translation_key="round",
), ),
), ),
vol.Required(CONF_TIME_WINDOW): selector.DurationSelector(), vol.Required(CONF_TIME_WINDOW): selector.DurationSelector(),

View File

@ -52,6 +52,11 @@
"h": "Hours", "h": "Hours",
"d": "Days" "d": "Days"
} }
},
"round": {
"unit_of_measurement": {
"decimals": "decimals"
}
} }
} }
} }

View File

@ -1066,6 +1066,7 @@ class NumberSelectorConfig(BaseSelectorConfig, total=False):
step: float | Literal["any"] step: float | Literal["any"]
unit_of_measurement: str unit_of_measurement: str
mode: NumberSelectorMode mode: NumberSelectorMode
translation_key: str
class NumberSelectorMode(StrEnum): class NumberSelectorMode(StrEnum):
@ -1106,6 +1107,7 @@ class NumberSelector(Selector[NumberSelectorConfig]):
vol.Optional(CONF_MODE, default=NumberSelectorMode.SLIDER): vol.All( vol.Optional(CONF_MODE, default=NumberSelectorMode.SLIDER): vol.All(
vol.Coerce(NumberSelectorMode), lambda val: val.value vol.Coerce(NumberSelectorMode), lambda val: val.value
), ),
vol.Optional("translation_key"): str,
} }
), ),
validate_slider, validate_slider,

View File

@ -310,6 +310,10 @@ def gen_strings_schema(config: Config, integration: Integration) -> vol.Schema:
translation_value_validator, translation_value_validator,
slug_validator=translation_key_validator, slug_validator=translation_key_validator,
), ),
vol.Optional("unit_of_measurement"): cv.schema_with_slug_keys(
translation_value_validator,
slug_validator=translation_key_validator,
),
vol.Optional("fields"): cv.schema_with_slug_keys(str), vol.Optional("fields"): cv.schema_with_slug_keys(str),
}, },
slug_validator=vol.Any("_", cv.slug), slug_validator=vol.Any("_", cv.slug),

View File

@ -396,7 +396,13 @@ def test_assist_pipeline_selector_schema(
({"min": -100, "max": 100, "step": 5}, (), ()), ({"min": -100, "max": 100, "step": 5}, (), ()),
({"min": -20, "max": -10, "mode": "box"}, (), ()), ({"min": -20, "max": -10, "mode": "box"}, (), ()),
( (
{"min": 0, "max": 100, "unit_of_measurement": "seconds", "mode": "slider"}, {
"min": 0,
"max": 100,
"unit_of_measurement": "seconds",
"mode": "slider",
"translation_key": "foo",
},
(), (),
(), (),
), ),