From bad36eb8a4b934310e662107a4f1f72e817a6221 Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Wed, 27 Nov 2024 13:48:07 -0800 Subject: [PATCH 1/2] [Select]: fix `onValueChange` will call with empty string when side form --- packages/react/select/src/Select.stories.tsx | 57 ++++++++++++++++++++ packages/react/select/src/Select.tsx | 3 +- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/packages/react/select/src/Select.stories.tsx b/packages/react/select/src/Select.stories.tsx index 6fe46281e..1a3e610b3 100644 --- a/packages/react/select/src/Select.stories.tsx +++ b/packages/react/select/src/Select.stories.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import * as ReactDOM from 'react-dom'; import { css } from '../../../../stitches.config'; import * as Select from '@radix-ui/react-select'; import { Label } from '@radix-ui/react-label'; @@ -511,6 +512,62 @@ export const WithinForm = () => { ); }; +export const RefreshItemsWithinForm = function SelectDemo() { + const [value, setValue] = React.useState('apple'); + const [hide, setHide] = React.useState(false); + + return ( +
e.preventDefault()}> +

current value: {value}

+ + + + + + + + + + + {hide ? null : ( + <> + + Apple + + + Banana + + + Blueberry + + + Grapes + + + Pineapple + + + )} + + + + +
+ ); +}; + export const DisabledWithinForm = () => { const [data, setData] = React.useState({}); diff --git a/packages/react/select/src/Select.tsx b/packages/react/select/src/Select.tsx index 5e848d8ca..2935fcd9b 100644 --- a/packages/react/select/src/Select.tsx +++ b/packages/react/select/src/Select.tsx @@ -1615,7 +1615,8 @@ const BubbleSelect = React.forwardRef select.dispatchEvent(event)); } }, [prevValue, value]); From 24ab3f7586099192baf261a78343be695f0c7f3b Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Tue, 3 Dec 2024 20:12:24 -0800 Subject: [PATCH 2/2] [Select]: fix `onValueChange` will call with empty string when side form --- packages/react/select/src/Select.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react/select/src/Select.tsx b/packages/react/select/src/Select.tsx index 2935fcd9b..e3a227d86 100644 --- a/packages/react/select/src/Select.tsx +++ b/packages/react/select/src/Select.tsx @@ -1616,7 +1616,8 @@ const BubbleSelect = React.forwardRef select.dispatchEvent(event)); + const id = window.setTimeout(() => select.dispatchEvent(event)); + return () => window.clearTimeout(id); } }, [prevValue, value]);