Files
Josh Hunt 3c6e0e8ef8 Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

58 lines
1.2 KiB
TypeScript

import React, { FC } from 'react';
import { IconName, Tooltip, LinkButton, Button } from '@grafana/ui';
import { PopoverContent, TooltipPlacement } from '@grafana/ui/src/components/Tooltip';
interface Props {
tooltip: PopoverContent;
icon: IconName;
className?: string;
tooltipPlacement?: TooltipPlacement;
to?: string;
target?: string;
onClick?: () => void;
'data-testid'?: string;
}
export const ActionIcon: FC<Props> = ({
tooltip,
icon,
to,
target,
onClick,
className,
tooltipPlacement = 'top',
...rest
}) => {
const ariaLabel = typeof tooltip === 'string' ? tooltip : undefined;
return (
<Tooltip content={tooltip} placement={tooltipPlacement}>
{to ? (
<LinkButton
variant="secondary"
fill="text"
icon={icon}
href={to}
size="sm"
target={target}
{...rest}
aria-label={ariaLabel}
/>
) : (
<Button
className={className}
variant="secondary"
fill="text"
size="sm"
icon={icon}
type="button"
onClick={onClick}
{...rest}
aria-label={ariaLabel}
/>
)}
</Tooltip>
);
};