diff --git a/scm-ui-components/packages/ui-components/src/Help.js b/scm-ui-components/packages/ui-components/src/Help.js index 965d16f145..047f79244f 100644 --- a/scm-ui-components/packages/ui-components/src/Help.js +++ b/scm-ui-components/packages/ui-components/src/Help.js @@ -1,39 +1,33 @@ //@flow import React from "react"; import injectSheet from "react-jss"; -import classNames from "classnames"; +import Tooltip from './Tooltip'; +import HelpIcon from './HelpIcon'; const styles = { - img: { - display: "block" - }, - q: { - float: "left", - paddingLeft: "3px", - float: "right" + tooltip: { + display: "inline-block", + paddingLeft: "3px" } }; type Props = { message: string, classes: any -}; +} class Help extends React.Component { + render() { const { message, classes } = this.props; - const multiline = message.length > 60 ? "is-tooltip-multiline" : ""; return ( -
- -
+ + + ); } + } export default injectSheet(styles)(Help); + diff --git a/scm-ui-components/packages/ui-components/src/HelpIcon.js b/scm-ui-components/packages/ui-components/src/HelpIcon.js new file mode 100644 index 0000000000..fba8ead422 --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/HelpIcon.js @@ -0,0 +1,14 @@ +//@flow +import React from "react"; +import classNames from "classnames"; + +type Props = { +}; + +class HelpIcon extends React.Component { + render() { + return + } +} + +export default HelpIcon; diff --git a/scm-ui-components/packages/ui-components/src/LabelWithHelpIcon.js b/scm-ui-components/packages/ui-components/src/LabelWithHelpIcon.js deleted file mode 100644 index b5d049e68d..0000000000 --- a/scm-ui-components/packages/ui-components/src/LabelWithHelpIcon.js +++ /dev/null @@ -1,46 +0,0 @@ -//@flow -import React from "react"; -import { Help } from "./index"; - -type Props = { - label: string, - helpText?: string -}; - -class LabelWithHelpIcon extends React.Component { - renderLabel = () => { - const label = this.props.label; - if (label) { - return ; - } - return ""; - }; - - renderHelp = () => { - const helpText = this.props.helpText; - if (helpText) { - return ( -
- -
- ); - } else return null; - }; - - renderLabelWithHelpIcon = () => { - if (this.props.label) { - return ( -
-
{this.renderLabel()}
- {this.renderHelp()} -
- ); - } else return null; - }; - - render() { - return this.renderLabelWithHelpIcon(); - } -} - -export default LabelWithHelpIcon; diff --git a/scm-ui-components/packages/ui-components/src/Tooltip.js b/scm-ui-components/packages/ui-components/src/Tooltip.js new file mode 100644 index 0000000000..d935b323c7 --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/Tooltip.js @@ -0,0 +1,26 @@ +//@flow +import * as React from "react"; +import classNames from "classnames"; + +type Props = { + message: string, + className: string, + children: React.Node +}; + +class Tooltip extends React.Component { + render() { + const { className, message, children } = this.props; + const multiline = message.length > 60 ? "is-tooltip-multiline" : ""; + return ( +
+ {children} +
+ ); + } +} + +export default Tooltip; diff --git a/scm-ui-components/packages/ui-components/src/forms/Checkbox.js b/scm-ui-components/packages/ui-components/src/forms/Checkbox.js index 7db35958d5..93cd28c28f 100644 --- a/scm-ui-components/packages/ui-components/src/forms/Checkbox.js +++ b/scm-ui-components/packages/ui-components/src/forms/Checkbox.js @@ -10,7 +10,9 @@ type Props = { disabled?: boolean, helpText?: string }; + class Checkbox extends React.Component { + onCheckboxChange = (event: SyntheticInputEvent) => { if (this.props.onChange) { this.props.onChange(event.target.checked, this.props.name); @@ -20,12 +22,8 @@ class Checkbox extends React.Component { renderHelp = () => { const helpText = this.props.helpText; if (helpText) { - return ( -
- -
- ); - } else return null; + return ; + } }; render() { @@ -39,10 +37,11 @@ class Checkbox extends React.Component { onChange={this.onCheckboxChange} disabled={this.props.disabled} /> + {" "} {this.props.label} + {this.renderHelp()} - {this.renderHelp()} ); } diff --git a/scm-ui-components/packages/ui-components/src/forms/InputField.js b/scm-ui-components/packages/ui-components/src/forms/InputField.js index 32c419f6c5..52ff9a369b 100644 --- a/scm-ui-components/packages/ui-components/src/forms/InputField.js +++ b/scm-ui-components/packages/ui-components/src/forms/InputField.js @@ -1,7 +1,7 @@ //@flow import React from "react"; import classNames from "classnames"; -import { LabelWithHelpIcon } from "../index"; +import LabelWithHelpIcon from "./LabelWithHelpIcon"; type Props = { label?: string, diff --git a/scm-ui-components/packages/ui-components/src/forms/LabelWithHelpIcon.js b/scm-ui-components/packages/ui-components/src/forms/LabelWithHelpIcon.js new file mode 100644 index 0000000000..8a917828ec --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/forms/LabelWithHelpIcon.js @@ -0,0 +1,37 @@ +//@flow +import React from "react"; +import Help from '../Help'; + +type Props = { + label?: string, + helpText?: string +}; + +class LabelWithHelpIcon extends React.Component { + + renderHelp() { + const { helpText } = this.props; + if (helpText) { + return ( + + ); + } + } + + render() { + const {label } = this.props; + + if (label) { + const help = this.renderHelp(); + return ( + + ); + } + + return ""; + } +} + +export default LabelWithHelpIcon; diff --git a/scm-ui-components/packages/ui-components/src/forms/Select.js b/scm-ui-components/packages/ui-components/src/forms/Select.js index c3956ea8f3..ccb82e62da 100644 --- a/scm-ui-components/packages/ui-components/src/forms/Select.js +++ b/scm-ui-components/packages/ui-components/src/forms/Select.js @@ -1,7 +1,7 @@ //@flow import React from "react"; import classNames from "classnames"; -import { LabelWithHelpIcon } from "../index"; +import LabelWithHelpIcon from "./LabelWithHelpIcon"; export type SelectItem = { value: string, diff --git a/scm-ui-components/packages/ui-components/src/forms/Textarea.js b/scm-ui-components/packages/ui-components/src/forms/Textarea.js index 5a14b3407a..3db590122a 100644 --- a/scm-ui-components/packages/ui-components/src/forms/Textarea.js +++ b/scm-ui-components/packages/ui-components/src/forms/Textarea.js @@ -1,6 +1,6 @@ //@flow import React from "react"; -import { LabelWithHelpIcon } from "../index"; +import LabelWithHelpIcon from "./LabelWithHelpIcon"; export type SelectItem = { value: string, diff --git a/scm-ui-components/packages/ui-components/src/forms/index.js b/scm-ui-components/packages/ui-components/src/forms/index.js index 24e52daa1d..c96f3a8196 100644 --- a/scm-ui-components/packages/ui-components/src/forms/index.js +++ b/scm-ui-components/packages/ui-components/src/forms/index.js @@ -5,4 +5,5 @@ export { default as Checkbox } from "./Checkbox.js"; export { default as InputField } from "./InputField.js"; export { default as Select } from "./Select.js"; export { default as Textarea } from "./Textarea.js"; +export { default as LabelWithHelpIcon } from "./LabelWithHelpIcon"; diff --git a/scm-ui-components/packages/ui-components/src/index.js b/scm-ui-components/packages/ui-components/src/index.js index 2ebe57ec0c..41e385af8d 100644 --- a/scm-ui-components/packages/ui-components/src/index.js +++ b/scm-ui-components/packages/ui-components/src/index.js @@ -17,8 +17,9 @@ export { default as Notification } from "./Notification.js"; export { default as Paginator } from "./Paginator.js"; export { default as LinkPaginator } from "./LinkPaginator.js"; export { default as ProtectedRoute } from "./ProtectedRoute.js"; -export { default as Help } from "./Help.js"; -export { default as LabelWithHelpIcon } from "./LabelWithHelpIcon.js"; +export { default as Help } from "./Help"; +export { default as HelpIcon } from "./HelpIcon"; +export { default as Tooltip } from "./Tooltip"; export { getPageFromMatch } from "./urls"; export { apiClient, NOT_FOUND_ERROR, UNAUTHORIZED_ERROR } from "./apiclient.js";