/*! Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ import { CustomValidatorTypes } from '../validators'; import { Field } from 'aws-northstar/components/FormRenderer'; import { ValidatorType } from '@data-driven-forms/react-form-renderer'; import { isEmpty } from 'lodash'; import { nameToIdentifier } from '$common/utils'; import React, { FunctionComponent, memo, useCallback, useEffect, useMemo, useState } from 'react'; import TextField from 'aws-northstar/components/FormRenderer/components/TextField'; import useFieldApi, { UseFieldApiConfig } from '@data-driven-forms/react-form-renderer/use-field-api'; import useFormApi from '@data-driven-forms/react-form-renderer/use-form-api'; export const EntityNameFieldResolveProps: Field['resolveProps'] = (_props, { input }) => { return { helperText: renderHelperText(input.value), }; }; function renderHelperText(value?: string): React.ReactNode { if (value == null || isEmpty(value)) return ( - ); return ( Identifier: {nameToIdentifier(value)} ); } export const EntityNameField: FunctionComponent = (props) => { const form = useFormApi(); const { input } = useFieldApi(props); const validate = useMemo(() => { return [ { type: CustomValidatorTypes.JSONSCHEMA, schema: 'NAME', }, ...(props.validate || []), ]; }, [props.validate]); const [helperText, setHelperText] = useState(renderHelperText(props.value)); useEffect(() => { setHelperText(renderHelperText(input.value)); }, [input.value]); const changeHandler = useCallback( (value) => { form.change(input.name, value); }, [form, input], ); return ; }; export default memo(EntityNameField);