diff --git a/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.story.tsx b/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.story.tsx
index 54facba45d0..466d9acfa62 100644
--- a/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.story.tsx
+++ b/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.story.tsx
@@ -12,7 +12,7 @@ const meta: Meta = {
page: mdx,
},
controls: {
- exclude: ['className', 'options', 'value', 'onChange'],
+ exclude: ['className', 'options', 'value', 'onChange', 'onClick', 'id'],
},
},
argTypes: {
@@ -52,6 +52,7 @@ export const RadioButtons: Story = (args) => {
onChange={(v) => setSelected(v!)}
size={args.size}
fullWidth={args.fullWidth}
+ invalid={args.invalid}
/>
@@ -63,6 +64,7 @@ export const RadioButtons: Story = (args) => {
value={selected}
onChange={(v) => setSelected(v!)}
size={args.size}
+ invalid={args.invalid}
/>
@@ -72,6 +74,7 @@ export const RadioButtons: Story = (args) => {
value={selected}
onChange={(v) => setSelected(v!)}
size={args.size}
+ invalid={args.invalid}
/>
@@ -82,6 +85,7 @@ RadioButtons.args = {
disabledOptions: '',
size: 'md',
fullWidth: true,
+ invalid: false,
};
export default meta;
diff --git a/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx b/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx
index 576e0d29919..20e430a526c 100644
--- a/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx
+++ b/packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx
@@ -21,6 +21,7 @@ export interface RadioButtonGroupProps {
fullWidth?: boolean;
className?: string;
autoFocus?: boolean;
+ invalid?: boolean;
}
export function RadioButtonGroup({
@@ -35,6 +36,7 @@ export function RadioButtonGroup({
className,
fullWidth = false,
autoFocus = false,
+ invalid = false,
}: RadioButtonGroupProps) {
const handleOnChange = useCallback(
(option: SelectableValue) => {
@@ -69,7 +71,7 @@ export function RadioButtonGroup({
}, [autoFocus]);
return (
-
+
{options.map((opt, i) => {
const isItemDisabled = disabledOptions && opt.value && disabledOptions.includes(opt.value);
const icon = opt.icon ? toIconName(opt.icon) : undefined;
@@ -122,5 +124,8 @@ const getStyles = (theme: GrafanaTheme2) => {
height: ${theme.spacing(2)};
margin-right: ${theme.spacing(1)};
`,
+ invalid: css({
+ border: `1px solid ${theme.colors.error.border}`,
+ }),
};
};