From e55ec90c9459034a868a18b171388aa406d47bea Mon Sep 17 00:00:00 2001 From: zyf <1246271707@qq.com> Date: Sun, 1 Sep 2024 22:26:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix(select):=E8=A7=A3=E5=86=B3=E5=88=86?= =?UTF-8?q?=E7=BB=84=E6=97=B6=E6=8E=92=E5=BA=8F=E5=A4=B1=E6=95=88=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Select.tsx | 19 +++++++++++++++---- tests/Select.test.tsx | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/Select.tsx b/src/Select.tsx index 59f35f97..b3f244ab 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -431,15 +431,26 @@ const Select = React.forwardRef { + const sortedOptions = [...options].sort((a, b) => + filterSort(a, b, { searchValue: mergedSearchValue }), + ); + return sortedOptions.map((item) => { + if (Array.isArray(item.options)) { + return { + ...item, + options: sorter(item.options), + }; + } + return { ...item }; + }); + }; const orderedFilteredOptions = React.useMemo(() => { if (!filterSort) { return filledSearchOptions; } - return [...filledSearchOptions].sort((a, b) => - filterSort(a, b, { searchValue: mergedSearchValue }), - ); + return sorter(filledSearchOptions); }, [filledSearchOptions, filterSort, mergedSearchValue]); const displayOptions = React.useMemo( diff --git a/tests/Select.test.tsx b/tests/Select.test.tsx index 361a55e6..8c5e1f4d 100644 --- a/tests/Select.test.tsx +++ b/tests/Select.test.tsx @@ -1947,6 +1947,41 @@ describe('Select.Basic', () => { 'Communicated', ); }); + it('filterSort should work with search value when grouping', () => { + const { container } = render( + ); From 8826c66fb8c94da8d5ed29c83d3b55f5fcaf4ea6 Mon Sep 17 00:00:00 2001 From: zyf <1246271707@qq.com> Date: Mon, 2 Sep 2024 13:07:04 +0800 Subject: [PATCH 2/5] =?UTF-8?q?sorter=E5=8F=82=E6=95=B0=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Select.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Select.tsx b/src/Select.tsx index b3f244ab..a8124b49 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -431,8 +431,8 @@ const Select = React.forwardRef { - const sortedOptions = [...options].sort((a, b) => + const sorter = (inputOptions: DefaultOptionType[]) => { + const sortedOptions = [...inputOptions].sort((a, b) => filterSort(a, b, { searchValue: mergedSearchValue }), ); return sortedOptions.map((item) => { From 7429a9e4599e842823defd9e2fe342db0e8f2493 Mon Sep 17 00:00:00 2001 From: zyf <1246271707@qq.com> Date: Tue, 3 Sep 2024 10:33:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Select.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Select.tsx b/src/Select.tsx index a8124b49..2d5af416 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -442,7 +442,7 @@ const Select = React.forwardRef { From 766c3bf773b9a41b85c1e141070bfb3d207512eb Mon Sep 17 00:00:00 2001 From: zyf <81416635+Zyf665@users.noreply.github.com> Date: Tue, 3 Sep 2024 19:27:58 +0800 Subject: [PATCH 4/5] Update src/Select.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/Select.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Select.tsx b/src/Select.tsx index 2d5af416..88fa5aaa 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -439,7 +439,7 @@ const Select = React.forwardRef 0 ? sorter(item.options) : item.options, }; } return item; From 488ab4743cb11082cb9ed07975ccce73ae34dd9a Mon Sep 17 00:00:00 2001 From: afc163 Date: Tue, 3 Sep 2024 22:09:18 +0800 Subject: [PATCH 5/5] Update tests/Select.test.tsx --- tests/Select.test.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Select.test.tsx b/tests/Select.test.tsx index 8c5e1f4d..54062490 100644 --- a/tests/Select.test.tsx +++ b/tests/Select.test.tsx @@ -1947,6 +1947,7 @@ describe('Select.Basic', () => { 'Communicated', ); }); + it('filterSort should work with search value when grouping', () => { const { container } = render(