// Copyright (C) The Arvados Authors. All rights reserved. // // 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-project/create-project-validator'; import { FileUpload } from "../../components/file-upload/file-upload"; import { connect, DispatchProp } from "react-redux"; import { RootState } from "../../store/store"; import { collectionUploaderActions } from "../../store/collections/uploader/collection-uploader-actions"; type CssRules = "button" | "lastButton" | "formContainer" | "textField" | "createProgress" | "dialogActions"; const styles: StyleRulesCallback = theme => ({ button: { marginLeft: theme.spacing.unit }, lastButton: { marginLeft: theme.spacing.unit, marginRight: "20px", }, formContainer: { display: "flex", flexDirection: "column", }, 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, files: File[] }) => void; handleSubmit: any; submitting: boolean; invalid: boolean; pristine: boolean; files: File[]; } interface TextFieldProps { label: string; floatinglabeltext: string; className?: string; input?: string; meta?: any; } export const DialogCollectionCreate = compose( connect((state: RootState) => ({ files: state.collections.uploader.files })), 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, files: this.props.files }))}> Create a collection this.props.dispatch(collectionUploaderActions.SET_UPLOAD_FILES(files))}/> {submitting && }
); } renderTextField = ({ input, label, meta: { touched, error }, ...custom }: TextFieldProps) => ( ) } );