import {Fragment, useState} from 'react'; import styled from '@emotion/styled'; import {Button} from 'sentry/components/button'; import TextArea from 'sentry/components/forms/controls/textarea'; import TextField from 'sentry/components/forms/fields/textField'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {SectionHeader} from 'sentry/views/dashboards/widgetBuilder/components/common/sectionHeader'; import {useWidgetBuilderContext} from 'sentry/views/dashboards/widgetBuilder/contexts/widgetBuilderContext'; import {BuilderStateAction} from 'sentry/views/dashboards/widgetBuilder/hooks/useWidgetBuilderState'; interface WidgetBuilderNameAndDescriptionProps { error: Record; setError: (error: Record) => void; } function WidgetBuilderNameAndDescription({ error, setError, }: WidgetBuilderNameAndDescriptionProps) { const {state, dispatch} = useWidgetBuilderContext(); const [isDescSelected, setIsDescSelected] = useState(state.description ? true : false); return ( { // clear error once user starts typing setError({...error, title: undefined}); dispatch({type: BuilderStateAction.SET_TITLE, payload: newTitle}); }} required error={error.title} inline={false} /> {!isDescSelected && ( { setIsDescSelected(true); }} data-test-id={'add-description'} > {t('+ Add Widget Description')} )} {isDescSelected && ( { dispatch({type: BuilderStateAction.SET_DESCRIPTION, payload: e.target.value}); }} /> )} ); } export default WidgetBuilderNameAndDescription; const StyledInput = styled(TextField)` margin-bottom: ${space(1)}; padding: 0; border: none; `; const AddDescriptionButton = styled(Button)` margin-bottom: ${space(1)}; `; const DescriptionTextArea = styled(TextArea)` margin: ${space(2)} 0; `;