//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from 'react';
+import React from 'react';
import { Grid, StyleRulesCallback, Divider, IconButton, Typography } from '@material-ui/core';
import {
Field,
import { PermissionSelect, formatPermissionLevel, parsePermissionLevel } from './permission-select';
import { WithStyles } from '@material-ui/core/styles';
import withStyles from '@material-ui/core/styles/withStyles';
-import { CloseIcon } from '~/components/icon/icon';
+import { CloseIcon } from 'components/icon/icon';
+const SharingManagementFormComponent = (props: { onSave: () => void; }) =>
+ <FieldArray<{ onSave: () => void }> name='permissions' component={SharingManagementFieldArray as any} props={props} />;
-export default () =>
- <FieldArray name='permissions' component={SharingManagementFieldArray} />;
+export default SharingManagementFormComponent;
-const SharingManagementFieldArray = ({ fields }: WrappedFieldArrayProps<{ email: string }>) =>
- <div>
- {
- fields.map((field, index, fields) =>
- <PermissionManagementRow key={field} {...{ field, index, fields }} />)
- }
+const SharingManagementFieldArray = ({ fields, onSave }: { onSave: () => void } & WrappedFieldArrayProps<{ email: string }>) =>
+ <div>{fields.map((field, index, fields) =>
+ <PermissionManagementRow key={field} {...{ field, index, fields }} onSave={onSave} />)}
<Divider />
</div>;
padding: `${theme.spacing.unit}px 0`,
}
});
+
const PermissionManagementRow = withStyles(permissionManagementRowStyles)(
- ({ field, index, fields, classes }: { field: string, index: number, fields: FieldArrayFieldsProps<{ email: string }> } & WithStyles<'root'>) =>
+ ({ field, index, fields, classes, onSave }: { field: string, index: number, fields: FieldArrayFieldsProps<{ email: string }>, onSave: () => void; } & WithStyles<'root'>) =>
<>
<Divider />
<Grid container alignItems='center' spacing={8} wrap='nowrap' className={classes.root}>
<Grid item xs={8}>
- <Typography noWrap variant='subheading'>{fields.get(index).email}</Typography>
+ <Typography noWrap variant='subtitle1'>{fields.get(index).email}</Typography>
</Grid>
<Grid item xs={4} container wrap='nowrap'>
<Field
- name={`${field}.permissions`}
+ name={`${field}.permissions` as string}
component={PermissionSelectComponent}
format={formatPermissionLevel}
- parse={parsePermissionLevel} />
- <IconButton onClick={() => fields.remove(index)}>
+ parse={parsePermissionLevel}
+ onChange={onSave}
+ />
+ <IconButton onClick={() => { fields.remove(index); onSave(); }}>
<CloseIcon />
</IconButton>
</Grid>