grafana/public/app/features/search/components/DashboardActions.tsx
TaitChan a1d33c63c8
Internationalization: Translate page headers and Search dashboard actions (#60727)
* Fix: PageHeader & PageHeaderTabs & NavBarItem & DashboardActions & PanelMenu is displayed in default_language (#60719)

* I18N: update strings (#60719)

Co-authored-by: TaitChan <1441645821@qq.coom>
2023-01-13 14:33:42 +00:00

56 lines
1.5 KiB
TypeScript

import React, { FC } from 'react';
import { config } from '@grafana/runtime';
import { Menu, Dropdown, Button, Icon } from '@grafana/ui';
import { t } from 'app/core/internationalization';
export interface Props {
folderUid?: string;
canCreateFolders?: boolean;
canCreateDashboards?: boolean;
}
export const DashboardActions: FC<Props> = ({ folderUid, canCreateFolders = false, canCreateDashboards = false }) => {
const actionUrl = (type: string) => {
let url = `dashboard/${type}`;
const isTypeNewFolder = type === 'new_folder';
if (isTypeNewFolder) {
url = `dashboards/folder/new/`;
}
if (folderUid) {
url += `?folderUid=${folderUid}`;
}
return url;
};
const MenuActions = () => {
return (
<Menu>
{canCreateDashboards && (
<Menu.Item url={actionUrl('new')} label={t('search.dashboard-actions.new-dashboard', 'New Dashboard')} />
)}
{canCreateFolders && (config.featureToggles.nestedFolders || !folderUid) && (
<Menu.Item url={actionUrl('new_folder')} label={t('search.dashboard-actions.new-folder', 'New Folder')} />
)}
{canCreateDashboards && (
<Menu.Item url={actionUrl('import')} label={t('search.dashboard-actions.import', 'Import')} />
)}
</Menu>
);
};
return (
<div>
<Dropdown overlay={MenuActions} placement="bottom-start">
<Button variant="primary">
{t('search.dashboard-actions.new', 'New')}
<Icon name="angle-down" />
</Button>
</Dropdown>
</div>
);
};