grafana/public/app/features/dashboard/components/PanelEditor/OptionsPaneItemOverrides.tsx
Torkel Ödegaard 3dee34c009
PanelEdit: Show when field options have override rules or data config that overrides the default (#40250)
* First pass at showing data override dots

* Added test

* Adding override rule dots

* Added unit test

* Minor changes

* Update public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>

* Fixed ts issues

* review feedback changes

* skipp broken e2e test

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-11-08 13:18:14 +01:00

49 lines
1.2 KiB
TypeScript

import React from 'react';
import { Tooltip, useStyles2 } from '@grafana/ui';
import { GrafanaTheme2 } from '@grafana/data';
import { css, CSSObject } from '@emotion/css';
import { OptionPaneItemOverrideInfo } from './types';
export interface Props {
overrides: OptionPaneItemOverrideInfo[];
}
export function OptionsPaneItemOverrides({ overrides }: Props) {
const styles = useStyles2(getStyles);
return (
<div className={styles.wrapper}>
{overrides.map((override, index) => (
<Tooltip content={override.tooltip} key={index.toString()} placement="top">
<div aria-label={override.description} className={styles[override.type]} />
</Tooltip>
))}
</div>
);
}
const getStyles = (theme: GrafanaTheme2) => {
const common: CSSObject = {
width: 8,
height: 8,
borderRadius: '50%',
marginLeft: theme.spacing(1),
position: 'relative',
top: '-1px',
};
return {
wrapper: css({
display: 'flex',
}),
rule: css({
...common,
backgroundColor: theme.colors.primary.main,
}),
data: css({
...common,
backgroundColor: theme.colors.warning.main,
}),
};
};