src/components/Publish/Metadata/index.tsx
import Input from '@shared/FormInput'
import { Field, useFormikContext } from 'formik'
import React, { ReactElement, useEffect } from 'react'
import content from '../../../../content/publish/form.json'
import { FormPublishData } from '../_types'
import styles from './index.module.css'
import { getFieldContent } from '@utils/form'
export default function MetadataFields(): ReactElement {
// connect with Form state, use for conditional field rendering
const { setFieldValue } = useFormikContext<FormPublishData>()
// Populate the Docker image field with our presets in _constants,
// transformPublishFormToDdo will do the rest.
useEffect(() => {
setFieldValue('metadata.type', 'dataset')
}, [setFieldValue])
return (
<>
<Field
{...getFieldContent('nft', content.metadata.fields)}
component={Input}
name="metadata.nft"
/>
<Field
{...getFieldContent('name', content.metadata.fields)}
component={Input}
name="metadata.name"
/>
<Field
{...getFieldContent('description', content.metadata.fields)}
component={Input}
name="metadata.description"
rows={7}
/>
<Field
{...getFieldContent('author', content.metadata.fields)}
component={Input}
name="metadata.author"
/>
<Field
{...getFieldContent('tags', content.metadata.fields)}
component={Input}
name="metadata.tags"
/>
<Field
{...getFieldContent('termsAndConditions', content.metadata.fields)}
component={Input}
name="metadata.termsAndConditions"
/>
<a
className={styles.termsLink}
href="/terms"
rel="noopener noreferrer"
target="_blank"
>
View Terms and Conditions
</a>
</>
)
}