From: Wouter Admiraal Date: Fri, 28 May 2021 08:00:03 +0000 (+0200) Subject: SONAR-14873 Ease comprehension of PR Decoration settings form X-Git-Tag: 9.0.0.45539~123 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=06681cd89f2a24144ac5706ca97a07374f1b6c72;p=sonarqube.git SONAR-14873 Ease comprehension of PR Decoration settings form --- diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx index d476039cc8b..4f4672e6bf1 100644 --- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx +++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx @@ -20,52 +20,80 @@ import * as React from 'react'; import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router'; -import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; import { Alert } from 'sonar-ui-common/components/ui/Alert'; import MandatoryFieldMarker from 'sonar-ui-common/components/ui/MandatoryFieldMarker'; import { translate } from 'sonar-ui-common/helpers/l10n'; import { ALM_DOCUMENTATION_PATHS } from '../../../../helpers/constants'; -import { AlmKeys, ProjectAlmBindingResponse } from '../../../../types/alm-settings'; +import { convertGithubApiUrlToLink, stripTrailingSlash } from '../../../../helpers/urls'; +import { + AlmKeys, + AlmSettingsInstance, + ProjectAlmBindingResponse +} from '../../../../types/alm-settings'; import InputForBoolean from '../inputs/InputForBoolean'; export interface AlmSpecificFormProps { alm: AlmKeys; + instances: AlmSettingsInstance[]; formData: T.Omit; onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void; monorepoEnabled: boolean; } interface LabelProps { - help?: boolean; - helpParams?: T.Dict; id: string; optional?: boolean; } interface CommonFieldProps extends LabelProps { + help?: boolean; + helpParams?: T.Dict; + helpExample?: JSX.Element; onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void; propKey: keyof ProjectAlmBindingResponse; } +function renderFieldWrapper( + label: React.ReactNode, + input: React.ReactNode, + help?: React.ReactNode +) { + return ( +
+
+ {label} + {help &&
{help}
} +
+
{input}
+
+ ); +} + +function renderHelp({ help, helpExample, helpParams, id }: CommonFieldProps) { + return ( + help && ( + <> + + {helpExample && ( +
+ {translate('example')}: {helpExample} +
+ )} + + ) + ); +} + function renderLabel(props: LabelProps) { - const { help, helpParams, optional, id } = props; + const { optional, id } = props; return ( -