//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from 'react';
-import { Grid, StyleRulesCallback, Divider, Typography } from '@material-ui/core';
+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';
+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 }: WithStyles<'root'> & { visibility: VisibilityLevel }) =>
+ ({ classes, visibility, includePublic, onSave }: WithStyles<'root' | 'heading'> & AccessProps) =>
<>
- <Divider />
+ <Typography className={classes.heading}>General access</Typography>
<Grid container alignItems='center' spacing={8} className={classes.root}>
<Grid item xs={8}>
<Typography variant='subtitle1'>
</Typography>
</Grid>
<Grid item xs={4} container wrap='nowrap'>
- <Field name='visibility' component={VisibilityLevelSelectComponent} />
+ <Field<{ includePublic: boolean }> name='visibility' component={VisibilityLevelSelectComponent} includePublic={includePublic} onChange={onSave} />
</Grid>
</Grid>
</>
const renderVisibilityInfo = (visibility: VisibilityLevel) => {
switch (visibility) {
case VisibilityLevel.PUBLIC:
- return 'Anyone can access';
+ return 'Shared with anyone on the Internet';
+ case VisibilityLevel.ALL_USERS:
+ return 'Shared with all users on this cluster';
case VisibilityLevel.SHARED:
- return 'Specific people can access';
+ return 'Shared with specific people';
case VisibilityLevel.PRIVATE:
- return 'Only you can access';
+ return 'Not shared';
default:
return '';
}
};
-export default ({ visibility }: { visibility: VisibilityLevel }) =>
- <SharingPublicAccessForm {...{ visibility }} />;
+const SharingPublicAccessFormComponent = ({ visibility, includePublic, onSave }: AccessProps) =>
+ <SharingPublicAccessForm {...{ visibility, includePublic, onSave }} />;
+
+export default SharingPublicAccessFormComponent;
-const VisibilityLevelSelectComponent = ({ input }: WrappedFieldProps) =>
- <VisibilityLevelSelect fullWidth disableUnderline {...input} />;
+const VisibilityLevelSelectComponent = ({ input, includePublic }: { includePublic: boolean } & WrappedFieldProps) =>
+ <VisibilityLevelSelect fullWidth disableUnderline includePublic={includePublic} {...input} />;