mirror of
https://github.com/home-assistant/core.git
synced 2025-07-30 00:27:19 +00:00
Allow use of Selector in ObjectSelector fields
This commit is contained in:
parent
afb247c907
commit
0ccabe9f2c
@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable, Mapping, Sequence
|
||||
from copy import deepcopy
|
||||
from enum import StrEnum
|
||||
from functools import cache
|
||||
import importlib
|
||||
@ -1133,7 +1134,7 @@ class ObjectSelectorField(TypedDict):
|
||||
|
||||
label: str
|
||||
required: bool
|
||||
selector: dict[str, Any]
|
||||
selector: Required[Selector | dict[str, Any]]
|
||||
|
||||
|
||||
class ObjectSelectorConfig(BaseSelectorConfig):
|
||||
@ -1142,7 +1143,7 @@ class ObjectSelectorConfig(BaseSelectorConfig):
|
||||
fields: dict[str, ObjectSelectorField]
|
||||
multiple: bool
|
||||
label_field: str
|
||||
description_field: bool
|
||||
description_field: str
|
||||
translation_key: str
|
||||
|
||||
|
||||
@ -1156,7 +1157,7 @@ class ObjectSelector(Selector[ObjectSelectorConfig]):
|
||||
{
|
||||
vol.Optional("fields"): {
|
||||
str: {
|
||||
vol.Required("selector"): dict,
|
||||
vol.Required("selector"): vol.Any(Selector, dict),
|
||||
vol.Optional("required"): bool,
|
||||
vol.Optional("label"): str,
|
||||
}
|
||||
@ -1172,6 +1173,17 @@ class ObjectSelector(Selector[ObjectSelectorConfig]):
|
||||
"""Instantiate a selector."""
|
||||
super().__init__(config)
|
||||
|
||||
def serialize(self) -> dict[str, dict[str, ObjectSelectorConfig]]:
|
||||
"""Serialize ObjectSelector for voluptuous_serialize."""
|
||||
_config = deepcopy(self.config)
|
||||
if "fields" in _config:
|
||||
for items in _config["fields"].values():
|
||||
if isinstance(items["selector"], Selector):
|
||||
items["selector"] = {
|
||||
items["selector"].selector_type: items["selector"].config
|
||||
}
|
||||
return {"selector": {self.selector_type: _config}}
|
||||
|
||||
def __call__(self, data: Any) -> Any:
|
||||
"""Validate the passed selection."""
|
||||
return data
|
||||
|
Loading…
x
Reference in New Issue
Block a user