<template>
<div class="component-card-demo-wrap">
<TsCheckbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</TsCheckbox>
<div style="margin: 15px 0"></div>
<TsCheckboxGroup v-model="checkedCities" @change="handleCheckedCitiesChange">
<TsCheckbox v-for="city in cities" :key="city" :label="city">
{{ city }}
</TsCheckbox>
</TsCheckboxGroup>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { TsCheckbox, TsCheckboxGroup } from 'tui';
import type { CheckboxValueType } from 'tui/components/checkbox/src/types';
const checkAll = ref(false);
const isIndeterminate = ref(true);
const checkedCities = ref(['上海', '北京']);
const cities = ['上海', '北京', '广州', '深圳'];
const handleCheckAllChange = (val: CheckboxValueType) => {
checkedCities.value = (val as boolean) ? [...cities] : [];
isIndeterminate.value = false;
};
const handleCheckedCitiesChange = (value: string[]) => {
const checkedCount = value.length;
checkAll.value = checkedCount === cities.length;
isIndeterminate.value = checkedCount > 0 && checkedCount < cities.length;
};
</script>