From 239bc8226ffef8899f28f4763f628b91c3b6115e Mon Sep 17 00:00:00 2001 From: wzc520pyfm <1528857653@qq.com> Date: Thu, 27 Apr 2023 15:00:13 +0800 Subject: [PATCH 1/3] fix(components): [select] fix error when creating option closed #12634 --- packages/components/select/src/select.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/select/src/select.vue b/packages/components/select/src/select.vue index d34e91f9b179e..259bd9d7d50ca 100644 --- a/packages/components/select/src/select.vue +++ b/packages/components/select/src/select.vue @@ -244,8 +244,8 @@ :view-class="nsSelect.be('dropdown', 'list')" :class="scrollbarKls" > - + From 930917038bac2481177ab34b395958e4fbb42d29 Mon Sep 17 00:00:00 2001 From: wzc520pyfm <1528857653@qq.com> Date: Thu, 27 Apr 2023 22:12:08 +0800 Subject: [PATCH 2/3] test(components): [select] add test for create and default first option --- .../select/__tests__/select.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/components/select/__tests__/select.test.ts b/packages/components/select/__tests__/select.test.ts index 14a5c08e77ccc..d7de4339ee608 100644 --- a/packages/components/select/__tests__/select.test.ts +++ b/packages/components/select/__tests__/select.test.ts @@ -858,6 +858,41 @@ describe('Select', () => { expect((wrapper.vm as any).value).toBe('new') }) + test('allow create with default first option', async () => { + wrapper = getSelectVm( + { + filterable: true, + allowCreate: true, + defaultFirstOption: true, + }, + [ + { + value: 'HTML', + label: 'HTML', + }, + { + value: 'CSS', + label: 'CSS', + }, + { + value: 'JavaScript', + label: 'JavaScript', + }, + ] + ) + const select = wrapper.findComponent({ name: 'ElSelect' }) + const selectVm = select.vm as any + const input = wrapper.find('input') + input.element.focus() + selectVm.selectedLabel = 'Java' + selectVm.debouncedOnInputChange() + await nextTick() + const options = [...getOptions()] + expect(Array.from(options[0].classList)).toContain('hover') + options[0].click() + expect((wrapper.vm as any).value).toBe('Java') + }) + test('allow create async option', async () => { const options = [ { From 66ee3eb790ca292b9126d402e6f08b4cdb79ecb9 Mon Sep 17 00:00:00 2001 From: wzc520pyfm <1528857653@qq.com> Date: Sun, 30 Jul 2023 18:50:14 +0800 Subject: [PATCH 3/3] fix(components): [select] compatible #11297 --- packages/components/select/src/select.vue | 2 +- packages/components/select/src/useSelect.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/select/src/select.vue b/packages/components/select/src/select.vue index 259bd9d7d50ca..d34e91f9b179e 100644 --- a/packages/components/select/src/select.vue +++ b/packages/components/select/src/select.vue @@ -244,8 +244,8 @@ :view-class="nsSelect.be('dropdown', 'list')" :class="scrollbarKls" > + - diff --git a/packages/components/select/src/useSelect.ts b/packages/components/select/src/useSelect.ts index d5a118a2a8d42..6a85e1a362f0e 100644 --- a/packages/components/select/src/useSelect.ts +++ b/packages/components/select/src/useSelect.ts @@ -181,7 +181,7 @@ export const useSelect = (props, states: States, ctx) => { newList.push(list[index]) } }) - return newList.length ? newList : list + return newList.length >= list.length ? newList : list }) const cachedOptionsArray = computed(() =>