Skip to content

SkyCheckboxFilter ​

Кнопка-фільтр із дропдауном, пошуком і мульти-вибором (на базі SkyCheckbox). Оболонку — тригер, панель, позиціювання, закриття — тримає SkyFilterDropdown. Стилі повторюють адмінку Skymarket 1:1.

Демо ​

Це feature-компонент — складений блок, що оркеструє кілька базових компонентів.

Приклад ​

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

const selectedCategories = ref([])
const categoryOptions = [
  { value: 'alc', name: 'Алкоголь' },
  { value: 'food', name: 'Їжа' },
  { value: 'drink', name: 'Напої' },
]
</script>

<template>
  <SkyCheckboxFilter
    v-model="selectedCategories"
    title="Категорії"
    :options="categoryOptions"
  />
  <p>Обрано: {{ selectedCategories.length }}</p>
</template>

Props ​

PropТипЗа замовчуваннямОпис
titleString—Заголовок фільтра (показується у тригері)
optionsArray<{ value, name }>[]Опції для вибору
modelValueArray<String | Number>[]Вибрані значення (v-model)
selectAllLabelString'Обрати все'Лейбл кнопки «Вибрати всі»
clearLabelString'Очистити'Лейбл кнопки «Очистити»
doneLabelString'Готово'Лейбл кнопки «Готово»
searchPlaceholderString'Пошук'Placeholder пошуку
selectAllBooleantrueПоказувати «Обрати все». Вимикай, коли споживач приймає лише одне значення
searchableBooleantrueПоказувати поле пошуку
disabledBooleanfalseВимкнений стан

Формат опцій ​

ts
interface FilterOption {
  value: string | number  // потрапляє в v-model
  name: string            // показується користувачу, за ним іде пошук
}

Що всередині ​

Компонент об'єднує кілька можливостей у готовий фільтр:

  • тригер-кнопка з title і лічильником обраного;
  • дропдаун з пошуком по name;
  • мульти-вибір через SkyCheckbox (array-режим);
  • кнопки «Вибрати всі» / «Очистити» / «Готово».

Позиціювання, закриття по Esc / кліку поза межами та доступність приходять з SkyFilterDropdown. Скрол сторінки більше не локиться: панель перепозиціюється на скрол, тож блокувати сторінку немає потреби.

Кілька фільтрів поруч ​

Типовий сценарій — панель фільтрів над таблицею:

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

const filterCategories = ref([])
const filterStatus = ref([])
</script>

<template>
  <div style="display: flex; gap: 5px; flex-wrap: wrap;">
    <SkyCheckboxFilter v-model="filterCategories" title="Категорії" :options="categoryOptions" />
    <SkyCheckboxFilter v-model="filterStatus" title="Статус" :options="statusOptions" />
  </div>
</template>

Пов'язане ​

  • SkyFilterDropdown — оболонка тригер + панель.
  • SkySelectFilter — той самий фільтр, але з одиничним вибором.
  • SkyCheckbox — базовий чекбокс, на якому побудований фільтр.
  • SkySelectSearch — коли потрібне поле форми, а не фільтр-чіп.

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