X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/97937a780bdb4ff67f334a1817d405dec1b2773c..198ae2eb95d997550d1d647916b38bb8b3f536e9:/src/views-components/dialog-create/dialog-project-create.tsx diff --git a/src/views-components/dialog-create/dialog-project-create.tsx b/src/views-components/dialog-create/dialog-project-create.tsx index e77114b3..d85a304e 100644 --- a/src/views-components/dialog-create/dialog-project-create.tsx +++ b/src/views-components/dialog-create/dialog-project-create.tsx @@ -2,101 +2,81 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { reduxForm, Field } from 'redux-form'; -import { compose } from 'redux'; -import { TextField } from '~/components/text-field/text-field'; -import { Dialog, DialogActions, DialogContent, DialogTitle } from '@material-ui/core/'; -import { Button, StyleRulesCallback, WithStyles, withStyles, CircularProgress } from '@material-ui/core'; +import React from 'react'; +import { InjectedFormProps } from 'redux-form'; +import { WithDialogProps } from 'store/dialog/with-dialog'; +import { ProjectCreateFormDialogData, PROJECT_CREATE_FORM_NAME } from 'store/projects/project-create-actions'; +import { FormDialog } from 'components/form-dialog/form-dialog'; +import { ProjectNameField, ProjectDescriptionField, UsersField } from 'views-components/form-fields/project-form-fields'; +import { CreateProjectPropertiesForm } from 'views-components/project-properties/create-project-properties-form'; +import { ResourceParentField } from '../form-fields/resource-form-fields'; +import { FormGroup, FormLabel, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; +import { resourcePropertiesList } from 'views-components/resource-properties/resource-properties-list'; +import { GroupClass } from 'models/group'; -import { PROJECT_NAME_VALIDATION, PROJECT_DESCRIPTION_VALIDATION } from '~/validators/validators'; - -type CssRules = "button" | "lastButton" | "formContainer" | "dialog" | "dialogTitle" | "createProgress" | "dialogActions"; +type CssRules = 'propertiesForm' | 'description'; const styles: StyleRulesCallback = theme => ({ - button: { - marginLeft: theme.spacing.unit - }, - lastButton: { - marginLeft: theme.spacing.unit, - marginRight: "20px", - }, - formContainer: { - display: "flex", - flexDirection: "column", - marginTop: "20px", - }, - dialogTitle: { - paddingBottom: "0" - }, - dialog: { - minWidth: "600px", - minHeight: "320px" + propertiesForm: { + marginTop: theme.spacing.unit * 2, + marginBottom: theme.spacing.unit * 2, }, - createProgress: { - position: "absolute", - minWidth: "20px", - right: "95px" + description: { + marginTop: theme.spacing.unit * 2, + marginBottom: theme.spacing.unit * 2, }, - dialogActions: { - marginBottom: "24px" - } }); -interface DialogProjectProps { - open: boolean; - handleClose: () => void; - onSubmit: (data: { name: string, description: string }) => void; - handleSubmit: any; - submitting: boolean; - invalid: boolean; - pristine: boolean; -} -export const PROJECT_CREATE_DIALOG = "projectCreateDialog"; +type DialogProjectProps = WithDialogProps<{sourcePanel: GroupClass}> & InjectedFormProps; -export const DialogProjectCreate = compose( - reduxForm({ form: PROJECT_CREATE_DIALOG }), - withStyles(styles))( - class DialogProjectCreate extends React.Component> { - render() { - const { classes, open, handleClose, handleSubmit, onSubmit, submitting, invalid, pristine } = this.props; +export const DialogProjectCreate = (props: DialogProjectProps) => { + let title = 'New Project'; + let fields = ProjectAddFields; + const sourcePanel = props.data.sourcePanel || ''; - return ( - -
-
onSubmit(data))}> - Create a - project - - - - - - - - {submitting && } - -
-
-
- ); - } + if (sourcePanel === GroupClass.ROLE) { + title = 'New Group'; + fields = GroupAddFields; } -); + + return ; +}; + +const CreateProjectPropertiesList = resourcePropertiesList(PROJECT_CREATE_FORM_NAME); + +const ProjectAddFields = withStyles(styles)( + ({ classes }: WithStyles) => + + +
+ +
+
+ Properties + + + + +
+
); + +const GroupAddFields = withStyles(styles)( + ({ classes }: WithStyles) => + + +
+ +
+
+ Properties + + + + +
+
);