From 66d522b310fb70d1f6572efebdbd028c28f9593b Mon Sep 17 00:00:00 2001 From: Ernest Date: Wed, 3 Mar 2021 11:59:46 +0800 Subject: [PATCH] fix(cascader-panel): value can be falsy value #1531 (#1533) --- .../__tests__/cascader-panel.spec.ts | 39 +++++++++++++++++++ packages/cascader-panel/src/index.vue | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/cascader-panel/__tests__/cascader-panel.spec.ts b/packages/cascader-panel/__tests__/cascader-panel.spec.ts index bfc46f8d30..d8412a51d0 100644 --- a/packages/cascader-panel/__tests__/cascader-panel.spec.ts +++ b/packages/cascader-panel/__tests__/cascader-panel.spec.ts @@ -308,6 +308,45 @@ describe('CascaderPanel.vue', () => { expect(wrapper.vm.value).toBe('beijing') }) + test('emit value only, issue 1531', async () => { + const wrapper = _mount({ + template: ` + + `, + data() { + return { + options: [ + { + value: 0, + label: 'label one', + }, + { + value: 1, + label: 'label two', + }, + ], + props: { emitPath: false }, + value: null, + } + }, + }) + + await nextTick() + + const shNode = wrapper.findAll(MENU)[0].find(NODE) + expect(shNode.classes('is-active')).toBe(false) + + await wrapper.findAll(NODE)[0].trigger('click') + expect(wrapper.vm.value).toBe(0) + + await wrapper.findAll(NODE)[1].trigger('click') + expect(wrapper.vm.value).toBe(1) + }) + test('multiple mode', async () => { const wrapper = _mount({ template: ` diff --git a/packages/cascader-panel/src/index.vue b/packages/cascader-panel/src/index.vue index 8509bc944d..b451ca099a 100644 --- a/packages/cascader-panel/src/index.vue +++ b/packages/cascader-panel/src/index.vue @@ -184,7 +184,7 @@ export default defineComponent({ const nodes = sortByOriginalOrder(oldNodes, newNodes) const values = nodes.map(node => node.valueByOption) checkedNodes.value = nodes - checkedValue.value = multiple ? values : (values[0] || null) + checkedValue.value = multiple ? values : (values[0] ?? null) } const syncCheckedValue = (loaded = false, forced = false) => {