Browse Source

update typescript to 2.7 (#3054)

tags/7.5
Stas Vilchik 6 years ago
parent
commit
c4bd5d2945
No account linked to committer's email address
100 changed files with 152 additions and 134 deletions
  1. 1
    0
      server/sonar-web/.eslintrc
  2. 3
    3
      server/sonar-web/package.json
  3. 1
    1
      server/sonar-web/src/main/js/app/components/App.tsx
  4. 1
    1
      server/sonar-web/src/main/js/app/components/ComponentContainer.tsx
  5. 1
    1
      server/sonar-web/src/main/js/app/components/LocalizationContainer.tsx
  6. 1
    1
      server/sonar-web/src/main/js/app/components/SimpleContainer.tsx
  7. 1
    1
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.tsx
  8. 1
    1
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx
  9. 1
    1
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx
  10. 1
    1
      server/sonar-web/src/main/js/apps/account/organizations/CreateOrganizationForm.tsx
  11. 1
    1
      server/sonar-web/src/main/js/apps/account/organizations/UserOrganizations.tsx
  12. 1
    1
      server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx
  13. 1
    1
      server/sonar-web/src/main/js/apps/background-tasks/components/ScannerContext.tsx
  14. 1
    1
      server/sonar-web/src/main/js/apps/background-tasks/components/Stacktrace.tsx
  15. 1
    1
      server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx
  16. 1
    1
      server/sonar-web/src/main/js/apps/background-tasks/components/WorkersForm.tsx
  17. 1
    1
      server/sonar-web/src/main/js/apps/code/components/App.tsx
  18. 10
    8
      server/sonar-web/src/main/js/apps/code/components/Component.tsx
  19. 1
    1
      server/sonar-web/src/main/js/apps/code/components/Search.tsx
  20. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx
  21. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx
  22. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx
  23. 13
    5
      server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx
  24. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx
  25. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx
  26. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx
  27. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx
  28. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx
  29. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx
  30. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx
  31. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx
  32. 1
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsTagsPopup.tsx
  33. 13
    5
      server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx
  34. 1
    1
      server/sonar-web/src/main/js/apps/custom-measures/components/App.tsx
  35. 1
    1
      server/sonar-web/src/main/js/apps/custom-measures/components/CreateButton.tsx
  36. 1
    1
      server/sonar-web/src/main/js/apps/custom-measures/components/EditButton.tsx
  37. 1
    1
      server/sonar-web/src/main/js/apps/custom-measures/components/Form.tsx
  38. 1
    1
      server/sonar-web/src/main/js/apps/custom-metrics/components/App.tsx
  39. 1
    1
      server/sonar-web/src/main/js/apps/custom-metrics/components/CreateButton.tsx
  40. 1
    1
      server/sonar-web/src/main/js/apps/custom-metrics/components/EditButton.tsx
  41. 1
    1
      server/sonar-web/src/main/js/apps/groups/components/App.tsx
  42. 1
    1
      server/sonar-web/src/main/js/apps/groups/components/EditGroup.tsx
  43. 1
    1
      server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx
  44. 1
    1
      server/sonar-web/src/main/js/apps/groups/components/Header.tsx
  45. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.js
  46. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.js
  47. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.js
  48. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.js
  49. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.js
  50. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.js
  51. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/ModuleFacet.js
  52. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.js
  53. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.js
  54. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.js
  55. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.js
  56. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.js
  57. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.js
  58. 2
    2
      server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.js
  59. 1
    1
      server/sonar-web/src/main/js/apps/marketplace/App.tsx
  60. 1
    1
      server/sonar-web/src/main/js/apps/marketplace/components/LicenseEditionForm.tsx
  61. 1
    1
      server/sonar-web/src/main/js/apps/marketplace/components/LicenseEditionSet.tsx
  62. 1
    1
      server/sonar-web/src/main/js/apps/marketplace/components/PluginActions.tsx
  63. 1
    1
      server/sonar-web/src/main/js/apps/marketplace/components/UninstallEditionForm.tsx
  64. 1
    1
      server/sonar-web/src/main/js/apps/overview/badges/BadgeParams.tsx
  65. 1
    1
      server/sonar-web/src/main/js/apps/overview/components/OverviewApp.tsx
  66. 1
    1
      server/sonar-web/src/main/js/apps/overview/events/AnalysesList.tsx
  67. 1
    1
      server/sonar-web/src/main/js/apps/overview/meta/MetaLinks.tsx
  68. 1
    1
      server/sonar-web/src/main/js/apps/overview/meta/MetaQualityProfiles.tsx
  69. 3
    3
      server/sonar-web/src/main/js/apps/overview/meta/MetaTags.tsx
  70. 1
    1
      server/sonar-web/src/main/js/apps/overview/qualityGate/ApplicationQualityGate.tsx
  71. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx
  72. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/App.tsx
  73. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/Report.tsx
  74. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/Subscription.tsx
  75. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
  76. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx
  77. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx
  78. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/LeakPeriodForm.tsx
  79. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/LongBranchesPattern.tsx
  80. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
  81. 1
    1
      server/sonar-web/src/main/js/apps/projectBranches/components/SettingForm.tsx
  82. 2
    2
      server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx
  83. 1
    1
      server/sonar-web/src/main/js/apps/projectQualityGate/App.tsx
  84. 1
    1
      server/sonar-web/src/main/js/apps/projectQualityGate/Form.tsx
  85. 1
    1
      server/sonar-web/src/main/js/apps/projectQualityProfiles/App.tsx
  86. 1
    1
      server/sonar-web/src/main/js/apps/projectQualityProfiles/ProfileRow.tsx
  87. 1
    1
      server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
  88. 1
    1
      server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx
  89. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/App.tsx
  90. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
  91. 2
    2
      server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx
  92. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/DeleteModal.tsx
  93. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx
  94. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx
  95. 1
    2
      server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
  96. 1
    1
      server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx
  97. 1
    1
      server/sonar-web/src/main/js/apps/quality-gates/components/CreateQualityGateForm.tsx
  98. 1
    1
      server/sonar-web/src/main/js/apps/quality-gates/components/DeleteConditionForm.tsx
  99. 1
    1
      server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx
  100. 0
    0
      server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx

+ 1
- 0
server/sonar-web/.eslintrc View File

@@ -172,6 +172,7 @@
{
"order": [
"type-annotations",
"instance-variables",
"static-methods",
"lifecycle",
"everything-else",

+ 3
- 3
server/sonar-web/package.json View File

@@ -52,7 +52,7 @@
"@types/jest": "22.0.1",
"@types/jquery": "3.2.11",
"@types/keymaster": "1.6.28",
"@types/lodash": "4.14.80",
"@types/lodash": "4.14.102",
"@types/prop-types": "15.5.2",
"@types/react": "16.0.29",
"@types/react-dom": "16.0.3",
@@ -103,8 +103,8 @@
"rimraf": "2.6.2",
"style-loader": "0.19.0",
"ts-jest": "22.0.1",
"typescript": "2.6.2",
"typescript-eslint-parser": "12.0.0",
"typescript": "2.7.1",
"typescript-eslint-parser": "13.0.0",
"webpack": "3.8.1",
"webpack-bundle-analyzer": "2.9.0",
"webpack-dev-server": "2.9.3"

+ 1
- 1
server/sonar-web/src/main/js/app/components/App.tsx View File

@@ -42,7 +42,7 @@ interface State {
}

class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static childContextTypes = {
branchesEnabled: PropTypes.bool.isRequired,

+ 1
- 1
server/sonar-web/src/main/js/app/components/ComponentContainer.tsx View File

@@ -49,7 +49,7 @@ interface State {
}

export class ComponentContainer extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
organizationsEnabled: PropTypes.bool

+ 1
- 1
server/sonar-web/src/main/js/app/components/LocalizationContainer.tsx View File

@@ -32,7 +32,7 @@ interface State {
}

export default class LocalizationContainer extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

state: State = { loading: true };


+ 1
- 1
server/sonar-web/src/main/js/app/components/SimpleContainer.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class SimpleContainer extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static childContextTypes = {
onSonarCloud: PropTypes.bool

+ 1
- 1
server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.tsx View File

@@ -41,7 +41,7 @@ interface Props {
}

export default class ComponentNav extends React.PureComponent<Props> {
mounted: boolean;
mounted = false;

componentDidMount() {
this.populateRecentHistory();

+ 1
- 1
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx View File

@@ -46,7 +46,7 @@ interface State {
}

export default class ComponentNavBranch extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
branchesEnabled: PropTypes.bool.isRequired,

+ 1
- 1
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranchesMenu.tsx View File

@@ -46,7 +46,7 @@ interface State {
}

export default class ComponentNavBranchesMenu extends React.PureComponent<Props, State> {
private node: HTMLElement | null;
private node?: HTMLElement | null;

static contextTypes = {
router: PropTypes.object

+ 1
- 1
server/sonar-web/src/main/js/apps/account/organizations/CreateOrganizationForm.tsx View File

@@ -46,7 +46,7 @@ interface State {
}

class CreateOrganizationForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object

+ 1
- 1
server/sonar-web/src/main/js/apps/account/organizations/UserOrganizations.tsx View File

@@ -45,7 +45,7 @@ interface State {
}

class UserOrganizations extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { createOrganization: false, loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx View File

@@ -32,7 +32,7 @@ interface State {
}

export default class ProjectsContainer extends React.PureComponent<{}, State> {
mounted: boolean;
mounted = false;
state: State = {
loading: true,
page: 1,

+ 1
- 1
server/sonar-web/src/main/js/apps/background-tasks/components/ScannerContext.tsx View File

@@ -33,7 +33,7 @@ interface State {
}

export default class ScannerContext extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = {};

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/background-tasks/components/Stacktrace.tsx View File

@@ -34,7 +34,7 @@ interface State {
}

export default class Stacktrace extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/background-tasks/components/Workers.tsx View File

@@ -37,7 +37,7 @@ interface State {
}

export default class Workers extends React.PureComponent<{}, State> {
mounted: boolean;
mounted = false;
state: State = {
canSetWorkerCount: false,
formOpen: false,

+ 1
- 1
server/sonar-web/src/main/js/apps/background-tasks/components/WorkersForm.tsx View File

@@ -37,7 +37,7 @@ interface State {
}

export default class WorkersForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/code/components/App.tsx View File

@@ -53,7 +53,7 @@ interface State {
}

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = {
loading: true,
breadcrumbs: [],

+ 10
- 8
server/sonar-web/src/main/js/apps/code/components/Component.tsx View File

@@ -38,7 +38,7 @@ interface Props {
}

export default class Component extends React.PureComponent<Props> {
node: HTMLElement;
node?: HTMLElement | null;

componentDidMount() {
this.handleUpdate();
@@ -60,12 +60,14 @@ export default class Component extends React.PureComponent<Props> {
}

handleScroll() {
const position = this.node.getBoundingClientRect();
const { top, bottom } = position;
if (bottom > window.innerHeight - BOTTOM_OFFSET) {
window.scrollTo(0, bottom - window.innerHeight + window.pageYOffset + BOTTOM_OFFSET);
} else if (top < TOP_OFFSET) {
window.scrollTo(0, top + window.pageYOffset - TOP_OFFSET);
if (this.node) {
const position = this.node.getBoundingClientRect();
const { top, bottom } = position;
if (bottom > window.innerHeight - BOTTOM_OFFSET) {
window.scrollTo(0, bottom - window.innerHeight + window.pageYOffset + BOTTOM_OFFSET);
} else if (top < TOP_OFFSET) {
window.scrollTo(0, top + window.pageYOffset - TOP_OFFSET);
}
}
}

@@ -113,7 +115,7 @@ export default class Component extends React.PureComponent<Props> {
].filter(Boolean) as Array<{ metric: string; type: string }>);

return (
<tr className={classNames({ selected })} ref={node => (this.node = node as HTMLElement)}>
<tr className={classNames({ selected })} ref={node => (this.node = node)}>
<td className="thin nowrap">
<span className="spacer-right">{componentAction}</span>
</td>

+ 1
- 1
server/sonar-web/src/main/js/apps/code/components/Search.tsx View File

@@ -43,7 +43,7 @@ interface State {
}

export default class Search extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object.isRequired

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class ActivationButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx View File

@@ -47,7 +47,7 @@ interface State {
}

export default class ActivationFormModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx View File

@@ -80,7 +80,7 @@ interface State {
// TODO redirect to default organization's rules page

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
organizationsEnabled: PropTypes.bool,

+ 13
- 5
server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class BulkChange extends React.PureComponent<Props, State> {
closeDropdown: () => void;
closeDropdown?: () => void;
state: State = { modal: false };

getSelectedProfile = () => {
@@ -52,28 +52,36 @@ export default class BulkChange extends React.PureComponent<Props, State> {
handleActivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.setState({ action: 'activate', modal: true, profile: undefined });
};

handleActivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.setState({ action: 'activate', modal: true, profile: this.getSelectedProfile() });
};

handleDeactivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.setState({ action: 'deactivate', modal: true, profile: undefined });
};

handleDeactivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.setState({ action: 'deactivate', modal: true, profile: this.getSelectedProfile() });
};


+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx View File

@@ -50,7 +50,7 @@ interface State {
}

export default class BulkChangeModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class CustomRuleButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx View File

@@ -52,7 +52,7 @@ interface State {
}

export default class CustomRuleFormModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx View File

@@ -54,7 +54,7 @@ interface State {
}

export default class RuleDetails extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx View File

@@ -41,7 +41,7 @@ interface State {
}

export default class RuleDetailsCustomRules extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class RuleDetailsDescription extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = {
description: '',
descriptionForm: false,

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx View File

@@ -44,7 +44,7 @@ interface State {
}

export default class RuleDetailsIssues extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx View File

@@ -46,7 +46,7 @@ interface State {
}

export default class RuleDetailsProfiles extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

componentDidMount() {
this.mounted = true;

+ 1
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsTagsPopup.tsx View File

@@ -38,7 +38,7 @@ interface State {
const LIST_SIZE = 10;

export default class RuleDetailsTagsPopup extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { searchResult: [] };

componentDidMount() {

+ 13
- 5
server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx View File

@@ -31,26 +31,32 @@ interface Props {
}

export default class SimilarRulesFilter extends React.PureComponent<Props> {
closeDropdown: () => void;
closeDropdown?: () => void;

handleLanguageClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.props.onFilterChange({ languages: [this.props.rule.lang] });
};

handleTypeClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
this.props.onFilterChange({ types: [this.props.rule.type] });
};

handleSeverityClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
if (this.props.rule.severity) {
this.props.onFilterChange({ severities: [this.props.rule.severity] });
}
@@ -59,7 +65,9 @@ export default class SimilarRulesFilter extends React.PureComponent<Props> {
handleTagClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
event.currentTarget.blur();
this.closeDropdown();
if (this.closeDropdown) {
this.closeDropdown();
}
const { tag } = event.currentTarget.dataset;
if (tag) {
this.props.onFilterChange({ tags: [tag] });

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-measures/components/App.tsx View File

@@ -44,7 +44,7 @@ interface State {
const PAGE_SIZE = 50;

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-measures/components/CreateButton.tsx View File

@@ -31,7 +31,7 @@ interface State {
}

export default class CreateButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-measures/components/EditButton.tsx View File

@@ -33,7 +33,7 @@ interface State {
}

export default class EditButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-measures/components/Form.tsx View File

@@ -43,7 +43,7 @@ interface State {
}

export default class Form extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-metrics/components/App.tsx View File

@@ -48,7 +48,7 @@ interface State {
const PAGE_SIZE = 50;

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-metrics/components/CreateButton.tsx View File

@@ -32,7 +32,7 @@ interface State {
}

export default class CreateButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/custom-metrics/components/EditButton.tsx View File

@@ -35,7 +35,7 @@ interface State {
}

export default class EditButton extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/groups/components/App.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true, query: '' };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/groups/components/EditGroup.tsx View File

@@ -34,7 +34,7 @@ interface State {
}

export default class EditGroup extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx View File

@@ -39,7 +39,7 @@ interface State {

export default class EditMembers extends React.PureComponent<Props, State> {
container?: HTMLElement | null;
mounted: boolean;
mounted = false;
state: State = { modal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/groups/components/Header.tsx View File

@@ -32,7 +32,7 @@ interface State {
}

export default class Header extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { createModal: false };

componentDidMount() {

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.js View File

@@ -48,12 +48,12 @@ type Props = {|
export default class AssigneeFacet extends React.PureComponent {
/*:: props: Props; */

property = 'assignees';

static defaultProps = {
open: true
};

property = 'assignees';

handleItemClick = (itemValue /*: string */) => {
if (itemValue === '') {
// unassigned

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.js View File

@@ -41,12 +41,12 @@ type Props = {|
export default class AuthorFacet extends React.PureComponent {
/*:: props: Props; */

property = 'authors';

static defaultProps = {
open: true
};

property = 'authors';

handleItemClick = (itemValue /*: string */) => {
const { authors } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.js View File

@@ -53,6 +53,8 @@ type Props = {|
export default class CreationDateFacet extends React.PureComponent {
/*:: props: Props; */

property = 'createdAt';

static defaultProps = {
open: true
};
@@ -61,8 +63,6 @@ export default class CreationDateFacet extends React.PureComponent {
intl: intlShape
};

property = 'createdAt';

hasValue = () =>
this.props.createdAfter.length > 0 ||
this.props.createdAt.length > 0 ||

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.js View File

@@ -45,12 +45,12 @@ type Props = {|
export default class DirectoryFacet extends React.PureComponent {
/*:: props: Props; */

property = 'directories';

static defaultProps = {
open: true
};

property = 'directories';

handleItemClick = (itemValue /*: string */) => {
const { directories } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.js View File

@@ -45,12 +45,12 @@ type Props = {|
export default class FileFacet extends React.PureComponent {
/*:: props: Props; */

property = 'files';

static defaultProps = {
open: true
};

property = 'files';

handleItemClick = (itemValue /*: string */) => {
const { files } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.js View File

@@ -44,12 +44,12 @@ type Props = {|
export default class LanguageFacet extends React.PureComponent {
/*:: props: Props; */

property = 'languages';

static defaultProps = {
open: true
};

property = 'languages';

handleItemClick = (itemValue /*: string */) => {
const { languages } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/ModuleFacet.js View File

@@ -44,12 +44,12 @@ type Props = {|
export default class ModuleFacet extends React.PureComponent {
/*:: props: Props; */

property = 'modules';

static defaultProps = {
open: true
};

property = 'modules';

handleItemClick = (itemValue /*: string */) => {
const { modules } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.js View File

@@ -49,12 +49,12 @@ type Props = {|
export default class ProjectFacet extends React.PureComponent {
/*:: props: Props; */

property = 'projects';

static defaultProps = {
open: true
};

property = 'projects';

handleItemClick = (itemValue /*: string */) => {
const { projects } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.js View File

@@ -42,12 +42,12 @@ type Props = {|
export default class ResolutionFacet extends React.PureComponent {
/*:: props: Props; */

property = 'resolutions';

static defaultProps = {
open: true
};

property = 'resolutions';

handleItemClick = (itemValue /*: string */) => {
if (itemValue === '') {
// unresolved

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.js View File

@@ -46,12 +46,12 @@ type Props = {|
export default class RuleFacet extends React.PureComponent {
/*:: props: Props; */

property = 'rules';

static defaultProps = {
open: true
};

property = 'rules';

handleItemClick = (itemValue /*: string */) => {
const { rules } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.js View File

@@ -42,12 +42,12 @@ type Props = {|
export default class SeverityFacet extends React.PureComponent {
/*:: props: Props; */

property = 'severities';

static defaultProps = {
open: true
};

property = 'severities';

handleItemClick = (itemValue /*: string */) => {
const { severities } = this.props;
const newValue = orderBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.js View File

@@ -41,12 +41,12 @@ type Props = {|
export default class StatusFacet extends React.PureComponent {
/*:: props: Props; */

property = 'statuses';

static defaultProps = {
open: true
};

property = 'statuses';

handleItemClick = (itemValue /*: string */) => {
const { statuses } = this.props;
const newValue = orderBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.js View File

@@ -46,12 +46,12 @@ type Props = {|
export default class TagFacet extends React.PureComponent {
/*:: props: Props; */

property = 'tags';

static defaultProps = {
open: true
};

property = 'tags';

handleItemClick = (itemValue /*: string */) => {
const { tags } = this.props;
const newValue = sortBy(

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.js View File

@@ -42,12 +42,12 @@ type Props = {|
export default class TypeFacet extends React.PureComponent {
/*:: props: Props; */

property = 'types';

static defaultProps = {
open: true
};

property = 'types';

handleItemClick = (itemValue /*: string */) => {
const { types } = this.props;
const newValue = orderBy(

+ 1
- 1
server/sonar-web/src/main/js/apps/marketplace/App.tsx View File

@@ -63,7 +63,7 @@ interface State {
}

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object.isRequired

+ 1
- 1
server/sonar-web/src/main/js/apps/marketplace/components/LicenseEditionForm.tsx View File

@@ -38,7 +38,7 @@ interface State {
}

export default class LicenseEditionForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { license: '', submitting: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/marketplace/components/LicenseEditionSet.tsx View File

@@ -48,7 +48,7 @@ interface State {
}

export default class LicenseEditionSet extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/marketplace/components/PluginActions.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class PluginActions extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { acceptTerms: false, loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/marketplace/components/UninstallEditionForm.tsx View File

@@ -34,7 +34,7 @@ interface State {
}

export default class UninstallEditionForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/overview/badges/BadgeParams.tsx View File

@@ -37,7 +37,7 @@ interface State {
}

export default class BadgeParams extends React.PureComponent<Props> {
mounted: boolean;
mounted = false;

state: State = { badgeMetrics: [] };


+ 1
- 1
server/sonar-web/src/main/js/apps/overview/components/OverviewApp.tsx View File

@@ -67,7 +67,7 @@ interface State {
}

export class OverviewApp extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true, measures: [] };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/overview/events/AnalysesList.tsx View File

@@ -42,7 +42,7 @@ interface State {
const PAGE_SIZE = 3;

export default class AnalysesList extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { analyses: [], loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/overview/meta/MetaLinks.tsx View File

@@ -33,7 +33,7 @@ interface State {
}

export default class MetaLinks extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = {};

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/overview/meta/MetaQualityProfiles.tsx View File

@@ -42,7 +42,7 @@ interface State {
}

class MetaQualityProfiles extends React.PureComponent<StateProps & OwnProps, State> {
mounted: boolean;
mounted = false;
state: State = { deprecatedByKey: {} };

componentDidMount() {

+ 3
- 3
server/sonar-web/src/main/js/apps/overview/meta/MetaTags.tsx View File

@@ -36,9 +36,9 @@ interface State {
}

export default class MetaTags extends React.PureComponent<Props, State> {
card: HTMLDivElement | null;
tagsList: HTMLButtonElement | null;
tagsSelector: HTMLDivElement | null;
card?: HTMLDivElement | null;
tagsList?: HTMLButtonElement | null;
tagsSelector?: HTMLDivElement | null;
state: State = { popupOpen: false, popupPosition: { top: 0, right: 0 } };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/overview/qualityGate/ApplicationQualityGate.tsx View File

@@ -37,7 +37,7 @@ type State = {
};

export default class ApplicationQualityGate extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/Activity.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class Activity extends React.PureComponent<Props> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/App.tsx View File

@@ -59,7 +59,7 @@ interface State {
}

export class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/Report.tsx View File

@@ -32,7 +32,7 @@ interface State {
}

export default class Report extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/Subscription.tsx View File

@@ -33,7 +33,7 @@ interface State {
}

export default class Subscription extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx View File

@@ -43,7 +43,7 @@ interface State {
const BRANCH_LIFETIME_SETTING = 'sonar.dbcleaner.daysBeforeDeletingInactiveShortLivingBranches';

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/BranchRow.tsx View File

@@ -46,7 +46,7 @@ interface State {
}

export default class BranchRow extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { changingLeak: false, deleting: false, renaming: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx View File

@@ -35,7 +35,7 @@ interface State {
}

export default class DeleteBranchModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/LeakPeriodForm.tsx View File

@@ -39,7 +39,7 @@ interface State {
const LEAK_PERIOD = 'sonar.leak.period';

export default class LeakPeriodForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true, submitting: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/LongBranchesPattern.tsx View File

@@ -35,7 +35,7 @@ interface State {
export const LONG_BRANCH_PATTERN = 'sonar.branch.longLivedBranches.regex';

export default class LongBranchesPattern extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { formOpen: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class RenameBranchModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectBranches/components/SettingForm.tsx View File

@@ -35,7 +35,7 @@ interface State {
}

export default class SettingForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 2
- 2
server/sonar-web/src/main/js/apps/projectBranches/components/__tests__/App-test.tsx View File

@@ -25,7 +25,7 @@ jest.mock('../../../../api/settings', () => ({
import * as React from 'react';
import { mount, shallow } from 'enzyme';
import App from '../App';
import { Branch, BranchType } from '../../../../app/types';
import { BranchType, MainBranch, LongLivingBranch, ShortLivingBranch } from '../../../../app/types';

const getValues = require('../../../../api/settings').getValues as jest.Mock<any>;

@@ -34,7 +34,7 @@ beforeEach(() => {
});

it('renders sorted list of branches', () => {
const branches: Branch[] = [
const branches: [MainBranch, LongLivingBranch, ShortLivingBranch] = [
{ isMain: true, name: 'master' },
{ isMain: false, name: 'branch-1.0', type: BranchType.LONG },
{ isMain: false, name: 'branch-1.0', mergeBranch: 'master', type: BranchType.SHORT }

+ 1
- 1
server/sonar-web/src/main/js/apps/projectQualityGate/App.tsx View File

@@ -45,7 +45,7 @@ interface State {
}

export default class App extends React.PureComponent<Props> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectQualityGate/Form.tsx View File

@@ -39,7 +39,7 @@ interface Option {
}

export default class Form extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectQualityProfiles/App.tsx View File

@@ -43,7 +43,7 @@ interface State {
}

export default class QualityProfiles extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: true };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectQualityProfiles/ProfileRow.tsx View File

@@ -33,7 +33,7 @@ interface State {
}

export default class ProfileRow extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx View File

@@ -56,7 +56,7 @@ interface State {
}

export default class AllProjects extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object.isRequired

+ 1
- 1
server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx View File

@@ -47,7 +47,7 @@ interface State {
const LIST_SIZE = 10;

export default class TagsFilter extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/App.tsx View File

@@ -52,7 +52,7 @@ interface State {
}

export default class App extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx View File

@@ -48,7 +48,7 @@ interface State {
}

export default class BulkApplyTemplateModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { done: false, loading: true, submitting: false };

componentDidMount() {

+ 2
- 2
server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx View File

@@ -47,8 +47,8 @@ interface State {
}

export default class CreateProjectForm extends React.PureComponent<Props, State> {
closeButton: HTMLElement | null;
mounted: boolean;
closeButton?: HTMLElement | null;
mounted = false;

constructor(props: Props) {
super(props);

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/DeleteModal.tsx View File

@@ -40,7 +40,7 @@ interface State {
}

export default class DeleteModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx View File

@@ -39,7 +39,7 @@ interface State {
}

export default class ProjectRowActions extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false, restoreAccessModal: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class RestoreAccessModal extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 2
server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx View File

@@ -57,8 +57,7 @@ interface State {
}

export default class Search extends React.PureComponent<Props, State> {
input: HTMLInputElement;
mounted: boolean;
mounted = false;
state: State = { bulkApplyTemplateModal: false, deleteModal: false };

getQualifierOptions = () => {

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx View File

@@ -37,7 +37,7 @@ interface State {
}

export default class CopyQualityGateForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-gates/components/CreateQualityGateForm.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class CreateQualityGateForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-gates/components/DeleteConditionForm.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class DeleteConditionForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;
state: State = { loading: false };

componentDidMount() {

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx View File

@@ -36,7 +36,7 @@ interface State {
}

export default class DeleteQualityGateForm extends React.PureComponent<Props, State> {
mounted: boolean;
mounted = false;

static contextTypes = {
router: PropTypes.object

+ 0
- 0
server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save