mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import React from 'react';
|
|
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
import { Button, ButtonVariant, ModalsController, FullWidthButtonContainer } from '@grafana/ui';
|
|
import { DashboardModel } from 'app/features/dashboard/state';
|
|
|
|
import { SaveDashboardDrawer } from './SaveDashboardDrawer';
|
|
|
|
interface SaveDashboardButtonProps {
|
|
dashboard: DashboardModel;
|
|
onSaveSuccess?: () => void;
|
|
}
|
|
|
|
export const SaveDashboardButton: React.FC<SaveDashboardButtonProps> = ({ dashboard, onSaveSuccess }) => {
|
|
return (
|
|
<ModalsController>
|
|
{({ showModal, hideModal }) => {
|
|
return (
|
|
<Button
|
|
onClick={() => {
|
|
showModal(SaveDashboardDrawer, {
|
|
dashboard,
|
|
onSaveSuccess,
|
|
onDismiss: hideModal,
|
|
});
|
|
}}
|
|
aria-label={selectors.pages.Dashboard.Settings.General.saveDashBoard}
|
|
>
|
|
Save dashboard
|
|
</Button>
|
|
);
|
|
}}
|
|
</ModalsController>
|
|
);
|
|
};
|
|
|
|
export const SaveDashboardAsButton: React.FC<SaveDashboardButtonProps & { variant?: ButtonVariant }> = ({
|
|
dashboard,
|
|
onSaveSuccess,
|
|
variant,
|
|
}) => {
|
|
return (
|
|
<ModalsController>
|
|
{({ showModal, hideModal }) => {
|
|
return (
|
|
<FullWidthButtonContainer>
|
|
<Button
|
|
onClick={() => {
|
|
showModal(SaveDashboardDrawer, {
|
|
dashboard,
|
|
onSaveSuccess,
|
|
onDismiss: hideModal,
|
|
isCopy: true,
|
|
});
|
|
}}
|
|
variant={variant}
|
|
aria-label={selectors.pages.Dashboard.Settings.General.saveAsDashBoard}
|
|
>
|
|
Save As...
|
|
</Button>
|
|
</FullWidthButtonContainer>
|
|
);
|
|
}}
|
|
</ModalsController>
|
|
);
|
|
};
|