From 26bda14874f8652fee29da9fd0051ae3d3da2401 Mon Sep 17 00:00:00 2001 From: huangchen1031 Date: Tue, 19 Nov 2024 15:29:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(select):=20=E5=A4=9A=E9=80=89=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A1=86=E5=85=A8=E9=80=89=E5=8A=9F=E8=83=BD=E5=A4=B1?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/select/base/Select.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/select/base/Select.tsx b/src/select/base/Select.tsx index d0a5fe988a..f7d002756f 100644 --- a/src/select/base/Select.tsx +++ b/src/select/base/Select.tsx @@ -192,8 +192,10 @@ const Select = forwardRefWithStatics( return; } - const values = currentOptions.filter((option) => !option.checkAll && !option.disabled) - const selectableOptions = getSelectedOptions(values, multiple, valueType, keys, tmpPropOptions) + const values = currentOptions + .filter((option) => !option.checkAll && !option.disabled) + .map((option) => option[keys?.value || 'value']); + const selectableOptions = getSelectedOptions(values, multiple, valueType, keys, tmpPropOptions); const checkAllValue = !checkAll && selectableOptions.length !== (props.value as Array)?.length ? selectableOptions : []; From 9671b26397596352a0168f687b724ad24346986f Mon Sep 17 00:00:00 2001 From: huangchen1031 Date: Fri, 22 Nov 2024 09:25:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(select):=20=E8=A1=A5=E5=85=85=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=85=A8=E9=80=89=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8D=95=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/select/__tests__/select.test.tsx | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/select/__tests__/select.test.tsx b/src/select/__tests__/select.test.tsx index dde2d4e870..f382849d45 100644 --- a/src/select/__tests__/select.test.tsx +++ b/src/select/__tests__/select.test.tsx @@ -177,6 +177,39 @@ describe('Select 组件测试', () => { }); }); + test('多选全选测试', async () => { + const MultipleSelect = () => { + const [value, setValue] = useState(['apple']); + const onChange = (value) => { + setValue(value); + }; + return ( + + ); + }; + + const { getByText } = render(); + + fireEvent.click(document.querySelector('.t-input')); + + // 点击全选,input 展示 Apple、Banana、Orange 选项 + fireEvent.click(getByText('All')); + expect(document.querySelector(selectSelector)).toHaveTextContent('Apple'); + expect(document.querySelector(selectSelector)).toHaveTextContent('Banana'); + expect(document.querySelector(selectSelector)).toHaveTextContent('Orange'); + + // 再次点击全选,input 清空选项 + fireEvent.click(getByText('All')); + expect(document.querySelector(selectSelector)).not.toHaveTextContent('Apple'); + expect(document.querySelector(selectSelector)).not.toHaveTextContent('Banana'); + expect(document.querySelector(selectSelector)).not.toHaveTextContent('Orange'); + }); + test('分组选择器测试', async () => { const OptionGroupSelect = () => { const [value, setValue] = useState('apple');