X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6de571a660401585bc96dd92fd2563e9b64c58c6..2f83fcd45b4b23db2bb5bb4afbe1e863ebd77ec6:/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx?ds=sidebyside diff --git a/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx b/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx new file mode 100644 index 0000000000..5fc3f4e38e --- /dev/null +++ b/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx @@ -0,0 +1,66 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import React from 'react'; +import { Grid, StyleRulesCallback, Typography } from '@material-ui/core'; +import { Field, WrappedFieldProps } from 'redux-form'; +import { WithStyles } from '@material-ui/core/styles'; +import withStyles from '@material-ui/core/styles/withStyles'; +import { VisibilityLevelSelect } from './visibility-level-select'; +import { VisibilityLevel } from 'store/sharing-dialog/sharing-dialog-types'; + +const sharingPublicAccessStyles: StyleRulesCallback<'root'> = theme => ({ + root: { + padding: `${theme.spacing.unit * 2}px 0`, + }, + heading: { + fontSize: '1.25rem', + } +}); + +interface AccessProps { + visibility: VisibilityLevel; + includePublic: boolean; + onSave: () => void; +} + +const SharingPublicAccessForm = withStyles(sharingPublicAccessStyles)( + ({ classes, visibility, includePublic, onSave }: WithStyles<'root' | 'heading'> & AccessProps) => + <> + General access + + + + {renderVisibilityInfo(visibility)} + + + + name='visibility' component={VisibilityLevelSelectComponent} includePublic={includePublic} onChange={onSave} /> + + + +); + +const renderVisibilityInfo = (visibility: VisibilityLevel) => { + switch (visibility) { + case VisibilityLevel.PUBLIC: + return 'Shared with anyone on the Internet'; + case VisibilityLevel.ALL_USERS: + return 'Shared with all users on this cluster'; + case VisibilityLevel.SHARED: + return 'Shared with specific people'; + case VisibilityLevel.PRIVATE: + return 'Not shared'; + default: + return ''; + } +}; + +const SharingPublicAccessFormComponent = ({ visibility, includePublic, onSave }: AccessProps) => + ; + +export default SharingPublicAccessFormComponent; + +const VisibilityLevelSelectComponent = ({ input, includePublic }: { includePublic: boolean } & WrappedFieldProps) => + ;