forked from elastic/kibana
/
name_parameter.tsx
36 lines (30 loc) · 1.23 KB
/
name_parameter.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import React from 'react';
import { TextField, UseField, FieldConfig } from '../../../shared_imports';
import { validateUniqueName } from '../../../lib';
import { PARAMETERS_DEFINITION } from '../../../constants';
import { useState } from '../../../mappings_state';
export const NameParameter = () => {
const {
fields: { rootLevelFields, byId },
documentFields: { fieldToAddFieldTo, fieldToEdit },
} = useState();
const { validations, ...rest } = PARAMETERS_DEFINITION.name.fieldConfig as FieldConfig;
const initialName = fieldToEdit ? byId[fieldToEdit].source.name : undefined;
const parentId = fieldToEdit ? byId[fieldToEdit].parentId : fieldToAddFieldTo;
const uniqueNameValidator = validateUniqueName({ rootLevelFields, byId }, initialName, parentId);
const nameConfig: FieldConfig = {
...rest,
validations: [
...validations!,
{
validator: uniqueNameValidator,
},
],
};
return <UseField path="name" config={nameConfig} component={TextField} />;
};