Skip to content

Commit dcc1449

Browse files
malwilleygeorge-sentry
authored andcommitted
feat(aci): Add markdown icon to monitor description input (#112295)
We want to make it more obvious that the description will use markdown syntax, so this adds a `MarkdownTextArea` component which adds the "markdown supported" icon in the top right. Hopefully we can improve this component in the future to use previews and such, but this is an improvement for now.
1 parent 1edc959 commit dcc1449

2 files changed

Lines changed: 45 additions & 13 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import styled from '@emotion/styled';
2+
3+
import {Container} from '@sentry/scraps/layout';
4+
import type {TextAreaProps} from '@sentry/scraps/textarea';
5+
import {TextArea} from '@sentry/scraps/textarea';
6+
import {Tooltip} from '@sentry/scraps/tooltip';
7+
8+
import {IconMarkdown} from 'sentry/icons';
9+
import {t} from 'sentry/locale';
10+
interface MarkdownTextAreaProps extends TextAreaProps {
11+
className?: string;
12+
}
13+
14+
export function MarkdownTextArea({className, ...props}: MarkdownTextAreaProps) {
15+
return (
16+
<Container position="relative" className={className}>
17+
<RightPaddedTextArea autosize rows={5} maxRows={10} {...props} />
18+
<Container position="absolute" top="8px " right="10px">
19+
<Tooltip title={t('Markdown supported')}>
20+
<IconMarkdown size="md" variant="muted" />
21+
</Tooltip>
22+
</Container>
23+
</Container>
24+
);
25+
}
26+
27+
const RightPaddedTextArea = styled(TextArea)`
28+
padding-right: ${p => p.theme.space['2xl']};
29+
`;

static/app/views/detectors/components/forms/common/issueOwnershipSection.tsx

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import styled from '@emotion/styled';
44
import {Stack} from '@sentry/scraps/layout';
55

66
import {SentryMemberTeamSelectorField} from 'sentry/components/forms/fields/sentryMemberTeamSelectorField';
7-
import {TextareaField} from 'sentry/components/forms/fields/textareaField';
7+
import {FormField} from 'sentry/components/forms/formField';
8+
import {MarkdownTextArea} from 'sentry/components/markdownTextArea';
89
import {useFormField} from 'sentry/components/workflowEngine/form/useFormField';
910
import {Container} from 'sentry/components/workflowEngine/ui/container';
1011
import {FormSection} from 'sentry/components/workflowEngine/ui/formSection';
@@ -33,21 +34,27 @@ export function IssueOwnershipSection({step}: {step?: number}) {
3334
flexibleControlStateSize
3435
memberOfProjectSlugs={memberOfProjectSlugs}
3536
/>
36-
<MinHeightTextarea
37+
<DescriptionField
3738
name="description"
3839
label={t('Describe')}
40+
hideControlState
41+
flexibleControlStateSize
3942
help={t(
4043
'Add any additional context about this monitor for other team members.'
4144
)}
4245
stacked
4346
inline={false}
44-
aria-label={t('description')}
45-
placeholder={t(
46-
'Example monitor description\n\nTo debug follow these steps:\n1. \u2026\n2. \u2026\n3. \u2026'
47+
>
48+
{fieldProps => (
49+
<MarkdownTextArea
50+
{...fieldProps}
51+
aria-label={t('description')}
52+
placeholder={t(
53+
'Example monitor description\n\nTo debug follow these steps:\n1. \u2026\n2. \u2026\n3. \u2026'
54+
)}
55+
/>
4756
)}
48-
rows={6}
49-
autosize
50-
/>
57+
</DescriptionField>
5158
</Stack>
5259
</FormSection>
5360
</Container>
@@ -58,10 +65,6 @@ const OwnershipField = styled(SentryMemberTeamSelectorField)`
5865
padding: ${p => p.theme.space.lg} 0;
5966
`;
6067

61-
// Min height helps prevent resize after placeholder is replaced with user input
62-
const MinHeightTextarea = styled(TextareaField)`
68+
const DescriptionField = styled(FormField)`
6369
padding: ${p => p.theme.space.lg} 0;
64-
textarea {
65-
min-height: 140px;
66-
}
6770
`;

0 commit comments

Comments
 (0)