ant-design-vue/components/checkbox/demo/check-all.vue
tangjinzhou 26496ba0a9
refactor: checkbox (#5091)
* style: remove not use pkg

* refactor: vc-checkbox

* refactor: checkbox

* fix: radio type
2021-12-28 16:47:52 +08:00

65 lines
1.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<docs>
---
order: 1
title:
zh-CN: 全选
en-US: Check all
---
## zh-CN
在实现全选效果时你可能会用到 `indeterminate` 属性
## en-US
The `indeterminate` property can help you to achieve a 'check all' effect.
</docs>
<template>
<div>
<a-checkbox
v-model:checked="checkAll"
:indeterminate="indeterminate"
@change="onCheckAllChange"
>
Check all
</a-checkbox>
</div>
<a-divider />
<a-checkbox-group v-model:value="checkedList" :options="plainOptions" />
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs, watch } from 'vue';
const plainOptions = ['Apple', 'Pear', 'Orange'];
export default defineComponent({
setup() {
const state = reactive({
indeterminate: true,
checkAll: false,
checkedList: ['Apple', 'Orange'],
});
const onCheckAllChange = (e: any) => {
Object.assign(state, {
checkedList: e.target.checked ? plainOptions : [],
indeterminate: false,
});
};
watch(
() => state.checkedList,
val => {
state.indeterminate = !!val.length && val.length < plainOptions.length;
state.checkAll = val.length === plainOptions.length;
},
);
return {
...toRefs(state),
plainOptions,
onCheckAllChange,
};
},
});
</script>