-interface DialogCollectionDataProps {
- open: boolean;
- handleSubmit: any;
- submitting: boolean;
- invalid: boolean;
- pristine: boolean;
-}
-
-interface DialogCollectionAction {
- handleClose: () => void;
- onSubmit: (data: { name: string, description: string }) => void;
-}
-
-type DialogCollectionProps = DialogCollectionDataProps & DialogCollectionAction & WithStyles<CssRules>;
-
-interface TextFieldProps {
- label: string;
- floatinglabeltext: string;
- className?: string;
- input?: string;
- meta?: any;
-}
-
-export const DialogCollectionUpdate = compose(
- reduxForm({ form: COLLECTION_FORM_NAME }),
- withStyles(styles))(
-
- class DialogCollectionUpdate extends React.Component<DialogCollectionProps> {
-
- render() {
- const { classes, open, handleClose, handleSubmit, onSubmit, submitting, invalid, pristine } = this.props;
- return (
- <Dialog open={open}
- onClose={handleClose}
- fullWidth={true}
- maxWidth='sm'
- disableBackdropClick={true}
- disableEscapeKeyDown={true}>
-
- <form onSubmit={handleSubmit((data: any) => onSubmit(data))}>
- <DialogTitle>Edit Collection</DialogTitle>
- <DialogContent className={classes.content}>
- <Field name="name"
- disabled={submitting}
- component={this.renderTextField}
- floatinglabeltext="Collection Name"
- validate={COLLECTION_NAME_VALIDATION}
- className={classes.textField}
- label="Collection Name" />
- <Field name="description"
- disabled={submitting}
- component={this.renderTextField}
- floatinglabeltext="Description - optional"
- validate={COLLECTION_DESCRIPTION_VALIDATION}
- className={classes.textField}
- label="Description - optional" />
- </DialogContent>
- <DialogActions className={classes.actions}>
- <Button onClick={handleClose} color="primary"
- disabled={submitting}>CANCEL</Button>
- <div className={classes.buttonWrapper}>
- <Button type="submit" className={classes.saveButton}
- color="primary"
- disabled={invalid || submitting || pristine}
- variant="contained">
- SAVE
- </Button>
- {submitting && <CircularProgress size={20} className={classes.circularProgress} />}
- </div>
- </DialogActions>
- </form>
- </Dialog>
- );
- }
-
- renderTextField = ({ input, label, meta: { touched, error }, ...custom }: TextFieldProps) => (
- <TextField
- helperText={touched && error}
- label={label}
- className={this.props.classes.textField}
- error={touched && !!error}
- autoComplete='off'
- {...input}
- {...custom}
- />
- )
- }
- );
\ No newline at end of file
+type DialogCollectionProps = WithDialogProps<{}> & InjectedFormProps<CollectionUpdateFormDialogData>;
+
+export const DialogCollectionUpdate = (props: DialogCollectionProps) =>
+ <FormDialog
+ dialogTitle='Edit Collection'
+ formFields={CollectionEditFields as any}
+ submitLabel='Save'
+ {...props}
+ />;
+
+const UpdateCollectionPropertiesList = resourcePropertiesList(COLLECTION_UPDATE_FORM_NAME);
+
+const CollectionEditFields = withStyles(styles)(
+ ({ classes }: WithStyles<CssRules>) => <span>
+ <CollectionNameField />
+ <CollectionDescriptionField />
+ <div className={classes.propertiesForm}>
+ <FormLabel>Properties</FormLabel>
+ <FormGroup>
+ <UpdateCollectionPropertiesForm />
+ <UpdateCollectionPropertiesList />
+ </FormGroup>
+ </div>
+ <CollectionStorageClassesField />
+ </span>);