| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import React, { PureComponent } from 'react';
- import classNames from 'classnames';
- import { PanelHeaderMenu } from './PanelHeaderMenu';
- import Tooltip from 'app/core/components/Tooltip/Tooltip';
- import { DashboardModel } from 'app/features/dashboard/dashboard_model';
- import { PanelModel } from 'app/features/dashboard/panel_model';
- import { ClickOutsideWrapper } from 'app/core/components/ClickOutsideWrapper/ClickOutsideWrapper';
- export interface Props {
- panel: PanelModel;
- dashboard: DashboardModel;
- timeInfo: string;
- }
- interface State {
- panelMenuOpen: boolean;
- }
- export class PanelHeader extends PureComponent<Props, State> {
- state = {
- panelMenuOpen: false,
- };
- onMenuToggle = event => {
- event.stopPropagation();
- this.setState(prevState => ({
- panelMenuOpen: !prevState.panelMenuOpen,
- }));
- };
- closeMenu = () => {
- this.setState({
- panelMenuOpen: false,
- });
- };
- render() {
- const isFullscreen = false;
- const isLoading = false;
- const panelHeaderClass = classNames({ 'panel-header': true, 'grid-drag-handle': !isFullscreen });
- const { panel, dashboard, timeInfo } = this.props;
- const cornerCssClass = panel.description ? 'panel-info-corner--info' : '';
- return (
- <div className={panelHeaderClass}>
- <Tooltip content="hello world">
- <span className={`panel-info-corner ${cornerCssClass}`}>
- <i className="fa" />
- <span className="panel-info-corner-inner" />
- </span>
- </Tooltip>
- {isLoading && (
- <span className="panel-loading">
- <i className="fa fa-spinner fa-spin" />
- </span>
- )}
- <div className="panel-title-container" onClick={this.onMenuToggle}>
- <div className="panel-title">
- <span className="icon-gf panel-alert-icon" />
- <span className="panel-title-text">
- {panel.title} <span className="fa fa-caret-down panel-menu-toggle" />
- </span>
- {this.state.panelMenuOpen && (
- <ClickOutsideWrapper onClick={this.closeMenu}>
- <PanelHeaderMenu panel={panel} dashboard={dashboard} />
- </ClickOutsideWrapper>
- )}
- {timeInfo && (
- <span className="panel-time-info">
- <i className="fa fa-clock-o" /> {timeInfo}
- </span>
- )}
- </div>
- </div>
- </div>
- );
- }
- }
|