diff --git a/packages/components/select-v2/__tests__/select.test.ts b/packages/components/select-v2/__tests__/select.test.ts index 8c772c111d..c09ded2488 100644 --- a/packages/components/select-v2/__tests__/select.test.ts +++ b/packages/components/select-v2/__tests__/select.test.ts @@ -145,6 +145,7 @@ const createSelect = ( :scrollbar-always-on="scrollbarAlwaysOn" :teleported="teleported" :tabindex="tabindex" + :default-first-option="defaultFirstOption" ${ options.methods && options.methods.filterMethod ? `:filter-method="filterMethod"` @@ -196,6 +197,7 @@ const createSelect = ( popperAppendToBody: undefined, teleported: undefined, tabindex: undefined, + defaultFirstOption: false, ...(options.data && options.data()), } }, @@ -1583,6 +1585,33 @@ describe('Select', () => { expect(result).toBeTruthy() }) + it('the scroll position of the dropdown should be correct when use filterable and default-first-option', async () => { + const options = Array.from({ length: 1000 }).map((_, idx) => ({ + value: 999 - idx, + label: `options ${999 - idx}`, + })) + const wrapper = createSelect({ + data() { + return { + value: 500, + options, + filterable: true, + defaultFirstOption: true, + } + }, + }) + await nextTick() + await wrapper.find(`.${WRAPPER_CLASS_NAME}`).trigger('click') + const optionsDoms = Array.from( + document.querySelectorAll(`.${OPTION_ITEM_CLASS_NAME}`) + ) + const result = optionsDoms.some((option) => { + const text = option.textContent + return text === 'options 500' + }) + expect(result).toBeTruthy() + }) + it('emptyText error show', async () => { const wrapper = createSelect({ data() { diff --git a/packages/components/select-v2/src/useSelect.ts b/packages/components/select-v2/src/useSelect.ts index fb58c69265..674b08de6c 100644 --- a/packages/components/select-v2/src/useSelect.ts +++ b/packages/components/select-v2/src/useSelect.ts @@ -792,7 +792,7 @@ const useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => { states.isBeforeHide = false return nextTick(() => { if (~indexRef.value) { - scrollToItem(states.hoveringIndex) + scrollToItem(indexRef.value) } }) }