From a51f51f7a86e4bacba71f3ad80880546d59ddffa Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 1 Jun 2022 02:29:13 -0400 Subject: [PATCH] grafana/ui: Move panel-container styles to component (#49566) (#49915) * Chore: transfer styling to Explore.tsx and convert to Emotion * feat: create a component and export it * Chore: replace by new component * Chore: replace by new component * Feat: create a story * Chore: clean up * Chore: clean up (cherry picked from commit 94375592c88632f0976d52203a89f90d10dc5c9f) Co-authored-by: Laura <48948963+L-M-K-B@users.noreply.github.com> --- .../PanelContainer/PanelContainer.mdx | 8 ++++++ .../PanelContainer/PanelContainer.story.tsx | 26 +++++++++++++++++++ .../PanelContainer/PanelContainer.tsx | 24 +++++++++++++++++ packages/grafana-ui/src/components/index.ts | 1 + public/app/features/explore/Explore.tsx | 6 ++--- public/app/features/explore/NoData.tsx | 10 +++---- 6 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 packages/grafana-ui/src/components/PanelContainer/PanelContainer.mdx create mode 100644 packages/grafana-ui/src/components/PanelContainer/PanelContainer.story.tsx create mode 100644 packages/grafana-ui/src/components/PanelContainer/PanelContainer.tsx diff --git a/packages/grafana-ui/src/components/PanelContainer/PanelContainer.mdx b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.mdx new file mode 100644 index 00000000000..29c6eeca90e --- /dev/null +++ b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.mdx @@ -0,0 +1,8 @@ +import { Meta, Preview, Props } from '@storybook/addon-docs/blocks'; +import { PanelContainer } from './PanelContainer'; + + + +# PanelContainer + +The PanelContainer is used as a simple background for storing other components. diff --git a/packages/grafana-ui/src/components/PanelContainer/PanelContainer.story.tsx b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.story.tsx new file mode 100644 index 00000000000..4ace28bd6b0 --- /dev/null +++ b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.story.tsx @@ -0,0 +1,26 @@ +import { Meta, Story } from '@storybook/react'; +import React from 'react'; + +import { withCenteredStory } from '../../utils/storybook/withCenteredStory'; + +import { PanelContainer } from './PanelContainer'; +import mdx from './PanelContainer.mdx'; + +export default { + title: 'General/PanelContainer', + component: PanelContainer, + decorators: [withCenteredStory], + parameters: { + docs: { + page: mdx, + }, + }, +} as Meta; + +export const Basic: Story = () => { + return ( + +

Here could be your component

+
+ ); +}; diff --git a/packages/grafana-ui/src/components/PanelContainer/PanelContainer.tsx b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.tsx new file mode 100644 index 00000000000..d39725ec91a --- /dev/null +++ b/packages/grafana-ui/src/components/PanelContainer/PanelContainer.tsx @@ -0,0 +1,24 @@ +import { css, cx } from '@emotion/css'; +import React, { DetailedHTMLProps, HTMLAttributes } from 'react'; + +import { GrafanaTheme2 } from '@grafana/data'; + +import { useStyles2 } from '../../themes'; + +type Props = DetailedHTMLProps, HTMLDivElement>; + +export const PanelContainer = ({ children, className, ...props }: Props) => { + const styles = useStyles2(getStyles); + return ( +
+ {children} +
+ ); +}; + +const getStyles = (theme: GrafanaTheme2) => + css` + background-color: ${theme.components.panel.background}; + border: 1px solid ${theme.components.panel.borderColor}; + border-radius: 3px; + `; diff --git a/packages/grafana-ui/src/components/index.ts b/packages/grafana-ui/src/components/index.ts index 4c32405d854..6545f93dbee 100644 --- a/packages/grafana-ui/src/components/index.ts +++ b/packages/grafana-ui/src/components/index.ts @@ -269,3 +269,4 @@ export { GraphNGLegendEvent } from './GraphNG/types'; export * from './PanelChrome/types'; export { EmotionPerfTest } from './ThemeDemos/EmotionPerfTest'; export { Label as BrowserLabel } from './BrowserLabel/Label'; +export { PanelContainer } from './PanelContainer/PanelContainer'; diff --git a/public/app/features/explore/Explore.tsx b/public/app/features/explore/Explore.tsx index 0a25babfd79..3dbe10a8c19 100644 --- a/public/app/features/explore/Explore.tsx +++ b/public/app/features/explore/Explore.tsx @@ -8,7 +8,7 @@ import { Unsubscribable } from 'rxjs'; import { AbsoluteTimeRange, DataQuery, GrafanaTheme2, LoadingState, RawTimeRange } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { Collapse, CustomScrollbar, ErrorBoundaryAlert, Themeable2, withTheme2 } from '@grafana/ui'; +import { Collapse, CustomScrollbar, ErrorBoundaryAlert, Themeable2, withTheme2, PanelContainer } from '@grafana/ui'; import { FILTER_FOR_OPERATOR, FILTER_OUT_OPERATOR, FilterItem } from '@grafana/ui/src/components/Table/types'; import appEvents from 'app/core/app_events'; import { getNodeGraphDataFrames } from 'app/plugins/panel/nodeGraph/utils'; @@ -368,7 +368,7 @@ export class Explore extends React.PureComponent { {datasourceMissing ? this.renderEmptyState(styles.exploreContainer) : null} {datasourceInstance && (
-
+ { onClickQueryInspectorButton={this.toggleShowQueryInspector} /> -
+ {({ width }) => { if (width === 0) { diff --git a/public/app/features/explore/NoData.tsx b/public/app/features/explore/NoData.tsx index 791505c6a57..a8c73dd2c2c 100644 --- a/public/app/features/explore/NoData.tsx +++ b/public/app/features/explore/NoData.tsx @@ -1,16 +1,16 @@ -import { css, cx } from '@emotion/css'; +import { css } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2 } from '@grafana/data/src'; -import { useStyles2 } from '@grafana/ui'; +import { useStyles2, PanelContainer } from '@grafana/ui'; export const NoData = () => { const css = useStyles2(getStyles); return ( <> -
- {'No data'} -
+ + {'No data'} + ); };