mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* Component that can cache and extract variable dependencies * Component that can cache and extract variable dependencies * Updates * Refactoring * Lots of refactoring and iterations of supporting both re-rendering and query re-execution * Updated SceneCanvasText * Updated name of file * Updated * Refactoring a bit * Added back getName * Added comment * minor fix * Minor fix * Merge fixes * Scene variable interpolation progress * Merge fixes * Added all format registeries * Progress on multi value support * Progress on multi value support * Updates * Progress on scoped vars * Fixed circular dependency * Updates * Some review fixes * Updated comment * Added forceRender function * Add back fail on console log * Update public/app/features/scenes/variables/interpolation/sceneInterpolator.test.ts * Moving functions from SceneObjectBase * fixing tests * Fixed e2e Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { css } from '@emotion/css';
|
|
import React, { CSSProperties } from 'react';
|
|
|
|
import { GrafanaTheme2 } from '@grafana/data';
|
|
import { useStyles2 } from '@grafana/ui';
|
|
|
|
import { SceneEditor, SceneObject } from '../core/types';
|
|
|
|
export function SceneComponentEditWrapper({
|
|
model,
|
|
editor,
|
|
children,
|
|
}: {
|
|
model: SceneObject;
|
|
editor: SceneEditor;
|
|
children: React.ReactNode;
|
|
}) {
|
|
const styles = useStyles2(getStyles);
|
|
const { hoverObject, selectedObject } = editor.useState();
|
|
|
|
const onMouseEnter = () => editor.onMouseEnterObject(model);
|
|
const onMouseLeave = () => editor.onMouseLeaveObject(model);
|
|
|
|
const onClick = (evt: React.MouseEvent) => {
|
|
evt.stopPropagation();
|
|
editor.onSelectObject(model);
|
|
};
|
|
|
|
const style: CSSProperties = {};
|
|
let className = styles.wrapper;
|
|
|
|
if (hoverObject?.ref === model) {
|
|
className += ' ' + styles.hover;
|
|
}
|
|
if (selectedObject?.ref === model) {
|
|
className += ' ' + styles.selected;
|
|
}
|
|
|
|
return (
|
|
<div style={style} className={className} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onClick={onClick}>
|
|
{children}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => {
|
|
return {
|
|
wrapper: css({
|
|
display: 'flex',
|
|
flexGrow: 1,
|
|
padding: 8,
|
|
border: `1px dashed ${theme.colors.primary.main}`,
|
|
cursor: 'pointer',
|
|
}),
|
|
hover: css({
|
|
border: `1px solid ${theme.colors.primary.border}`,
|
|
}),
|
|
selected: css({
|
|
border: `1px solid ${theme.colors.error.border}`,
|
|
}),
|
|
};
|
|
};
|