2020-06-24 03:55:39 -05:00
|
|
|
import React, { FC } from 'react';
|
2021-07-23 04:33:26 -05:00
|
|
|
import { connect, ConnectedProps } from 'react-redux';
|
2018-11-15 06:37:29 -06:00
|
|
|
|
2022-04-22 08:33:13 -05:00
|
|
|
import { Input, Field, Form, Button, FieldSet, VerticalGroup } from '@grafana/ui';
|
2018-11-15 06:37:29 -06:00
|
|
|
import { SharedPreferences } from 'app/core/components/SharedPreferences/SharedPreferences';
|
2022-06-08 11:05:27 -05:00
|
|
|
import { contextSrv } from 'app/core/services/context_srv';
|
2022-04-22 08:33:13 -05:00
|
|
|
import { AccessControlAction, Team } from 'app/types';
|
|
|
|
|
|
|
|
import { updateTeam } from './state/actions';
|
2018-09-11 07:14:03 -05:00
|
|
|
|
2021-07-23 04:33:26 -05:00
|
|
|
const mapDispatchToProps = {
|
|
|
|
updateTeam,
|
|
|
|
};
|
|
|
|
|
|
|
|
const connector = connect(null, mapDispatchToProps);
|
|
|
|
|
|
|
|
interface OwnProps {
|
2018-09-11 07:14:03 -05:00
|
|
|
team: Team;
|
|
|
|
}
|
2021-07-23 04:33:26 -05:00
|
|
|
export type Props = ConnectedProps<typeof connector> & OwnProps;
|
2018-09-11 07:14:03 -05:00
|
|
|
|
2020-06-24 03:55:39 -05:00
|
|
|
export const TeamSettings: FC<Props> = ({ team, updateTeam }) => {
|
2022-02-03 10:49:39 -06:00
|
|
|
const canWriteTeamSettings = contextSrv.hasPermissionInMetadata(AccessControlAction.ActionTeamsWrite, team);
|
|
|
|
|
2020-06-24 03:55:39 -05:00
|
|
|
return (
|
|
|
|
<VerticalGroup>
|
2021-03-31 18:07:37 -05:00
|
|
|
<FieldSet label="Team settings">
|
2020-06-24 03:55:39 -05:00
|
|
|
<Form
|
|
|
|
defaultValues={{ ...team }}
|
|
|
|
onSubmit={(formTeam: Team) => {
|
|
|
|
updateTeam(formTeam.name, formTeam.email);
|
|
|
|
}}
|
2022-02-03 10:49:39 -06:00
|
|
|
disabled={!canWriteTeamSettings}
|
2020-06-24 03:55:39 -05:00
|
|
|
>
|
2022-06-10 02:50:53 -05:00
|
|
|
{({ register, errors }) => (
|
2020-06-24 03:55:39 -05:00
|
|
|
<>
|
2022-06-10 02:50:53 -05:00
|
|
|
<Field
|
|
|
|
label="Name"
|
|
|
|
disabled={!canWriteTeamSettings}
|
|
|
|
required
|
|
|
|
invalid={!!errors.name}
|
|
|
|
error="Name is required"
|
|
|
|
>
|
2021-09-30 09:46:10 -05:00
|
|
|
<Input {...register('name', { required: true })} id="name-input" />
|
2020-06-24 03:55:39 -05:00
|
|
|
</Field>
|
|
|
|
|
|
|
|
<Field
|
|
|
|
label="Email"
|
2021-03-31 18:07:37 -05:00
|
|
|
description="This is optional and is primarily used to set the team profile avatar (via gravatar service)."
|
2022-02-11 03:58:37 -06:00
|
|
|
disabled={!canWriteTeamSettings}
|
2020-06-24 03:55:39 -05:00
|
|
|
>
|
2021-09-30 09:46:10 -05:00
|
|
|
<Input {...register('email')} placeholder="team@email.com" type="email" id="email-input" />
|
2020-06-24 03:55:39 -05:00
|
|
|
</Field>
|
2022-02-11 03:58:37 -06:00
|
|
|
<Button type="submit" disabled={!canWriteTeamSettings}>
|
|
|
|
Update
|
|
|
|
</Button>
|
2020-06-24 03:55:39 -05:00
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</Form>
|
|
|
|
</FieldSet>
|
2022-02-03 10:49:39 -06:00
|
|
|
<SharedPreferences resourceUri={`teams/${team.id}`} disabled={!canWriteTeamSettings} />
|
2020-06-24 03:55:39 -05:00
|
|
|
</VerticalGroup>
|
|
|
|
);
|
|
|
|
};
|
2018-09-11 07:14:03 -05:00
|
|
|
|
2021-07-23 04:33:26 -05:00
|
|
|
export default connector(TeamSettings);
|