Skip to content

Checkbox 多选框 ​

多选框封装,和z-form组件配合食用,风味更佳。

基础用法 ​

传入options自动生成选项

<!-- eslint-disable no-console -->
<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { label: 'Option 1', value: 1 },
  { label: 'Option 2', value: 2 },
  { label: 'Option 3', value: 3 },
])

const checkboxVal = ref([1])

function click() {
  options.value.push({ label: '选项四', value: 4 })
}

function handleCheckboxChange(val: number[]) {
  console.log(val)
}
</script>

<template>
  <el-button @click="click">
    Click
  </el-button>
  <z-checkbox v-model="checkboxVal" :options="options" @change="handleCheckboxChange" />
</template>

禁用 ​

option中的某项设置disabled为true

<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { label: 'Option 1', value: 1 },
  { label: 'Option 2', value: 2, disabled: true },
  { label: 'Option 3', value: 3 },
])

const checkboxVal = ref([1])
</script>

<template>
  <z-checkbox v-model="checkboxVal" :options="options" />
</template>

全部禁用,组件传入disabled为true

<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { label: 'Option 1', value: 1 },
  { label: 'Option 2', value: 2 },
  { label: 'Option 3', value: 3 },
])

const checkboxVal = ref([1])
</script>

<template>
  <z-checkbox v-model="checkboxVal" :disabled="true" :options="options" />
</template>

键值对配置 ​

<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { data: { title: 'Option 1' }, key: 1 },
  { data: { title: 'Option 2' }, key: 2 },
  { data: { title: 'Option 3' }, key: 3 },
])

const alias = {
  label: 'data.title',
  value: 'key',
}

const checkboxVal = ref([1])
</script>

<template>
  <z-checkbox v-model="checkboxVal" :alias="alias" :options="options" />
</template>

按钮样式 ​

给option某项设置type或者直接组件传入type

<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { label: 'Option 1', value: 1 },
  { label: 'Option 2', value: 2 },
  { label: 'Option 3', value: 3, type: 'checkbox-button' },
])

const checkboxVal = ref([1])
</script>

<template>
  <z-checkbox v-model="checkboxVal" type="checkbox-button" :options="options" />
  <z-checkbox v-model="checkboxVal" :options="options" class="mt-4" />
</template>

带有边框 ​

border属性或者字段可以渲染为带有边框的多选框。

<script lang="ts" setup>
import { ref } from 'vue'

const options = ref([
  { label: 'Option 1', value: 1, border: true },
  { label: 'Option 2', value: 2 },
  { label: 'Option 3', value: 3 },
])

const checkboxVal = ref([1])
</script>

<template>
  <z-checkbox v-model="checkboxVal" :options="options" />
  <z-checkbox v-model="checkboxVal" :border="true" :options="options" class="mt-4" />
</template>

z-checkbox 属性 ​

属性名说明类型默认值
model-value / v-model绑定值array[]
options可配置项array—
typecheckbox 形式stringel-checkbox
alias键值对配置object{ label: 'label', value: 'value', disabled: 'disabled' }
border是否显示边框booleanfalse
size多选框组尺寸enum—
disabled是否禁用booleanfalse
min可被勾选的 checkbox 的最小数量number—
max可被勾选的 checkbox 的最大数量number—
label为屏幕阅读器准备的标签string—
text-color当按钮为活跃状态时的字体颜色string#ffffff
fill当按钮为活跃状态时的边框和背景颜色string#409EFF
tag复选框组元素标签stringdiv
validate-event是否触发表单验证booleantrue

z-checkbox 事件 ​

事件名说明类型
change当绑定值变化时触发的事件Function

Options 项可配置属性 ​

属性名说明类型默认值
value选中项绑定值string / number / boolean—
label文案string—
trueLabel选中时的值string / number—
falseLabel没有选中时的值string / number—
disabled是否禁用booleanfalse
border是否显示边框booleanfalse
sizeCheckbox 的尺寸enum—
name原生 name 属性string—
idinput idstring—
typeCheckbox 形式stringel-checkbox

Released under the MIT License.