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}`, + }), }; };