import { css } from '@emotion/css'; import { connect, ConnectedProps } from 'react-redux'; import useAsyncFn from 'react-use/lib/useAsyncFn'; import { locationService, config, reportInteraction } from '@grafana/runtime'; import { Modal, Button, Text, Space, TextLink } from '@grafana/ui'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { cleanUpDashboardAndVariables } from 'app/features/dashboard/state/actions'; import { Trans, t } from '../../../../core/internationalization'; import { useDeleteItemsMutation } from '../../../browse-dashboards/api/browseDashboardsAPI'; import { DeleteDashboardModal as DeleteModal } from '../../../dashboard-scene/settings/DeleteDashboardButton'; type DeleteDashboardModalProps = { hideModal(): void; dashboard: DashboardModel; }; const mapDispatchToProps = { cleanUpDashboardAndVariables, }; const connector = connect(null, mapDispatchToProps); type Props = DeleteDashboardModalProps & ConnectedProps; const DeleteDashboardModalUnconnected = ({ hideModal, cleanUpDashboardAndVariables, dashboard }: Props) => { const isProvisioned = dashboard.meta.provisioned; const [deleteItems] = useDeleteItemsMutation(); const [, onConfirm] = useAsyncFn(async () => { reportInteraction('grafana_manage_dashboards_delete_clicked', { item_counts: { dashboard: 1, }, source: 'dashboard_settings', restore_enabled: Boolean(config.featureToggles.dashboardRestore), }); await deleteItems({ selectedItems: { dashboard: { [dashboard.uid]: true, }, folder: {}, }, }); cleanUpDashboardAndVariables(); hideModal(); locationService.replace('/'); }, [hideModal]); if (isProvisioned) { return ; } return ; }; const ProvisionedDeleteModal = ({ hideModal, provisionedId }: { hideModal(): void; provisionedId: string }) => ( This dashboard is managed by Grafana provisioning and cannot be deleted. Remove the dashboard from the config file to delete it. See grafana documentation for more information about provisioning.  {t('dashboard-settings.provisioned-delete-modal.text-link', 'Go to docs page')} File path: {{ provisionedId }} ); export const DeleteDashboardModal = connector(DeleteDashboardModalUnconnected);