ruleNameOwnerForm.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react';
  2. import Feature from 'app/components/acl/feature';
  3. import {Panel, PanelBody} from 'app/components/panels';
  4. import SelectMembers from 'app/components/selectMembers';
  5. import {t} from 'app/locale';
  6. import {Organization, Project} from 'app/types';
  7. import FormField from 'app/views/settings/components/forms/formField';
  8. import TextField from 'app/views/settings/components/forms/textField';
  9. type Props = {
  10. disabled: boolean;
  11. project: Project;
  12. organization: Organization;
  13. userTeamIds: Set<string>;
  14. };
  15. class RuleNameOwnerForm extends React.PureComponent<Props> {
  16. render() {
  17. const {disabled, project, organization, userTeamIds} = this.props;
  18. return (
  19. <Panel>
  20. <PanelBody>
  21. <TextField
  22. disabled={disabled}
  23. name="name"
  24. label={t('Rule Name')}
  25. help={t('Give your rule a name so it is easy to manage later')}
  26. placeholder={t('Something really bad happened')}
  27. required
  28. />
  29. <Feature features={['organizations:team-alerts-ownership']}>
  30. <FormField
  31. name="owner"
  32. label={t('Team')}
  33. help={t('The team that can edit this alert.')}
  34. >
  35. {({model}) => {
  36. const owner = model.getValue('owner');
  37. const ownerId = owner && owner.split(':')[1];
  38. return (
  39. <SelectMembers
  40. showTeam
  41. project={project}
  42. organization={organization}
  43. value={ownerId}
  44. onChange={({value}) => {
  45. const ownerValue = value && `team:${value}`;
  46. model.setValue('owner', ownerValue);
  47. }}
  48. filteredTeamIds={userTeamIds}
  49. includeUnassigned
  50. />
  51. );
  52. }}
  53. </FormField>
  54. </Feature>
  55. </PanelBody>
  56. </Panel>
  57. );
  58. }
  59. }
  60. export default RuleNameOwnerForm;