Files
grafana/public/app/features/variables/inspect/NetworkGraphModal.tsx
Ashley Harrison 47f8717149 React: Use new JSX transform (#88802)
* update eslint, tsconfig + esbuild to handle new jsx transform

* remove thing that breaks the new jsx transform

* remove react imports

* adjust grafana-icons build

* is this the correct syntax?

* try this

* well this was much easier than expected...

* change grafana-plugin-configs webpack config

* fixes

* fix lockfile

* fix 2 more violations

* use path.resolve instead of require.resolve

* remove react import

* fix react imports

* more fixes

* remove React import

* remove import React from docs

* remove another react import
2024-06-25 12:43:47 +01:00

47 lines
1.2 KiB
TypeScript

import { useCallback, useState } from 'react';
import { Modal } from '@grafana/ui';
import { NetworkGraph, Props as NetWorkGraphProps } from './NetworkGraph';
import { GraphEdge, GraphNode } from './utils';
interface NetworkGraphModalApi {
showModal: () => void;
}
interface OwnProps extends Pick<NetWorkGraphProps, 'direction'> {
show: boolean;
title: string;
nodes: GraphNode[];
edges: GraphEdge[];
children: (api: NetworkGraphModalApi) => JSX.Element;
}
interface ConnectedProps {}
interface DispatchProps {}
type Props = OwnProps & ConnectedProps & DispatchProps;
export function NetworkGraphModal({ edges, nodes, show: propsShow, title, children }: Props): JSX.Element {
const [show, setShow] = useState(propsShow);
const showModal = useCallback(() => setShow(true), [setShow]);
const onClose = useCallback(() => setShow(false), [setShow]);
return (
<>
<Modal
isOpen={show}
title={title}
icon="info-circle"
iconTooltip="The graph can be moved, zoomed in, and zoomed out."
onClickBackdrop={onClose}
onDismiss={onClose}
>
<NetworkGraph nodes={nodes} edges={edges} />
</Modal>
{children({ showModal })}
</>
);
}