Skip to content

Autocomplete ​

Takliflar dropdown i bilan input. Klaviatura navigatsiyasi bilan siz yozgan sari variantlarni filtrlaydi.

vue
<script setup>
import { ref } from 'vue'

const value = ref('')
const options = ['Apple', 'Banana', 'Cherry', 'Date', 'Grape', 'Mango', 'Orange']
</script>

<template>
  <VxAutocomplete v-model="value" :options="options" placeholder="Mevalarni qidirish..." clearable />
</template>

Object Options ​

value va label maydonlari bilan obyektlarni uzating.

vue
<script setup>
const countries = [
  { value: 'us', label: 'United States' },
  { value: 'gb', label: 'United Kingdom' },
  { value: 'de', label: 'Germany' },
]
</script>

<template>
  <VxAutocomplete v-model="value" :options="countries" placeholder="Davlatlarni qidirish..." />
</template>

Select Event ​

To'liq tanlangan elementni olish uchun @select ni tinglang.

vue
<template>
  <VxAutocomplete v-model="value" :options="countries" @select="onSelect" />
</template>

Sizes ​

vue
<template>
  <VxAutocomplete size="sm" placeholder="Kichik" />
  <VxAutocomplete placeholder="Standart" />
  <VxAutocomplete size="lg" placeholder="Katta" />
</template>

Disabled Options ​

vue
<script setup>
const options = [
  { value: 'active', label: 'Active option' },
  { value: 'disabled', label: 'Disabled option', disabled: true },
]
</script>

<template>
  <VxAutocomplete :options="options" trigger-on-focus />
</template>

Trigger on Focus ​

Hatto yozmasdan ham input fokuslanganda barcha takliflarni ko'rsatish.

vue
<template>
  <VxAutocomplete :options="options" trigger-on-focus placeholder="Hammasini ko'rish uchun bosing..." />
</template>

Remote / Async ​

Async ma'lumot olish uchun fetch-suggestions dan foydalaning. debounce bilan yaxshi mos keladi.

vue
<script setup>
async function fetchUsers(query) {
  const res = await fetch(`/api/users?q=${query}`)
  return res.json()
}
</script>

<template>
  <VxAutocomplete :fetch-suggestions="fetchUsers" :debounce="300" placeholder="Foydalanuvchilarni qidirish..." />
</template>

Disabled ​

vue
<template>
  <VxAutocomplete :options="options" disabled />
</template>

Custom Option Slot ​

vue
<template>
  <VxAutocomplete :options="countries" trigger-on-focus>
    <template #option="{ item, highlight }">
      <span class="flag">{{ item.value.toUpperCase() }}</span>
      <span v-html="highlight(item.label)" />
    </template>
  </VxAutocomplete>
</template>

Props ​

PropTypeDefaultDescription
modelValuestring''Input qiymati (v-model)
optionsstring[] | AutocompleteOption[][]Statik variantlar ro'yxati
placeholderstring''Placeholder matni
disabledbooleanfalseInput ni o'chirib qo'yish
clearablebooleanfalseTozalash tugmasini ko'rsatish
size'sm' | 'default' | 'lg''default'Input o'lchami
debouncenumber0Debounce kechikishi (ms da)
highlightbooleantrueMos kelgan matnni ajratib ko'rsatish
emptyTextstring'No results'Mos keladiganlar bo'lmaganda matn
fetchSuggestions(query: string) => Option[] | Promise<Option[]>—Async ma'lumot olish funksiyasi
triggerOnFocusbooleanfalseFokuslanganda takliflarni ko'rsatish
valueKeystring'value'Variant obyektidan qiymat sifatida ishlatiladigan kalit

Events ​

EventTypeDescription
update:modelValue(value: string) => voidInput qiymati o'zgardi
select(item: AutocompleteOption) => voidVariant tanlandi
focus(e: FocusEvent) => voidInput fokuslandi
blur(e: FocusEvent) => voidInput fokusdan chiqdi
clear() => voidInput tozalandi

Slots ​

SlotPropsDescription
option{ item, index, highlight }Maxsus variant renderlashi
prefix—Maxsus prefiks ikonkasi