@@ -22,12 +22,25 @@ import Tooltip from '../../../components/controls/Tooltip'; | |||
import { translate, translateWithParameters } from '../../../helpers/l10n'; | |||
export default function DeprecatedBadge({ since }: { since?: string }) { | |||
const version = since && parseVersion(since); | |||
const overlay = version | |||
? translateWithParameters('api_documentation.will_be_removed_in_x', `${version.major + 2}.0`) | |||
: translate('api_documentation.deprecation_tooltip'); | |||
const label = since | |||
? translateWithParameters('api_documentation.deprecated_since_x', since) | |||
: translate('api_documentation.deprecated'); | |||
return ( | |||
<Tooltip overlay={translate('api_documentation.deprecation_tooltip')}> | |||
<Tooltip overlay={overlay}> | |||
<span className="badge badge-warning">{label}</span> | |||
</Tooltip> | |||
); | |||
} | |||
function parseVersion(version: string) { | |||
const match = /(\d+)\.(\d+)/.exec(version); | |||
if (match) { | |||
return { major: Number(match[1]), minor: Number(match[2]) }; | |||
} else { | |||
return undefined; | |||
} | |||
} |
@@ -0,0 +1,34 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2018 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
import * as React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import DeprecatedBadge from '../DeprecatedBadge'; | |||
it('should render with version', () => { | |||
expect(shallow(<DeprecatedBadge since="5.6" />)).toMatchSnapshot(); | |||
}); | |||
it('should render without version', () => { | |||
expect(shallow(<DeprecatedBadge />)).toMatchSnapshot(); | |||
}); | |||
it('should render with malformed version', () => { | |||
expect(shallow(<DeprecatedBadge since="foo" />)).toMatchSnapshot(); | |||
}); |
@@ -0,0 +1,37 @@ | |||
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||
exports[`should render with malformed version 1`] = ` | |||
<Tooltip | |||
overlay="api_documentation.deprecation_tooltip" | |||
> | |||
<span | |||
className="badge badge-warning" | |||
> | |||
api_documentation.deprecated_since_x.foo | |||
</span> | |||
</Tooltip> | |||
`; | |||
exports[`should render with version 1`] = ` | |||
<Tooltip | |||
overlay="api_documentation.will_be_removed_in_x.7.0" | |||
> | |||
<span | |||
className="badge badge-warning" | |||
> | |||
api_documentation.deprecated_since_x.5.6 | |||
</span> | |||
</Tooltip> | |||
`; | |||
exports[`should render without version 1`] = ` | |||
<Tooltip | |||
overlay="api_documentation.deprecation_tooltip" | |||
> | |||
<span | |||
className="badge badge-warning" | |||
> | |||
api_documentation.deprecated | |||
</span> | |||
</Tooltip> | |||
`; |
@@ -2524,6 +2524,7 @@ api_documentation.max_length=Maximum length | |||
api_documentation.internal=internal | |||
api_documentation.deprecated=deprecated | |||
api_documentation.deprecated_since_x=deprecated since {0} | |||
api_documentation.will_be_removed_in_x=Will be removed in {0} | |||
api_documentation.parameters=Parameters | |||
api_documentation.response_example=Response Example | |||
api_documentation.changelog=Changelog |