]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-14617 Target local sonar-ui-common project
authorPhilippe Perrin <philippe.perrin@sonarsource.com>
Fri, 16 Jul 2021 12:50:53 +0000 (14:50 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 21 Jul 2021 20:03:01 +0000 (20:03 +0000)
330 files changed:
build.gradle
server/sonar-docs/build.gradle
server/sonar-docs/package.json
server/sonar-docs/yarn.lock
server/sonar-ui-common/HEADER [deleted file]
server/sonar-ui-common/build.gradle [new file with mode: 0644]
server/sonar-ui-common/components/__tests__/getHistory-test.ts
server/sonar-ui-common/components/__tests__/lazyLoadComponent-test.tsx
server/sonar-ui-common/components/charts/AdvancedTimeline.css
server/sonar-ui-common/components/charts/AdvancedTimeline.tsx
server/sonar-ui-common/components/charts/BarChart.css
server/sonar-ui-common/components/charts/BarChart.tsx
server/sonar-ui-common/components/charts/BubbleChart.css
server/sonar-ui-common/components/charts/BubbleChart.tsx
server/sonar-ui-common/components/charts/ColorGradientLegend.css
server/sonar-ui-common/components/charts/ColorGradientLegend.tsx
server/sonar-ui-common/components/charts/DonutChart.tsx
server/sonar-ui-common/components/charts/Histogram.css
server/sonar-ui-common/components/charts/Histogram.tsx
server/sonar-ui-common/components/charts/LineChart.css
server/sonar-ui-common/components/charts/LineChart.tsx
server/sonar-ui-common/components/charts/TreeMap.css
server/sonar-ui-common/components/charts/TreeMap.tsx
server/sonar-ui-common/components/charts/TreeMapRect.tsx
server/sonar-ui-common/components/charts/ZoomTimeLine.css
server/sonar-ui-common/components/charts/ZoomTimeLine.tsx
server/sonar-ui-common/components/charts/__tests__/AdvancedTimeline-test.tsx
server/sonar-ui-common/components/charts/__tests__/BarChart-test.tsx
server/sonar-ui-common/components/charts/__tests__/BubbleChart-test.tsx
server/sonar-ui-common/components/charts/__tests__/ColorGradientLegend-test.tsx
server/sonar-ui-common/components/charts/__tests__/DonutChart-test.tsx
server/sonar-ui-common/components/charts/__tests__/Histogram-test.tsx
server/sonar-ui-common/components/charts/__tests__/LineChart-test.tsx
server/sonar-ui-common/components/charts/__tests__/TreeMap-test.tsx
server/sonar-ui-common/components/charts/__tests__/ZoomTimeLine-test.tsx
server/sonar-ui-common/components/charts/__tests__/__snapshots__/AdvancedTimeline-test.tsx.snap
server/sonar-ui-common/components/charts/__tests__/__snapshots__/ZoomTimeLine-test.tsx.snap [new file with mode: 0644]
server/sonar-ui-common/components/controls/ActionsDropdown.tsx
server/sonar-ui-common/components/controls/BackButton.tsx
server/sonar-ui-common/components/controls/BoxedGroupAccordion.tsx
server/sonar-ui-common/components/controls/BoxedTabs.tsx
server/sonar-ui-common/components/controls/Checkbox.css
server/sonar-ui-common/components/controls/Checkbox.tsx
server/sonar-ui-common/components/controls/ClickEventBoundary.tsx
server/sonar-ui-common/components/controls/ConfirmButton.tsx
server/sonar-ui-common/components/controls/ConfirmModal.tsx
server/sonar-ui-common/components/controls/DocumentClickHandler.tsx
server/sonar-ui-common/components/controls/Dropdown.css
server/sonar-ui-common/components/controls/Dropdown.tsx
server/sonar-ui-common/components/controls/EscKeydownHandler.tsx
server/sonar-ui-common/components/controls/FavoriteButton.tsx
server/sonar-ui-common/components/controls/GlobalMessages.tsx
server/sonar-ui-common/components/controls/HelpTooltip.css
server/sonar-ui-common/components/controls/HelpTooltip.tsx
server/sonar-ui-common/components/controls/IdentityProviderLink.css
server/sonar-ui-common/components/controls/IdentityProviderLink.tsx
server/sonar-ui-common/components/controls/InputValidationField.tsx
server/sonar-ui-common/components/controls/ListFooter.tsx
server/sonar-ui-common/components/controls/Modal.css
server/sonar-ui-common/components/controls/Modal.tsx
server/sonar-ui-common/components/controls/ModalButton.tsx
server/sonar-ui-common/components/controls/ModalValidationField.tsx
server/sonar-ui-common/components/controls/OutsideClickHandler.tsx
server/sonar-ui-common/components/controls/Radio.css
server/sonar-ui-common/components/controls/Radio.tsx
server/sonar-ui-common/components/controls/RadioCard.css
server/sonar-ui-common/components/controls/RadioCard.tsx
server/sonar-ui-common/components/controls/RadioToggle.css
server/sonar-ui-common/components/controls/RadioToggle.tsx
server/sonar-ui-common/components/controls/ReloadButton.tsx
server/sonar-ui-common/components/controls/ScreenPositionFixer.tsx
server/sonar-ui-common/components/controls/SearchBox.css
server/sonar-ui-common/components/controls/SearchBox.tsx
server/sonar-ui-common/components/controls/SearchSelect.tsx
server/sonar-ui-common/components/controls/Select.css
server/sonar-ui-common/components/controls/Select.tsx
server/sonar-ui-common/components/controls/SelectList.css
server/sonar-ui-common/components/controls/SelectList.tsx
server/sonar-ui-common/components/controls/SelectListListContainer.tsx
server/sonar-ui-common/components/controls/SelectListListElement.tsx
server/sonar-ui-common/components/controls/SimpleModal.tsx
server/sonar-ui-common/components/controls/Tabs.css
server/sonar-ui-common/components/controls/Tabs.tsx
server/sonar-ui-common/components/controls/Toggle.css
server/sonar-ui-common/components/controls/Toggle.tsx
server/sonar-ui-common/components/controls/Toggler.tsx
server/sonar-ui-common/components/controls/Tooltip.css
server/sonar-ui-common/components/controls/Tooltip.tsx
server/sonar-ui-common/components/controls/ValidationForm.tsx
server/sonar-ui-common/components/controls/ValidationInput.tsx
server/sonar-ui-common/components/controls/ValidationModal.tsx
server/sonar-ui-common/components/controls/__tests__/ActionsDropdown-test.tsx
server/sonar-ui-common/components/controls/__tests__/BackButton-test.tsx
server/sonar-ui-common/components/controls/__tests__/BoxedGroupAccordion-test.tsx
server/sonar-ui-common/components/controls/__tests__/BoxedTabs-test.tsx
server/sonar-ui-common/components/controls/__tests__/Checkbox-test.tsx
server/sonar-ui-common/components/controls/__tests__/ClickEventBoundary-test.tsx
server/sonar-ui-common/components/controls/__tests__/ConfirmButton-test.tsx
server/sonar-ui-common/components/controls/__tests__/ConfirmModal-test.tsx
server/sonar-ui-common/components/controls/__tests__/Dropdown-test.tsx
server/sonar-ui-common/components/controls/__tests__/EscKeydownHandler-test.tsx
server/sonar-ui-common/components/controls/__tests__/FavoriteButton-test.tsx
server/sonar-ui-common/components/controls/__tests__/GlobalMessages-test.tsx
server/sonar-ui-common/components/controls/__tests__/HelpTooltip-test.tsx
server/sonar-ui-common/components/controls/__tests__/IdentityProviderLink-test.tsx
server/sonar-ui-common/components/controls/__tests__/InputValidationField-test.tsx
server/sonar-ui-common/components/controls/__tests__/ListFooter-test.tsx
server/sonar-ui-common/components/controls/__tests__/ModalButton-test.tsx
server/sonar-ui-common/components/controls/__tests__/ModalValidationField-test.tsx
server/sonar-ui-common/components/controls/__tests__/OutsideClickHandler-test.tsx [new file with mode: 0644]
server/sonar-ui-common/components/controls/__tests__/Radio-test.tsx
server/sonar-ui-common/components/controls/__tests__/RadioCard-test.tsx
server/sonar-ui-common/components/controls/__tests__/RadioToggle-test.tsx
server/sonar-ui-common/components/controls/__tests__/ReloadButton-test.tsx
server/sonar-ui-common/components/controls/__tests__/ScreenPositionFixer-test.tsx
server/sonar-ui-common/components/controls/__tests__/SearchBox-test.tsx
server/sonar-ui-common/components/controls/__tests__/SearchSelect-test.tsx
server/sonar-ui-common/components/controls/__tests__/SelectList-test.tsx
server/sonar-ui-common/components/controls/__tests__/SelectListListContainer-test.tsx
server/sonar-ui-common/components/controls/__tests__/SelectListListElement-test.tsx
server/sonar-ui-common/components/controls/__tests__/SimpleModal-test.tsx
server/sonar-ui-common/components/controls/__tests__/Tabs-test.tsx
server/sonar-ui-common/components/controls/__tests__/Toggle-test.tsx
server/sonar-ui-common/components/controls/__tests__/Toggler-test.tsx
server/sonar-ui-common/components/controls/__tests__/Tooltip-test.tsx
server/sonar-ui-common/components/controls/__tests__/ValidationForm-test.tsx
server/sonar-ui-common/components/controls/__tests__/ValidationInput-test.tsx
server/sonar-ui-common/components/controls/__tests__/ValidationModal-test.tsx
server/sonar-ui-common/components/controls/__tests__/__snapshots__/OutsideClickHandler-test.tsx.snap [new file with mode: 0644]
server/sonar-ui-common/components/controls/__tests__/buttons-test.tsx
server/sonar-ui-common/components/controls/__tests__/clipboard-test.tsx
server/sonar-ui-common/components/controls/buttons.css
server/sonar-ui-common/components/controls/buttons.tsx
server/sonar-ui-common/components/controls/clipboard.tsx
server/sonar-ui-common/components/icons/AlertErrorIcon.tsx
server/sonar-ui-common/components/icons/AlertSuccessIcon.tsx
server/sonar-ui-common/components/icons/AlertWarnIcon.tsx
server/sonar-ui-common/components/icons/ArrowIcon.tsx
server/sonar-ui-common/components/icons/BackIcon.tsx
server/sonar-ui-common/components/icons/BranchIcon.tsx
server/sonar-ui-common/components/icons/BubblesIcon.tsx
server/sonar-ui-common/components/icons/BugIcon.tsx
server/sonar-ui-common/components/icons/BugTrackerIcon.tsx
server/sonar-ui-common/components/icons/BulletListIcon.tsx
server/sonar-ui-common/components/icons/CalendarIcon.tsx
server/sonar-ui-common/components/icons/ChartLegendIcon.tsx
server/sonar-ui-common/components/icons/CheckIcon.tsx
server/sonar-ui-common/components/icons/ChevronDownIcon.tsx
server/sonar-ui-common/components/icons/ChevronLeftIcon.tsx
server/sonar-ui-common/components/icons/ChevronRightIcon.tsx
server/sonar-ui-common/components/icons/ChevronUpIcon.tsx
server/sonar-ui-common/components/icons/ChevronsIcon.tsx
server/sonar-ui-common/components/icons/ClearIcon.tsx
server/sonar-ui-common/components/icons/ClockIcon.tsx
server/sonar-ui-common/components/icons/CodeSmellIcon.tsx
server/sonar-ui-common/components/icons/CogIcon.tsx
server/sonar-ui-common/components/icons/CollapseIcon.tsx
server/sonar-ui-common/components/icons/ContinuousIntegrationIcon.tsx
server/sonar-ui-common/components/icons/CopyIcon.tsx
server/sonar-ui-common/components/icons/DeleteIcon.tsx
server/sonar-ui-common/components/icons/DetachIcon.tsx
server/sonar-ui-common/components/icons/DropdownIcon.tsx
server/sonar-ui-common/components/icons/EditIcon.tsx
server/sonar-ui-common/components/icons/EllipsisIcon.tsx
server/sonar-ui-common/components/icons/ExpandIcon.tsx
server/sonar-ui-common/components/icons/ExpandSnippetIcon.tsx
server/sonar-ui-common/components/icons/FavoriteIcon.tsx
server/sonar-ui-common/components/icons/FilterIcon.tsx
server/sonar-ui-common/components/icons/GroupIcon.tsx
server/sonar-ui-common/components/icons/HelpIcon.tsx
server/sonar-ui-common/components/icons/HistoryIcon.tsx
server/sonar-ui-common/components/icons/HomeIcon.tsx
server/sonar-ui-common/components/icons/HouseIcon.tsx
server/sonar-ui-common/components/icons/Icon.tsx
server/sonar-ui-common/components/icons/InfoIcon.tsx
server/sonar-ui-common/components/icons/IssueIcon.tsx
server/sonar-ui-common/components/icons/IssueTypeIcon.tsx
server/sonar-ui-common/components/icons/LightBulbIcon.tsx
server/sonar-ui-common/components/icons/LinkIcon.tsx
server/sonar-ui-common/components/icons/ListIcon.tsx
server/sonar-ui-common/components/icons/LockIcon.tsx
server/sonar-ui-common/components/icons/LongLivingBranchIcon.tsx
server/sonar-ui-common/components/icons/MeasuresIcon.tsx
server/sonar-ui-common/components/icons/MinimizeIcon.tsx
server/sonar-ui-common/components/icons/NotificationIcon.tsx
server/sonar-ui-common/components/icons/OnboardingAddMembersIcon.tsx
server/sonar-ui-common/components/icons/OnboardingProjectIcon.tsx
server/sonar-ui-common/components/icons/OnboardingTeamIcon.tsx
server/sonar-ui-common/components/icons/OpenCloseIcon.tsx
server/sonar-ui-common/components/icons/PendingIcon.tsx
server/sonar-ui-common/components/icons/PinIcon.tsx
server/sonar-ui-common/components/icons/PlusCircleIcon.tsx
server/sonar-ui-common/components/icons/PlusIcon.tsx
server/sonar-ui-common/components/icons/ProjectEventIcon.tsx
server/sonar-ui-common/components/icons/ProjectLinkIcon.tsx
server/sonar-ui-common/components/icons/PullRequestIcon.tsx
server/sonar-ui-common/components/icons/QualifierIcon.tsx
server/sonar-ui-common/components/icons/RecommendedIcon.tsx
server/sonar-ui-common/components/icons/RocketIcon.tsx
server/sonar-ui-common/components/icons/RuleScopeIcon.tsx
server/sonar-ui-common/components/icons/SCMIcon.tsx
server/sonar-ui-common/components/icons/SearchIcon.tsx
server/sonar-ui-common/components/icons/SecurityHotspotIcon.tsx
server/sonar-ui-common/components/icons/SettingsIcon.tsx
server/sonar-ui-common/components/icons/SeverityIcon.tsx
server/sonar-ui-common/components/icons/ShortLivingBranchIcon.tsx
server/sonar-ui-common/components/icons/SortAscIcon.tsx
server/sonar-ui-common/components/icons/SortDescIcon.tsx
server/sonar-ui-common/components/icons/StatusIcon.tsx
server/sonar-ui-common/components/icons/TagsIcon.tsx
server/sonar-ui-common/components/icons/TestStatusIcon.tsx
server/sonar-ui-common/components/icons/TreeIcon.tsx
server/sonar-ui-common/components/icons/TreemapIcon.tsx
server/sonar-ui-common/components/icons/VisibleIcon.tsx
server/sonar-ui-common/components/icons/VulnerabilityIcon.tsx
server/sonar-ui-common/components/icons/WarningIcon.tsx
server/sonar-ui-common/components/icons/__tests__/Icon-test.tsx
server/sonar-ui-common/components/icons/__tests__/IssueIcon-test.tsx
server/sonar-ui-common/components/icons/__tests__/IssueTypeIcon-test.tsx
server/sonar-ui-common/components/icons/__tests__/TestStatusIcon-test.tsx
server/sonar-ui-common/components/intl/DateFormatter.tsx
server/sonar-ui-common/components/intl/DateFromNow.tsx
server/sonar-ui-common/components/intl/DateTimeFormatter.tsx
server/sonar-ui-common/components/intl/TimeFormatter.tsx
server/sonar-ui-common/components/intl/__mocks__/DateFromNow.tsx
server/sonar-ui-common/components/intl/__tests__/DateFormatter-test.tsx
server/sonar-ui-common/components/intl/__tests__/DateFromNow-test.tsx
server/sonar-ui-common/components/intl/__tests__/DateTimeFormatter-test.tsx
server/sonar-ui-common/components/intl/__tests__/TimeFormatter-test.tsx
server/sonar-ui-common/components/lazyLoadComponent.tsx
server/sonar-ui-common/components/theme.ts
server/sonar-ui-common/components/ui/Alert.tsx
server/sonar-ui-common/components/ui/AutoEllipsis.tsx
server/sonar-ui-common/components/ui/ContextNavBar.css
server/sonar-ui-common/components/ui/ContextNavBar.tsx
server/sonar-ui-common/components/ui/DeferredSpinner.css
server/sonar-ui-common/components/ui/DeferredSpinner.tsx
server/sonar-ui-common/components/ui/DuplicationsRating.css
server/sonar-ui-common/components/ui/DuplicationsRating.tsx
server/sonar-ui-common/components/ui/FilesCounter.tsx
server/sonar-ui-common/components/ui/GenericAvatar.tsx
server/sonar-ui-common/components/ui/Level.css
server/sonar-ui-common/components/ui/Level.tsx
server/sonar-ui-common/components/ui/MandatoryFieldMarker.tsx
server/sonar-ui-common/components/ui/MandatoryFieldsExplanation.tsx
server/sonar-ui-common/components/ui/NavBar.css
server/sonar-ui-common/components/ui/NavBar.tsx
server/sonar-ui-common/components/ui/NavBarTabs.css
server/sonar-ui-common/components/ui/NavBarTabs.tsx
server/sonar-ui-common/components/ui/NewsBox.css
server/sonar-ui-common/components/ui/NewsBox.tsx
server/sonar-ui-common/components/ui/PageActions.tsx
server/sonar-ui-common/components/ui/Rating.css
server/sonar-ui-common/components/ui/Rating.tsx
server/sonar-ui-common/components/ui/SizeRating.css
server/sonar-ui-common/components/ui/SizeRating.tsx
server/sonar-ui-common/components/ui/__tests__/Alert-test.tsx
server/sonar-ui-common/components/ui/__tests__/AutoEllipsis-test.tsx
server/sonar-ui-common/components/ui/__tests__/DeferredSpinner-test.tsx
server/sonar-ui-common/components/ui/__tests__/FilesCounter-test.tsx
server/sonar-ui-common/components/ui/__tests__/GenericAvatar-test.tsx
server/sonar-ui-common/components/ui/__tests__/Level-test.tsx
server/sonar-ui-common/components/ui/__tests__/MandatoryFieldMarker-test.tsx
server/sonar-ui-common/components/ui/__tests__/MandatoryFieldsExplanation-test.tsx
server/sonar-ui-common/components/ui/__tests__/NavBar-test.tsx
server/sonar-ui-common/components/ui/__tests__/NewsBox-test.tsx
server/sonar-ui-common/components/ui/__tests__/PageActions-test.tsx
server/sonar-ui-common/components/ui/__tests__/Rating-test.tsx
server/sonar-ui-common/components/ui/__tests__/SizeRating-test.tsx
server/sonar-ui-common/components/ui/__tests__/popups-test.tsx
server/sonar-ui-common/components/ui/popups.css
server/sonar-ui-common/components/ui/popups.tsx
server/sonar-ui-common/components/ui/update-center/MetaData.css
server/sonar-ui-common/components/ui/update-center/MetaData.tsx
server/sonar-ui-common/components/ui/update-center/MetaDataVersion.tsx
server/sonar-ui-common/components/ui/update-center/MetaDataVersions.tsx
server/sonar-ui-common/components/ui/update-center/__tests__/MetaData-test.tsx
server/sonar-ui-common/components/ui/update-center/__tests__/MetaDataVersion-test.tsx
server/sonar-ui-common/components/ui/update-center/__tests__/MetaDataVersions-test.tsx
server/sonar-ui-common/components/ui/update-center/mocks/update-center-metadata.ts
server/sonar-ui-common/components/ui/update-center/update-center-metadata.ts
server/sonar-ui-common/config/jest/CSSStub.js
server/sonar-ui-common/config/jest/FileStub.js
server/sonar-ui-common/config/jest/SetupEnzyme.js
server/sonar-ui-common/config/jest/SetupSUC.ts
server/sonar-ui-common/config/jest/SetupTestEnvironment.js
server/sonar-ui-common/config/jest/testTheme.ts
server/sonar-ui-common/helpers/__tests__/colors-test.ts
server/sonar-ui-common/helpers/__tests__/dates-test.ts
server/sonar-ui-common/helpers/__tests__/handleRequiredAuthentication-test.ts
server/sonar-ui-common/helpers/__tests__/init-test.ts
server/sonar-ui-common/helpers/__tests__/l10n-test.ts
server/sonar-ui-common/helpers/__tests__/measures-test.ts
server/sonar-ui-common/helpers/__tests__/pages-test.ts [new file with mode: 0644]
server/sonar-ui-common/helpers/__tests__/path-test.ts
server/sonar-ui-common/helpers/__tests__/query-test.ts
server/sonar-ui-common/helpers/__tests__/ratings-test.ts [new file with mode: 0644]
server/sonar-ui-common/helpers/__tests__/request-test.ts
server/sonar-ui-common/helpers/__tests__/scrolling-test.ts
server/sonar-ui-common/helpers/__tests__/strings-test.ts
server/sonar-ui-common/helpers/__tests__/urls-test.ts
server/sonar-ui-common/helpers/colors.ts
server/sonar-ui-common/helpers/cookies.ts
server/sonar-ui-common/helpers/csv.ts
server/sonar-ui-common/helpers/dates.ts
server/sonar-ui-common/helpers/getHistory.ts
server/sonar-ui-common/helpers/handleRequiredAuthentication.ts
server/sonar-ui-common/helpers/init.ts
server/sonar-ui-common/helpers/keycodes.ts
server/sonar-ui-common/helpers/l10n.ts
server/sonar-ui-common/helpers/measures.ts
server/sonar-ui-common/helpers/pages.ts
server/sonar-ui-common/helpers/path.ts
server/sonar-ui-common/helpers/query.ts
server/sonar-ui-common/helpers/ratings.ts
server/sonar-ui-common/helpers/request.ts
server/sonar-ui-common/helpers/scrolling.ts
server/sonar-ui-common/helpers/search.tsx
server/sonar-ui-common/helpers/storage.ts
server/sonar-ui-common/helpers/strings.ts
server/sonar-ui-common/helpers/testUtils.ts
server/sonar-ui-common/helpers/types.ts
server/sonar-ui-common/helpers/urls.ts
server/sonar-ui-common/package.json
server/sonar-ui-common/scripts/license-check.js [deleted file]
server/sonar-ui-common/tsconfig.json
server/sonar-web/build.gradle
server/sonar-web/package.json
server/sonar-web/yarn.lock
settings.gradle

index ad2d148b3cbf62fe69ae5785fc856d7b3be2c5c6..2d1921372216c775ef632e8540610d33c3bdf73a 100644 (file)
@@ -651,6 +651,10 @@ subprojects {
 // their concurrent execution even in case when one or more of these tasks not
 // scheduled.
 def yarnInstallTasks = allprojects.findResults { it -> it.tasks.findByName('yarn') }
+
+// Drop :server:sonar-ui-common:yarn from the list because it will be creating a circular dependency
+yarnInstallTasks.eachWithIndex { t, i -> if (t.path == ':server:sonar-ui-common:yarn') yarnInstallTasks.remove(i) }
+
 yarnInstallTasks.drop(1).eachWithIndex { it, i -> it.mustRunAfter(yarnInstallTasks[0..i]) }
 
 // by default, Yarn will update lock file if it is not up to date with "package.json"
index d0fc7a471b9d69fcfb725f007a0c6e3c05ca4537..b620475a4c3eef761ebb52d1f24b77058766d924 100644 (file)
@@ -55,6 +55,10 @@ task extractAnalyzerDocFiles {
   }
 }
 
+yarn.configure {
+  dependsOn tasks.getByPath(':server:sonar-ui-common:yarn_run')
+}
+
 yarn_run {
   def docsVersion = version.split("[.-]").take(2).join('.')
   environment = [ GATSBY_DOCS_VERSION: docsVersion ]
index 7e58a2012f89067adfa83a83ebc4aeab7e79cae5..64eb7a6a4179d77217e28b160f27bc4b2e57ada4 100644 (file)
@@ -23,7 +23,7 @@
     "react-helmet": "5.2.1",
     "react-typography": "0.16.19",
     "rehype-react": "6.1.0",
-    "sonar-ui-common": "1.0.33",
+    "sonar-ui-common": "../sonar-ui-common/build/dist",
     "typography": "0.16.19"
   },
   "devDependencies": {
index d59ad06240db13293ece4cbd8482e7500a52c658..5d71ab30bab4c5d4d09e6bf7cf1481e42c60c1bd 100644 (file)
@@ -13691,10 +13691,8 @@ sockjs@0.3.19:
     faye-websocket "^0.10.0"
     uuid "^3.0.1"
 
-sonar-ui-common@1.0.33:
+sonar-ui-common@../sonar-ui-common/build/dist:
   version "1.0.33"
-  resolved "https://repox.jfrog.io/repox/api/npm/npm/sonar-ui-common/-/sonar-ui-common-1.0.33.tgz#8eb6f40b1ab81b802a8eb92fd549598432e9dc26"
-  integrity sha1-jrb0Cxq4G4Aqjrkv1UlZhDLp3CY=
   dependencies:
     "@types/react-select" "1.2.6"
     classnames "2.2.6"
diff --git a/server/sonar-ui-common/HEADER b/server/sonar-ui-common/HEADER
deleted file mode 100644 (file)
index e288f64..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Sonar UI Common
- * Copyright (C) 2019-2020 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.
- */
\ No newline at end of file
diff --git a/server/sonar-ui-common/build.gradle b/server/sonar-ui-common/build.gradle
new file mode 100644 (file)
index 0000000..e3f264a
--- /dev/null
@@ -0,0 +1,66 @@
+description = 'SonarSource :: Sonar UI Common'
+
+sonarqube {
+  properties {
+    property "sonar.sources", "components,helpers"
+    property "sonar.exclusions", "**/__tests__/**"
+    property "sonar.test", "components,helpers"
+    property "sonar.test.inclusions", "**/__tests__/**"
+    property "sonar.eslint.reportPaths", "eslint-report.json"
+    property "sonar.javascript.lcov.reportPaths", "coverage/lcov.info"
+    property "sonar.coverage.exclusions", "components/icons/*,helpers/testUtils.ts,helpers/keycodes.ts"
+    property "sonar.typescript.lcov.reportPaths", "build/coverage/lcov.info"
+    property "sonar.eslint.reportPaths", "build/eslint-report.json"
+  }
+}
+
+yarn_run {
+  ['config', 'scripts', 'components', 'helpers'].each {
+    inputs.dir(it).withPathSensitivity(PathSensitivity.RELATIVE)
+  }
+  ['package.json', 'tsconfig.json', 'yarn.lock'].each {
+    inputs.file(it).withPathSensitivity(PathSensitivity.RELATIVE)
+  }
+  outputs.cacheIf { true }
+  args = ['build']
+  ignoreExitValue = false
+}
+
+"yarn_check-ci" {
+  // Note that outputs are not relocatable, because contain absolute paths, and that's why inputs are not relativized
+  ['config', 'scripts', 'components', 'helpers'].each {
+    inputs.dir(it)
+  }
+  ['package.json', 'yarn.lock', 'tsconfig.json'].each {
+    inputs.file(it)
+  }
+
+  dependsOn(yarn)
+}
+
+"yarn_validate-ci" {
+  // Note that outputs are not relocatable, because contain absolute paths, and that's why inputs are not relativized
+  ['config', 'scripts', 'components', 'helpers'].each {
+    inputs.dir(it)
+  }
+  ['.eslintrc', 'package.json', 'yarn.lock', 'tsconfig.json'].each {
+    inputs.file(it)
+  }
+  outputs.file("eslint-report.json")
+  outputs.dir("coverage")
+  outputs.cacheIf { true }
+
+  dependsOn(yarn)
+}
+
+def sources = fileTree(dir: "components") + fileTree(dir: "config") + fileTree(dir: "helpers")
+
+task licenseCheckWeb(type: com.hierynomus.gradle.license.tasks.LicenseCheck) {
+  source = sources
+}
+licenseMain.dependsOn licenseCheckWeb
+
+task licenseFormatWeb(type: com.hierynomus.gradle.license.tasks.LicenseFormat) {
+  source = sources
+}
+licenseFormat.dependsOn licenseFormatWeb
\ No newline at end of file
index 251db853a84f9c7ed142e398ba75ad3153328eff..2df78cdd02e6aa3265cac71cd4c515bac474169d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9528fb85dae3e9a2c042b8ec0f7b38b1449e879e..216163e9432c488a15a63243d04dc29ff17464f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e372b129e19c166383a857713680359c0c63154e..d71ef2dee9664d77cd3444edf802e27da83b97ff 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7357f2479a411de9c2d2aae889923288f146365c..0a9bd4125d0a81f0f9bfdbc66057af77af975584 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -205,6 +205,7 @@ export default class AdvancedTimeline extends React.PureComponent<Props, State>
     const parentBbox = event.currentTarget.getBoundingClientRect();
     const mouseXPos = (event.pageX - parentBbox.left) / parentBbox.width;
     const xRange = xScale.range();
+
     const speed = event.deltaMode
       ? (25 / event.deltaMode) * this.props.zoomSpeed
       : this.props.zoomSpeed;
index be261a9eb33e91b0dc835055cb678d898eaed9a8..849885a4cda76db17677bd8f0f1d2c484f36bc7d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 470d5be9e26755298c4af310f51c4e3f40f46f4a..9f337c99ef59ad816fbbbdb4cc94a7299cb032f1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index fc8be5f29c74365040b683e98a30477fbac143ef..c5faa9af5a1f15fcd9fe3b29ef98a14ddba3dfd6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index dcaf101b672e44acdcacbc75f5202fd93c4e104c..d0a7ae7da233b78a2d3b1ad88e46cf4ae80f8aa7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 214832dc2e559275c242d891be38cb1efe95a5a4..a6c96275921cdb328942bb66700373f4c05d3650 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 50c253a1182cbc9669e062853d0411ff4b9d60aa..05c417695c5da6ba91e77c887e79b9d8efa4a703 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 195b5922139fe0f0b39c9c1a745a3e46c6e5536a..e3c7b60abd2e85e8c4aad7c8ef28ae8a7bbb33a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b3db9818586047235b72d205fdb4df0527897888..8ca78c53e4b2cf20fa0f4f1ff7655426cb7c5af1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ff39eadf16333026fb3ca8be02f42bb42ed61e29..61948c4e2a3ee9168a84ae09e296d44eb04436f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a8148c036f662f220ebda513cb1680c59e0689ce..37d7f95698c50e40f96d79b1376127273792966f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9267b42fb430c341d3f0aa27fe9dc3001ec72937..ea48e43c4e027c47205cefec51039653e930f1f8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 379acf633e9b76784418da45c698c69f950e07b5..fe9e1d24b18b683ee241b12014e0c103602e18f3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6d99476b2251515840014ae06c00513d27a3d1e0..de082a37a9978eab0b7f887d25dae55207723734 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b691a1259bc0fef6c1c9fd0643dd09d35e1cac09..7226fd519287d6e9ee3312ff68b8ab30471620ea 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4274a32a2672a54d3fef3713aada0f5226122f44..219974310777f050bed5793389fece4d841272a6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b3c75c478c39436ed5138996ee0bba6efd0d9f66..de281613fbec294f4fe33cadb988112a77959637 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -174,9 +174,7 @@ export default class ZoomTimeLine extends React.PureComponent<Props, State> {
       xArray[1] > xRange[0] && xArray[1] < xRange[xRange.length - 1]
         ? xScale.invert(xArray[1])
         : undefined;
-    if (this.props.startDate !== startDate || this.props.endDate !== endDate) {
-      this.props.updateZoom(startDate, endDate);
-    }
+    this.props.updateZoom(startDate, endDate);
   };
 
   renderBaseLine = (xScale: XScale, yScale: YScale) => {
index 736ffcf10fa340a2f8edf68680d28ecc4472c708..1e16ab14f49e871a44226421be0ef250c2155eed 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -36,11 +36,18 @@ jest.mock('d3-scale', () => {
 
 jest.mock('lodash', () => {
   const lodash = jest.requireActual('lodash');
-  return { ...lodash, throttle: (f) => f };
+  return { ...lodash, throttle: (f: any) => f };
 });
 
 it('should render correctly', () => {
   expect(shallowRender()).toMatchSnapshot();
+  expect(shallowRender({ disableZoom: false, updateZoom: () => {} })).toMatchSnapshot(
+    'Zoom enabled'
+  );
+  expect(shallowRender({ formatYTick: (t) => `Nicer tick ${t}` })).toMatchSnapshot('format y tick');
+  expect(shallowRender({ width: undefined })).toMatchSnapshot('no width');
+  expect(shallowRender({ height: undefined })).toMatchSnapshot('no height');
+  expect(shallowRender({ showAreas: undefined })).toMatchSnapshot('no areas');
 });
 
 it('should render leak correctly', () => {
@@ -144,6 +151,98 @@ it('should update tootlips when selected date changes', () => {
   expect(updateTooltip).toBeCalled();
 });
 
+it('should handle scroll correcly', () => {
+  let updateZoom = jest.fn();
+  let preventDefault = jest.fn();
+  let wrapper = shallowRender({ updateZoom });
+  wrapper.instance().handleWheel(({
+    preventDefault,
+    deltaX: 1,
+    deltaY: -2,
+    deltaZ: 0,
+    pageX: 100,
+    pageY: 1,
+    currentTarget: ({
+      getBoundingClientRect: () => ({
+        bottom: 0,
+        height: 100,
+        width: 50,
+        left: 0,
+        right: 0,
+        top: 10,
+        x: 12,
+        y: 23,
+        toJSON: () => '',
+      }),
+    } as any) as SVGElement,
+  } as any) as React.WheelEvent<SVGElement>);
+  expect(preventDefault).toBeCalled();
+  expect(updateZoom).toBeCalledWith(new Date('2019-10-01T06:24:00.000Z'), undefined);
+
+  updateZoom = jest.fn();
+  preventDefault = jest.fn();
+  wrapper = shallowRender({ updateZoom });
+  wrapper.instance().handleWheel(({
+    preventDefault,
+    deltaX: 1,
+    deltaY: 2,
+    deltaZ: 0,
+    pageX: 100,
+    pageY: 1,
+    deltaMode: 25,
+    currentTarget: ({
+      getBoundingClientRect: () => ({
+        bottom: 0,
+        height: 100,
+        width: 50,
+        left: 0,
+        right: 0,
+        top: 10,
+        x: 12,
+        y: 23,
+        toJSON: () => '',
+      }),
+    } as any) as SVGElement,
+  } as any) as React.WheelEvent<SVGElement>);
+  expect(preventDefault).toBeCalled();
+  expect(updateZoom).toBeCalledWith(undefined, new Date('2019-10-02T20:48:00.000Z'));
+});
+
+it('should handle mouse out correcly', () => {
+  const updateTooltip = jest.fn();
+  const wrapper = shallowRender({ updateTooltip: undefined });
+  wrapper.setState({
+    mouseOver: true,
+    selectedDate: new Date(),
+    selectedDateXPos: 1,
+    selectedDateIdx: 1,
+  });
+  wrapper.instance().handleMouseOut();
+  expect(wrapper.state().mouseOver).toBe(true);
+
+  wrapper.setProps({ updateTooltip });
+  wrapper.instance().handleMouseOut();
+  expect(wrapper.state().mouseOver).toBe(false);
+  expect(wrapper.state().selectedDate).toBeUndefined();
+  expect(wrapper.state().selectedDateXPos).toBeUndefined();
+  expect(wrapper.state().selectedDateIdx).toBeUndefined();
+  wrapper.instance().handleMouseOut();
+});
+
+it('should handle click correcly', () => {
+  const updateSelectedDate = jest.fn();
+  const wrapper = shallowRender({ updateSelectedDate });
+  wrapper.setState({ selectedDate: new Date() });
+
+  wrapper.instance().handleClick();
+  expect(updateSelectedDate).toBeCalledWith(wrapper.state().selectedDate);
+
+  wrapper.setProps({ updateSelectedDate: undefined });
+  updateSelectedDate.mockClear();
+  wrapper.instance().handleClick();
+  expect(updateSelectedDate).not.toBeCalled();
+});
+
 function shallowRender(props?: Partial<AdvancedTimeline['props']>) {
   return shallow<AdvancedTimeline>(
     <AdvancedTimeline
@@ -154,6 +253,7 @@ function shallowRender(props?: Partial<AdvancedTimeline['props']>) {
         {
           name: 'test-1',
           type: 'test-type-1',
+          translatedName: '',
           data: [
             {
               x: new Date('2019-10-01'),
@@ -168,6 +268,7 @@ function shallowRender(props?: Partial<AdvancedTimeline['props']>) {
         {
           name: 'test-2',
           type: 'test-type-2',
+          translatedName: '',
           data: [
             {
               x: new Date('2019-10-03'),
@@ -183,10 +284,11 @@ function shallowRender(props?: Partial<AdvancedTimeline['props']>) {
   );
 }
 
-function mockData(i: number, date: string) {
+function mockData(i: number, date: string): T.Chart.Serie {
   return {
     name: `t${i}`,
     type: 'type',
+    translatedName: '',
     data: [{ x: new Date(date), y: i }],
   };
 }
index 3ba15c91639d81e7da2d9ead026c82c155a795e4..b578e564faddf67221a962d041605221aa8b1e1d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 20b57acc0a132c325c29967a13a79cfd96a01e80..dd68ae319b5e611b69142c0508512008e22787b4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cf5a9cb4f5a00c476fbb724ac10556675d2818a7..76a7c853758c08bf5798ee3cec687f221141ca72 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 62e7f9f3e26246091fbf46f5e8fa8cc153e7d103..a26593699ce648d1d0fd6d8180c356c45e077069 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 58c92c1e003833213e69f5c72b564c98d9c68f9b..15f4754aae06466363dafeb0df09b6146a6167ad 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 77128abefdbf5800a3a8139f81f105ee5939297b..b9c609ac202d0d1757456f9e996090ce09cafa43 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 168ad9a20660cbcbaa5d24d2014459bd5951f219..8b951a9d215e10d5df024847b74bbe29497d91ce 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 07b2378fc45b3356a2dac945abf72d185351539b..27f3b5c854e31069fdd87f757ffe0990bfc19e2a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
+import { scaleTime } from 'd3-scale';
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import testTheme from '../../../config/jest/testTheme';
@@ -41,6 +41,11 @@ const series = [
   },
 ];
 
+it('should render correctly', () => {
+  expect(shallowRender({ width: undefined })).toMatchSnapshot('no width');
+  expect(shallowRender({ height: undefined })).toMatchSnapshot('no height');
+});
+
 it('should draw a graph with lines', () => {
   const wrapper = shallowRender();
   expect(wrapper.find('.line-chart-grid').exists()).toBe(true);
@@ -67,6 +72,29 @@ it('should render areas under the graph lines', () => {
   expect(shallowRender({ showAreas: true }).find('.line-chart-area').exists()).toBe(true);
 });
 
+it('should handle zoom update correctly', () => {
+  const updateZoom = jest.fn();
+  const startDate = new Date('1970-01-01T00:00:00.001Z');
+  const endDate = new Date('2000-01-01T00:00:00.001Z');
+  let wrapper = shallowRender({ updateZoom, startDate, endDate });
+  wrapper
+    .instance()
+    .handleZoomUpdate(scaleTime().domain([startDate, endDate]).range([0, 150]), [3, 50]);
+  expect(updateZoom).toBeCalledWith(
+    new Date('1970-08-08T03:21:36.001Z'),
+    new Date('1980-01-01T08:00:00.001Z')
+  );
+
+  updateZoom.mockClear();
+
+  // We throttle the handleZoomUpdate so re-render to avoid issue
+  wrapper = shallowRender({ updateZoom, startDate, endDate });
+  wrapper
+    .instance()
+    .handleZoomUpdate(scaleTime().domain([startDate, endDate]).range([0, 150]), [-1, 151]);
+  expect(updateZoom).toBeCalledWith(undefined, undefined);
+});
+
 function shallowRender(props: Partial<ZoomTimeLine['props']> = {}) {
   return shallow<ZoomTimeLine>(
     <ZoomTimeLine
index d3b1d291acc28e21a6ba0ff9c1e5ff478ef6eb5b..f4569f0f9fae973886a428edb164c607d0375021 100644 (file)
@@ -301,6 +301,1085 @@ exports[`should render correctly 1`] = `
 </svg>
 `;
 
+exports[`should render correctly: Zoom enabled 1`] = `
+<svg
+  className="line-chart"
+  height={100}
+  width={100}
+>
+  <defs>
+    <clipPath
+      id="chart-clip"
+    >
+      <rect
+        height={34}
+        transform="translate(0,-5)"
+        width={30}
+      />
+    </clipPath>
+  </defs>
+  <g
+    transform="translate(60, 26)"
+  >
+    <g>
+      <g
+        key="0"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={24}
+          y2={24}
+        />
+      </g>
+      <g
+        key="0.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={22.4}
+          y2={22.4}
+        />
+      </g>
+      <g
+        key="0.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={20.8}
+          y2={20.8}
+        />
+      </g>
+      <g
+        key="0.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={19.200000000000003}
+          y2={19.200000000000003}
+        />
+      </g>
+      <g
+        key="0.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={17.6}
+          y2={17.6}
+        />
+      </g>
+      <g
+        key="1"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={16}
+          y2={16}
+        />
+      </g>
+      <g
+        key="1.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={14.400000000000002}
+          y2={14.400000000000002}
+        />
+      </g>
+      <g
+        key="1.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={12.800000000000002}
+          y2={12.800000000000002}
+        />
+      </g>
+      <g
+        key="1.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={11.2}
+          y2={11.2}
+        />
+      </g>
+      <g
+        key="1.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={9.600000000000001}
+          y2={9.600000000000001}
+        />
+      </g>
+      <g
+        key="2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={8}
+          y2={8}
+        />
+      </g>
+      <g
+        key="2.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={6.399999999999999}
+          y2={6.399999999999999}
+        />
+      </g>
+      <g
+        key="2.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={4.800000000000002}
+          y2={4.800000000000002}
+        />
+      </g>
+      <g
+        key="2.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={3.1999999999999993}
+          y2={3.1999999999999993}
+        />
+      </g>
+      <g
+        key="2.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={1.6000000000000023}
+          y2={1.6000000000000023}
+        />
+      </g>
+      <g
+        key="3"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={0}
+          y2={0}
+        />
+      </g>
+    </g>
+    <g
+      transform="translate(0, 20)"
+    >
+      <text
+        className="line-chart-tick"
+        key="0"
+        textAnchor="end"
+        transform="rotate(-35, 1.875, 24)"
+        x={1.875}
+        y={24}
+      >
+        October
+      </text>
+      <text
+        className="line-chart-tick"
+        key="1"
+        textAnchor="end"
+        transform="rotate(-35, 5.625, 24)"
+        x={5.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="2"
+        textAnchor="end"
+        transform="rotate(-35, 9.375, 24)"
+        x={9.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="3"
+        textAnchor="end"
+        transform="rotate(-35, 13.125, 24)"
+        x={13.125}
+        y={24}
+      >
+        06 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="4"
+        textAnchor="end"
+        transform="rotate(-35, 16.875, 24)"
+        x={16.875}
+        y={24}
+      >
+        Wed 02
+      </text>
+      <text
+        className="line-chart-tick"
+        key="5"
+        textAnchor="end"
+        transform="rotate(-35, 20.625, 24)"
+        x={20.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="6"
+        textAnchor="end"
+        transform="rotate(-35, 24.375, 24)"
+        x={24.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="7"
+        textAnchor="end"
+        transform="rotate(-35, 28.125, 24)"
+        x={28.125}
+        y={24}
+      >
+        06 PM
+      </text>
+    </g>
+    <g>
+      <path
+        className="line-chart-path line-chart-path-0"
+        d="M0,16L15,8"
+        key="test-1"
+      />
+      <path
+        className="line-chart-path line-chart-path-1"
+        d="M30,0Z"
+        key="test-2"
+      />
+    </g>
+    <g>
+      <circle
+        className="line-chart-dot line-chart-dot-1"
+        cx={30}
+        cy={0}
+        key="test-20"
+        r="2"
+      />
+    </g>
+    <rect
+      className="chart-mouse-events-overlay"
+      height={24}
+      onWheel={[Function]}
+      width={30}
+    />
+  </g>
+</svg>
+`;
+
+exports[`should render correctly: format y tick 1`] = `
+<svg
+  className="line-chart"
+  height={100}
+  width={100}
+>
+  <g
+    transform="translate(60, 26)"
+  >
+    <g>
+      <g
+        key="0"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={24}
+        >
+          Nicer tick 0
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={24}
+          y2={24}
+        />
+      </g>
+      <g
+        key="0.2"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={22.4}
+        >
+          Nicer tick 0.2
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={22.4}
+          y2={22.4}
+        />
+      </g>
+      <g
+        key="0.4"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={20.8}
+        >
+          Nicer tick 0.4
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={20.8}
+          y2={20.8}
+        />
+      </g>
+      <g
+        key="0.6"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={19.200000000000003}
+        >
+          Nicer tick 0.6
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={19.200000000000003}
+          y2={19.200000000000003}
+        />
+      </g>
+      <g
+        key="0.8"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={17.6}
+        >
+          Nicer tick 0.8
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={17.6}
+          y2={17.6}
+        />
+      </g>
+      <g
+        key="1"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={16}
+        >
+          Nicer tick 1
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={16}
+          y2={16}
+        />
+      </g>
+      <g
+        key="1.2"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={14.400000000000002}
+        >
+          Nicer tick 1.2
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={14.400000000000002}
+          y2={14.400000000000002}
+        />
+      </g>
+      <g
+        key="1.4"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={12.800000000000002}
+        >
+          Nicer tick 1.4
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={12.800000000000002}
+          y2={12.800000000000002}
+        />
+      </g>
+      <g
+        key="1.6"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={11.2}
+        >
+          Nicer tick 1.6
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={11.2}
+          y2={11.2}
+        />
+      </g>
+      <g
+        key="1.8"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={9.600000000000001}
+        >
+          Nicer tick 1.8
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={9.600000000000001}
+          y2={9.600000000000001}
+        />
+      </g>
+      <g
+        key="2"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={8}
+        >
+          Nicer tick 2
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={8}
+          y2={8}
+        />
+      </g>
+      <g
+        key="2.2"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={6.399999999999999}
+        >
+          Nicer tick 2.2
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={6.399999999999999}
+          y2={6.399999999999999}
+        />
+      </g>
+      <g
+        key="2.4"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={4.800000000000002}
+        >
+          Nicer tick 2.4
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={4.800000000000002}
+          y2={4.800000000000002}
+        />
+      </g>
+      <g
+        key="2.6"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={3.1999999999999993}
+        >
+          Nicer tick 2.6
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={3.1999999999999993}
+          y2={3.1999999999999993}
+        />
+      </g>
+      <g
+        key="2.8"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={1.6000000000000023}
+        >
+          Nicer tick 2.8
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={1.6000000000000023}
+          y2={1.6000000000000023}
+        />
+      </g>
+      <g
+        key="3"
+      >
+        <text
+          className="line-chart-tick line-chart-tick-x"
+          dx="-1em"
+          dy="0.3em"
+          textAnchor="end"
+          x={0}
+          y={0}
+        >
+          Nicer tick 3
+        </text>
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={0}
+          y2={0}
+        />
+      </g>
+    </g>
+    <g
+      transform="translate(0, 20)"
+    >
+      <text
+        className="line-chart-tick"
+        key="0"
+        textAnchor="end"
+        transform="rotate(-35, 1.875, 24)"
+        x={1.875}
+        y={24}
+      >
+        October
+      </text>
+      <text
+        className="line-chart-tick"
+        key="1"
+        textAnchor="end"
+        transform="rotate(-35, 5.625, 24)"
+        x={5.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="2"
+        textAnchor="end"
+        transform="rotate(-35, 9.375, 24)"
+        x={9.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="3"
+        textAnchor="end"
+        transform="rotate(-35, 13.125, 24)"
+        x={13.125}
+        y={24}
+      >
+        06 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="4"
+        textAnchor="end"
+        transform="rotate(-35, 16.875, 24)"
+        x={16.875}
+        y={24}
+      >
+        Wed 02
+      </text>
+      <text
+        className="line-chart-tick"
+        key="5"
+        textAnchor="end"
+        transform="rotate(-35, 20.625, 24)"
+        x={20.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="6"
+        textAnchor="end"
+        transform="rotate(-35, 24.375, 24)"
+        x={24.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="7"
+        textAnchor="end"
+        transform="rotate(-35, 28.125, 24)"
+        x={28.125}
+        y={24}
+      >
+        06 PM
+      </text>
+    </g>
+    <g>
+      <path
+        className="line-chart-path line-chart-path-0"
+        d="M0,16L15,8"
+        key="test-1"
+      />
+      <path
+        className="line-chart-path line-chart-path-1"
+        d="M30,0Z"
+        key="test-2"
+      />
+    </g>
+    <g>
+      <circle
+        className="line-chart-dot line-chart-dot-1"
+        cx={30}
+        cy={0}
+        key="test-20"
+        r="2"
+      />
+    </g>
+    <rect
+      className="chart-mouse-events-overlay"
+      height={24}
+      width={30}
+    />
+  </g>
+</svg>
+`;
+
+exports[`should render correctly: no areas 1`] = `
+<svg
+  className="line-chart"
+  height={100}
+  width={100}
+>
+  <g
+    transform="translate(60, 26)"
+  >
+    <g>
+      <g
+        key="0"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={24}
+          y2={24}
+        />
+      </g>
+      <g
+        key="0.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={22.4}
+          y2={22.4}
+        />
+      </g>
+      <g
+        key="0.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={20.8}
+          y2={20.8}
+        />
+      </g>
+      <g
+        key="0.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={19.200000000000003}
+          y2={19.200000000000003}
+        />
+      </g>
+      <g
+        key="0.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={17.6}
+          y2={17.6}
+        />
+      </g>
+      <g
+        key="1"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={16}
+          y2={16}
+        />
+      </g>
+      <g
+        key="1.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={14.400000000000002}
+          y2={14.400000000000002}
+        />
+      </g>
+      <g
+        key="1.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={12.800000000000002}
+          y2={12.800000000000002}
+        />
+      </g>
+      <g
+        key="1.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={11.2}
+          y2={11.2}
+        />
+      </g>
+      <g
+        key="1.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={9.600000000000001}
+          y2={9.600000000000001}
+        />
+      </g>
+      <g
+        key="2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={8}
+          y2={8}
+        />
+      </g>
+      <g
+        key="2.2"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={6.399999999999999}
+          y2={6.399999999999999}
+        />
+      </g>
+      <g
+        key="2.4"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={4.800000000000002}
+          y2={4.800000000000002}
+        />
+      </g>
+      <g
+        key="2.6"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={3.1999999999999993}
+          y2={3.1999999999999993}
+        />
+      </g>
+      <g
+        key="2.8"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={1.6000000000000023}
+          y2={1.6000000000000023}
+        />
+      </g>
+      <g
+        key="3"
+      >
+        <line
+          className="line-chart-grid"
+          x1={0}
+          x2={30}
+          y1={0}
+          y2={0}
+        />
+      </g>
+    </g>
+    <g
+      transform="translate(0, 20)"
+    >
+      <text
+        className="line-chart-tick"
+        key="0"
+        textAnchor="end"
+        transform="rotate(-35, 1.875, 24)"
+        x={1.875}
+        y={24}
+      >
+        October
+      </text>
+      <text
+        className="line-chart-tick"
+        key="1"
+        textAnchor="end"
+        transform="rotate(-35, 5.625, 24)"
+        x={5.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="2"
+        textAnchor="end"
+        transform="rotate(-35, 9.375, 24)"
+        x={9.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="3"
+        textAnchor="end"
+        transform="rotate(-35, 13.125, 24)"
+        x={13.125}
+        y={24}
+      >
+        06 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="4"
+        textAnchor="end"
+        transform="rotate(-35, 16.875, 24)"
+        x={16.875}
+        y={24}
+      >
+        Wed 02
+      </text>
+      <text
+        className="line-chart-tick"
+        key="5"
+        textAnchor="end"
+        transform="rotate(-35, 20.625, 24)"
+        x={20.625}
+        y={24}
+      >
+        06 AM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="6"
+        textAnchor="end"
+        transform="rotate(-35, 24.375, 24)"
+        x={24.375}
+        y={24}
+      >
+        12 PM
+      </text>
+      <text
+        className="line-chart-tick"
+        key="7"
+        textAnchor="end"
+        transform="rotate(-35, 28.125, 24)"
+        x={28.125}
+        y={24}
+      >
+        06 PM
+      </text>
+    </g>
+    <g>
+      <path
+        className="line-chart-path line-chart-path-0"
+        d="M0,16L15,8"
+        key="test-1"
+      />
+      <path
+        className="line-chart-path line-chart-path-1"
+        d="M30,0Z"
+        key="test-2"
+      />
+    </g>
+    <g>
+      <circle
+        className="line-chart-dot line-chart-dot-1"
+        cx={30}
+        cy={0}
+        key="test-20"
+        r="2"
+      />
+    </g>
+    <rect
+      className="chart-mouse-events-overlay"
+      height={24}
+      width={30}
+    />
+  </g>
+</svg>
+`;
+
+exports[`should render correctly: no height 1`] = `<div />`;
+
+exports[`should render correctly: no width 1`] = `<div />`;
+
 exports[`should render leak legend correctly 1`] = `
 <Fragment>
   <rect
diff --git a/server/sonar-ui-common/components/charts/__tests__/__snapshots__/ZoomTimeLine-test.tsx.snap b/server/sonar-ui-common/components/charts/__tests__/__snapshots__/ZoomTimeLine-test.tsx.snap
new file mode 100644 (file)
index 0000000..adb3c28
--- /dev/null
@@ -0,0 +1,5 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render correctly: no height 1`] = `<div />`;
+
+exports[`should render correctly: no width 1`] = `<div />`;
index 06f01d629b0ee6659d34637f089376842488a46f..e4de6ff3baa57f6132f2c3dbe19163e82d5bbe71 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3c747be691023bd4cc145c2f861d325d13e9c966..0022b4f322ed7615ff613c9ffc9b3b3eba8fa6cd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5677b2292e6ddbd8cbec9408855d5cab73235ec0..ce713c7c9c15c12ac00406a6d91627ccf9d01657 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 043c62d800d2dd9f3f7f19d97cdf4540a98ee953..976cb63f348fe8be3a0c9f04fa322c3e1bc7dcea 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ab709bb19cd2ca5cca004db60aa22204a4e137ed..6306f855eb611ab19d11a270845502ce4dc32502 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 .icon-checkbox {
   display: inline-block;
   line-height: 1;
index 307dc1c263faddb60ed3b9a81d5a193197ed482a..1526eb501fc00083fabced07a19c4226d0ef7d13 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 96a25e4c5c8af7092ac4a3ad73b06f13f4978cc4..64891b31b4707eb1cb3650d36524d73414b5216e 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 737b18e2f3ed338b2a84bd142780f93a2bd9e27f..9ab6717f2b7992d38fc53e825adfb906d48fd1b9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 295d4f882ca2d03e8f6e721e29c5420128223713..44a4010beb72177b542ce43da85506c04534d1fb 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a6bb044b2a8d297adacb28e5d2b584e085ae4972..45765c95874640c2a6c1db036a0268803099f43a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 783ed430e86059a654655c45c0fbff2e8413c6e5..41b7bd79b15bd53944775d5025c6824bcd8a1bf6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a39be19c82e9e2f16e8700144da754f1eb7b39de..89b5733cf9af1fb09e6453b9a96a1ba03d764e99 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b8c324c76f52abdff13889c80fea7a979889c25d..487bf13a6af825e1d85e78c14fc78d002a05d35a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1b6dbf2ba2bfcbee1bce52940a474b96b95de722..e3727dd338a0c23b079f6c9f5d526bd4cd58e043 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7c51ae5030848c2c547030a4e8a2d6a7496f52c4..d59f8d131e89a441894b041fe8de7608752465a6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index bafc621852d392cacfb4b5576b09d8cbcf893552..11376bc7c33e1fd9e55f3d4af0b15829251ddc73 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index edf4ec65cf85fde51b154552982d87142f823817..00a4bf4610cc51d3d2dcfa318b3bc1aca7273cf6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6aff2f3812690b525b0c9e2a21710961abc96758..889f14acf903e16a7f11b146d260f1f3bceed6fd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index bfcb25f257096ef16ea5227cddc4397dfd62c877..53c85f31a0386b4e98e2097033923928df0601cf 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e02baceab2daa1350d4cbb6f11a88b3b1f9dc276..bb9cfcab90f0d5f39b0df555c06d03831ebaa8be 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 04387913c46b2b2149436ec0715088ca8d9503cd..8617c126d655f10a8dbf199ce2687571e39b7663 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a225712a219d3cd7d482b074d1293a4ad82f3ae0..04e3de15a21daf940c051cecbe1e72dd14a9f5f3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 91acdeab83221e29bcaa00bf2859153d48c8cc26..4583856b3c6adcfeb3d8df523e4a576192d60581 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 44e43f5f026eb877176605dfb45d0df1643a9149..2166b6464c4ea40a9898d46a5ccfe10f1392e59f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c5eeff11227a3a5fab01a49678207ac11a73d3ae..2aa649de238e54efb43719f2d6b3e63f79509b5a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c7c86ba1a2b72efb3aa19aea0021a6e6b823ab6e..eaea43f89bad29db45f975b8685cc70458f5a4e9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 172c89ca5076b3abd0e3b401c7b770f582756904..6d53c4b383bcc12a39b5b66e325341b61a77a55b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 .icon-radio {
   position: relative;
   display: inline-block;
index 1095a30f07828024f9d6520ee05278756d77df4f..c664c6f2499d047e03005aa24a9d524df93a54f8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4afbef07bd954f12c01f276f51d978483b91712e..f51fe41c930d382c0773bcd85beca88cf5de3a33 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e6501995d2703c45211690f325ceb368564bf1f6..0fdd1348a9d3e509972c9ec44f99cc70aee24c2a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 747c4a44d39be4ec15b6c5f4ebe54554348b62aa..4ca9c28df7cf431a9eeae41bd4bcbd4087f94c0f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1ec9ed3e0c3c174f9bba23ceeb395e6d190e6105..51187d25cbb5b75e3652759b8bab3ccc46c27414 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 69d3bb3702aae50648ca14deaf2ced41db32212a..0d7d7960d4c26d76b0ac632f1cb190223d940ae0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 69c00f8404e0ff84da563e04d9fbf0e251273e04..0065201d22e001455ad49aba16e7275245865540 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 412058a9792282416f7573d6e745aba39c70c9f2..3e91462ef5cd7373efc83969615c6fef45dd44e6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 69272bb5721e37d7603a9b57185f193c846aaa3b..c3889b508253bcae73ed3af6bd501de86a2ef0b1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c446f35e7d10050ace976772e05ef4371ba57909..be783afe80594e1a23da03d4ffdbbd4681a79a4c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index db74eb89d397cbdec101fa13986b73be933416c9..8f89447cc47b034a534a0fc0beba632a8ad5d195 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index be4c37bd2da3e53426cd8a285e90ffbc89f15e09..f100c9a2cde8fbffcfb19ee79f10c118beb9d3a9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4a2fcc1c3a176248d8316185e6756a8aa8865abf..30b95c8003361d37135fc5c8db80eae87cc054ff 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 .select-list-container {
   min-width: 500px;
   box-sizing: border-box;
index 9baa6d843f02078f4e0d33637f78067524885994..1e49c82d3ed90e1a4485be3ffa79c7f8b8bdd556 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f0bb64a2ff941b86c2bae156b3546890ce76ccdc..c39d45133c79d029c6307ddf229dbea10615aa7f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index bae8dbfea45d24d75d0d82b6d459cf6e932af22c..defd493f344bad04e927d0d99cc48e9fef326902 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 99d368bc02f8cc775de10402ba4b86b06452ada3..a0b8bc103b3eab8efc4651414eea8848956a8813 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 13dc927ab8d4c421522ac2ccd65738f0a8d92c0a..334fe14f25580770fb0fcbd02997593b9f451304 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7fb2ef73db48d2bc03caaa8cbe3f339c4ab5e384..b187255ad46d9eca7e5e5a75177fa2c6e5734959 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1d14e11920952c4dcc09506c000cee8cb85e8d06..f9b0cfeb75b673a3eeded5a3cb822475bf102d6e 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 62a7570e75989ec3d5c29dbda7f03f3c7f1a53f9..52448e8b074d1c5af48843ae63b82453080d972e 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2545716e8bbb8e4a9ec9a515c8db211db76f569a..b610a9b9fd5df63609dc2c3303811198645f6845 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 40eaf11d69ecbad788d9753f933fb9d51a91a626..d49494f1f77ce2bd20dfd4b0e9ed26988ae25441 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8ac9f8711bb37309b2ff1ac8fc195f65245a776c..de4f670a637055ff643e94d2ee8488027af41c69 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0e2bcd0afa96bac0b6ecdfec91618c65ddd069d1..37e7127014a9ba2174e207592fa0c8e9555d393d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a8010ae8d3cb4638a2485f354a2672aca56a498b..1f966232028d80a75bcc2498f4c833e40c2ea606 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cca7c0f414f0757d1205bb7b5bd097b9dcd7bdd8..7dd77c81eea533c1347d136874b6f394714563fa 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 93c5a8d7d37d4a9325e684bbd6d35f57e32d2ec8..a74b20fd9334da8344516ceeda58302d3a32ebfc 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 77ad09c9f5e39584c63608bd337ec98d42637216..0f206076ad927b24eef1f8b6d3db2c9209c260f2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7feece1ecdde5027c5fb73c3099a9f2729e7dda7..970a3546c3aa8cf71896add273eb996405b3e923 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d597369ea1dce09bb5940b997bb11f5f57c9d23c..6db0b5c28e187d03ccec19f96baedd7d420022c4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -42,7 +42,7 @@ function mountRender(overrides: Partial<BoxedTabsProps<string>> = {}) {
   return mount(dom(overrides));
 }
 
-function dom(overrides) {
+function dom<K>(overrides: Partial<BoxedTabsProps<K>>) {
   return (
     <BoxedTabs
       className="boxed-tabs"
index e05e0c87d74ccdee6614f321ab23b588f4a5d815..b56cce6c55932f6b1dd042fd8c1e7add2ae2208c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c20dc06a910c787089399015042afbcfa53623a0..c2f6d701a76468ac58c2ce8b07e61098bcbc07ca 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index abd1ae483e6c0cf5c63285911782a62e6a03870d..69b6fde10d590706c45bafcdd97aaeeff21b0a0a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 15fd56c062238b32f15f620244365848db011b2c..cfefbac465adbd82d04977e65ee0e425e1b9d3bc 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0595d595a27ff02f897048c4137e36871e9c0504..6c051fefb3e24a8f9f8f89215f6dad7a8c672291 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 12641596f467cd9cab953c6fa557201558dadf31..6c852477b81c840bf74d1a96666caaffaf397fc4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import { KeyCodes } from '../../../helpers/keycodes';
index 61919eb6eb782855304840d984bba250319124ef..d0978f050d49640ef725f86649e97e6e18fea0d0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3dc4eda56614e0716c35e1f5c481a5670e60eb88..af48c1a97015956194e88673c6bab4cee07aab6c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ecd7a50539e7af81cc059804d9b8ca1b3670d49e..6bd89e53b25134ff38bd0a6ac76f79a6fc1bce6b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import testTheme from '../../../config/jest/testTheme';
index 9a8b0a49481dfea299b44bae7b85f8068a55f08c..0050cd6f277f1a0d36905568c0904e33d2d79220 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 363e3d79a8a8e88adbc8cca2bd76f55945016c0c..6c7c421452c84adbea5d055033890b2df770dcb5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6ea69c990aea587d826366db259aa8eb165b6536..8970e9843595f07cc98b546bc31bed88a11ffef0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 91756df5a55bf4abe20c5214ef1a5eea1d331818..490609803a740dffe3d29c59782ef132df31fec3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1f5cbb5b7e38a02f8c25d5c9f668e60ae478a343..27f9743870d561a966b415b532ad8b2f4d897a1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
diff --git a/server/sonar-ui-common/components/controls/__tests__/OutsideClickHandler-test.tsx b/server/sonar-ui-common/components/controls/__tests__/OutsideClickHandler-test.tsx
new file mode 100644 (file)
index 0000000..4f540f5
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2021 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 { mount, shallow } from 'enzyme';
+import * as React from 'react';
+import OutsideClickHandler from '../OutsideClickHandler';
+
+jest.useFakeTimers();
+
+it('should render correctly', () => {
+  expect(shallowRender()).toMatchSnapshot();
+});
+
+it('should register for click event', () => {
+  const addEventListener = jest.spyOn(window, 'addEventListener');
+  const removeEventListener = jest.spyOn(window, 'removeEventListener');
+
+  const wrapper = shallowRender();
+
+  jest.runAllTimers();
+
+  expect(addEventListener).toHaveBeenCalledWith('click', expect.anything());
+
+  wrapper.instance().componentWillUnmount();
+
+  expect(removeEventListener).toHaveBeenCalledWith('click', expect.anything());
+});
+
+it('should call event handler on click on window', () => {
+  const onClickOutside = jest.fn();
+
+  const map: { [key: string]: EventListener } = {};
+  window.addEventListener = jest.fn((event, callback) => {
+    map[event] = callback as EventListener;
+  });
+
+  mount(
+    <div id="outside-element">
+      <OutsideClickHandler onClickOutside={onClickOutside}>
+        <div id="children" />
+      </OutsideClickHandler>
+    </div>
+  );
+
+  jest.runAllTimers();
+
+  map['click'](new Event('click'));
+  expect(onClickOutside).toHaveBeenCalled();
+});
+
+function shallowRender(props: Partial<OutsideClickHandler['props']> = {}) {
+  return shallow<OutsideClickHandler>(
+    <OutsideClickHandler onClickOutside={jest.fn()} {...props}>
+      <div id="children" />
+    </OutsideClickHandler>
+  );
+}
index feb1a6e060eadccff1c3f1894022dcbb24a13d0b..60d2050a45d10386297d4621816cbbc498a9d45f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 27ed8f6eadcc3f3f14d6cf26c1db7fe3d24c7127..2232f38b252e52a7083e3a783b060296973efdfd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6d5aa2e584041c92e643bb9130c431a76bd0d8bd..3653374e31ae7883a162af50a4f0e9f08e177206 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f6a92859d692a372f1c616dbc66db7f3a795ffdd..c22fd1f313e8adeaa70291036af34e7dc624d5dd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import testTheme from '../../../config/jest/testTheme';
index aae3a9e0cc3757d5a41ae66c8cefd4236da6918a..f857666cecd6b5e7485a0ed43768cd8672909b56 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
  */
 import { mount } from 'enzyme';
 import * as React from 'react';
+import testTheme from '../../../config/jest/testTheme';
 import { resizeWindowTo, setNodeRect } from '../../../helpers/testUtils';
-import ScreenPositionFixer from '../ScreenPositionFixer';
+import { ScreenPositionFixer } from '../ScreenPositionFixer';
 
 jest.mock('lodash', () => {
-  const lodash = require.requireActual('lodash');
+  const lodash = jest.requireActual('lodash');
   lodash.throttle = (fn: any) => () => fn();
   return lodash;
 });
@@ -88,6 +89,7 @@ it('should re-position when window is resized', () => {
   expect(children).toHaveBeenCalledTimes(3);
 });
 
-function mountRender(props: ScreenPositionFixer['props']) {
-  return mount(<ScreenPositionFixer {...props} />);
+function mountRender(props: Partial<ScreenPositionFixer['props']>) {
+  // eslint-disable-next-line react/no-children-prop
+  return mount(<ScreenPositionFixer theme={testTheme} children={() => <div />} {...props} />);
 }
index aaed9ed16c040adae0a5bec778db5324b2ff67f6..7afa1839c5f27c3d018e1bca920630cb50209adf 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 71ca3e799325a5a1dc2d95fa27ec3745ee976c46..ed13eea6fa75e8b47c40cc3beaace0790c937eca 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e4a4ed223461bb728cac7a5734cadbc8fa0dff89..ab3eb4f807268d6da5f3631275a36f00cf0f5ecb 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 61d53f4825fe79748b39614ff577b938819b6f65..1b24bc866c1b0e49ffece5cbe48abd42634ec1f7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 82a1a40455cb94b7597cb25189f2cf9bbbfc3532..ca127222e0440a18b0943efba04f769240738f91 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6b5271450fb6279868f7ef83566444cca8fb44a9..5a8e6bb0cd7e3349cf93c4948095a627fd49c7af 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7db674a16dbf66ce77dd9901623dcc18c591667a..11cf4e5e353def6ce2e271cbce3f8969baf17176 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 79fc605afb3f37c177155d4bef378e20ccee45e0..f3e39aca5dfc33a4b6cad40129fdd51079ab74ac 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import { click } from '../../../helpers/testUtils';
index dfcbe6b0b9aaba22ab74c417e514dbadd6257f91..679177cfda3a35243fb6d536eedfc2051bf03fc2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d490fd5179c3897009081bec9736192c1f398bae..e2a395b609eed479119e7d24ea2e4c64fc827751 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
  */
 import { shallow } from 'enzyme';
 import * as React from 'react';
-import Tooltip, { TooltipInner } from '../Tooltip';
+import Tooltip, { TooltipInner, TooltipProps } from '../Tooltip';
 
 jest.useFakeTimers();
 jest.mock('react-dom', () => {
-  const actual = require.requireActual('react-dom');
+  const actual = jest.requireActual('react-dom');
   return Object.assign({}, actual, {
-    findDOMNode: () => undefined,
+    findDOMNode: jest.fn().mockReturnValue(undefined),
   });
 });
 
+beforeEach(jest.clearAllMocks);
+
 it('should render', () => {
-  expect(
-    shallow(
-      <TooltipInner overlay={<span id="overlay" />} visible={false}>
-        <div id="tooltip" />
-      </TooltipInner>
-    )
-  ).toMatchSnapshot();
+  expect(shallowRenderTooltipInner()).toMatchSnapshot();
   expect(
     shallow(
       <TooltipInner overlay={<span id="overlay" />} visible={true}>
@@ -50,11 +46,8 @@ it('should render', () => {
 it('should open & close', () => {
   const onShow = jest.fn();
   const onHide = jest.fn();
-  const wrapper = shallow(
-    <TooltipInner onHide={onHide} onShow={onShow} overlay={<span id="overlay" />}>
-      <div id="tooltip" />
-    </TooltipInner>
-  );
+  const wrapper = shallowRenderTooltipInner({ onHide, onShow });
+
   wrapper.find('#tooltip').simulate('mouseenter');
   jest.runOnlyPendingTimers();
   wrapper.update();
@@ -71,11 +64,7 @@ it('should open & close', () => {
 it('should not open when mouse goes away quickly', () => {
   const onShow = jest.fn();
   const onHide = jest.fn();
-  const wrapper = shallow(
-    <TooltipInner onHide={onHide} onShow={onShow} overlay={<span id="overlay" />}>
-      <div id="tooltip" />
-    </TooltipInner>
-  );
+  const wrapper = shallowRenderTooltipInner({ onHide, onShow });
 
   wrapper.find('#tooltip').simulate('mouseenter');
   wrapper.find('#tooltip').simulate('mouseleave');
@@ -86,27 +75,44 @@ it('should not open when mouse goes away quickly', () => {
 });
 
 it('should not render tooltip without overlay', () => {
-  const wrapper = shallow(
-    <Tooltip overlay={undefined}>
-      <div id="tooltip" />
-    </Tooltip>
-  );
+  const wrapper = shallowRenderTooltip();
   expect(wrapper.type()).toBe('div');
 });
 
 it('should not render empty tooltips', () => {
-  expect(
-    shallow(
-      <Tooltip overlay={undefined} visible={true}>
-        <div id="tooltip" />
-      </Tooltip>
-    )
-  ).toMatchSnapshot();
-  expect(
-    shallow(
-      <Tooltip overlay="" visible={true}>
-        <div id="tooltip" />
-      </Tooltip>
-    )
-  ).toMatchSnapshot();
+  expect(shallowRenderTooltip()).toMatchSnapshot();
+  expect(shallowRenderTooltip()).toMatchSnapshot();
 });
+
+it('should adjust arrow position', () => {
+  const wrapper = shallowRenderTooltipInner();
+
+  expect(wrapper.instance().adjustArrowPosition('left', { leftFix: 10, topFix: 20 })).toEqual({
+    marginTop: -20,
+  });
+  expect(wrapper.instance().adjustArrowPosition('right', { leftFix: 10, topFix: 20 })).toEqual({
+    marginTop: -20,
+  });
+  expect(wrapper.instance().adjustArrowPosition('top', { leftFix: 10, topFix: 20 })).toEqual({
+    marginLeft: -10,
+  });
+  expect(wrapper.instance().adjustArrowPosition('bottom', { leftFix: 10, topFix: 20 })).toEqual({
+    marginLeft: -10,
+  });
+});
+
+function shallowRenderTooltip() {
+  return shallow<TooltipProps>(
+    <Tooltip overlay={undefined}>
+      <div id="tooltip" />
+    </Tooltip>
+  );
+}
+
+function shallowRenderTooltipInner(props?: Partial<TooltipProps>) {
+  return shallow<TooltipInner>(
+    <TooltipInner overlay={<span id="overlay" />} {...props}>
+      <div id="tooltip" />
+    </TooltipInner>
+  );
+}
index 295967f7ed06f1da135ca9226ad6334c0b84f17e..64827f932ed69276702ebf300ae737fa7f90e303 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 716978090da6f0192aa49c61137044fc5b1d5bc1..97d4a2a5937183ae11e1f7c587eae1a3899f965f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 810b864c8b26ef4b5f02650851c833c4618d5ef6..e382508357706aff268aa28e9798a6097c664b58 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
diff --git a/server/sonar-ui-common/components/controls/__tests__/__snapshots__/OutsideClickHandler-test.tsx.snap b/server/sonar-ui-common/components/controls/__tests__/__snapshots__/OutsideClickHandler-test.tsx.snap
new file mode 100644 (file)
index 0000000..a4f533d
--- /dev/null
@@ -0,0 +1,7 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render correctly 1`] = `
+<div
+  id="children"
+/>
+`;
index 59e554f972c4616e4bd8df0683f0bb67abdd8c35..c199c5778cc75c654fe958c589b5c56c065af26b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0563651027ed27c1e2d18f2e8a31d6dccc8b9439..36b2d6f02db201222f5bcfdbede390cfd54effab 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -69,11 +69,11 @@ describe('ClipboardBase', () => {
   });
 
   function shallowRender(children?: ClipboardBase['props']['children']) {
-    return shallow<ClipboardBase>(<ClipboardBase>{children}</ClipboardBase>);
+    return shallow<ClipboardBase>(<ClipboardBase>{children || (() => null)}</ClipboardBase>);
   }
 
   function mountRender(children?: ClipboardBase['props']['children']) {
-    return mount<ClipboardBase>(<ClipboardBase>{children}</ClipboardBase>);
+    return mount<ClipboardBase>(<ClipboardBase>{children || (() => null)}</ClipboardBase>);
   }
 });
 
index 25a6944a348fcd39b418d30cf5fb3f79cabb807c..8a8f9447cb34eb330bc40a6bc76a68a3de55efc9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d0567bebd5d64c95384bb20c1a1bf72a3172d87d..f43c62bc9a61c2025747b0c31b38a82fa4cb419b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e4778f46251b1043b50eee2475dde9f65cfd7872..427000c17a731b51dd8162293511a2aa0d2be9a9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * 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 classNames from 'classnames';
 import * as Clipboard from 'clipboard';
 import * as React from 'react';
index 8ab7ac9492c071d85680e95c365ca941a74824b7..c6c71782d7ab7b6af77437418d9003596dcffbda 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 282f352cc903d89754af1b39c8eecbebe7ece95d..707d0f9e9f60170da52743c5354e808c60fec8e4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 99c3f2795e4f35c3ec5da1681353c14235766f73..7dc322657d2eaa6bdb2ff053621d2f77118c5cd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1b71b1bf7045a92fa0627fe0b889f3141eab110f..c27e730789769410f3b0600c6f7d6081923554e0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5ad31ca5c57686014c8c2c66be6b3003f3c6a7a9..34974ee837442ba63de8bf0677fdb0a4469d45be 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2823224ded315a22f13de9508c212dc6fe8337a2..b6e9207cc587a4aa5685ec6649f9193ce89b191a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0a6bc916bba249914508444fc9ffd94713225bb7..50a40c5c2f53718d1b37fadfa9d52d071def74b2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 93a103f786aac085035678f86a3206486ed3bee1..77f19836614c7b961094b9d5f0aa07bb1b2840e3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index bc2319cc115f164d636d3da33d599e0a156fee2a..db03eee3115e00311c96397424be7b4eb3e20b8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e1b2556c95114a91a2e94145a95a714ec52b3b92..bceb30427a4fa6a8475d26a23282b14965a5ec7b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f7411e24b5a9e40824a6eb755e537afa8f363dd7..bb70dfd4d6e2a1c23afea1462c016e6e0748c2a0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 07909e3da53eddc4d9d0ff9492ec28dbe0679975..4d4d305190a21dc677b71583e3717fc9c668bb6f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a1ba82aaf2daed82e4681c671c2c0820fceac8c2..9248e6178e83f4e1f7448b783855fe62e5ff5abb 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ca94d88b76b71a522a131e45547bbbaf9144124e..0931930ee5c2b11754992ef32a92ce597aebdde0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index aa74c73fcd7224d0aa10e5b0c91e4f9a13f7aa6b..8f4824699ab2992f2e033ebb277069a63d3fccb8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ad5b1103c8e74a6f1214efbf1e58450d3aee3b40..21d6049ed6fccf31059e0daa5a47fa4d682b89f3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index fe67d600edf5e4c73982972fd48caa6c0c0ccb07..842fc9f69a832f1f9717220018d19e8fc0fd88b4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f0f380e4a912a3be7cbcb51d157305636dff8620..2ad6f90ed9753d08df463ab58096488b088b51a4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 417004676ec99cd392229acaa553765f91558696..91eb6f706d687076ed5f3f5091785e5d06593caa 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 556f316c40987c4178b955e53eaabbbaec146518..c777a4a8e604f793a05f016cc9263d495244d54a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0ca8c20710120c6f108ea9879d791e4d610234ae..d705bcd0ec72cecf1f65a93846a3c6626126981c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 99b3e12197f0476c1afbf9ccc147d04c35e81177..4d7da4238f641fa15ba39f4072210e03dd5ac5d3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 49145d4ff5765896b9734126488d81d17aed3fa0..688f7e1a54fb236c86ca7fd953f77a58c2591b55 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1c0cc4a3252d47b83992f811f03af05e18cf4b3b..62ab2447fd129caca0e16daff7ba492736d98ab8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9937c6dd4574c7ec69d008f02289b4404ebdda25..2787990b1f3a472bb8313e740b6761b34ca7d663 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e5293b4ba6f5e648d59a628ebb28ad9fb63a7a41..1fb013182da0e0806cd74da7f0b038fc4874dcb5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4dc5fc85a6c7f371a864b8a55424f89e308e7c4c..4066ddf33273400f82e5aab3793408b5b71ced98 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b9bebaaa83900586cfd0bf6c7ba5d8281c6e8dff..7abed26df45d65c211b866eb423f54529eac09f2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1930be7422b4ceca9cdb50fd5194d1862dc18032..45bf6814d46580d6d394c4461b500e4c08d80a51 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4ef8fe290b0049ba9fbf8db1cffbbabd5c51b469..c584514131a3d81dae839dfc9279dcbfac42f656 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ffe61369cc9cb1cc358af5663f306086f78ca228..2de2405df9acada59134c17974dd9a1e5fff2b78 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3ddea9c411ae41520eb858a36e851851998749e7..1b6a2ce7f52ab7a7a645a561126d2c0bab24e4c4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2ebce211da6c097789f17205e242a3b41042aa0d..af3ae770ebd8a908a70ed548cae5c93c80e35ecd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0253f65e8659f7709f8e185e8cbbfb04cb879ac3..8d5851eb5704e079e15f8cfa5fa92f70e868b6c6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3a798adff9d40f4eb279cc037df9aac5d2c633c6..9efe35a17abf0a04e68490f1a5d4d8d9e9833428 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 77973da3c972715163f25399858fb71af018476a..641e76849d2d0298e5c8c4ecd19edd7c4e908a0f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 63f69e6e5846160c248f09f638a2a206410e170b..55d61aff599b668b22c2b6ed8ba696e8ce4de9b1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0902723f450c83a04641d9e9e12ce24850993f50..e6d288701744ec40af6c2767e121870a12d69688 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ac7232dad2e7854d1fbf58efab1f7ae1f1a2af84..c4ff402ebb10b8ac808a0cc30e72294bd1762a7b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 35aae243a60b5659e9ddcc8b9b95b1f966cac0f0..d0d6356b4b9f5d8d5a3bddb110f8d19ec463a8de 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9e75397e0a3b90c3c508259ae73145a4faabe74c..80029d0e93bd09b29873b066147468d968120aee 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8e1e10babb5433ef2232f6490280f9fd92c1bc81..e78a91bbc44880a237d52a9378fd84aa3679c910 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1962b6765d8d780a5aa23f2c3b1ef59573f0057b..9815ce40a844a4b382375bf33c03b9c908a16263 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ec5b9994e35da1a27c4ff3a79e4b7569c2edbe56..1ebcef9ed4e08a1138a3955d5d2e80c26e4610ba 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ba5c1a32d6b5398e0fb5c71bc01d713966385cbe..04288a053316c39e371567554e57738d1660acec 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8596ef9b75422ebcce836d4309807de727f263ec..fdc9e5c840dfd4affdd67b231f357f56a4167602 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 827e287ccfa7a8a95d8261bf650849c647d05305..f9cd73e49816eccb7ed3a5fd2e5d90d8a3a000bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a2f7cc4af544722a0c9e835f71dc2ad521b43f9d..893c07178e469ae1ce1399544e7e944ad504618d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c1dd2227bbc5542c6f6ff5c7995ac144cc970369..07ad0c47ecd3e9b44296d8fe48aa38114f450b98 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ce2f6783cebfe10d696f541174db5cb16203decd..66f64ed61573f95e937fe135a9f139d0317a6a3b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2ba99cc9eec3ae6d8426665f2485370ec3616b20..10bf7da86d9db06a5eb915f4a963243923cbd40a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 536ce5b63e542b071568d698b5794afa56647c03..255c2d8f3916701447b7923c335a2ac417c2f8d5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d46a9a44859ea8f46f94a1e851032905c65e0350..79fedae159852d0f065a89ece8ca0ff0fc693116 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0f57cf4bd0cd456e272bdd78bd35543a08901b0f..be4ab97b6403886502e11240dfcd74ce2011e035 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 169edb77e471e54cb5b8e7d5e36b62fcd21b0565..8b50014773db8156901dcb06689cb6a87f11fbf0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 32e02a36023ec769ef91be0b274ad2c22f6e1065..437abb33a70fba3672e9184a54a514ea6ecd3dc1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0efc3b615350705a6cb63eeaa97b0df2352a787f..4521f86a5e8f0f81e72ad711ba644eac885aaacb 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e2852cc33f2bc5df53fbaa1ca7d408955ca1f373..2591a7737dbda303768e0ebd3254474299066aae 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3fd1bba064bf9cd300898d63aefea6295436fb75..39df3134c6f365ae1a5875ed5c696ad7cf32f49c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 88244d72bfff81b309824d5d317093339331ab89..5ddba6b19ea288cc75e5dc5aab36655df165a347 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cd956408e589117eae45dedab691418e30fd0f78..b158f9839b2772713483369f24699f0be6dee4f2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 457d2d29042b1bc792749517084c5ccc94e8327e..dc249a94b71c0a9e3f783c351df665436c463bfa 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index bff119630ed49ffc3e74752e883f06ea3864a86c..0fb2a5d0045ae8ae44c4b53ef8f8c1009d5a86d4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7be72cfc71716d4f65fcb2db3745a7515c391ee8..06b7abb5483e4c59a4da3fedc98fde85fb0bccbe 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c779b9e8855a54625f5c59177f7b548fe0730069..ad24c87365f87b2528688173abcfb4bed9139c73 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 20f597cc9a475f485ea7796a85759dba1e664af9..115da52090809e25c25090463c231fccfecbdbd1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d1738e896960d9cb24f94e00c0fcebde71e21c47..fdbd75fab764c7564b7c6b8a9e7c0cfea039e004 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 59e86132e4eda30cdff854e43ddbe6d600382b3a..0da433a21e2cd4a93ff60cb1f52db48c3b637aa8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9127b80a8f108c256cd635646e0d75c176283556..6ac2e9297aebdcad2cd38b8d029500831fb767e4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 30db5fb850a79fc893dd53fb8fe20dc395785824..9156f96aa28834cd0ce3450225e84af3c99c994a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8dd7b7ee5a241838643edb558e005d1cfb399a89..298d39aaeffaeb9c6b04ccdadd92b75089070a84 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 26d55d597abe46f89cce78d58eab7167fc62c8bc..388bc50a262308a1820109576ecd997d50eff0e1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a0921ba7b903a14bab0abcc5f18b38c80a4494b5..34dc1ca30021ad86b1c111219c4b53c78c5393f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f57c8de0ab8814c8c3997d891db81e5471544792..9a4cba2e914b70b18bdad63c927f492d3707f9c0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e517fd767d8eedf979fecb23be7570123b6edbfa..d5cf66bef86a452bd8c934111c280b6628034165 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0239da585f68d637d2e64c0c17b1f636bc453206..649256cf8fad502e26d0faeb6ebf287f184d03f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 80c46519982b95cceadc3ff4ae67b239a83aac59..cbcb77ad3a22e57494b6db9c5fcf670abc95bee1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cb3359c14f0e2fb2fe11368b0c63fb39dcc61ad9..5b9992352e38a63504c23d6cc7c0ec9d89b0a90b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0384abd2f908bd61b1e031e031aada1ed0ddacc4..66d14f397930d36c6dad0295d5c36007228eb920 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 25e21b750b2443e7e8587c90f54e9200c567f626..d50d4d873d3fb5a47656bd6ac037e171f337f63f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e31eeab01773c72ea21b4cbd6c5991df7c076d17..34da45580b4d54076110c701a448162aa549d048 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1c9ed0218820499951515ac1a38c8749fd9a6bf2..ceda2ea90ae6fb2cae36b137abddd341221cffe4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3402e9b65bbd52986c133185c3bf8b8fc007c811..341eb88a17ec77ab72a702c7bce441a6d58d9c7f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2a785555f2af5b8c7d89ecc02b9e92854331e9f8..852beec5385910ee424bf78fa3321972bc032d1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 605d5bdf8dd4730cf580fd6217cf8485eb60634d..dbd892fdb524d47517f0b863dea53865ab68882f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e25a9f3e0b790bdd6cb076fc085e5d15af3956a1..c683e6cd02fba0821fa4f61db696ba74932a591a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4aae2a721bb6d9baee06798bd02c4aa8e6989738..c33b8a78ff57ba9ec4877d2c52598352754b3387 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a800cac28ab43093e89ac993983926a11d21dd7d..13c383d5288e24e0942f72b412cddc713b0945e9 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c5d31fdc8ffd7b98b3e6dcbaae5be6bbe95df797..ebc3e37b4736c1fc6b3c856891cb086bf68aa80d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3eda1331c476fcde09573fc76b7ea03bc3a55e56..8fb5af054400a99cb7d5818d57b649e7aad07940 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1835010778f9ca3e6cbe9e7bbc692daf405883c7..76a585b404501c684dabcc9ecc017327fbb54854 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 18906fbb98125f64ee4ed3752a1f7ed4a8be41e5..6780d67d21c346af30fb7813124c03f6a40b281a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9edfbd6eb5b4e7c426cc1a50601acb9832d9abe2..c7edcfaa1a45c881d677d9aca26760fefe458e88 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -29,7 +29,7 @@ it('should render correctly', () => {
   const wrapper = shallowRender();
 
   expect(wrapper).toMatchSnapshot();
-  expect(wrapper.find(DateTimeFormatter).props().children(date)).toMatchSnapshot('children');
+  expect(wrapper.find(DateTimeFormatter).props().children!(date)).toMatchSnapshot('children');
 });
 
 it('should render correctly when there is no date', () => {
@@ -50,8 +50,7 @@ it('should render correctly when the date is less than one hour in the past', ()
     .dive()
     .dive()
     .find(FormattedRelative)
-    .props()
-    .children(date);
+    .props().children!(date);
 
   expect(children).toHaveBeenCalledWith('less_than_1_hour_ago');
 });
index affaf07e73df5c5c808ee32694b9ff88cca0ec88..8d6dbf2add7921036aaadb94a8226e7a807ee3a5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index da291c5fde5cb5a1b7a25c1b850091c611d986e2..0af517feb93b89684ec9cfd84626d68dc4a89a49 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9600306b5f826a22d39f706ab55e3b288a6e51b9..25b96db6c3617323a35d12029c91f55971e63759 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c3810aaddf2aad6dadae293b21c4a66e9bb7731a..a63104f1e563340fcc5a1e97efd07a77cffd98c0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 292173504a8ecbe9dc52acc68301b85f6c0a7c5d..376d6e5fec6c31173601e6123332522cce6bc72b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index a6a9a89ce2fbf999b94de5b6a470cc38fda39c4a..ee2ed0ae7da7be6fb9114c622fdecad76d0347a2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7055704c4d2d1c0cc312f606bd9d55ea50ef152b..2c3865a835d4347525605e3fbab85094bd52b916 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index abae91c1d86ce1c27a8c5acc939501537709cf4a..07a75d15ae5bda458b183b047eac8677892464b4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 7ee76107ce86254af7635f8c5e22339b60930399..22569c0c6b63c472cea5d04ca08c148397ac8783 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1b972fe3f23cf0eb82ee915703b0bcef613a6095..7021917c0bc00f26072cbf77250c87a496888c17 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0541c36c9f02f4a6a2f99316cb422276adddb61f..82f4024bca3c935f2be98d83e33dfc1e2fa1d5c3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6d2c6df2a8011ba75b1c856506c221ed4e740274..9289f587960d5e6e8cd1eca2ea444ec920644fab 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8303e4f661febcb067ed2e4085f39e059421256c..60b96c223facd8793cccf1b09ace18a221b568d4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9221bdcd73d34b4247c16504bc70364ba7f4b654..1d9aab2aa9f0f675e743d6a5ab6171ae9c8f4343 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ec4e83091f7f2ddf7e741677f9275ff6a3ab6a08..a4d722f01cecf2761ef9d455799c58ba168efa84 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0e384f395bb066306e435afa93f4af35ff6edf11..8d2284df17ed99f750f8d11b107f43a507a740db 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 9d1e2b803d3ab1e15e0030a5f14f9eda35fc0cf7..bedf016d2a64df764953a4bf062c94df85f12580 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 958db7d58eeed4195115cd628b25a252e1b66eb2..67ef7370bca47173a79c2784013ddc57da4f7608 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 030cc5787bfdb021691dbba3b9bacb9b3505b522..c9e5757121db3f94972349e2dcc38555c0e1d417 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5668bf4b4dbd9d5420166f5f5ffbc535268af432..5f6de14ffaafca555c62880e6f6374fadc6f9533 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -22,7 +22,7 @@ import { throttle } from 'lodash';
 import * as React from 'react';
 import './NavBar.css';
 
-interface Props extends React.HTMLProps<HTMLDivElement> {
+export interface NavBarProps {
   children?: React.ReactNode;
   className?: string;
   height: number;
@@ -35,10 +35,13 @@ interface State {
   left: number;
 }
 
-export default class NavBar extends React.PureComponent<Props, State> {
+export default class NavBar extends React.PureComponent<
+  NavBarProps & React.HTMLProps<HTMLDivElement>,
+  State
+> {
   throttledFollowHorizontalScroll: () => void;
 
-  constructor(props: Props) {
+  constructor(props: NavBarProps) {
     super(props);
     this.state = { left: 0 };
     this.throttledFollowHorizontalScroll = throttle(this.followHorizontalScroll, 10);
index 6b7bfe8632d32c133d802c2b483a95e59d592a7c..f43e1389f079646c21ff601ae9cb2495db246038 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index af79655648bc893718663c3b49339c1b9ee5ced1..0cc09e5abc6a5dee72a50f3356dee313653261fe 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0465f2f2337830d06704e0b50b39049804a97f36..1adae9f910260d9a91a8dc6b5f6f16601092746f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 67bf921935d2bfa694ec02d5f7230b2ef5a6b99f..27626765848ea5b60a0e6031226acf3fbed3ebca 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1785393fecd2c528e193fad09bca3dd51af7e923..8c2e4106b16a698c012643b471d6dc4c26c3f182 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 82b9604803f1aa0c80032e26b4bd0e67c08a1e47..8bd2dda1a3d06d13a916ca0e0015505b7e554077 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 69279b2c68c82c0d8c14e54c5d8bf4840a1aa972..91c661ffc976087bd25aa3925728df3b7cab68e7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2a08587f4e4d77c60c819a28339a256162cc7691..4403c162271aba5abe550ccd21b85ffcb069ad27 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index b76a79a602b629b81170e9f9e9e2089ac9bdc25b..190c5a3205af1300f6bd4bde30d43d55225cd8bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6355d5fae94b6fa8c72ed373203aa9edaaa8c6ab..baed94e98bcdfbd0292211bd8b6836251891f475 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index c01d263d4566584d3f9f878924e7cb29c4429a5e..5d3411078cff194a87f9854b94ac6dfd808d3c95 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6404ff6d0d9af1c92bfaa0129d56e9387b07c7e8..8a7bc268499e7c9a055b2e2df588511fc11d833c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 90c65e2b3c68d80a2ef826d84be3eb3ef5b6658a..2f020368cdbfafac6306d9ecb13fc686a1e76693 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 468b063f2bcdfaa787a87092d8301242bc94e2dc..d244490dcd969bb6905d1d2631796e3811c4f5a2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6cc7904f749764cbefcbfc9e3d00d865d9d0ad10..8f52a42066533fde48b2009754577de7b9f79dea 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index dc3453990f55f5832f367bd758b94080a80e3c61..8cd043086c2c7b3c38076f44dcdce2cdae44c216 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import MandatoryFieldMarker, { MandatoryFieldMarkerProps } from '../MandatoryFieldMarker';
index 1fd156d93eacf7c1e34d44352271525c1c3fa675..5104f1cfbadd228e3d47ed00b5ada14fd465c267 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import MandatoryFieldsExplanation, {
index 7f4e78e8164eab9aeb64b9ac81a23059979e8af2..1db05af50e0e0998e2bcc2784870fd6888f72a72 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -19,7 +19,7 @@
  */
 import { shallow } from 'enzyme';
 import * as React from 'react';
-import NavBar from '../NavBar';
+import NavBar, { NavBarProps } from '../NavBar';
 
 it('should render correctly', () => {
   const wrapper = shallowRender();
@@ -31,7 +31,7 @@ it('should render correctly with notif and not limited', () => {
   expect(wrapper).toMatchSnapshot();
 });
 
-function shallowRender(props: Partial<NavBar['props']> = {}) {
+function shallowRender(props: Partial<NavBarProps> = {}) {
   return shallow(
     <NavBar height={42} {...props}>
       <div className="my-navbar-content" />
index 25693412f315a2154212aed588334e0be118d2be..8b46a49efbc74cbfccb5bea3f23dc7c4709a95cc 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index f144f882a53ae16afa19c19882d01e6a0badc2b7..46594418d3a4fe4fdc245109b32f64796c002309 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 55293f59b4caa5e01eef5044e1d19c763b0c1263..f8f1540adfca49954a0c75a2f92270d30713ee38 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 43eb09c600b8beeb0648dfe0b040e38274182f83..7c3b8e3b005b29713cd07bc02c52e79499e49409 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 777c1004d7769607088772b0df5d7777af0fd0b7..c014d824b6f49b0568de936199cecc7025ce5f59 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -104,7 +104,6 @@ describe('PortalPopup', () => {
 
   it('should correctly compute the popup arrow positioning', () => {
     const wrapper = shallowRender({ arrowOffset: -2 });
-    const getPlacementSpy = jest.spyOn(wrapper.instance(), 'getPlacement');
 
     expect(
       wrapper.instance().adjustArrowPosition(PopupPlacement.BottomLeft, { leftFix: 10, topFix: 10 })
index 7c00bd43f23b84a02e96a2dd0336d48bcd9315c5..f7bb71b188c95550c971cdcb2cbea5969ce4c37a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2cb5a8ba78ac964c2034ade2f2902f2742e41017..01bb28f658f511c72e1a86fafaab1696bd59cfe0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 582d6633757ccc499219a39ca7b5a792a30daf81..6bc5a632fb132a1ff368eb9872be3f867833c8ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 .update-center-meta-data {
   margin: 16px 0;
   padding: 16px 16px 8px 16px;
index 568a7fba45440ec29b9070400350e271b1453e25..017527abcdeb89fa3920ec9c004a93d4932099df 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * 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 './MetaData.css';
 import MetaDataVersions from './MetaDataVersions';
index f9f2155179e7c0adb9c4ab0291dc52c4d30f6463..d91a1bd3bc6d71c719cd3e02706f9b9f13cf324c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import classNames from 'classnames';
 import * as React from 'react';
 import { AdvancedDownloadUrl, MetaDataVersionInformation } from './update-center-metadata';
index 59e3a2cf41b360c3464702a3df4dd9822e068533..f51e11e730af1e0629e8799c0844761d2f909cdc 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * 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 MetaDataVersion from './MetaDataVersion';
 import { MetaDataVersionInformation } from './update-center-metadata';
index 574abcb130f3d9c5ca79071d071c942d7047a87a..85c6ce0ac71db85404b72ccfd9da39f524e4ed81 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import { waitAndUpdate } from '../../../../helpers/testUtils';
index eb21373830ca81e13b72eec14399dbb4ae458641..f1e5b947224920275d282283062c286831c15f5a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import MetaDataVersion, { MetaDataVersionProps } from '../MetaDataVersion';
index 5a4fc20d4f1cd7c743e853f13e8d36e93ef0726b..0648c0fd59d32a93d131ddfc6a76ebf81380088b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { shallow } from 'enzyme';
 import * as React from 'react';
 import { click } from '../../../../helpers/testUtils';
index 0da8569994f381743b49805e97016ed4fc6e9701..52e8c660d1534032f112050b681f35bd59f45519 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { MetaDataInformation, MetaDataVersionInformation } from '../update-center-metadata';
 
 export function mockMetaDataVersionInformation(
index 00e1d969b40ed31640c68f1b3995e39aaffa7e69..a88b385c3b634820c91701ee9eead69af5067710 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 export interface MetaDataInformation {
   category?: string;
   isSonarSourceCommercial?: boolean;
index ca0a66661fb27869ce93d1ca816f7e841101969a..2a89db848b02c860cb423fe417dbfbd1213dc36c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 8ed5f4c53616106faad49ee0498c76749afd406c..3afbc40ae7ca97f08c0d02d3ad5217726859716f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 89c37ee6d661300fcb90009d379b7233d2d79898..8cb3f810f017b729489d0638d0169c30bfe66eab 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 1ce2eb35e53ef0671dac748ad9a2a2914b56e31b..4b29cdee1ba57bf2c64cb49daa6283c6d87e92d4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 432cbb1f250bc01aba2ff73ba84a7698609453f5..9e9df7cd5e340010bdf550901a7a420b5da7f459 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 require('whatwg-fetch');
 
 const content = document.createElement('div');
index 91a4f666fdd7824221445b3410c33ad07ad3008d..7d219c34a0f0e0678334c06ce096871208b2f02b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index ccc58d305b6a60a3376b881faa9dadc3231f30c4..ae80a29e093b6d88f2d7844c78a553b797edf18f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 688fca9904ca0f36503ff9fb1290970ff425c761..9482f6d64767d6a735a598fa0340d2763342e01c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index fa90439d195f5a13585ae3c5c022498dcf48c57b..abb391a2e21f7fa4d72b9007417fd114a9ee3e07 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 44d2dbe984a43c6419a4f33fb0f4549ab8ebfb91..8f7e927a867496c0d1f6fdb60395e2d6e7cc6147 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 3252baf524e8ac160feba14f03bdcd3aa3ac9ef0..523ac99b30b741b3353caea9ab2ad618d9beb0a5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
  */
 /* eslint-disable camelcase */
 import Initializer, { getMessages } from '../init';
-import { hasMessage, translate, translateWithParameters } from '../l10n';
+import {
+  getLocalizedCategoryMetricName,
+  getLocalizedMetricDomain,
+  getLocalizedMetricName,
+  getShortMonthName,
+  getShortWeekDayName,
+  getWeekDayName,
+  hasMessage,
+  translate,
+  translateWithParameters,
+} from '../l10n';
 
 const originalMessages = getMessages();
 const MSG = 'my_message';
@@ -96,3 +106,78 @@ describe('hasMessage', () => {
     expect(hasMessage('foo', 'bar')).toBe(false);
   });
 });
+
+describe('getLocalizedMetricName', () => {
+  const metric = { key: 'new_code', name: 'new_code_metric_name' };
+
+  it('should return the metric name translation', () => {
+    Initializer.setMessages({ 'metric.new_code.name': 'metric.new_code.name_t' });
+    expect(getLocalizedMetricName(metric)).toBe('metric.new_code.name_t');
+  });
+
+  it('should return the metric short name', () => {
+    Initializer.setMessages({ 'metric.new_code.short_name': 'metric.new_code.short_name_t' });
+    expect(getLocalizedMetricName(metric, true)).toBe('metric.new_code.short_name_t');
+  });
+
+  it('should fallback on name if short name is absent', () => {
+    Initializer.setMessages({ 'metric.new_code.name': 'metric.new_code.name_t' });
+    expect(getLocalizedMetricName(metric, true)).toBe('metric.new_code.name_t');
+  });
+
+  it('should fallback on metric name if translation is absent', () => {
+    expect(getLocalizedMetricName(metric)).toBe('new_code_metric_name');
+  });
+
+  it('should fallback on metric key if nothing else is available', () => {
+    expect(getLocalizedMetricName({ key: 'new_code' })).toBe('new_code');
+  });
+});
+
+describe('getLocalizedCategoryMetricName', () => {
+  it('should return metric category name translation', () => {
+    Initializer.setMessages({
+      'metric.new_code.extra_short_name': 'metric.new_code.extra_short_name_t',
+    });
+    expect(getLocalizedCategoryMetricName({ key: 'new_code' })).toBe(
+      'metric.new_code.extra_short_name_t'
+    );
+  });
+
+  it('should fallback on metric name if extra_short_name is absent', () => {
+    Initializer.setMessages({ 'metric.new_code.name': 'metric.new_code.name_t' });
+    expect(getLocalizedCategoryMetricName({ key: 'new_code' })).toBe('metric.new_code.name_t');
+  });
+});
+
+describe('getLocalizedMetricDomain', () => {
+  it('should return metric domain name translation', () => {
+    Initializer.setMessages({ 'metric_domain.domain': 'metric_domain.domain_t' });
+    expect(getLocalizedMetricDomain('domain')).toBe('metric_domain.domain_t');
+  });
+
+  it('should fallback on metric domain name', () => {
+    expect(getLocalizedMetricDomain('domain')).toBe('domain');
+  });
+});
+
+describe('getShortMonthName', () => {
+  it('should properly translation months', () => {
+    Initializer.setMessages({ Jan: 'Jan_t' });
+    expect(getShortMonthName(0)).toBe('Jan_t');
+  });
+});
+
+describe('getWeekDayName', () => {
+  it('should properly translation weekday', () => {
+    Initializer.setMessages({ Sunday: 'Sunday_t' });
+    expect(getWeekDayName(0)).toBe('Sunday_t');
+  });
+});
+
+describe('getShortWeekDayName', () => {
+  it('should properly translation short weekday', () => {
+    Initializer.setMessages({ Sun: 'Sun_t' });
+    expect(getShortWeekDayName(0)).toBe('Sun_t');
+  });
+});
index 346f0dda3be504c561915b06da818a087192fb86..f9cb4ab04ce127ab95186c057598cb0fd52a0b0f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
diff --git a/server/sonar-ui-common/helpers/__tests__/pages-test.ts b/server/sonar-ui-common/helpers/__tests__/pages-test.ts
new file mode 100644 (file)
index 0000000..9f4ba96
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2021 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 {
+  addNoFooterPageClass,
+  addSideBarClass,
+  addWhitePageClass,
+  removeNoFooterPageClass,
+  removeSideBarClass,
+  removeWhitePageClass,
+} from '../pages';
+
+describe('class adders', () => {
+  it.each([
+    [addSideBarClass, 'sidebar-page'],
+    [addNoFooterPageClass, 'no-footer-page'],
+    [addWhitePageClass, 'white-page'],
+  ])('%s should add the class', (fct, cls) => {
+    const toggle = jest.spyOn(document.body.classList, 'toggle');
+    fct();
+    expect(toggle).toBeCalledWith(cls, true);
+  });
+});
+
+describe('class removers', () => {
+  it.each([
+    [removeSideBarClass, 'sidebar-page'],
+    [removeNoFooterPageClass, 'no-footer-page'],
+    [removeWhitePageClass, 'white-page'],
+  ])('%s should add the class', (fct, cls) => {
+    const toggle = jest.spyOn(document.body.classList, 'toggle');
+    fct();
+    expect(toggle).toBeCalledWith(cls, false);
+  });
+});
index 997d23e055f26e7461e02577310175d771b3387c..12f32ab7d0c6f9bdcdc2d9236221bd571000562d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-import { collapsedDirFromPath, cutLongWords, fileFromPath } from '../path';
+import {
+  collapsedDirFromPath,
+  collapsePath,
+  cutLongWords,
+  fileFromPath,
+  limitComponentName,
+  splitPath,
+} from '../path';
 
 describe('#collapsedDirFromPath()', () => {
   it('should return null when pass null', () => {
@@ -78,3 +85,44 @@ describe('#cutLongWords', () => {
     expect(cutLongWords('This is a test')).toBe('This is a test');
   });
 });
+
+describe('collapsePath', () => {
+  it('should fail fast if path is not a string', () => {
+    expect(collapsePath({} as string)).toBe('');
+  });
+
+  it('should not collapse short path', () => {
+    const path = 'my/path';
+    expect(collapsePath(path)).toBe(path);
+  });
+
+  it('should collapse path longer than the limit', () => {
+    const path = 'my/long/path/very/long/path';
+    expect(collapsePath(path, 10)).toBe('my/.../very/long/path');
+    expect(collapsePath(path, 5)).toBe('my/.../long/path');
+    expect(collapsePath(path, 2)).toBe('my/.../path');
+  });
+});
+
+describe('splitPath', () => {
+  it('should split path properly', () => {
+    expect(splitPath('my/super/path')).toEqual({ head: 'my/super', tail: 'path' });
+    expect(splitPath('my/super/very/long/path')).toEqual({
+      head: 'my/super/very/long',
+      tail: 'path',
+    });
+  });
+});
+
+describe('limitComponentName', () => {
+  const name = 'my/super/name';
+
+  it('should fail fast if component name is not a string', () => {
+    expect(limitComponentName({} as string)).toBe('');
+  });
+
+  it('should limiit component name longer than the limit', () => {
+    expect(limitComponentName(name)).toBe(name);
+    expect(limitComponentName(name, 10)).toBe('my/super/n...');
+  });
+});
index 1adea91e9699ebdbfc270a814b6dd22e00ade4ec..4a6a671005c3f78ee892e95e55262d848cff32aa 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
diff --git a/server/sonar-ui-common/helpers/__tests__/ratings-test.ts b/server/sonar-ui-common/helpers/__tests__/ratings-test.ts
new file mode 100644 (file)
index 0000000..619ef1c
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2021 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 {
+  getCoverageRatingAverageValue,
+  getCoverageRatingLabel,
+  getDuplicationsRatingAverageValue,
+  getDuplicationsRatingLabel,
+  getSizeRatingAverageValue,
+  getSizeRatingLabel,
+} from '../ratings';
+
+describe('getCoverageRatingLabel', () => {
+  it('should fail', () => {
+    expect(() => {
+      getCoverageRatingLabel(-1);
+    }).toThrow();
+  });
+  it.each([
+    [1, '≥ 80%'],
+    [2, '70% - 80%'],
+    [3, '50% - 70%'],
+    [4, '30% - 50%'],
+    [5, '< 30%'],
+  ])('should return the correct label for %s', (rating, label) => {
+    expect(getCoverageRatingLabel(rating)).toBe(label);
+  });
+});
+
+describe('getCoverageRatingAverageValue', () => {
+  it.each([
+    [1, 90],
+    [2, 75],
+    [3, 60],
+    [4, 40],
+    [5, 15],
+  ])('should return the correct value', (rating, value) => {
+    expect(getCoverageRatingAverageValue(rating)).toBe(value);
+  });
+});
+
+describe('getDuplicationsRatingLabel', () => {
+  it('should fail', () => {
+    expect(() => {
+      getCoverageRatingLabel(-1);
+    }).toThrow();
+  });
+  it.each([
+    [1, '< 3%'],
+    [2, '3% - 5%'],
+    [3, '5% - 10%'],
+    [4, '10% - 20%'],
+    [5, '> 20%'],
+  ])('should return the correct label for %s', (rating, label) => {
+    expect(getDuplicationsRatingLabel(rating)).toBe(label);
+  });
+});
+
+describe('getDuplicationsRatingAverageValue', () => {
+  it.each([
+    [1, 1.5],
+    [2, 4],
+    [3, 7.5],
+    [4, 15],
+    [5, 30],
+  ])('should return the correct value', (rating, value) => {
+    expect(getDuplicationsRatingAverageValue(rating)).toBe(value);
+  });
+});
+
+describe('getSizeRatingLabel', () => {
+  it('should fail', () => {
+    expect(() => {
+      getCoverageRatingLabel(-1);
+    }).toThrow();
+  });
+  it.each([
+    [1, '< 1k'],
+    [2, '1k - 10k'],
+    [3, '10k - 100k'],
+    [4, '100k - 500k'],
+    [5, '> 500k'],
+  ])('should return the correct label for %s', (rating, label) => {
+    expect(getSizeRatingLabel(rating)).toBe(label);
+  });
+});
+
+describe('getSizeRatingAverageValue', () => {
+  it.each([
+    [1, 500],
+    [2, 5000],
+    [3, 50000],
+    [4, 250000],
+    [5, 750000],
+  ])('should return the correct value', (rating, value) => {
+    expect(getSizeRatingAverageValue(rating)).toBe(value);
+  });
+});
index aee577007841d64699fcc9dea4714be735ec065f..a6ffa480d2d69912d189d0baa291ffdb370b77c1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import handleRequiredAuthentication from '../handleRequiredAuthentication';
 import {
   checkStatus,
index ef9f3802d2ab41746f9311da88d9a5d214d4b13a..43ec56641787be2df112444e85a86ea933bca210 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 2a9da6cd6a9b33016ed84aca68a804ad3d3cec73..00711cf1c1d9c95c3382d534bedc829d4f7298bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 171b066ae667c3b131361c36b83a3bffe511b14f..1eb75452a8dcc92e4103c93236b1c943c0c3417a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0d48f016a189ec87ff587b5c42eef736dd08173f..839586b4e207e7b56708ec2d34492a95092e1ccc 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 42da1d8c98c236c4eab0edcd6d785ca2aaa6b703..6c060726711bd22ad9eda21fddcd8edb281095a6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cd841d4224b8a4ee8fcbf303644c31ca7825d965..d162d018f3ce39e045f9c47870b0388815fbe7c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0661d62a634a8474743de26c113461a687da667d..daa25a7b60323e096f18cf06b5390ec594bcf59f 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5daecc37c97c6188db0d9fb72c9f00961eef497d..f7162fd06e473f642682b5783662449f1260e7b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 116102b7287c4a4d8d2503fff721dff885a099f5..061cde8c09a92268cbfcb5f31c23fa1a0366f037 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 42a894769d24010766de9f2967b175486a592c1a..7d2dceaccfd769503876d7c8d6200fb7e7d45854 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5e606938941daa52d428852ea7afa06797b6dc52..2dad00a7fc0dd03718e4a81a263a9a9b2f67c0ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index aa8c5a82f84f648cfb496435a69c4e160165f21a..818726ca8b1ea14f92ae30d6ec470322f2faeead 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index de4b3b2269e83345c336d273ad1c4b4497f5f76a..53715b4073169227c1ccf78126090ee1ec0966f5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 36ba560a289cd508cff6d03c652c74518b6e7517..40c686e43fa61e1a0ce4b050d5ccc9d8f11e8ac5 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index dbd7b9a6285e3560687ee2dd37e4fc91ad63d758..2a124bf1a63c0ca0f7ef5f8a7ba53ce23aff3747 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index e1f4c6d0480cd07198394ac538f160fa0955e509..479b84dda378d5b1ed6bf586a77d995355e67a21 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 29b942dbe3c66134d6146657be28031533bdf804..6470ce2c0bf7c1760598a3c576c5d9de81444489 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 0ed88c610f4be469404fc7b6234dff9bc44a1f6d..6cf106ba815a9f1c967a8ae123287c8f3e99f89b 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 6f08703ec4198a3220fc4965fb592b0ab108b6b5..49473f88cea97050c284152a27d37c009da43033 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 const SCROLLING_DURATION = 100;
 const SCROLLING_INTERVAL = 10;
 const SCROLLING_STEPS = SCROLLING_DURATION / SCROLLING_INTERVAL;
index dd4382c67955edb83ff8eeea861ea640ed0fb55a..c12152d33c2c78b3480ebb9d37efbcd72a8d6507 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 5a50eb49c5ccad37c62978118058b257ff9f03f4..c2a16726b878b81c046370cf4b87345e60d51a95 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 4109a7f173d4153ab1b0e7a167562e6ecbe9f3fb..391bcdb334ebd276652c6902e17acb1c0a436415 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index cf7767eb9e932dfe07fdaa3fec13ef1716fb4e9e..9ca54c122a0d7f23badd046e695eab5ad8be4af8 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
@@ -17,7 +17,6 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 import { ReactWrapper, ShallowWrapper } from 'enzyme';
 
 export function mockEvent(overrides = {}) {
index 09b786ef8078f23b5817b8a49ae40cdcc2e509e6..85ca9976b09f9a23d5738985c849734155caec27 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index 599d8fe531e1ea9ed1bfedbb60be0def55bcdbdc..296091d7b3ca773b123d54ed80f2782e8949e3f1 100644 (file)
@@ -1,6 +1,24 @@
 /*
- * Sonar UI Common
- * Copyright (C) 2019-2020 SonarSource SA
+ * SonarQube
+ * Copyright (C) 2009-2021 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.
+ */
+/*
+ * SonarQube
  * mailto:info AT sonarsource DOT com
  *
  * This program is free software; you can redistribute it and/or
index d2d37c6d3de70a9629a7597c63dd62e2e8ae562e..0f4b9b896bac0d40b1d0f994621fcb3631d7146c 100644 (file)
     "test": "jest",
     "format": "prettier --write --list-different \"{,!(build|node_modules)/**/}*.{ts,tsx,css}\"",
     "format-check": "prettier --list-different \"{,!(build|node_modules)/**/}*.{ts,tsx,css}\"",
-    "license-check": "node scripts/license-check",
     "lint": "eslint --ext ts,tsx --quiet \"{,!(build|node_modules)/**/}*.{ts,tsx}\"",
     "lint-report": "eslint --ext ts,tsx -f json -o build/eslint-report.json \"{,!(build|node_modules)/**/}*.{ts,tsx}\"",
     "ts-check": "tsc --noEmit",
-    "validate": "yarn ts-check && yarn license-check && yarn lint && yarn format-check && yarn test",
-    "validate-ci": "yarn lint-report && yarn license-check && yarn format-check && yarn test --coverage"
+    "validate": "yarn ts-check && yarn lint && yarn format-check && yarn test",
+    "validate-ci": "yarn lint-report && yarn test --coverage",
+    "check-ci": "yarn ts-check && yarn format-check"
   },
   "engines": {
     "node": ">=10.15.3",
diff --git a/server/sonar-ui-common/scripts/license-check.js b/server/sonar-ui-common/scripts/license-check.js
deleted file mode 100644 (file)
index cd4b022..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-const fs = require('fs');
-const diff = require('diff');
-const globby = require('globby');
-
-const GLOBS = ['**/*.ts', '**/*.tsx', '!node_modules/**/*', '!build/**/*'];
-
-let header;
-
-return readFile('./HEADER')
-  .then(h => {
-    header = h;
-  })
-  .then(() => globby(GLOBS))
-  .then(readFilesFromPaths)
-  .then(checkFiles)
-  .then(errors => {
-    if (errors) {
-      console.error(errors, 'files have an invalid license header');
-      process.exit(1);
-    } else {
-      console.log('✓ All files have valid license headers');
-    }
-  })
-  .catch(e => {
-    console.error(e);
-    process.exit(1);
-  });
-
-function checkFiles(files) {
-  return files.reduce((errors, { path, text }) => {
-    if (text.slice(0, header.length) !== header) {
-      console.error('❌ ', path);
-      console.error(
-        diff.createPatch(path, header + '\n', text.slice(0, header.length) + '\n', '', '')
-      );
-      return errors + 1;
-    }
-    return errors;
-  }, 0);
-}
-
-function readFilesFromPaths(paths) {
-  return Promise.all(paths.map(path => readFile(path).then(text => ({ path, text }))));
-}
-
-function readFile(path) {
-  return new Promise((resolve, reject) => {
-    fs.readFile(path, { encoding: 'utf-8' }, (err, text) => {
-      if (err) {
-        reject(err);
-      } else {
-        resolve(text);
-      }
-    });
-  });
-}
index 91834056e986c4f3fcc6a02e4083bac4b80cd6d2..5d6424e5b26f7687cf99649440c9a8322e9d3907 100644 (file)
@@ -18,6 +18,5 @@
     "rootDir": "./",
     "baseUrl": "."
   },
-  "include": ["components", "helpers", "types.d.ts"],
-  "exclude": ["**/*-test.*"]
+  "include": ["components", "helpers", "types.d.ts"]
 }
index 7719430179623dd7c39e28b17e3ea0e9fe932ddb..301baf2abed9935b03a8e032ce2fe3e68ecf39be 100644 (file)
@@ -14,6 +14,10 @@ apply plugin: 'com.github.node-gradle.node'
 
 def webappDir = "${buildDir}/webapp"
 
+yarn.configure {
+  dependsOn tasks.getByPath(':server:sonar-ui-common:yarn_run')
+}
+
 yarn_run {
   ['config', 'public', 'scripts', 'src', '../sonar-docs/src'].each {
     inputs.dir(it).withPathSensitivity(PathSensitivity.RELATIVE)
index 1a3180f06a4093e376a7612bd4bf2e34a6f23e4f..6e69a85a9e6a6cc673e64f69bdaec13f501eac19 100644 (file)
@@ -38,7 +38,7 @@
     "rehype-slug": "3.0.0",
     "remark-custom-blocks": "2.5.1",
     "remark-rehype": "6.0.0",
-    "sonar-ui-common": "1.0.33",
+    "sonar-ui-common": "../sonar-ui-common/build/dist",
     "unist-util-visit": "2.0.2",
     "valid-url": "1.0.9",
     "whatwg-fetch": "3.0.0"
index a2b8dbf4086ec18bf3ed2349f86f4a4e15e98c58..6f5e5ee0e229c5b9628715a601d4fed23737713d 100644 (file)
@@ -11082,10 +11082,8 @@ sockjs@^0.3.21:
     uuid "^3.4.0"
     websocket-driver "^0.7.4"
 
-sonar-ui-common@1.0.33:
+sonar-ui-common@../sonar-ui-common/build/dist:
   version "1.0.33"
-  resolved "https://repox.jfrog.io/repox/api/npm/npm/sonar-ui-common/-/sonar-ui-common-1.0.33.tgz#8eb6f40b1ab81b802a8eb92fd549598432e9dc26"
-  integrity sha1-jrb0Cxq4G4Aqjrkv1UlZhDLp3CY=
   dependencies:
     "@types/react-select" "1.2.6"
     classnames "2.2.6"
index e1812401f482ad14fc265ac969a835034683cf9d..0ae1e82d5ee097d8616c917a7c0a9cc31ca889e4 100644 (file)
@@ -38,6 +38,7 @@ include 'server:sonar-webserver-es'
 include 'server:sonar-webserver-webapi'
 include 'server:sonar-webserver-ws'
 include 'server:sonar-alm-client'
+include 'server:sonar-ui-common'
 
 include 'sonar-application'
 include 'sonar-check-api'