import React from 'react'; import { css } from 'emotion'; import sumBy from 'lodash/sumBy'; import { Modal, ConfirmModal, HorizontalGroup, Button } from '@grafana/ui'; import { DashboardModel, PanelModel } from '../../state'; import { useDashboardDelete } from './useDashboardDelete'; type DeleteDashboardModalProps = { hideModal(): void; dashboard: DashboardModel; }; export const DeleteDashboardModal: React.FC = ({ hideModal, dashboard }) => { const isProvisioned = dashboard.meta.provisioned; const { onRestoreDashboard } = useDashboardDelete(dashboard.uid); const modalBody = getModalBody(dashboard.panels, dashboard.title); if (isProvisioned) { return ; } return ( ); }; const getModalBody = (panels: PanelModel[], title: string) => { const totalAlerts = sumBy(panels, (panel) => (panel.alert ? 1 : 0)); return totalAlerts > 0 ? ( <>

Do you want to delete this dashboard?

This dashboard contains {totalAlerts} alert{totalAlerts > 1 ? 's' : ''}. Deleting this dashboard will also delete those alerts

) : ( <>

Do you want to delete this dashboard?

{title}

); }; const ProvisionedDeleteModal = ({ hideModal, provisionedId }: { hideModal(): void; provisionedId: string }) => (

This dashboard is managed by Grafanas provisioning and cannot be deleted. Remove the dashboard from the config file to delete it.

See{' '} documentation {' '} for more information about provisioning.
File path: {provisionedId}

);