import {Fragment} from 'react'; import styled from '@emotion/styled'; import TextField from 'sentry/components/forms/fields/textField'; import FormField from 'sentry/components/forms/formField'; import ListItem from 'sentry/components/list/listItem'; import TeamSelector from 'sentry/components/teamSelector'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import type {Team} from 'sentry/types/organization'; import type {Project} from 'sentry/types/project'; type Props = { disabled: boolean; project: Project; }; export default function RuleNameOwnerForm({disabled, project}: Props) { const renderRuleName = () => ( ); const renderTeamSelect = () => ( {({model}) => { const owner = model.getValue('owner'); const ownerId = owner?.split(':')[1]; return ( model.setValue('owner', value && `team:${value}`)} teamFilter={(team: Team) => team.isMember || team.id === ownerId || team.access.includes('team:admin') } useId includeUnassigned disabled={disabled} /> ); }} ); return ( {t('Establish ownership')} {renderRuleName()} {renderTeamSelect()} ); } const StyledListItem = styled(ListItem)` margin: ${space(2)} 0 ${space(1)} 0; font-size: ${p => p.theme.fontSizeExtraLarge}; `; const StyledTextField = styled(TextField)` border-bottom: none; padding: 0; & > div { padding: 0; width: 100%; } margin-bottom: ${space(1)}; `; const StyledFormField = styled(FormField)<{extraMargin?: boolean}>` padding: 0; & > div { padding: 0; width: 100%; } margin-bottom: ${p => `${p.extraMargin ? '60px' : space(1)}`}; `;