Skip to content

FilterBar 筛选栏

电商列表页常用的筛选与排序工具栏,支持吸顶、排序切换、下拉筛选面板及内联筛选模式。

基础用法

设置 sortsfilters 即可开启基础的排序和筛选功能。

当前排序: { "key": "default", "order": "desc" }

当前筛选: {}

基础用法

内联筛选模式

如果不希望使用下拉面板,可以将 filter-in-panel 设置为 false

服务
内联模式

高级电商布局 (自定义抽屉 & 视图切换)

在大型电商或商品密集型应用中,最右侧的按钮常抛出自定义弹窗事件,而且通常附带 商品列表/网格切换按钮价格输入框面板。组件底层均已预留支持。

当前排序: { "key": "default", "order": "desc" } | 当前筛选: { "minPrice": null, "maxPrice": null }

高级布局与定制

在 Nuxt 中使用

本组件完美支持 Nuxt 3/4 SSR 数据在服务端的预渲染。

当前排序: { "key": "default", "order": "desc" } | 当前筛选: { "minPrice": null, "maxPrice": null }

Nuxt 中使用
ts
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@yh-ui/nuxt'],
  yhUI: {
    // 默认已自动按需引入,无需特殊配置
  }
})

API

Props

参数说明类型默认值
sorts排序配置列表FilterSortItem[][]
filters筛选器配置列表FilterItem[][]
sort当前排序状态FilterSort{ key: null, order: null }
filter-value当前筛选值FilterValue{}
view-type视图网格布局 (v-model:viewType)'list' | 'grid''list'
show-all是否展示「全部」tabbooleantrue
sticky是否吸顶booleanfalse
filter-in-panel是否在弹出面板中展示筛选器booleantrue
show-global-filter是否展示最右侧全局筛选漏斗按钮booleantrue
show-view-toggle是否展示列表/网格视图切换图标booleanfalse
sticky-offset吸顶时的偏移距离 (px)number0
theme-overrides自定义主题 CSS 变量覆盖Record<string, string>{}

Events (事件)

事件名说明回调参数
sort-change排序状态变化时触发(sort: FilterSort)
filter-change筛选值变化时触发(val: FilterValue)
view-change视图模式切换时触发(val: 'list' | 'grid')
reset面板点击全局重置时触发-
reset-panel单个筛选面板内点击重置时触发(filter: FilterItem, val: FilterValue)
confirm点击确认筛选时触发(val: FilterValue)
open-filter点击最右侧漏斗图标触发-

Slots (插槽)

插槽名说明参数
panel-content完全自定义筛选面板内容{ filter, value, toggle }
view-icon自定义列表/网格切换图标{ viewType }
filter-icon自定义最右侧筛选漏斗图标-
extra自定义右侧扩展区域内容-

Expose

当前组件未暴露公开实例方法或属性。

主题变量 (CSS Variables)

变量名默认值说明
--yh-filter-bar-bgvar(--yh-bg-color)根节点背景色
--yh-filter-bar-bordervar(--yh-border-color-lighter)根节点边框颜色
--yh-filter-bar-height44px工具栏高度
--yh-filter-bar-tab-colorvar(--yh-text-color-regular)未激活标签文字颜色
--yh-filter-bar-tab-active-colorvar(--yh-color-primary)激活标签文字颜色
--yh-filter-bar-tab-active-bgvar(--yh-color-primary-light-9)激活标签背景
--yh-filter-bar-tab-radiusvar(--yh-radius-base)标签圆角
--yh-filter-bar-badge-bgvar(--yh-color-danger)角标背景色
--yh-filter-bar-panel-bgvar(--yh-bg-color)面板背景色
--yh-filter-bar-panel-shadow0 4px 20px var(--yh-shadow-color)面板阴影
--yh-filter-bar-panel-opt-bgvar(--yh-fill-color-light)面板选项默认背景
--yh-filter-bar-panel-opt-active-bgvar(--yh-color-primary-light-9)面板选项激活背景
--yh-filter-bar-panel-opt-active-colorvar(--yh-color-primary)面板选项激活文字颜色
--yh-filter-bar-panel-opt-active-bordervar(--yh-color-primary)面板选项激活边框颜色
--yh-filter-bar-z-index100根节点层级

类型导出

名称说明
YhFilterBarProps组件 Props 类型
YhFilterBarEmits组件事件类型
YhFilterBarSlots组件插槽类型
YhFilterSortOrder排序方向联合类型
YhFilterSortItem排序项类型
YhFilterType筛选类型联合类型
YhFilterOption筛选选项类型
YhFilterItem筛选项类型
YhFilterValue筛选值类型
YhFilterSort排序状态类型
YhFilterBarInstance组件实例类型

Released under the MIT License.