fix(cascader-panel): value can be falsy value #1531 (#1533)

This commit is contained in:
Ernest
2021-03-03 11:59:46 +08:00
committed by GitHub
parent 466874969c
commit 66d522b310
2 changed files with 40 additions and 1 deletions

View File

@@ -308,6 +308,45 @@ describe('CascaderPanel.vue', () => {
expect(wrapper.vm.value).toBe('beijing')
})
test('emit value only, issue 1531', async () => {
const wrapper = _mount({
template: `
<cascader-panel
v-model="value"
:options="options"
:props="props"
/>
`,
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: `

View File

@@ -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) => {