diff --git a/public/app/core/components/Tooltip/Popper.tsx b/public/app/core/components/Tooltip/Popper.tsx index 36cf0fe837e..d5ea1d93091 100644 --- a/public/app/core/components/Tooltip/Popper.tsx +++ b/public/app/core/components/Tooltip/Popper.tsx @@ -21,13 +21,21 @@ interface Props { placement?: any; content: string | ((props: any) => JSX.Element); refClassName?: string; + theme?: string; +} + +export enum Themes { + Default = 'popper__background--default', + Error = 'popper__background--error', } class Popper extends PureComponent { render() { - const { children, renderContent, show, placement, refClassName } = this.props; + const { children, renderContent, show, placement, refClassName, theme } = this.props; const { content } = this.props; + const popperBackgroundClassName = 'popper__background' + (theme ? ' ' + theme : ''); + return ( @@ -53,7 +61,7 @@ class Popper extends PureComponent { data-placement={placement} className="popper" > -
+
{renderContent(content)}
diff --git a/public/app/core/components/Tooltip/withPopper.tsx b/public/app/core/components/Tooltip/withPopper.tsx index 4ba05937531..7be12748247 100644 --- a/public/app/core/components/Tooltip/withPopper.tsx +++ b/public/app/core/components/Tooltip/withPopper.tsx @@ -9,6 +9,7 @@ export interface UsingPopperProps { content: string | ((props: any) => JSX.Element); className?: string; refClassName?: string; + theme?: string; } interface Props { @@ -16,6 +17,7 @@ interface Props { className?: string; refClassName?: string; content: string | ((props: any) => JSX.Element); + theme?: string; } interface State { @@ -71,7 +73,6 @@ export default function withPopper(WrappedComponent) { render() { const { show, placement } = this.state; const className = this.props.className || ''; - return ( { const timeSeries = response.data; if (isFirstLoad && loading === LoadingState.Loading) { - return this.renderLoadingState(); + return this.renderLoadingStates(); } if (!queries.length) { @@ -153,7 +154,7 @@ export class DataPanel extends Component { return ( <> - {this.renderLoadingState()} + {this.renderLoadingStates()} {this.props.children({ timeSeries, loading, @@ -162,7 +163,7 @@ export class DataPanel extends Component { ); } - private renderLoadingState(): JSX.Element { + private renderLoadingStates(): JSX.Element { const { loading } = this.state; if (loading === LoadingState.Loading) { return ( @@ -177,6 +178,7 @@ export class DataPanel extends Component { className="popper__manager--block" refClassName={`panel-info-corner panel-info-corner--error`} placement="bottom-start" + theme={Themes.Error} > diff --git a/public/sass/_variables.dark.scss b/public/sass/_variables.dark.scss index 70db51a0fb2..8769164d5ec 100644 --- a/public/sass/_variables.dark.scss +++ b/public/sass/_variables.dark.scss @@ -302,12 +302,14 @@ $popover-error-bg: $btn-danger-bg; // Tooltips and popovers // ------------------------- $tooltipColor: $popover-help-color; -$tooltipBackground: $popover-help-bg; $tooltipArrowWidth: 5px; -$tooltipArrowColor: $tooltipBackground; $tooltipLinkColor: $link-color; $graph-tooltip-bg: $dark-1; +$tooltipBackground: $popover-help-bg; +$tooltipArrowColor: $tooltipBackground; +$tooltipBackgroundError: $brand-danger; + // images $checkboxImageUrl: '../img/checkbox.png'; diff --git a/public/sass/_variables.light.scss b/public/sass/_variables.light.scss index 6afd087a849..be2d05e2441 100644 --- a/public/sass/_variables.light.scss +++ b/public/sass/_variables.light.scss @@ -307,12 +307,14 @@ $popover-error-bg: $btn-danger-bg; // Tooltips and popovers // ------------------------- $tooltipColor: $popover-help-color; -$tooltipBackground: $popover-help-bg; $tooltipArrowWidth: 5px; -$tooltipArrowColor: $tooltipBackground; $tooltipLinkColor: lighten($popover-help-color, 5%); $graph-tooltip-bg: $gray-5; +$tooltipBackground: $popover-help-bg; +$tooltipArrowColor: $tooltipBackground; // Used by Angular tooltip +$tooltipBackgroundError: $brand-danger; + // images $checkboxImageUrl: '../img/checkbox_white.png'; diff --git a/public/sass/components/_popper.scss b/public/sass/components/_popper.scss index d869d52b92f..afa629d4043 100644 --- a/public/sass/components/_popper.scss +++ b/public/sass/components/_popper.scss @@ -8,7 +8,22 @@ $popper-margin-from-ref: 5px; text-align: center; } -.popper .popper__arrow { +.popper__background { + background: $tooltipBackground; + border-radius: $border-radius; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); + padding: 10px; + + // Themes + &.popper__background--error { + background: $tooltipBackgroundError; + .popper__arrow { + border-color: $tooltipBackgroundError; + } + } +} + +.popper__arrow { width: 0; height: 0; border-style: solid; @@ -16,17 +31,10 @@ $popper-margin-from-ref: 5px; margin: 0px; } -.popper .popper__arrow { +.popper__arrow { border-color: $tooltipBackground; } -.popper__background { - background: $tooltipBackground; - border-radius: $border-radius; - box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); - padding: 10px; -} - // Top .popper[data-placement^='top'] { padding-bottom: $popper-margin-from-ref;