From 0a17d51cc5e93d181610e47f4852e55e8416428a Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 23:27:43 +0000 Subject: [PATCH 1/7] fix: update multi-select to use value prop for dynamic defaults Fixes issue where multi-select parameters don't update their selected values when dynamic defaults change. Changed from using defaultOptions to value prop in MultiSelectCombobox to ensure proper reactivity. Fixes coder/internal#753 Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com> --- .../modules/workspaces/DynamicParameter/DynamicParameter.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx index 5d92fb6d6ae6d..23e7a9eda7b46 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx @@ -476,7 +476,7 @@ const ParameterField: FC = ({ { const values = newValues.map((option) => option.value); onChange(JSON.stringify(values)); From 8ba0b309df7c397083dcd4c20c219ea29ff3eb2e Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 23:31:31 +0000 Subject: [PATCH 2/7] fix: initialize MultiSelectCombobox with value prop Ensures that when using the value prop (controlled mode), the component properly initializes with the provided selected options on first render. Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com> --- site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 359c2af7ccb17..6265cdfea0a7d 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -215,7 +215,7 @@ export const MultiSelectCombobox = forwardRef< const dropdownRef = useRef(null); const [selected, setSelected] = useState( - arrayDefaultOptions ?? [], + value ?? arrayDefaultOptions ?? [], ); const [options, setOptions] = useState( transitionToGroupOption(arrayDefaultOptions, groupBy), From c5436434e49d19c40118474b03db08971abb3f53 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Wed, 23 Jul 2025 16:21:39 +0000 Subject: [PATCH 3/7] fix: revert --- site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 6265cdfea0a7d..359c2af7ccb17 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -215,7 +215,7 @@ export const MultiSelectCombobox = forwardRef< const dropdownRef = useRef(null); const [selected, setSelected] = useState( - value ?? arrayDefaultOptions ?? [], + arrayDefaultOptions ?? [], ); const [options, setOptions] = useState( transitionToGroupOption(arrayDefaultOptions, groupBy), From 310672fe37f2e8405ef3c9746f70504e733d4d73 Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:25:22 +0000 Subject: [PATCH 4/7] fix: reapply MultiSelectCombobox value prop initialization Ensures that when using the value prop (controlled mode), the component properly initializes with the provided selected options on first render. This was reverted in the previous commit but is needed for the fix. Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com> --- site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 359c2af7ccb17..6265cdfea0a7d 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -215,7 +215,7 @@ export const MultiSelectCombobox = forwardRef< const dropdownRef = useRef(null); const [selected, setSelected] = useState( - arrayDefaultOptions ?? [], + value ?? arrayDefaultOptions ?? [], ); const [options, setOptions] = useState( transitionToGroupOption(arrayDefaultOptions, groupBy), From b4516dc3e36addac77f2f9de391297b518ebb3e0 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Wed, 23 Jul 2025 16:39:22 +0000 Subject: [PATCH 5/7] fix: revert 2nd --- site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 6265cdfea0a7d..359c2af7ccb17 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -215,7 +215,7 @@ export const MultiSelectCombobox = forwardRef< const dropdownRef = useRef(null); const [selected, setSelected] = useState( - value ?? arrayDefaultOptions ?? [], + arrayDefaultOptions ?? [], ); const [options, setOptions] = useState( transitionToGroupOption(arrayDefaultOptions, groupBy), From 369599d8e168d6f6ec1db00c76be68b1e6dae346 Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:43:25 +0000 Subject: [PATCH 6/7] fix: use useEffect for value prop handling in MultiSelectCombobox Replaces the problematic reference comparison with proper useEffect to handle controlled value prop updates. This ensures that when the value prop changes, the selected state is properly updated. Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com> --- .../MultiSelectCombobox/MultiSelectCombobox.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 359c2af7ccb17..aa92c2e020ee5 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -223,11 +223,12 @@ export const MultiSelectCombobox = forwardRef< const [inputValue, setInputValue] = useState(""); const debouncedSearchTerm = useDebouncedValue(inputValue, delay || 500); - const [previousValue, setPreviousValue] = useState(value || []); - if (value && value !== previousValue) { - setPreviousValue(value); - setSelected(value); - } + // Handle controlled value prop + useEffect(() => { + if (value) { + setSelected(value); + } + }, [value]); useImperativeHandle( ref, From d875f02b5811eaadf71cbb415c8909d4c3a9be18 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Wed, 23 Jul 2025 17:17:25 +0000 Subject: [PATCH 7/7] fix: handle blink changes --- .../MultiSelectCombobox/MultiSelectCombobox.tsx | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index aa92c2e020ee5..6265cdfea0a7d 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -215,7 +215,7 @@ export const MultiSelectCombobox = forwardRef< const dropdownRef = useRef(null); const [selected, setSelected] = useState( - arrayDefaultOptions ?? [], + value ?? arrayDefaultOptions ?? [], ); const [options, setOptions] = useState( transitionToGroupOption(arrayDefaultOptions, groupBy), @@ -223,12 +223,11 @@ export const MultiSelectCombobox = forwardRef< const [inputValue, setInputValue] = useState(""); const debouncedSearchTerm = useDebouncedValue(inputValue, delay || 500); - // Handle controlled value prop - useEffect(() => { - if (value) { - setSelected(value); - } - }, [value]); + const [previousValue, setPreviousValue] = useState(value || []); + if (value && value !== previousValue) { + setPreviousValue(value); + setSelected(value); + } useImperativeHandle( ref, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy