mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 01:15:46 +08:00

* i18n: everything should target @grafana/i18n * wip * chore: updates after PR feedback * Trigger build * Trigger build * Trigger build * chore: skip flaky tests * chore: skip flaky tests * chore: skip flaky tests * chore: skip flaky tests * chore: skip flaky tests * chore: skip flaky tests * chore: revert all flaky tests * chore: some incorrect usages of useTranslate
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { useState, useEffect } from 'react';
|
|
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
import { Trans } from '@grafana/i18n';
|
|
import { Dropdown, Button, Icon } from '@grafana/ui';
|
|
import { DashboardModel } from 'app/features/dashboard/state/DashboardModel';
|
|
|
|
import AddPanelMenu from './AddPanelMenu';
|
|
|
|
export interface Props {
|
|
dashboard: DashboardModel;
|
|
onToolbarAddMenuOpen?: () => void;
|
|
}
|
|
|
|
const AddPanelButton = ({ dashboard, onToolbarAddMenuOpen }: Props) => {
|
|
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
|
|
useEffect(() => {
|
|
if (isMenuOpen && onToolbarAddMenuOpen) {
|
|
onToolbarAddMenuOpen();
|
|
}
|
|
}, [isMenuOpen, onToolbarAddMenuOpen]);
|
|
|
|
return (
|
|
<Dropdown
|
|
overlay={() => <AddPanelMenu dashboard={dashboard} />}
|
|
placement="bottom"
|
|
offset={[0, 6]}
|
|
onVisibleChange={setIsMenuOpen}
|
|
>
|
|
<Button
|
|
variant="secondary"
|
|
size="sm"
|
|
fill="outline"
|
|
data-testid={selectors.components.PageToolbar.itemButton('Add button')}
|
|
>
|
|
<Trans i18nKey="dashboard.toolbar.add">Add</Trans>
|
|
<Icon name={isMenuOpen ? 'angle-up' : 'angle-down'} size="lg" />
|
|
</Button>
|
|
</Dropdown>
|
|
);
|
|
};
|
|
|
|
export default AddPanelButton;
|