grafana/public/app/features/plugins/admin/components/InstallControls/ExternallyManagedButton.tsx
Jack Westbrook 2cb141d4ec
Plugins: Refactor installation buttons component (#37642)
* refactor(catalog): split out installcontrols into multiple components

* test(catalog): update tests for plugindetails page

* refactor(catalog): rename installcontrols -> index

* refactor(catalog): remove redundant curlies

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* tests(plugindetails): fix assertions and naming of tests

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* refactor(installcontrols): prefer enum over duplicate union type, rename disabled prop

* refactor(installcontrols): use PluginStatus enum for installcontrols pluginStatus

* refactor(installcontrols): remove redundant curlies

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2021-08-26 17:15:43 +02:00

41 lines
1.2 KiB
TypeScript

import React from 'react';
import { HorizontalGroup, LinkButton } from '@grafana/ui';
import { getExternalManageLink } from '../../helpers';
import { PluginStatus } from '../../types';
type ExternallyManagedButtonProps = {
pluginId: string;
pluginStatus: PluginStatus;
};
export function ExternallyManagedButton({ pluginId, pluginStatus }: ExternallyManagedButtonProps) {
const externalManageLink = getExternalManageLink(pluginId);
if (pluginStatus === PluginStatus.UPDATE) {
return (
<HorizontalGroup height="auto">
<LinkButton href={externalManageLink} target="_blank" rel="noopener noreferrer">
Update via grafana.com
</LinkButton>
<LinkButton variant="destructive" href={externalManageLink} target="_blank" rel="noopener noreferrer">
Uninstall via grafana.com
</LinkButton>
</HorizontalGroup>
);
}
if (pluginStatus === PluginStatus.UNINSTALL) {
return (
<LinkButton variant="destructive" href={externalManageLink} target="_blank" rel="noopener noreferrer">
Uninstall via grafana.com
</LinkButton>
);
}
return (
<LinkButton href={externalManageLink} target="_blank" rel="noopener noreferrer">
Install via grafana.com
</LinkButton>
);
}