aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
diff options
context:
space:
mode:
authorStas Vilchik <stas.vilchik@sonarsource.com>2018-05-09 09:17:16 +0200
committerSonarTech <sonartech@sonarsource.com>2018-05-09 20:20:46 +0200
commit09b3d167fa8f399e18a37d56e7c8cbb61f68f97f (patch)
tree415072b29720bdd0c5293a898eb4ed10b807859e /server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
parent302775229e9cc6debd58804446cb98c2ea563bd4 (diff)
downloadsonarqube-09b3d167fa8f399e18a37d56e7c8cbb61f68f97f.tar.gz
sonarqube-09b3d167fa8f399e18a37d56e7c8cbb61f68f97f.zip
SONAR-10664 Improve dropdown UI/UX consistency (#217)
Diffstat (limited to 'server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx')
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx31
1 files changed, 10 insertions, 21 deletions
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
index 16e9f0d6f65..60d51aae6bd 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
@@ -31,10 +31,11 @@ import DocTooltip from '../../../components/docs/DocTooltip';
import { translate } from '../../../helpers/l10n';
import IssueTypeIcon from '../../../components/ui/IssueTypeIcon';
import SeverityHelper from '../../../components/shared/SeverityHelper';
-import BubblePopupHelper from '../../../components/common/BubblePopupHelper';
+import Dropdown from '../../../components/controls/Dropdown';
import TagsList from '../../../components/tags/TagsList';
import DateFormatter from '../../../components/intl/DateFormatter';
import { Button } from '../../../components/ui/buttons';
+import { PopupPlacement } from '../../../components/ui/popups';
interface Props {
canWrite: boolean | undefined;
@@ -46,19 +47,7 @@ interface Props {
ruleDetails: RuleDetails;
}
-interface State {
- tagsPopup: boolean;
-}
-
-export default class RuleDetailsMeta extends React.PureComponent<Props, State> {
- state: State = { tagsPopup: false };
-
- handleTagsClick = () => {
- this.setState(state => ({ tagsPopup: !state.tagsPopup }));
- };
-
- handleTagsPopupToggle = (show: boolean) => this.setState({ tagsPopup: show });
-
+export default class RuleDetailsMeta extends React.PureComponent<Props> {
renderType = () => {
const { ruleDetails } = this.props;
return (
@@ -106,9 +95,10 @@ export default class RuleDetailsMeta extends React.PureComponent<Props, State> {
return (
<li className="coding-rules-detail-property" data-meta="tags">
{this.props.canWrite ? (
- <BubblePopupHelper
- isOpen={this.state.tagsPopup}
- popup={
+ <Dropdown
+ closeOnClick={false}
+ closeOnClickOutside={true}
+ overlay={
<RuleDetailsTagsPopup
organization={this.props.organization}
setTags={this.props.onTagsChange}
@@ -116,15 +106,14 @@ export default class RuleDetailsMeta extends React.PureComponent<Props, State> {
tags={allTags}
/>
}
- position="bottomleft"
- togglePopup={this.handleTagsPopupToggle}>
- <Button className="button-link" onClick={this.handleTagsClick}>
+ overlayPlacement={PopupPlacement.BottomLeft}>
+ <Button className="button-link">
<TagsList
allowUpdate={canWrite}
tags={allTags.length > 0 ? allTags : [translate('coding_rules.no_tags')]}
/>
</Button>
- </BubblePopupHelper>
+ </Dropdown>
) : (
<TagsList
allowUpdate={canWrite}