2022-01-05 13:39:34 +00:00
|
|
|
import { PropsWithChildren, ReactNode } from 'react';
|
|
|
|
|
2024-04-11 00:11:38 +00:00
|
|
|
import { AutomationTestingProps } from '@/types';
|
|
|
|
|
2022-06-17 16:18:42 +00:00
|
|
|
import { FormSectionTitle } from '@@/form-components/FormSectionTitle';
|
|
|
|
import { FileUploadField } from '@@/form-components/FileUpload/FileUploadField';
|
2022-01-05 13:39:34 +00:00
|
|
|
|
|
|
|
export interface Props {
|
2024-05-06 05:08:03 +00:00
|
|
|
onChange(value?: File): void;
|
|
|
|
value: File | undefined;
|
2022-01-05 13:39:34 +00:00
|
|
|
title?: string;
|
|
|
|
required?: boolean;
|
|
|
|
description: ReactNode;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function FileUploadForm({
|
|
|
|
onChange,
|
|
|
|
value,
|
|
|
|
title = 'Select a file',
|
|
|
|
required = false,
|
|
|
|
description,
|
2024-04-11 00:11:38 +00:00
|
|
|
'data-cy': dataCy,
|
|
|
|
}: PropsWithChildren<Props> & AutomationTestingProps) {
|
2022-01-05 13:39:34 +00:00
|
|
|
return (
|
|
|
|
<div className="file-upload-form">
|
|
|
|
<FormSectionTitle>Upload</FormSectionTitle>
|
|
|
|
<div className="form-group">
|
|
|
|
<span className="col-sm-12 text-muted small">{description}</span>
|
|
|
|
</div>
|
|
|
|
<div className="form-group">
|
|
|
|
<div className="col-sm-12">
|
|
|
|
<FileUploadField
|
2022-05-23 14:32:51 +00:00
|
|
|
inputId="file-upload-field"
|
2024-04-11 00:11:38 +00:00
|
|
|
data-cy={dataCy}
|
2022-01-05 13:39:34 +00:00
|
|
|
onChange={onChange}
|
|
|
|
value={value}
|
|
|
|
title={title}
|
|
|
|
required={required}
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|