mirror of
https://github.com/home-assistant/developers.home-assistant.git
synced 2025-07-13 20:36:29 +00:00
Allow multiple in sections
This commit is contained in:
parent
b2914fe212
commit
b7b7a20b22
@ -189,6 +189,75 @@ To specify an icon for a section, update `icons.json` according to this example:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Use of repeating sections
|
||||||
|
|
||||||
|
Developers can also set `multiple` in sections to allow the user to add/remove sections as needed to provide additional configuration.
|
||||||
|
The output of the sections are then a list with dictionaries containing all the users configured sections.
|
||||||
|
|
||||||
|
The use of `multiple` in sections also requires to set `default`.
|
||||||
|
The use of `default` in sections has priority over defaults for the fields.
|
||||||
|
|
||||||
|
| Key | Type | Description |
|
||||||
|
| :----------------: | :----------------: | :-----------------------------------------: |
|
||||||
|
| `multiple` | `bool` | Allow user to add/remove sections |
|
||||||
|
| `default` | `list[dict]` | Provide default values for the section |
|
||||||
|
|
||||||
|
```python
|
||||||
|
from homeassistant.data_entry_flow import section
|
||||||
|
from homeassistant.helpers.selector import selector
|
||||||
|
|
||||||
|
class ExampleConfigFlow(data_entry_flow.FlowHandler):
|
||||||
|
async def async_step_user(self, user_input=None):
|
||||||
|
# Specify items in the order they are to be displayed in the UI
|
||||||
|
data_schema = {
|
||||||
|
vol.Required("username"): str,
|
||||||
|
vol.Required("password"): str,
|
||||||
|
# Items can be grouped by collapsible sections
|
||||||
|
"options": section(
|
||||||
|
vol.Schema(
|
||||||
|
{
|
||||||
|
vol.Required("stage_1", default=5): int,
|
||||||
|
vol.Required("stage_2", default=10): int,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
# Whether or not the section is initially collapsed (default = False),
|
||||||
|
# user can provide multiple sections (default = None) and
|
||||||
|
# default values for the section in case of multiple (default = None)
|
||||||
|
{
|
||||||
|
"collapsed": False,
|
||||||
|
"multiple": True,
|
||||||
|
"default": [],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.async_show_form(
|
||||||
|
step_id="init",
|
||||||
|
data_schema=vol.Schema(data_schema)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
The resulting output from the section is a list with dictionaries containing the values provided by the user.
|
||||||
|
|
||||||
|
##### Example output from sections using multiple
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"username": "some_username",
|
||||||
|
"password": "some_password",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"stage_1":7,
|
||||||
|
"stage_2":15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stage_1":24,
|
||||||
|
"stage_2":4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
#### Labels & descriptions
|
#### Labels & descriptions
|
||||||
|
|
||||||
Translations for the form are added to `strings.json` in a key for the `step_id`. That object may contain the folowing keys:
|
Translations for the form are added to `strings.json` in a key for the `step_id`. That object may contain the folowing keys:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user