mirror of
https://github.com/grafana/grafana.git
synced 2025-09-19 15:22:53 +08:00

* WIP: Using new components * Progress * Everything looks to be working * Explore: Replaces navbar-button and overriden explore button css classes with ToolbarButton and cleans up scss & markup, removes ResponsiveButton (#30571) * Explore: Replaces navbar-button and overriden explore button css classes with ToolbarButton and cleans up scss & markup, removes ResponsiveButton * Change live button text when paused * Fixed story * For the dashboard toolbar button I need a transparent button so I refactored the states/variants into a new ToolbarButtonVariatn * Changing my mind on the transparent variant * review fixes * Review fixes
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import React, { forwardRef, HTMLAttributes } from 'react';
|
|
import { css, cx } from 'emotion';
|
|
import { GrafanaTheme } from '@grafana/data';
|
|
import { useStyles } from '../../themes';
|
|
|
|
export interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
className?: string;
|
|
}
|
|
|
|
export const ButtonGroup = forwardRef<HTMLDivElement, Props>(({ className, children, ...rest }, ref) => {
|
|
const styles = useStyles(getStyles);
|
|
|
|
return (
|
|
<div ref={ref} className={cx('button-group', styles.wrapper, className)} {...rest}>
|
|
{children}
|
|
</div>
|
|
);
|
|
});
|
|
|
|
ButtonGroup.displayName = 'ButtonGroup';
|
|
|
|
const getStyles = (theme: GrafanaTheme) => ({
|
|
wrapper: css`
|
|
display: flex;
|
|
|
|
> button {
|
|
border-radius: 0;
|
|
border-right-width: 0;
|
|
|
|
&.toolbar-button {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&:last-of-type {
|
|
border-radius: 0 ${theme.border.radius.sm} ${theme.border.radius.sm} 0;
|
|
border-right-width: 1px;
|
|
}
|
|
|
|
&:first-child {
|
|
border-radius: ${theme.border.radius.sm} 0 0 ${theme.border.radius.sm};
|
|
}
|
|
}
|
|
`,
|
|
});
|