Update components to fit updated PopperController API

This commit is contained in:
Dominik Prokop 2019-01-08 13:53:59 +01:00
parent de4e1a91f7
commit ec904cf662
12 changed files with 73 additions and 71 deletions

View File

@ -14,8 +14,10 @@ export const Label: SFC<Props> = props => {
<span className={`gf-form-label width-${props.width ? props.width : '10'}`}> <span className={`gf-form-label width-${props.width ? props.width : '10'}`}>
<span>{props.children}</span> <span>{props.children}</span>
{props.tooltip && ( {props.tooltip && (
<Tooltip className="gf-form-help-icon--right-normal" placement="auto" content={props.tooltip}> <Tooltip placement="auto" content={props.tooltip}>
<i className="gicon gicon-question gicon--has-hover" /> <div className="gf-form-help-icon--right-normal">
<i className="gicon gicon-question gicon--has-hover" />
</div>
</Tooltip> </Tooltip>
)} )}
</span> </span>

View File

@ -1,19 +0,0 @@
import React, { PureComponent } from 'react';
import Popper from './Popper';
import withPopper, { UsingPopperProps } from './withPopper';
class Popover extends PureComponent<UsingPopperProps> {
render() {
const { children, hidePopper, showPopper, className, ...restProps } = this.props;
const togglePopper = restProps.show ? hidePopper : showPopper;
return (
<div className={`popper__manager ${className}`} onClick={togglePopper}>
<Popper {...restProps}>{children}</Popper>
</div>
);
}
}
export default withPopper(Popover);

View File

@ -6,8 +6,8 @@ describe('Tooltip', () => {
it('renders correctly', () => { it('renders correctly', () => {
const tree = renderer const tree = renderer
.create( .create(
<Tooltip className="test-class" placement="auto" content="Tooltip text"> <Tooltip placement="auto" content="Tooltip text">
<a href="http://www.grafana.com">Link with tooltip</a> <a className="test-class" href="http://www.grafana.com">Link with tooltip</a>
</Tooltip> </Tooltip>
) )
.toJSON(); .toJSON();

View File

@ -1,17 +1,28 @@
import React, { PureComponent } from 'react'; import React, { createRef } from 'react';
import * as PopperJS from 'popper.js';
import Popper from './Popper'; import Popper from './Popper';
import withPopper, { UsingPopperProps } from './withPopper'; import PopperController, { UsingPopperProps } from './PopperController';
class Tooltip extends PureComponent<UsingPopperProps> { const Tooltip = ({ children, renderContent, ...controllerProps }: UsingPopperProps) => {
render() { const tooltipTriggerRef = createRef<PopperJS.ReferenceObject>();
const { children, hidePopper, showPopper, className, ...restProps } = this.props;
return ( return (
<div className={`popper__manager ${className}`} onMouseEnter={showPopper} onMouseLeave={hidePopper}> <PopperController {...controllerProps}>
<Popper {...restProps}>{children}</Popper> {(showPopper, hidePopper, popperProps) => {
</div> return (
); <>
} <Popper {...popperProps} referenceElement={tooltipTriggerRef.current} />
} {React.cloneElement(children, {
ref: tooltipTriggerRef,
onMouseEnter: showPopper,
onMouseLeave: hidePopper,
})}
</>
);
}}
</PopperController>
);
};
export default withPopper(Tooltip); export default Tooltip;

View File

@ -1,19 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Tooltip renders correctly 1`] = ` exports[`Tooltip renders correctly 1`] = `
<div <a
className="popper__manager test-class" className="test-class"
href="http://www.grafana.com"
onMouseEnter={[Function]} onMouseEnter={[Function]}
onMouseLeave={[Function]} onMouseLeave={[Function]}
> >
<div Link with tooltip
className="popper_ref " </a>
>
<a
href="http://www.grafana.com"
>
Link with tooltip
</a>
</div>
</div>
`; `;

View File

@ -138,7 +138,7 @@ function TabItem({ tab, activeTab, onClick }: TabItemParams) {
return ( return (
<div className="panel-editor-tabs__item" onClick={() => onClick(tab)}> <div className="panel-editor-tabs__item" onClick={() => onClick(tab)}>
<a className={tabClasses}> <a className={tabClasses}>
<Tooltip content={`${tab.text}`} className="popper__manager--block" placement="auto"> <Tooltip content={`${tab.text}`} placement="auto">
<i className={`gicon gicon-${tab.id}${activeTab === tab.id ? '-active' : ''}`} /> <i className={`gicon gicon-${tab.id}${activeTab === tab.id ? '-active' : ''}`} />
</Tooltip> </Tooltip>
</a> </a>

View File

@ -78,12 +78,14 @@ export class PanelHeaderCorner extends Component<Props> {
{infoMode === InfoModes.Info || infoMode === InfoModes.Links ? ( {infoMode === InfoModes.Info || infoMode === InfoModes.Links ? (
<Tooltip <Tooltip
content={this.getInfoContent} content={this.getInfoContent}
className="popper__manager--block"
refClassName={`panel-info-corner panel-info-corner--${infoMode.toLowerCase()}`}
placement="bottom-start" placement="bottom-start"
> >
<i className="fa" /> <div
<span className="panel-info-corner-inner" /> className={`panel-info-corner panel-info-corner--${infoMode.toLowerCase()}`}
>
<i className="fa" />
<span className="panel-info-corner-inner" />
</div>
</Tooltip> </Tooltip>
) : null} ) : null}
</> </>

View File

@ -70,8 +70,10 @@ export class DashboardPermissions extends PureComponent<Props, State> {
<div className="dashboard-settings__header"> <div className="dashboard-settings__header">
<div className="page-action-bar"> <div className="page-action-bar">
<h3 className="d-inline-block">Permissions</h3> <h3 className="d-inline-block">Permissions</h3>
<Tooltip className="page-sub-heading-icon" placement="auto" content={PermissionsInfo}> <Tooltip placement="auto" content={PermissionsInfo}>
<i className="gicon gicon-question gicon--has-hover" /> <div className="page-sub-heading-icon">
<i className="gicon gicon-question gicon--has-hover" />
</div>
</Tooltip> </Tooltip>
<div className="page-action-bar__spacer" /> <div className="page-action-bar__spacer" />
<button className="btn btn-success pull-right" onClick={this.onOpenAddPermissions} disabled={isAdding}> <button className="btn btn-success pull-right" onClick={this.onOpenAddPermissions} disabled={isAdding}>

View File

@ -84,8 +84,10 @@ export class FolderPermissions extends PureComponent<Props, State> {
<div className="page-container page-body"> <div className="page-container page-body">
<div className="page-action-bar"> <div className="page-action-bar">
<h3 className="page-sub-heading">Folder Permissions</h3> <h3 className="page-sub-heading">Folder Permissions</h3>
<Tooltip className="page-sub-heading-icon" placement="auto" content={PermissionsInfo}> <Tooltip placement="auto" content={PermissionsInfo}>
<i className="gicon gicon-question gicon--has-hover" /> <div className="page-sub-heading-icon">
<i className="gicon gicon-question gicon--has-hover" />
</div>
</Tooltip> </Tooltip>
<div className="page-action-bar__spacer" /> <div className="page-action-bar__spacer" />
<button className="btn btn-success pull-right" onClick={this.onOpenAddPermissions} disabled={isAdding}> <button className="btn btn-success pull-right" onClick={this.onOpenAddPermissions} disabled={isAdding}>

View File

@ -77,8 +77,10 @@ export class TeamGroupSync extends PureComponent<Props, State> {
<div> <div>
<div className="page-action-bar"> <div className="page-action-bar">
<h3 className="page-sub-heading">External group sync</h3> <h3 className="page-sub-heading">External group sync</h3>
<Tooltip className="page-sub-heading-icon" placement="auto" content={headerTooltip}> <Tooltip placement="auto" content={headerTooltip}>
<i className="gicon gicon-question gicon--has-hover" /> <div className="page-sub-heading-icon">
<i className="gicon gicon-question gicon--has-hover" />
</div>
</Tooltip> </Tooltip>
<div className="page-action-bar__spacer" /> <div className="page-action-bar__spacer" />
{groups.length > 0 && ( {groups.length > 0 && (

View File

@ -60,6 +60,7 @@ export class TeamSettings extends React.Component<Props, State> {
onChange={this.onChangeName} onChange={this.onChangeName}
/> />
</div> </div>
<div className="gf-form max-width-30"> <div className="gf-form max-width-30">
<Label tooltip="This is optional and is primarily used to set the team profile avatar (via gravatar service)"> <Label tooltip="This is optional and is primarily used to set the team profile avatar (via gravatar service)">
Email Email

View File

@ -10,15 +10,18 @@ exports[`Render should render component 1`] = `
> >
External group sync External group sync
</h3> </h3>
<class_1 <Tooltip
className="page-sub-heading-icon"
content="Sync LDAP or OAuth groups with your Grafana teams." content="Sync LDAP or OAuth groups with your Grafana teams."
placement="auto" placement="auto"
> >
<i <div
className="gicon gicon-question gicon--has-hover" className="page-sub-heading-icon"
/> >
</class_1> <i
className="gicon gicon-question gicon--has-hover"
/>
</div>
</Tooltip>
<div <div
className="page-action-bar__spacer" className="page-action-bar__spacer"
/> />
@ -116,15 +119,18 @@ exports[`Render should render groups table 1`] = `
> >
External group sync External group sync
</h3> </h3>
<class_1 <Tooltip
className="page-sub-heading-icon"
content="Sync LDAP or OAuth groups with your Grafana teams." content="Sync LDAP or OAuth groups with your Grafana teams."
placement="auto" placement="auto"
> >
<i <div
className="gicon gicon-question gicon--has-hover" className="page-sub-heading-icon"
/> >
</class_1> <i
className="gicon gicon-question gicon--has-hover"
/>
</div>
</Tooltip>
<div <div
className="page-action-bar__spacer" className="page-action-bar__spacer"
/> />