From 215fe341dcb0edd229225ed2f43fe3951d560d83 Mon Sep 17 00:00:00 2001 From: testingnewapp Date: Wed, 4 Jun 2025 15:33:05 +0700 Subject: [PATCH] add defaultValue property in multiselect.tsx --- registry/default/ui/multiselect.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/registry/default/ui/multiselect.tsx b/registry/default/ui/multiselect.tsx index cc20b897b..2fe551fe2 100644 --- a/registry/default/ui/multiselect.tsx +++ b/registry/default/ui/multiselect.tsx @@ -29,6 +29,7 @@ interface GroupOption { interface MultipleSelectorProps { value?: Option[] defaultOptions?: Option[] + defaultValue?: Option[] /** manually controlled options */ options?: Option[] placeholder?: string @@ -172,6 +173,7 @@ const MultipleSelector = ({ onChange, placeholder, defaultOptions: arrayDefaultOptions = [], + defaultValue, options: arrayOptions, delay, onSearch, @@ -198,7 +200,10 @@ const MultipleSelector = ({ const [isLoading, setIsLoading] = React.useState(false) const dropdownRef = React.useRef(null) // Added this - const [selected, setSelected] = React.useState(value || []) + const isControlled = value !== undefined + const [selected, setSelected] = React.useState( + isControlled ? value! : defaultValue || [] + ) const [options, setOptions] = React.useState( transToGroupOption(arrayDefaultOptions, groupBy) ) @@ -264,10 +269,10 @@ const MultipleSelector = ({ }, [open]) useEffect(() => { - if (value) { - setSelected(value) + if (isControlled) { + setSelected(value!) } - }, [value]) + }, [value, isControlled]) useEffect(() => { /** If `onSearch` is provided, do not trigger options updated. */