1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from "react";
6 import { memoize } from "lodash/fp";
7 import { InjectedFormProps, Field } from "redux-form";
8 import { WithDialogProps } from "store/dialog/with-dialog";
9 import { FormDialog } from "components/form-dialog/form-dialog";
10 import { ProjectTreePickerField } from "views-components/projects-tree-picker/tree-picker-field";
11 import { COPY_NAME_VALIDATION, COPY_FILE_VALIDATION } from "validators/validators";
12 import { TextField } from "components/text-field/text-field";
13 import { CopyFormDialogData } from "store/copy-dialog/copy-dialog";
14 import { PickerIdProp } from "store/tree-picker/picker-id";
16 type CopyFormDialogProps = WithDialogProps<string> & InjectedFormProps<CopyFormDialogData>;
18 export const DialogCopy = (props: CopyFormDialogProps & PickerIdProp) => {
21 dialogTitle="Make a copy"
22 formFields={CopyDialogFields(props.pickerId)}
29 const CopyDialogFields = memoize((pickerId: string) => () => (
33 component={TextField as any}
34 validate={COPY_NAME_VALIDATION}
35 label="Enter a new name for the copy"
39 component={ProjectTreePickerField}
40 validate={COPY_FILE_VALIDATION}
46 export const DialogMultiCopy = (props: CopyFormDialogProps & PickerIdProp) => {
49 dialogTitle="Make Copies"
50 formFields={CopyMultiDialogFields(props.pickerId)}
57 const CopyMultiDialogFields = memoize((pickerId: string) => () => (
60 component={ProjectTreePickerField}
61 validate={COPY_FILE_VALIDATION}