X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/1072269cec78f75ec8995afab82d0faaa485f5da..781ba41642ebdf72b1a070d456ade07632bd3a70:/src/views/run-process-panel/inputs/project-input.tsx diff --git a/src/views/run-process-panel/inputs/project-input.tsx b/src/views/run-process-panel/inputs/project-input.tsx index 0c962ed8..688af4aa 100644 --- a/src/views/run-process-panel/inputs/project-input.tsx +++ b/src/views/run-process-panel/inputs/project-input.tsx @@ -5,7 +5,7 @@ import React from 'react'; import { connect, DispatchProp } from 'react-redux'; import { Field } from 'redux-form'; -import { Input, Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@material-ui/core'; +import { Input, Dialog, DialogTitle, DialogContent, DialogActions, Button, withStyles, WithStyles, StyleRulesCallback } from '@material-ui/core'; import { GenericCommandInputParameter } from 'models/workflow'; @@ -13,7 +13,7 @@ import { GenericInput, GenericInputProps } from './generic-input'; import { ProjectsTreePicker } from 'views-components/projects-tree-picker/projects-tree-picker'; import { initProjectsTreePicker } from 'store/tree-picker/tree-picker-actions'; import { TreeItem } from 'components/tree/tree'; -import { ProjectsTreePickerItem } from 'views-components/projects-tree-picker/generic-projects-tree-picker'; +import { ProjectsTreePickerItem } from 'store/tree-picker/tree-picker-middleware'; import { ProjectResource } from 'models/project'; import { ResourceKind } from 'models/resource'; import { RootState } from 'store/store'; @@ -24,18 +24,23 @@ export type ProjectCommandInputParameter = GenericCommandInputParameter (value === undefined); export interface ProjectInputProps { + required: boolean; input: ProjectCommandInputParameter; options?: { showOnlyOwned: boolean, showOnlyWritable: boolean }; } -export const ProjectInput = ({ input, options }: ProjectInputProps) => + +type DialogContentCssRules = 'root' | 'pickerWrapper'; + +export const ProjectInput = ({ required, input, options }: ProjectInputProps) => ; const format = (value?: ProjectResource) => value ? value.name : ''; @@ -54,6 +59,7 @@ const mapStateToProps = (state: RootState) => ({ userUuid: getUserUuid(state) }) export const ProjectInputComponent = connect(mapStateToProps)( class ProjectInputComponent extends React.Component { state: ProjectInputComponentState = { open: false, @@ -67,7 +73,7 @@ export const ProjectInputComponent = connect(mapStateToProps)( render() { return <> {this.renderInput()} - {this.renderDialog()} + ; } @@ -109,29 +115,44 @@ export const ProjectInputComponent = connect(mapStateToProps)( {...this.props} />; } - renderDialog() { - return this.state.open ? - Choose a project - - - - - - - - : null; - } + dialogContentStyles: StyleRulesCallback = ({ spacing }) => ({ + root: { + display: 'flex', + flexDirection: 'column', + }, + pickerWrapper: { + flexBasis: `${spacing.unit * 8}vh`, + flexShrink: 1, + minHeight: 0, + }, + }); + + dialog = withStyles(this.dialogContentStyles)( + ({ classes }: WithStyles) => + this.state.open ? + Choose a project + +
+ +
+
+ + + + +
: null + ); });