grafana/public/app/features/variables/inspect/NetworkGraphModal.tsx
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

47 lines
1.2 KiB
TypeScript

import React, { 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 })}
</>
);
}