From b167c81b7e2669789dcb04aef88a898d804e8572 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Tue, 24 Jun 2025 16:11:17 +0200 Subject: [PATCH] Add fields and multiple support to object selector (#39655) --- source/_docs/blueprint/selectors.markdown | 67 +++++++++++++++++- .../blueprints/selector-object-schema.png | Bin 0 -> 9183 bytes source/images/blueprints/selector-object.png | Bin 8535 -> 8119 bytes 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 source/images/blueprints/selector-object-schema.png diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index db03a083364..5dc1b36cebb 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -1136,16 +1136,79 @@ number: The object selector can be used to input arbitrary data in YAML form. This is useful for e.g. lists and dictionaries containing data for actions. The value of the input will contain the provided data. -![Screenshot of an object selector](/images/blueprints/selector-object.png) +When used without options, the selector will accept a free form object. -This selector does not have any other options; therefore, it only has its key. +![Screenshot of an object selector](/images/blueprints/selector-object.png) ```yaml object: ``` +When used with a `schema`, the selector will force the object to be in this format by displaying a form. + +![Screenshot of an object selector](/images/blueprints/selector-object-schema.png) + +```yaml +object: + label_key: name + description_key: percentage + multiple: true + fields: + name: + label: Name + selector: + text: + percentage: + label: Percentage + selector: + number: + unit_of_measurement: "%" +``` + The output of this selector is a YAML object. +{% configuration qr_code %} +fields: + description: > + List of fields of the object. + type: map + required: false + keys: + label: + description: The label of the field + required: false + type: string + selector: + description: The selector to use for this field. It can be any available selector. + required: true + type: string +label_field: + description: > + The field to use as a label. By default, it will be the first field defined. This option is only used if `fields` option set. + type: string + required: false +description_field: + description: > + The field to use as a description. This option is only used if `fields` option set. + type: string + required: false +translation_key: + description: > + Allows translations provided by an integration where `translation_key` + is the translation key that is providing the selector option strings + translation. See the documentation on + [Backend Localization](https://developers.home-assistant.io/docs/internationalization/core/#selectors) + for more information. + type: string + required: false +multiple: + description: > + Allows selecting multiple options. If set to `true`, the resulting value of this selector will be a list instead of a single string value. This option is only used if `fields` option set. + type: boolean + required: false + default: false +{% endconfiguration %} + ## QR code selector The QR code selector shows a QR code. It has no return value. diff --git a/source/images/blueprints/selector-object-schema.png b/source/images/blueprints/selector-object-schema.png new file mode 100644 index 0000000000000000000000000000000000000000..01a49da66e3fba8202642ed8975f58ee2479170d GIT binary patch literal 9183 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 literal 0 HcmV?d00001 diff --git a/source/images/blueprints/selector-object.png b/source/images/blueprints/selector-object.png index aa947d1e472e144037e9deff01f6a643f488f1b3..e762e20be5ca34416fb43ae58805fe90b8e77d92 100644 GIT binary patch literal 8119 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 Z0v%A$+#lx-uMqt^Lk^}4EtN42_