Skip to content

SkySearchInput ​

Поле пошуку з іконкою лупи та кнопкою очищення. Має режим collapsible — згорнуте до іконки, розгортається по кліку і згортається назад, коли клікнули поза ним і поле порожнє.

Демо ​

Приклад ​

vue
<script setup>
import { ref, computed } from 'vue'
import { SkySearchInput } from '@skyservice-developers/vue-dev-kit'

const query = ref('')
const products = ['Кава', 'Капучино', 'Лате', 'Чай']

const filtered = computed(() =>
  products.filter((p) => p.toLowerCase().includes(query.value.trim().toLowerCase())),
)
</script>

<template>
  <SkySearchInput v-model="query" placeholder="Пошук товару…" />
  <SkySearchInput v-model="query" placeholder="Пошук…" collapsible />
</template>

Props ​

PropТипЗа замовчуваннямОпис
modelValueString''Значення (v-model)
placeholderString''Текст-заглушка
idString—HTML id інпута
disabledBooleanfalseВимкнений стан
collapsibleBooleanfalseЗгорнуте до іконки поле, що розгортається по кліку
clearAriaLabelString'Очистити'aria-label кнопки очищення

Events ​

EventPayloadОпис
update:modelValuestringEmit при введенні тексту і при очищенні

Режим collapsible ​

Зручний, коли пошук ділить рядок із кнопками — у згорнутому стані він займає ширину іконки.

vue
<SkySearchInput v-model="query" collapsible placeholder="Пошук…" />

Правила поведінки:

ДіяРезультат
Клік по згорнутому полю або по іконціРозгортає і ставить фокус в інпут
Клік по іконці в розгорнутому станіЗгортає — але лише якщо поле порожнє
Клік поза компонентомЗгортає, якщо поле порожнє; із текстом лишається розгорнутим
Клік по «хрестику» з текстомОчищає значення й лишає фокус в інпуті
Клік по «хрестику» на порожньому поліЗгортає поле

Непорожній пошук ніколи не згортається сам — інакше користувач втратив би з очей активний фільтр.

Пошук — відповідальність застосунку ​

Компонент лише відображає поле й керує його станом. Фільтрація даних робиться зовні — зазвичай через computed:

js
const filtered = computed(() =>
  items.value.filter((i) => i.name.toLowerCase().includes(query.value.trim().toLowerCase())),
)

Для довгих серверних списків додайте debounce на боці застосунку — компонент емітить update:modelValue на кожен ввід.

Пов'язане ​

  • SkySelectSearch — пошук усередині дропдауна вибору.
  • SkyInput — звичайне текстове поле зі станами валідації.

Опубліковано під ліцензією MIT.