diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/append.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/append.tsx
index 3f527301e3e32..8eb484b56bafe 100644
--- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/append.tsx
+++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/append.tsx
@@ -7,7 +7,12 @@
import React, { FunctionComponent } from 'react';
import { i18n } from '@kbn/i18n';
-import { FIELD_TYPES, fieldValidators, UseField, Field } from '../../../../../../shared_imports';
+import {
+ FIELD_TYPES,
+ fieldValidators,
+ UseField,
+ ComboBoxField,
+} from '../../../../../../shared_imports';
import { FieldsConfig } from './shared';
import { FieldNameField } from './common_fields/field_name_field';
@@ -16,7 +21,8 @@ const { emptyField } = fieldValidators;
const fieldsConfig: FieldsConfig = {
value: {
- type: FIELD_TYPES.TEXT,
+ type: FIELD_TYPES.COMBO_BOX,
+ deserializer: (v) => (Array.isArray(v) ? v : [String(v)]),
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.appendForm.valueFieldLabel', {
defaultMessage: 'Value',
}),
@@ -44,7 +50,7 @@ export const Append: FunctionComponent = () => {
})}
/>
-
+
>
);
};
diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/common_fields/field_name_field.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/common_fields/field_name_field.tsx
index e523fcd6ea10b..7ef5ba6768c19 100644
--- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/common_fields/field_name_field.tsx
+++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/common_fields/field_name_field.tsx
@@ -5,7 +5,13 @@
*/
import React, { FunctionComponent } from 'react';
import { i18n } from '@kbn/i18n';
-import { FIELD_TYPES, UseField, Field, fieldValidators } from '../../../../../../../shared_imports';
+import {
+ FIELD_TYPES,
+ UseField,
+ Field,
+ fieldValidators,
+ ValidationConfig,
+} from '../../../../../../../shared_imports';
import { FieldsConfig } from '../shared';
@@ -32,8 +38,21 @@ export const fieldsConfig: FieldsConfig = {
interface Props {
helpText?: React.ReactNode;
+ /**
+ * The field name requires a value. Processor specific validation
+ * checks can be added here.
+ */
+ additionalValidations?: ValidationConfig[];
}
-export const FieldNameField: FunctionComponent = ({ helpText }) => (
-
+export const FieldNameField: FunctionComponent = ({ helpText, additionalValidations }) => (
+
);
diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/dot_expander.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/dot_expander.tsx
index 0931764ee4e83..f25482178c79d 100644
--- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/dot_expander.tsx
+++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/manage_processor_form/processors/dot_expander.tsx
@@ -5,9 +5,7 @@
*/
import React, { FunctionComponent } from 'react';
-import { EuiCode } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
-import { FormattedMessage } from '@kbn/i18n/react';
import { FieldConfig, FIELD_TYPES, UseField, Field } from '../../../../../../shared_imports';
@@ -29,13 +27,26 @@ export const DotExpander: FunctionComponent = () => {
return (
<>
{'.'} }}
- />
- }
+ helpText={i18n.translate(
+ 'xpack.ingestPipelines.pipelineEditor.dotExpanderForm.fieldNameHelpText',
+ { defaultMessage: 'The field to expand into an object field.' }
+ )}
+ additionalValidations={[
+ {
+ validator: ({ value }) => {
+ if (typeof value === 'string' && value.length) {
+ return !value.includes('.')
+ ? {
+ message: i18n.translate(
+ 'xpack.ingestPipelines.pipelineEditor.dotExpanderForm.fieldNameHelpText',
+ { defaultMessage: 'A field value requires at least one dot character.' }
+ ),
+ }
+ : undefined;
+ }
+ },
+ },
+ ]}
/>
diff --git a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts
index db01014ae9015..936db37f0c629 100644
--- a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts
+++ b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts
@@ -44,6 +44,7 @@ export {
FieldHook,
getFieldValidityAndErrorMessage,
ValidationFunc,
+ ValidationConfig,
} from '../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib';
export {