diff --git a/public/app/features/dashboard/components/DashNav/ShareButton.tsx b/public/app/features/dashboard/components/DashNav/ShareButton.tsx index 9650f668c24..847bee84a3d 100644 --- a/public/app/features/dashboard/components/DashNav/ShareButton.tsx +++ b/public/app/features/dashboard/components/DashNav/ShareButton.tsx @@ -1,32 +1,13 @@ -import React, { useContext, useEffect } from 'react'; +import React from 'react'; -import { ModalsContext } from '@grafana/ui'; -import { useQueryParams } from 'app/core/hooks/useQueryParams'; +import { locationService } from '@grafana/runtime'; import { t } from 'app/core/internationalization'; import { DashboardModel } from 'app/features/dashboard/state'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; -import { ShareModal } from '../ShareModal'; - import { DashNavButton } from './DashNavButton'; export const ShareButton = ({ dashboard }: { dashboard: DashboardModel }) => { - const [queryParams] = useQueryParams(); - const { showModal, hideModal } = useContext(ModalsContext); - - useEffect(() => { - if (!!queryParams.shareView) { - showModal(ShareModal, { - dashboard, - onDismiss: hideModal, - activeTab: String(queryParams.shareView), - }); - } - return () => { - hideModal(); - }; - }, [showModal, hideModal, dashboard, queryParams.shareView]); - return ( { iconSize="lg" onClick={() => { DashboardInteractions.toolbarShareClick(); - showModal(ShareModal, { - dashboard, - onDismiss: hideModal, - }); + locationService.partial({ shareView: 'link' }); }} /> ); diff --git a/public/app/features/dashboard/components/ShareModal/ShareModal.tsx b/public/app/features/dashboard/components/ShareModal/ShareModal.tsx index fa00c6c99c4..65200e9a1bf 100644 --- a/public/app/features/dashboard/components/ShareModal/ShareModal.tsx +++ b/public/app/features/dashboard/components/ShareModal/ShareModal.tsx @@ -77,7 +77,6 @@ interface Props extends Themeable2 { dashboard: DashboardModel; panel?: PanelModel; activeTab?: string; - onDismiss(): void; } diff --git a/public/app/features/dashboard/containers/DashboardPage.tsx b/public/app/features/dashboard/containers/DashboardPage.tsx index 8770bdec767..f151e4f1d4d 100644 --- a/public/app/features/dashboard/containers/DashboardPage.tsx +++ b/public/app/features/dashboard/containers/DashboardPage.tsx @@ -31,6 +31,7 @@ import { DashboardPrompt } from '../components/DashboardPrompt/DashboardPrompt'; import { DashboardSettings } from '../components/DashboardSettings'; import { PanelInspector } from '../components/Inspector/PanelInspector'; import { PanelEditor } from '../components/PanelEditor/PanelEditor'; +import { ShareModal } from '../components/ShareModal'; import { SubMenu } from '../components/SubMenu/SubMenu'; import { DashboardGrid } from '../dashgrid/DashboardGrid'; import { liveTimer } from '../dashgrid/liveTimer'; @@ -311,6 +312,10 @@ export class UnthemedDashboardPage extends PureComponent { return inspectPanel; } + onCloseShareModal = () => { + locationService.partial({ shareView: null }); + }; + render() { const { dashboard, initError, queryParams } = this.props; const { editPanel, viewPanel, updateScrollTop, pageNav, sectionNav } = this.state; @@ -379,6 +384,7 @@ export class UnthemedDashboardPage extends PureComponent { /> {inspectPanel && } + {queryParams.shareView && } {editPanel && (