filterable.vue 880 B

12345678910111213141516171819202122232425262728293031323334
  1. <template>
  2. <el-transfer v-model="value" filterable :filter-method="filterMethod" filter-placeholder="State Abbreviations" :data="data" />
  3. </template>
  4. <script lang="ts" setup>
  5. import { ref } from 'vue'
  6. interface Option {
  7. key: number
  8. label: string
  9. initial: string
  10. }
  11. const generateData = () => {
  12. const data: Option[] = []
  13. const states = ['California', 'Illinois', 'Maryland', 'Texas', 'Florida', 'Colorado', 'Connecticut ']
  14. const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
  15. states.forEach((city, index) => {
  16. data.push({
  17. label: city,
  18. key: index,
  19. initial: initials[index],
  20. })
  21. })
  22. return data
  23. }
  24. const data = ref<Option[]>(generateData())
  25. const value = ref([])
  26. const filterMethod = (query, item) => {
  27. return item.initial.toLowerCase().includes(query.toLowerCase())
  28. }
  29. </script>