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(() =>