Files
element-plus/docs/examples/select-v2/remote-search.vue
Dun Lu 9cd07b798e feat(components): [select-v2] add remote-show-suffix prop (#22885)
* fix(components): [selectV2] fix computed logic&add remoteShowSuffix prop

* fix(components): add test case and add prop in docs

* docs(components): [select-v2](remote) add example and version info

---------

Co-authored-by: rzzf <cszhjh@gmail.com>
2025-11-25 10:16:49 +08:00

119 lines
2.1 KiB
Vue

<template>
<div class="flex flex-wrap">
<div class="m-4">
<p>default</p>
<el-select-v2
v-model="value"
style="width: 240px"
multiple
filterable
remote
:remote-method="remoteMethod"
clearable
:options="options"
:loading="loading"
placeholder="Please enter a keyword"
/>
</div>
<div class="m-4">
<p>use remote-show-suffix</p>
<el-select-v2
v-model="value"
style="width: 240px"
multiple
filterable
remote
:remote-method="remoteMethod"
remote-show-suffix
clearable
:options="options"
:loading="loading"
placeholder="Please enter a keyword"
/>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const states = [
'Alabama',
'Alaska',
'Arizona',
'Arkansas',
'California',
'Colorado',
'Connecticut',
'Delaware',
'Florida',
'Georgia',
'Hawaii',
'Idaho',
'Illinois',
'Indiana',
'Iowa',
'Kansas',
'Kentucky',
'Louisiana',
'Maine',
'Maryland',
'Massachusetts',
'Michigan',
'Minnesota',
'Mississippi',
'Missouri',
'Montana',
'Nebraska',
'Nevada',
'New Hampshire',
'New Jersey',
'New Mexico',
'New York',
'North Carolina',
'North Dakota',
'Ohio',
'Oklahoma',
'Oregon',
'Pennsylvania',
'Rhode Island',
'South Carolina',
'South Dakota',
'Tennessee',
'Texas',
'Utah',
'Vermont',
'Virginia',
'Washington',
'West Virginia',
'Wisconsin',
'Wyoming',
]
const list = states.map((item): ListItem => {
return { value: `value:${item}`, label: `label:${item}` }
})
interface ListItem {
value: string
label: string
}
const value = ref([])
const options = ref<ListItem[]>([])
const loading = ref(false)
const remoteMethod = (query: string) => {
if (query !== '') {
loading.value = true
setTimeout(() => {
loading.value = false
options.value = list.filter((item) => {
return item.label.toLowerCase().includes(query.toLowerCase())
})
}, 200)
} else {
options.value = []
}
}
</script>