b75ad50f7cf10fedbbebab81947f72961f62d565
[arvados-workbench2.git] / src / views-components / dialog-create / dialog-collection-create.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import React from 'react';
6 import { InjectedFormProps, Field } from 'redux-form';
7 import { WithDialogProps } from 'store/dialog/with-dialog';
8 import { CollectionCreateFormDialogData } from 'store/collections/collection-create-actions';
9 import { FormDialog } from 'components/form-dialog/form-dialog';
10 import {
11     CollectionNameField,
12     CollectionDescriptionField,
13     CollectionStorageClassesField
14 } from 'views-components/form-fields/collection-form-fields';
15 import { FileUploaderField } from '../file-uploader/file-uploader';
16 import { ResourceParentField } from '../form-fields/resource-form-fields';
17 import { CreateCollectionPropertiesList } from 'views-components/collection-properties/create-collection-properties-list';
18 import { CreateCollectionPropertiesForm } from 'views-components/collection-properties/create-collection-properties-form';
19 import { FormGroup, FormLabel } from '@material-ui/core';
20
21 type DialogCollectionProps = WithDialogProps<{}> & InjectedFormProps<CollectionCreateFormDialogData>;
22
23 export const DialogCollectionCreate = (props: DialogCollectionProps) =>
24     <FormDialog
25         dialogTitle='New collection'
26         formFields={CollectionAddFields}
27         submitLabel='Create a Collection'
28         {...props}
29     />;
30
31 const CollectionAddFields = () => <span>
32     <ResourceParentField />
33     <CollectionNameField />
34     <CollectionDescriptionField />
35     <FormLabel>Properties</FormLabel>
36     <FormGroup>
37         <CreateCollectionPropertiesForm />
38         <CreateCollectionPropertiesList />
39     </FormGroup>
40     <CollectionStorageClassesField defaultClasses={['default']} />
41     <Field
42         name='files'
43         label='Files'
44         component={FileUploaderField} />
45 </span>;
46