ComboBox.vue 740 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <PatchedAutoComplete
  3. v-model="model"
  4. :inputId="inputId"
  5. :suggestions="currentSuggestions"
  6. :minLength="0"
  7. :showEmptyMessage="false"
  8. :completeOnFocus="true"
  9. fluid
  10. @complete="(event) => onComplete(event)"
  11. />
  12. </template>
  13. <script setup>
  14. const model = defineModel()
  15. const props = defineProps({
  16. inputId: {
  17. type: String,
  18. required: false,
  19. default: () => useId()
  20. },
  21. suggestions: {
  22. type: Array,
  23. required: true
  24. }
  25. })
  26. const currentSuggestions = ref(_cloneDeep(props.suggestions))
  27. function onComplete({ query }) {
  28. currentSuggestions.value = _filter(props.suggestions, (value) =>
  29. _startsWith(_lowerCase(value), _lowerCase(query))
  30. )
  31. }
  32. </script>
  33. <style scoped></style>