Skip to content

Checkbox 多选框

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

基础用法

传入options自动生成选项

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

const options = ref([
  { label: '选项一', value: 1 },
  { label: '选项二', value: 2 },
  { label: '选项三', 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">
    点击
  </el-button>
  <z-checkbox v-model="checkboxVal" :options="options" @change="handleCheckboxChange" />
</template>

禁用

option中的某项设置disabledtrue

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

const options = ref([
  { label: '选项一', value: 1 },
  { label: '选项二', value: 2, disabled: true },
  { label: '选项三', value: 3 },
])

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

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

全部禁用,组件传入disabledtrue

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

const options = ref([
  { label: '选项一', value: 1 },
  { label: '选项二', value: 2 },
  { label: '选项三', 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: '选项一' }, key: 1 },
  { data: { title: '选项二' }, key: 2 },
  { data: { title: '选项三' }, 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: '选项一', value: 1 },
  { label: '选项二', value: 2 },
  { label: '选项三', 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: '选项一', value: 1, border: true },
  { label: '选项二', value: 2 },
  { label: '选项三', 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.