diff --git a/packages/components/checkbox/__tests__/checkbox.test.tsx b/packages/components/checkbox/__tests__/checkbox.test.tsx index e17a384ff3..911d533a99 100644 --- a/packages/components/checkbox/__tests__/checkbox.test.tsx +++ b/packages/components/checkbox/__tests__/checkbox.test.tsx @@ -495,6 +495,34 @@ describe('check-button', () => { expect(wrapper.findComponent({ ref: 'a' }).vm.isDisabled).toBe(true) }) + test('button group exceed max', async () => { + const checkList = ref(['a', 'b', 'c', 'd']) + const wrapper = mount({ + setup() { + return () => ( + + + + + + + + ) + }, + }) + + expect(checkList.value.length).toBe(4) + + await wrapper.findComponent({ ref: 'a' }).trigger('click') + expect(checkList.value.length).toBe(3) + + await wrapper.findComponent({ ref: 'a' }).trigger('click') + expect(checkList.value.length).toBe(3) + expect(checkList.value).toEqual(['b', 'c', 'd']) + + expect(wrapper.findComponent({ ref: 'a' }).vm.isDisabled).toBe(true) + }) + test('nested group', async () => { const checkList = ref([]) const wrapper = mount({ diff --git a/packages/components/checkbox/src/composables/use-checkbox-model.ts b/packages/components/checkbox/src/composables/use-checkbox-model.ts index 6bb297dd6b..3c82854296 100644 --- a/packages/components/checkbox/src/composables/use-checkbox-model.ts +++ b/packages/components/checkbox/src/composables/use-checkbox-model.ts @@ -22,7 +22,8 @@ export const useCheckboxModel = (props: CheckboxProps) => { if (isGroup.value && isArray(val)) { isLimitExceeded.value = checkboxGroup?.max?.value !== undefined && - val.length > checkboxGroup?.max.value + val.length > checkboxGroup?.max.value && + val.length > model.value.length isLimitExceeded.value === false && checkboxGroup?.changeEvent?.(val) } else { emit(UPDATE_MODEL_EVENT, val)