Skip to content

H5预览

APP下载

FilterBar 筛选栏

FilterBar 筛选栏组件用于在列表、商品页等场景中快速筛选和切换数据,支持多种筛选类型,灵活组合,满足多样化业务需求。

cl-filter-item

基础属性

属性名说明类型可选值默认值
pt样式透传配置对象PassThrough--
label筛选项标签string-""
value当前值any-
type筛选类型ClFilterItemType"switch" | "select" | "sort""switch"
options下拉类型的选项数据[ClSelectOption]-[]

事件

事件名说明回调参数
change切换时触发(value: number)

PassThrough 样式透传

样式透传配置用于自定义组件内部元素的样式。

属性名说明类型
className组件根元素样式string
label标签元素样式配置PassThroughProps

使用示例

value 属性为必填项,必须显式传递,否则组件无法正常工作。

下拉框类型

  • type 设置为 select
  • value 可以是 stringnumberboolean 类型
  • options 类型定义必须是 ClSelectOption[]
html
<cl-filter-bar>
  <cl-filter-item
    label="综合排序"
    type="select"
    :value="1"
    :options="coreOptions"
    @change="onOptionsChange"
  ></cl-filter-item>
</cl-filter-bar>

排序类型

  • type 设置为 sort
  • value 仅支持 descascnone
html
<cl-filter-bar>
  <cl-filter-item
    label="销量"
    type="sort"
    value="desc"
    @change="onSortChange"
  ></cl-filter-item>
</cl-filter-bar>

开关类型

  • type 设置为 switch
  • value 仅支持 truefalse 布尔值
html
<cl-filter-bar>
  <cl-filter-item
    label="国补"
    type="switch"
    :value="false"
    @change="onSwitchChange"
  ></cl-filter-item>
</cl-filter-bar>

组合

欲了解完整示例,请参见 /pages/demo/data/filter-bar.uvue 文件。

  • 可通过 pt 属性灵活设置宽度等样式
html
<cl-filter-bar>
  <!-- 下拉框 -->
  <cl-filter-item
    label="综合排序"
    type="select"
    :value="1"
    :options="coreOptions"
    :pt="{
        className: 'w-[220rpx] !flex-none'
    }"
    @change="onOptionsChange"
  ></cl-filter-item>

  <!-- 排序 -->
  <cl-filter-item
    label="销量"
    type="sort"
    value="desc"
    @change="onSortChange"
  ></cl-filter-item>

  <!-- 开关 -->
  <cl-filter-item
    label="国补"
    type="switch"
    :value="false"
    @change="onSwitchChange"
  ></cl-filter-item>

  <!-- 自定义 -->
  <view
    class="flex flex-row items-center justify-center flex-1"
    @tap="openFilter"
  >
    <cl-text>筛选</cl-text>
    <cl-icon name="filter-line"></cl-icon>
  </view>
</cl-filter-bar>

<script lang="ts" setup>
  // 下拉框的必须定义类型 ClSelectOption[]
  const coreOptions = ref<ClSelectOption[]>([
    {
      label: "综合排序",
      value: 1,
    },
    {
      label: "价格从高到底",
      value: 2,
    },
    {
      label: "价格从低到高",
      value: 3,
    },
  ]);
</script>