From 07b19a53a5f313a219ea87546846b79d89e39e96 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 11 Jan 2024 17:14:49 +0800 Subject: [PATCH] test: test case for style binding w/ object value + v-show ref #10074 --- .../__tests__/directives/vShow.spec.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/runtime-dom/__tests__/directives/vShow.spec.ts b/packages/runtime-dom/__tests__/directives/vShow.spec.ts index 5e837650854..70b69f2df1c 100644 --- a/packages/runtime-dom/__tests__/directives/vShow.spec.ts +++ b/packages/runtime-dom/__tests__/directives/vShow.spec.ts @@ -151,6 +151,32 @@ describe('runtime-dom: v-show directive', () => { expect($div.style.display).toEqual('') }) + test('the value of `display` set by v-show should not be overwritten by the style attribute when updated (object value)', async () => { + const style = ref({ + display: 'block', + width: '100px', + }) + const display = ref(false) + const component = defineComponent({ + render() { + return withVShow(h('div', { style: style.value }), display.value) + }, + }) + render(h(component), root) + + const $div = root.children[0] + + expect($div.style.display).toEqual('none') + + style.value.width = '50px' + await nextTick() + expect($div.style.display).toEqual('none') + + display.value = true + await nextTick() + expect($div.style.display).toEqual('block') + }) + // #2583, #2757 test('the value of `display` set by v-show should not be overwritten by the style attribute when updated (with Transition)', async () => { const style = ref('width: 100px')