automated_uniapp/uni_modules/cool-ui/components/cl-checkbox-group/cl-checkbox-group.vue
2025-01-09 16:16:11 +08:00

62 lines
1.0 KiB
Vue

<template>
<view
class="cl-checkbox-group"
:class="{
'is-fill': fill,
}"
>
<slot></slot>
</view>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import { cloneDeep } from "lodash-es";
export default defineComponent({
name: "cl-checkbox-group",
props: {
// 绑定值
modelValue: {
type: Array,
default: () => [],
},
// 是否边框样式
border: Boolean,
// 是否禁用
disabled: Boolean,
// 是否圆角
round: Boolean,
// 是否宽度填充
fill: Boolean,
// 是否只显示文字
text: Boolean,
// 图标大小
size: [String, Number],
},
emits: ["update:modelValue", "change"],
setup(props, { emit }) {
function onChange(label: string) {
const index = props.modelValue.findIndex((e) => e == label);
let list = cloneDeep(props.modelValue);
if (index >= 0) {
list.splice(index, 1);
} else {
list.push(label);
}
emit("update:modelValue", list);
emit("change", list);
}
return {
onChange,
};
},
});
</script>