From 50f7731bdfb593db17d3ef7654145912986f42bd Mon Sep 17 00:00:00 2001 From: Philippe Perrin Date: Mon, 20 Apr 2020 09:53:42 +0200 Subject: [PATCH] SONAR-13102 Use radio component consistently across the application --- .../src/main/js/app/styles/init/icons.css | 38 ---- .../create/project/ManualProjectCreate.css | 17 -- .../create/project/ManualProjectCreate.tsx | 15 -- .../components/BranchAnalysisList.tsx | 9 +- .../BranchAnalysisList-test.tsx.snap | 24 +- .../ChangeDefaultVisibilityForm.tsx | 49 ++-- .../ChangeDefaultVisibilityForm-test.tsx | 12 +- .../ChangeDefaultVisibilityForm-test.tsx.snap | 213 +++++++----------- .../apps/tutorials/components/TokenStep.tsx | 36 ++- .../__snapshots__/TokenStep-test.tsx.snap | 78 +++---- .../components/common/VisibilitySelector.tsx | 88 ++------ .../__tests__/VisibilitySelector-test.tsx | 36 ++- .../VisibilitySelector-test.tsx.snap | 170 +++++++------- 13 files changed, 306 insertions(+), 479 deletions(-) diff --git a/server/sonar-web/src/main/js/app/styles/init/icons.css b/server/sonar-web/src/main/js/app/styles/init/icons.css index 7a04513fabd..b20ad3d96d0 100644 --- a/server/sonar-web/src/main/js/app/styles/init/icons.css +++ b/server/sonar-web/src/main/js/app/styles/init/icons.css @@ -47,44 +47,6 @@ a[class*=' icon-'] { color: var(--darkBlue); } -/* - * Radio - */ -.icon-radio { - position: relative; - display: inline-block; - vertical-align: top; - width: 14px; - height: 14px; - margin: 1px; - border: 1px solid var(--gray80); - border-radius: 12px; - box-sizing: border-box; - transition: border-color 0.3s ease; -} - -.icon-radio:after { - position: absolute; - top: 2px; - left: 2px; - display: block; - width: 8px; - height: 8px; - border-radius: 8px; - background-color: var(--darkBlue); - content: ''; - opacity: 0; - transition: opacity 0.3s ease; -} - -a:not(.disabled):hover > .icon-radio { - border-color: var(--blue); -} - -.icon-radio.is-checked:after { - opacity: 1; -} - /* * Common */ diff --git a/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.css b/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.css index 5e078878994..1cc4d2e6d3d 100644 --- a/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.css +++ b/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.css @@ -21,23 +21,6 @@ max-width: 700px; } -.manual-project-create .visibility-select-option { - margin-left: 0 !important; - margin-bottom: var(--gridSize); - display: flex; - align-items: center; - font-size: var(--mediumFontSize); -} - -.manual-project-create .visibility-details { - display: block; - margin: var(--gridSize) 0; -} - -.manual-project-create .visibility-select-wrapper { - padding: var(--gridSize) 0 calc(2 * var(--gridSize)) 0; -} - .manual-project-create .button { margin-top: var(--gridSize); } diff --git a/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.tsx b/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.tsx index 3d983abd485..b14cf5d70da 100644 --- a/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.tsx @@ -25,7 +25,6 @@ import ValidationInput from 'sonar-ui-common/components/controls/ValidationInput import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; import { translate } from 'sonar-ui-common/helpers/l10n'; import { createProject, doesComponentExists } from '../../../api/components'; -import VisibilitySelector from '../../../components/common/VisibilitySelector'; import { isSonarCloud } from '../../../helpers/system'; import UpgradeOrganizationBox from '../components/UpgradeOrganizationBox'; import CreateProjectPageHeader from './CreateProjectPageHeader'; @@ -324,20 +323,6 @@ export default class ManualProjectCreate extends React.PureComponent - {isSonarCloud() && selectedOrganization && ( -
- -
- )} - {translate('set_up')} diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx index f90565f4dbd..3d5388bdafb 100644 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx +++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx @@ -21,6 +21,7 @@ import * as classNames from 'classnames'; import { subDays } from 'date-fns'; import { throttle } from 'lodash'; import * as React from 'react'; +import Radio from 'sonar-ui-common/components/controls/Radio'; import Select from 'sonar-ui-common/components/controls/Select'; import Tooltip from 'sonar-ui-common/components/controls/Tooltip'; import DateFormatter from 'sonar-ui-common/components/intl/DateFormatter'; @@ -251,10 +252,10 @@ export default class BranchAnalysisList extends React.PureComponent - {}} + value="" /> diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchAnalysisList-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchAnalysisList-test.tsx.snap index 46a6219e94d..6bdc18ba481 100644 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchAnalysisList-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchAnalysisList-test.tsx.snap @@ -76,8 +76,10 @@ exports[`should render correctly 1`] = `
-
@@ -130,8 +132,10 @@ exports[`should render correctly 1`] = `
-
@@ -231,8 +235,10 @@ exports[`should render correctly 1`] = `
-
@@ -255,8 +261,10 @@ exports[`should render correctly 1`] = `
-
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx index 0f495b6410d..f7d4c2e89c6 100644 --- a/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx +++ b/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx @@ -17,10 +17,10 @@ * 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 React from 'react'; import { Button, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; import Modal from 'sonar-ui-common/components/controls/Modal'; +import Radio from 'sonar-ui-common/components/controls/Radio'; import { Alert } from 'sonar-ui-common/components/ui/Alert'; import { translate } from 'sonar-ui-common/helpers/l10n'; @@ -45,10 +45,7 @@ export default class ChangeDefaultVisibilityForm extends React.PureComponent) => { - event.preventDefault(); - event.currentTarget.blur(); - const visibility = event.currentTarget.dataset.visibility as T.Visibility; + handleVisibilityChange = (visibility: T.Visibility) => { this.setState({ visibility }); }; @@ -63,34 +60,20 @@ export default class ChangeDefaultVisibilityForm extends React.PureComponent {['public', 'private'].map(visibility => (
-

- {visibility === 'private' && !organization.canUpdateProjectsVisibilityToPrivate ? ( - - - {translate('visibility', visibility)} - - ) : ( - - - {translate('visibility', visibility)} - - )} -

-

- {translate('visibility', visibility, 'description.short')} -

+ +
+ {translate('visibility', visibility)} +

+ {translate('visibility', visibility, 'description.short')} +

+
+
))} diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/ChangeDefaultVisibilityForm-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/ChangeDefaultVisibilityForm-test.tsx index f7f334cf2aa..d83e82d95c4 100644 --- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/ChangeDefaultVisibilityForm-test.tsx +++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/ChangeDefaultVisibilityForm-test.tsx @@ -19,6 +19,7 @@ */ import { shallow } from 'enzyme'; import * as React from 'react'; +import Radio from 'sonar-ui-common/components/controls/Radio'; import { click } from 'sonar-ui-common/helpers/testUtils'; import ChangeDefaultVisibilityForm from '../ChangeDefaultVisibilityForm'; @@ -49,12 +50,11 @@ it('changes visibility', () => { const wrapper = shallowRender({ onConfirm }); expect(wrapper).toMatchSnapshot(); - click(wrapper.find('a[data-visibility="private"]'), { - currentTarget: { - blur() {}, - dataset: { visibility: 'private' } - } - }); + wrapper + .find(Radio) + .first() + .props() + .onCheck('private'); expect(wrapper).toMatchSnapshot(); click(wrapper.find('.js-confirm')); diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/__snapshots__/ChangeDefaultVisibilityForm-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/__snapshots__/ChangeDefaultVisibilityForm-test.tsx.snap index a80e794b95a..756189b1ca5 100644 --- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/__snapshots__/ChangeDefaultVisibilityForm-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/__snapshots__/ChangeDefaultVisibilityForm-test.tsx.snap @@ -19,57 +19,41 @@ exports[`changes visibility 1`] = ` className="big-spacer-bottom" key="public" > -

- - - visibility.public - -

-

- visibility.public.description.short -

+
+ visibility.public +

+ visibility.public.description.short +

+
+
-

- - - visibility.private - -

-

- visibility.private.description.short -

+
+ visibility.private +

+ visibility.private.description.short +

+
+
-

- - - visibility.public - -

-

- visibility.public.description.short -

+
+ visibility.public +

+ visibility.public.description.short +

+
+
-

- - - visibility.private - -

-

- visibility.private.description.short -

+
+ visibility.private +

+ visibility.private.description.short +

+
+
-

- - - visibility.public - -

-

- visibility.public.description.short -

+
+ visibility.public +

+ visibility.public.description.short +

+
+
-

- - - visibility.private - -

-

- visibility.private.description.short -

+
+ visibility.private +

+ visibility.private.description.short +

+
+