BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v7

    • О фреймворке
    • Что изменилось в 7 версии
    • Структура
    • Доступ к участкам проекта
    • Разворачивание нового проекта
  • Backend

    • Настройки проекта Conf.php
    • Настройки модуля Module.php
    • Настройки composer
    • Функции фреймворка
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • Core класс
    • Route и работа с ними
    • Request и работа с ними
    • Middleware и работа с ними
    • Class и работа с ними
    • Api model и работа с ними
    • Template и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioHash и работа с кешем
    • $ioXCache и работа с кешем
    • $iodb и работа с базой данных
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • Twig контекст
    • Настройка NPM
    • Сборка Frontend составляющей
    • Обращение к Api через JS
    • Хранилище (store)
    • Навигация в хосте
    • Навигация в микрофронтенде
    • Параметры микрофронтенда
    • Проверка полномочий
  • Tailux UI Компоненты

    • Базовый UI

      • AvatarDot
      • Avatar
      • Badge
      • Button
      • Card
      • ConfirmModal
      • Divider
      • Highlight
      • Tag
    • Загрузка

      • Circlebar
      • Progress
      • Skeleton
      • Spinner
    • Навигация

      • Accordion
      • AccordionButton
      • AccordionHeader
      • AccordionItem
      • AccordionPanel
      • AccordionProvider
      • Pagination
      • PaginationControl
      • PaginationItems
      • PaginationDots
      • PaginationFirst
      • PaginationLast
      • PaginationNext
      • PaginationPrevious
    • Отображение данных

      • Box
      • Collapse
      • ContextualHelp
      • ScrollShadow
      • Timeline
      • TimelineItem
    • Элементы таблиц

      • Table
      • CollapsibleSearch
      • ColumnFilter
      • CopyableCell
      • DateFilter
      • FacetedFilter
      • FilterSelector
      • PaginationSection
      • RadioFilter
      • RangeFilter
      • ResponsiveFilter
      • RoleFilter
      • SelectedRowsActions
      • TableColumnVisibility
      • TableSettings
      • TableSortIcon
    • Элементы форм

      • Checkbox
      • Combobox
      • DatePicker
      • Filepond
      • Input
      • Listbox
      • Radio
      • Range
      • Select
      • StyledSwitch
      • Swap
      • SwapOn
      • SwapOff
      • Switch
      • Textarea
      • TextEditor
      • Upload

ResponsiveFilter

Компонент ResponsiveFilter — это адаптивная панель фильтров, которая автоматически меняет поведение в зависимости от ширины экрана. На мобильных устройствах открывается как нижний шторка (bottom sheet), на десктопах — как выпадающая панель с автоматическим позиционированием.

Обзор

  • Основное назначение: адаптивный контейнер для фильтров таблицы или списка.
  • Ключевые возможности:
    • Мобильный режим (< 640px): кнопка + нижняя шторка с оверлеем и анимацией снизу.
    • Десктопный режим (≥ 640px): кнопка + выпадающая панель с позиционированием.
    • Автоматический выбор позиции панели (сверху/снизу) в зависимости от доступного пространства.
    • Перерасчёт позиции при скролле и ресайзе.
    • Оверлей для закрытия по клику вне панели.
    • Кастомизация кнопки через слот button или проп buttonContent.

API компонента

Props

ПропТипПо умолчаниюОписание
buttonContentString | Object | FunctionСодержимое кнопки-триггера. Может быть заменено через слот button.
anchorObject{ to: 'bottom start', gap: 12 }Настройки позиционирования для десктопной панели.
classNamesObject{}Объект для кастомизации классов кнопки. Ключ: button.

Слоты

Имя слотаОписание
buttonКастомное содержимое кнопки-триггера. Заменяет buttonContent.
defaultСодержимое выпадающей панели/шторки (фильтры).

Режимы работы

Мобильный режим (< 640px)

  • Кнопка: Button с variant="outlined".
  • Панель: фиксированная снизу шторка с закруглёнными верхними углами.
  • Анимация: появление снизу (translate-y-full → translate-y-0).
  • Оверлей: полупрозрачный фон с блюром.
  • Портал: телепортируется в body с z-index: 101.

Десктопный режим (≥ 640px)

  • Кнопка: Button с variant="outlined" и пунктирной рамкой.
  • Панель: абсолютно позиционированная панель с тенью.
  • Анимация: появление с небольшим сдвигом вниз (translate-y-2 → translate-y-0).
  • Оверлей: прозрачный, для закрытия по клику вне панели.
  • Позиционирование: автоматически выбирает отображение сверху или снизу от кнопки.

Состояния кнопки

СостояниеСтиль
ЗакрытаПунктирная рамка (border-dashed).
ОткрытаСплошная рамка с цветным кольцом (border-primary-600 ring-3 ring-primary-500/50).

Базовое использование

<ResponsiveFilter button-content="Фильтры">
    <div class="p-4">
        <h4 class="mb-3 font-medium">Фильтры</h4>
        <div class="space-y-3">
            <Select v-model="status" label="Статус" :data="statuses" />
            <Select v-model="category" label="Категория" :data="categories" />
            <Button color="primary" class="w-full" @click="applyFilters">Применить</Button>
        </div>
    </div>
</ResponsiveFilter>
Prev
RangeFilter
Next
RoleFilter