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=inline
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) =>
+ ;