X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/787e604aba41d4e75716bf99507c02df9fa8cf4d..c952afae1af2fb31b68be04f70bd7ae6f9d52aba:/src/views-components/dialog-create/dialog-collection-create.tsx diff --git a/src/views-components/dialog-create/dialog-collection-create.tsx b/src/views-components/dialog-create/dialog-collection-create.tsx index 874ce138..17a24e48 100644 --- a/src/views-components/dialog-create/dialog-collection-create.tsx +++ b/src/views-components/dialog-create/dialog-collection-create.tsx @@ -2,122 +2,59 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { reduxForm, Field } from 'redux-form'; -import { compose } from 'redux'; -import TextField from '@material-ui/core/TextField'; -import Dialog from '@material-ui/core/Dialog'; -import DialogActions from '@material-ui/core/DialogActions'; -import DialogContent from '@material-ui/core/DialogContent'; -import DialogTitle from '@material-ui/core/DialogTitle'; -import { Button, StyleRulesCallback, WithStyles, withStyles, CircularProgress } from '@material-ui/core'; - -import { COLLECTION_NAME_VALIDATION, COLLECTION_DESCRIPTION_VALIDATION } from '../../validators/create-collection/create-collection-validator'; - -type CssRules = "button" | "lastButton" | "formContainer" | "textField" | "createProgress" | "dialogActions"; +import React from 'react'; +import { InjectedFormProps, Field } from 'redux-form'; +import { WithDialogProps } from 'store/dialog/with-dialog'; +import { CollectionCreateFormDialogData, COLLECTION_CREATE_FORM_NAME } from 'store/collections/collection-create-actions'; +import { FormDialog } from 'components/form-dialog/form-dialog'; +import { + CollectionNameField, + CollectionDescriptionField, + CollectionStorageClassesField +} from 'views-components/form-fields/collection-form-fields'; +import { FileUploaderField } from '../file-uploader/file-uploader'; +import { ResourceParentField } from '../form-fields/resource-form-fields'; +import { CreateCollectionPropertiesForm } from 'views-components/collection-properties/create-collection-properties-form'; +import { FormGroup, FormLabel, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; +import { resourcePropertiesList } from 'views-components/resource-properties/resource-properties-list'; + +type CssRules = 'propertiesForm'; const styles: StyleRulesCallback = theme => ({ - button: { - marginLeft: theme.spacing.unit - }, - lastButton: { - marginLeft: theme.spacing.unit, - marginRight: "20px", - }, - formContainer: { - display: "flex", - flexDirection: "column", + propertiesForm: { + marginTop: theme.spacing.unit * 2, + marginBottom: theme.spacing.unit * 2, }, - textField: { - marginBottom: theme.spacing.unit * 3 - }, - createProgress: { - position: "absolute", - minWidth: "20px", - right: "110px" - }, - dialogActions: { - marginBottom: theme.spacing.unit * 3 - } }); -interface DialogCollectionCreateProps { - open: boolean; - handleClose: () => void; - onSubmit: (data: { name: string, description: string }) => void; - handleSubmit: any; - submitting: boolean; - invalid: boolean; - pristine: boolean; -} - -interface TextFieldProps { - label: string; - floatinglabeltext: string; - className?: string; - input?: string; - meta?: any; -} - -export const DialogCollectionCreate = compose( - reduxForm({ form: 'collectionCreateDialog' }), - withStyles(styles))( - class DialogCollectionCreate extends React.Component> { - render() { - const { classes, open, handleClose, handleSubmit, onSubmit, submitting, invalid, pristine } = this.props; - return ( - -
onSubmit(data))}> - Create a collection - - - - - - - - {submitting && } - -
-
- ); - } +type DialogCollectionProps = WithDialogProps<{}> & InjectedFormProps; + +export const DialogCollectionCreate = (props: DialogCollectionProps) => + ; + +const CreateCollectionPropertiesList = resourcePropertiesList(COLLECTION_CREATE_FORM_NAME); + +const CollectionAddFields = withStyles(styles)( + ({ classes }: WithStyles) => + + + +
+ Properties + + + + +
+ + +
); - renderTextField = ({ input, label, meta: { touched, error }, ...custom }: TextFieldProps) => ( - - ) - } -);