Files
grafana/public/app/features/dashboard-scene/scene/UnlinkLibraryPanelModal.tsx
Dominik Prokop 1da78ac846 DashboardScene: Allow unlinking a library panel (#83956)
* DashboardScene: Allow unlinking a library panel

* Betterer

* Revert

* Review
2024-03-07 18:11:34 +01:00

45 lines
1.2 KiB
TypeScript

import React from 'react';
import { SceneComponentProps, SceneObjectBase, SceneObjectRef, SceneObjectState } from '@grafana/scenes';
import { ModalSceneObjectLike } from '../sharing/types';
import { getDashboardSceneFor } from '../utils/utils';
import { LibraryVizPanel } from './LibraryVizPanel';
import { UnlinkModal } from './UnlinkModal';
interface UnlinkLibraryPanelModalState extends SceneObjectState {
panelRef?: SceneObjectRef<LibraryVizPanel>;
}
export class UnlinkLibraryPanelModal
extends SceneObjectBase<UnlinkLibraryPanelModalState>
implements ModalSceneObjectLike
{
static Component = UnlinkLibraryPanelModalRenderer;
public onDismiss = () => {
const dashboard = getDashboardSceneFor(this);
dashboard.closeModal();
};
public onConfirm = () => {
const dashboard = getDashboardSceneFor(this);
dashboard.unlinkLibraryPanel(this.state.panelRef!.resolve());
dashboard.closeModal();
};
}
function UnlinkLibraryPanelModalRenderer({ model }: SceneComponentProps<UnlinkLibraryPanelModal>) {
return (
<UnlinkModal
isOpen={true}
onConfirm={() => {
model.onConfirm();
model.onDismiss();
}}
onDismiss={model.onDismiss}
/>
);
}