Skip to content

SelectPicker 单复选选择器

用于从一组选项中进行单选或多选,通常配合外部单元格或按钮控制弹层显示。

组件类型

基本用法

默认 typecheckboxv-model 的值类型为数组。通常配合 v-model:visible 控制弹层开关。

html
<wd-cell title="选择地址" :value="getDisplayValue(value)" is-link @click="show = true" />
<wd-select-picker v-model="value" v-model:visible="show" :columns="columns" @confirm="handleConfirm" />
ts
const columns = ref([
  { value: '101', label: '男装' },
  { value: '102', label: '奢侈品' },
  { value: '103', label: '女装' }
])

const value = ref<string[]>(['101'])
const show = ref(false)

function handleConfirm({ value }: { value: string[] }) {
  console.log(value)
}

类型切换

设置 type="radio" 开启单选模式,此时 v-model 的值类型为 stringnumberboolean

html
<wd-select-picker type="radio" v-model="value" v-model:visible="show" :columns="columns" />

组件状态

禁用选项

选项数据支持 disabled 字段,用于禁用某一项。

html
<wd-select-picker v-model="value" v-model:visible="show" :columns="columns" />
ts
const columns = ref([
  { value: '101', label: '男装', disabled: true },
  { value: '102', label: '奢侈品' },
  { value: '103', label: '女装' }
])

加载中

设置 loading 后会在内容区域显示加载状态。

html
<wd-select-picker loading v-model="value" v-model:visible="show" :columns="columns" />

组件样式

设置标题

通过 title 自定义弹层标题。

html
<wd-select-picker v-model="value" v-model:visible="show" title="多选" :columns="columns" />

可搜索

设置 filterable 开启本地搜索;单选和多选模式都支持。

html
<wd-select-picker filterable v-model="value" v-model:visible="show" :columns="columns" />
<wd-select-picker filterable type="radio" v-model="singleValue" v-model:visible="show" :columns="columns" />

特殊样式

选项变化事件

选择器内部选项发生变化时,会触发 change 事件。

html
<wd-select-picker v-model="value" v-model:visible="show" :columns="columns" @change="handleChange" />
ts
function handleChange({ value }: { value: string[] }) {
  console.log(value)
}

确定前校验

设置 before-confirm,可在点击确认按钮前执行同步或异步校验。返回 falsePromise<false> 时不会关闭弹层。

html
<wd-select-picker v-model="value" v-model:visible="show" :columns="columns" :before-confirm="beforeConfirm" />
ts
const beforeConfirm = (value: string[]) => {
  return new Promise<boolean>((resolve) => {
    if (value.length > 0) {
      resolve(false)
    } else {
      resolve(true)
    }
  })
}

自动完成

radio 模式下可通过 show-confirm="false" 隐藏确认按钮,选中后自动完成。

html
<wd-select-picker type="radio" :show-confirm="false" v-model="value" v-model:visible="show" :columns="columns" />

Attributes

参数说明类型默认值
v-model选中项,checkbox 时为数组,radio 时为 stringnumberbooleanstring | number | boolean | (string | number | boolean)[]-
visible / v-model:visible控制弹层显示状态booleanfalse
title弹出层标题string'选择器'
checked-color单选框或复选框选中颜色string-
min最小选中数量,仅 checkbox 生效number0
max最大选中数量,0 表示不限制,仅 checkbox 生效number0
select-size选择器内部选项尺寸string-
loading是否显示加载状态booleanfalse
loading-color加载图标颜色string'#4D80F0'
close-on-click-modal点击遮罩是否关闭booleantrue
columns选择器数据,一维数组Record<string, any>[][]
type选择器类型,可选值为 checkboxradiostring'checkbox'
value-key选项对象中值字段的 keystring'value'
label-key选项对象中展示文本字段的 keystring'label'
confirm-button-text确认按钮文案string'确认'
before-confirm确认前校验函数,接收当前选中值,返回 booleanPromise<boolean>function-
z-index弹层层级number15
safe-area-inset-bottom是否适配底部安全区booleantrue
filterable是否支持本地搜索booleanfalse
filter-placeholder搜索框占位符string'搜索'
scroll-into-view v0.1.34重新打开时是否滚动到选中项booleantrue
custom-content-class自定义弹层内容区域类名string''
show-confirm v1.2.8是否显示确认按钮,仅 radio 模式生效booleantrue
root-portal v1.11.0是否从页面结构中脱离出来,用于解决 fixed 失效问题booleanfalse
custom-class根节点自定义类名string''
custom-style根节点自定义样式string''

选项数据结构

参数说明类型默认值
value选项值string | number | boolean-
label选项文案string-
disabled是否禁用该选项booleanfalse

Events

事件名称说明参数
change选择器内部选项变化时触发{ value }
cancel点击关闭按钮或遮罩关闭时触发-
confirm点击确认时触发{ value, selectedItems }
open弹层打开时触发-
close v1.2.29弹层关闭时触发-

Methods

方法名说明类型
open打开弹层() => void
close关闭弹层() => void

主题定制

CSS 变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 全局配置

名称默认值描述
--wot-select-picker-bg$filled-oppo选择器背景色
--wot-select-picker-loading-opacity$opacity-disabledloading 状态下透明度
--wot-select-picker-loading-icon-size$n-48loading 图标尺寸
--wot-select-picker-wrapper-padding-horizontal$padding-main内容区水平内边距
--wot-select-picker-wrapper-max-height$n-375内容区最大高度
--wot-select-picker-text-active-color$primary-6选中态文字颜色
--wot-select-picker-footer-padding$padding-tight $padding-loose底部内边距
--wot-select-picker-footer-border-color$border-light确认区域上边框颜色

源代码

文档
组件

Released under the MIT License.

Released under the MIT License.