.. include:: /Includes.rst.txt
formEditor
----------

:aspect:`Option path`
      prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor

:aspect:`Data type`
      array

:aspect:`Needed by`
      Backend (form editor)

:aspect:`Mandatory`
      Recommended

:aspect:`Default value (for prototype 'standard')`
      .. code-block:: yaml
         :linenos:
         :emphasize-lines: 2-

         Text:
           formEditor:
             editors:
               100:
                 identifier: header
                 templateName: Inspector-FormElementHeaderEditor
               200:
                 identifier: label
                 templateName: Inspector-TextEditor
                 label: formEditor.elements.FormElement.editor.label.label
                 propertyPath: label
               230:
                  identifier: elementDescription
                  templateName: Inspector-TextEditor
                  label: formEditor.elements.FormElement.editor.elementDescription.label
                  propertyPath: properties.elementDescription
               400:
                 identifier: placeholder
                 templateName: Inspector-TextEditor
                 label: formEditor.elements.TextMixin.editor.placeholder.label
                 propertyPath: properties.fluidAdditionalAttributes.placeholder
                 compatibilityPropertyPath: properties.placeholder
                 doNotSetIfPropertyValueIsEmpty: true
               500:
                 identifier: defaultValue
                 templateName: Inspector-TextEditor
                 label: formEditor.elements.TextMixin.editor.defaultValue.label
                 propertyPath: defaultValue
               700:
                 identifier: gridColumnViewPortConfiguration
                 templateName: Inspector-GridColumnViewPortConfigurationEditor
                 label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label
                 configurationOptions:
                  viewPorts:
                    10:
                      viewPortIdentifier: xs
                      label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label
                    20:
                      viewPortIdentifier: sm
                      label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label
                    30:
                      viewPortIdentifier: md
                      label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label
                    40:
                      viewPortIdentifier: lg
                      label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label
                  numbersOfColumnsToUse:
                    label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label
                    propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse'
                    fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText
               800:
                 identifier: requiredValidator
                 templateName: Inspector-RequiredValidatorEditor
                 label: formEditor.elements.FormElement.editor.requiredValidator.label
                 validatorIdentifier: NotEmpty
                 propertyPath: properties.fluidAdditionalAttributes.required
                 propertyValue: required
               900:
                 identifier: validators
                 templateName: Inspector-ValidatorsEditor
                 label: formEditor.elements.TextMixin.editor.validators.label
                 selectOptions:
                  10:
                    value: ''
                    label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label
                  20:
                    value: Alphanumeric
                    label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label
                  40:
                    value: StringLength
                    label: formEditor.elements.TextMixin.editor.validators.StringLength.label
                  50:
                    value: EmailAddress
                    label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label
                  60:
                    value: Integer
                    label: formEditor.elements.TextMixin.editor.validators.Integer.label
                  70:
                    value: Float
                    label: formEditor.elements.TextMixin.editor.validators.Float.label
                  80:
                    value: NumberRange
                    label: formEditor.elements.TextMixin.editor.validators.NumberRange.label
                  # @deprecated since v12, will be removed in v13
                  90:
                    value: RegularExpression
                    label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label
               9999:
                 identifier: removeButton
                 templateName: Inspector-RemoveElementEditor
             predefinedDefaults:
               defaultValue: ''
             propertyCollections:
               validators:
                 10:
                  identifier: Alphanumeric
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 20:
                  identifier: Text
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.Text.editor.header.label
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 30:
                  identifier: StringLength
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label
                    200:
                      identifier: minimum
                      templateName: Inspector-TextEditor
                      label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label
                      propertyPath: options.minimum
                      propertyValidators:
                        10: Integer
                       additionalElementPropertyPaths:
                         10: properties.fluidAdditionalAttributes.minlength
                    300:
                      identifier: maximum
                      templateName: Inspector-TextEditor
                      label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label
                      propertyPath: options.maximum
                      propertyValidators:
                        10: Integer
                       additionalElementPropertyPaths:
                         10: properties.fluidAdditionalAttributes.maxlength
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 40:
                  identifier: EmailAddress
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 50:
                  identifier: Integer
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.Integer.editor.header.label
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 60:
                  identifier: Float
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.Float.editor.header.label
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 70:
                  identifier: NumberRange
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label
                    200:
                      identifier: minimum
                      templateName: Inspector-TextEditor
                      label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label
                      propertyPath: options.minimum
                      propertyValidators:
                        10: Integer
                       additionalElementPropertyPaths:
                         10: properties.fluidAdditionalAttributes.min
                    300:
                      identifier: maximum
                      templateName: Inspector-TextEditor
                      label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label
                      propertyPath: options.maximum
                      propertyValidators:
                        10: Integer
                       additionalElementPropertyPaths:
                         10: properties.fluidAdditionalAttributes.max
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
                 80:
                  identifier: RegularExpression
                  editors:
                    100:
                      identifier: header
                      templateName: Inspector-CollectionElementHeaderEditor
                      label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label
                    200:
                      identifier: regex
                      templateName: Inspector-TextEditor
                      label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label
                      fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText
                      propertyPath: options.regularExpression
                      propertyValidators:
                        10: NotEmpty
                        20: RegularExpressionPattern
                    9999:
                      identifier: removeButton
                      templateName: Inspector-RemoveElementEditor
             label: formEditor.elements.Text.label
             group: input
             groupSorting: 100
             iconIdentifier: form-text
