X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0f5b0542513b572959e39400bae42e69aeb1a7b6..3ed6fab9c3ec7ca31133e4d4c750d546727b1847:/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx diff --git a/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx b/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx index 17417bf554..75cf40c641 100644 --- a/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx +++ b/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx @@ -9,7 +9,9 @@ import { WrappedFieldProps } from 'redux-form'; import { ProjectsTreePicker } from 'views-components/projects-tree-picker/projects-tree-picker'; import { ProjectsTreePickerItem } from 'store/tree-picker/tree-picker-middleware'; import { PickerIdProp } from 'store/tree-picker/picker-id'; -import { getFileOperationLocation } from "store/tree-picker/tree-picker-actions"; +import { FileOperationLocation, getFileOperationLocation } from "store/tree-picker/tree-picker-actions"; +import { connect } from "react-redux"; +import { Dispatch } from "redux"; export const ProjectTreePickerField = (props: WrappedFieldProps & PickerIdProp) =>
@@ -17,6 +19,7 @@ export const ProjectTreePickerField = (props: WrappedFieldProps & PickerIdProp) {props.meta.dirty && props.meta.error && @@ -35,6 +38,7 @@ export const CollectionTreePickerField = (props: WrappedFieldProps & PickerIdPro {props.meta.dirty && props.meta.error && @@ -44,24 +48,41 @@ export const CollectionTreePickerField = (props: WrappedFieldProps & PickerIdPro
; -const handleDirectoryChange = (props: WrappedFieldProps) => - (_: any, { data }: TreeItem) => { - props.input.onChange(getFileOperationLocation(data) || ''); - } +type ProjectsTreePickerActionProps = { + getFileOperationLocation: (item: ProjectsTreePickerItem) => Promise; +} -export const DirectoryTreePickerField = (props: WrappedFieldProps & PickerIdProp) => -
-
- - {props.meta.dirty && props.meta.error && - - {props.meta.error} - } -
-
; +const projectsTreePickerMapDispatchToProps = (dispatch: Dispatch): ProjectsTreePickerActionProps => ({ + getFileOperationLocation: (item: ProjectsTreePickerItem) => dispatch(getFileOperationLocation(item)), +}); + +type ProjectsTreePickerCombinedProps = ProjectsTreePickerActionProps & WrappedFieldProps & PickerIdProp; + +export const DirectoryTreePickerField = connect(null, projectsTreePickerMapDispatchToProps)( + class DirectoryTreePickerFieldComponent extends React.Component { + + handleDirectoryChange = (props: WrappedFieldProps) => + async (_: any, { data }: TreeItem) => { + const location = await this.props.getFileOperationLocation(data); + props.input.onChange(location || ''); + } + + render() { + return
+
+ + {this.props.meta.dirty && this.props.meta.error && + + {this.props.meta.error} + } +
+
; + } + });