1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
6 import { compose } from "redux";
7 import { reduxForm, InjectedFormProps, WrappedFieldProps, Field } from 'redux-form';
8 import { withDialog, WithDialogProps } from "store/dialog/with-dialog";
9 import { FormDialog } from 'components/form-dialog/form-dialog';
10 import { EDIT_PERMISSION_LEVEL_DIALOG, EDIT_PERMISSION_LEVEL_FORM, EditPermissionLevelFormData, EDIT_PERMISSION_LEVEL_FIELD_NAME, editPermissionLevel } from 'store/group-details-panel/group-details-panel-actions';
11 import { require } from 'validators/require';
12 import { PermissionSelect } from 'views-components/sharing-dialog/permission-select';
13 import { Grid } from '@material-ui/core';
14 import { Resource } from 'models/resource';
15 import { ResourceLabel } from 'views-components/data-explorer/renderers';
17 export const EditPermissionLevelDialog = compose(
18 withDialog(EDIT_PERMISSION_LEVEL_DIALOG),
19 reduxForm<EditPermissionLevelFormData>({
20 form: EDIT_PERMISSION_LEVEL_FORM,
21 onSubmit: (data, dispatch) => {
22 dispatch(editPermissionLevel(data));
26 (props: EditPermissionLevelDialogProps) =>
28 dialogTitle='Edit permission'
29 formFields={PermissionField}
35 interface EditPermissionLevelDataProps {
39 type EditPermissionLevelDialogProps = EditPermissionLevelDataProps & WithDialogProps<{}> & InjectedFormProps<EditPermissionLevelFormData>;
41 const PermissionField = (props: EditPermissionLevelDialogProps) =>
42 <Grid container spacing={8}>
44 <ResourceLabel uuid={props.data.uuid} />
46 <Grid item xs={4} container wrap='nowrap'>
48 name={EDIT_PERMISSION_LEVEL_FIELD_NAME}
49 component={PermissionSelectComponent as any}
54 const PermissionSelectComponent = ({ input }: WrappedFieldProps) =>
55 <PermissionSelect fullWidth disableUnderline {...input} />;