From f967984c8bf49bf49e1e5a500b338381f2481e4e Mon Sep 17 00:00:00 2001
From: Erica Diaz <156136421+ericakdiaz@users.noreply.github.com>
Date: Tue, 10 Dec 2024 16:23:39 -0800
Subject: [PATCH] chore(weave): Update ToggleButtonGroup to allow disabling
individual options (#3194)
---
weave-js/src/components/ToggleButtonGroup.tsx | 67 +++++++++++--------
1 file changed, 38 insertions(+), 29 deletions(-)
diff --git a/weave-js/src/components/ToggleButtonGroup.tsx b/weave-js/src/components/ToggleButtonGroup.tsx
index 65b2c538975e..eca93e956578 100644
--- a/weave-js/src/components/ToggleButtonGroup.tsx
+++ b/weave-js/src/components/ToggleButtonGroup.tsx
@@ -9,6 +9,7 @@ import {Tailwind} from './Tailwind';
export type ToggleOption = {
value: string;
icon?: IconName;
+ isDisabled?: boolean;
};
export type ToggleButtonGroupProps = {
@@ -37,7 +38,10 @@ export const ToggleButtonGroup = React.forwardRef<
}
const handleValueChange = (newValue: string) => {
- if (newValue !== value) {
+ if (
+ newValue !== value &&
+ options.find(option => option.value === newValue)?.isDisabled !== true
+ ) {
onValueChange(newValue);
}
};
@@ -49,34 +53,39 @@ export const ToggleButtonGroup = React.forwardRef<
onValueChange={handleValueChange}
className="flex gap-px"
ref={ref}>
- {options.map(({value: optionValue, icon}) => (
-
-
-
- ))}
+ {options.map(
+ ({value: optionValue, icon, isDisabled: optionIsDisabled}) => (
+
+
+
+ )
+ )}
);