From 5962d3de05cfedc4cd074d6e59d817e45c98e2a6 Mon Sep 17 00:00:00 2001 From: Bucky Schwarz Date: Tue, 3 Dec 2024 13:10:41 -0500 Subject: [PATCH] CheckboxMultiSelect: add variant option to CheckboxMultiSelect.Item (#503) --- .../Select/CheckboxMultiSelect.stories.tsx | 45 +++++++++++++++++++ .../Select/common/InternalSelect.tsx | 22 ++++++++- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/components/Select/CheckboxMultiSelect.stories.tsx b/src/components/Select/CheckboxMultiSelect.stories.tsx index 51f4c6f8..e93baf33 100644 --- a/src/components/Select/CheckboxMultiSelect.stories.tsx +++ b/src/components/Select/CheckboxMultiSelect.stories.tsx @@ -133,3 +133,48 @@ ${ }, }, }; + +export const CheckboxMultiSelectVariants = { + render: () => { + const [selectedCount, setSetlectedCount] = useState(0); + + const label = `Selected (${selectedCount})`; + + const handleSelect = (selectedVariants: Array) => { + setSetlectedCount(selectedVariants.length); + }; + + return ( + + + Variant 1 + + + Variant 2 + + + Variant 4 + + + Variant 6 + + + ); + }, +}; diff --git a/src/components/Select/common/InternalSelect.tsx b/src/components/Select/common/InternalSelect.tsx index 9951c34c..9671a5fa 100644 --- a/src/components/Select/common/InternalSelect.tsx +++ b/src/components/Select/common/InternalSelect.tsx @@ -22,7 +22,14 @@ import { } from "./types"; import { Error, FormElementContainer, FormRoot } from "@/components/commonElement"; import { Portal } from "@radix-ui/react-popover"; -import { Checkbox, Icon, IconButton, Label, Separator } from "@/components"; +import { + Checkbox, + CheckboxVariants, + Icon, + IconButton, + Label, + Separator, +} from "@/components"; import { SelectPopoverContent, SearchBar, @@ -594,9 +601,16 @@ export const SelectItem = forwardRef( } ); +export type MultiSelectCheckboxItemProps = SelectItemProps & { + variant?: CheckboxVariants; +}; + SelectItem.displayName = "Select.Item"; -export const MultiSelectCheckboxItem = forwardRef( +export const MultiSelectCheckboxItem = forwardRef< + HTMLDivElement, + MultiSelectCheckboxItemProps +>( ( { disabled = false, @@ -608,6 +622,7 @@ export const MultiSelectCheckboxItem = forwardRef )} {icon && iconDir === "end" && ( @@ -691,6 +707,7 @@ export const MultiSelectCheckboxItem = forwardRef )} @@ -701,6 +718,7 @@ export const MultiSelectCheckboxItem = forwardRef )}