From: Kaine <121680374+kaine0923@users.noreply.github.com>
Date: Sat, 23 Dec 2023 07:23:34 +0000 (+0800)
Subject: fix(runtime-vapor): fix v-show value (#70)
X-Git-Tag: v3.6.0-alpha.1~16^2~702
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3a86cf144433490de3ca167dddf67c01c7709b9;p=thirdparty%2Fvuejs%2Fcore.git
fix(runtime-vapor): fix v-show value (#70)
---
diff --git a/packages/runtime-vapor/__tests__/vShow.spec.ts b/packages/runtime-vapor/__tests__/vShow.spec.ts
index fb1447e336..e3c69d06f8 100644
--- a/packages/runtime-vapor/__tests__/vShow.spec.ts
+++ b/packages/runtime-vapor/__tests__/vShow.spec.ts
@@ -15,26 +15,27 @@ beforeEach(() => {
afterEach(() => {
host.remove()
})
-
+const createDemo = (defaultValue: boolean) =>
+ defineComponent({
+ setup() {
+ const visible = ref(defaultValue)
+ function handleClick() {
+ visible.value = !visible.value
+ }
+ const t0 = template('
hello world
')
+ const n0 = t0()
+ const {
+ 0: [n1],
+ 1: [n2],
+ } = children(n0)
+ withDirectives(n2, [[vShow, () => visible.value]])
+ on(n1 as HTMLElement, 'click', handleClick)
+ return n0
+ },
+ })
describe('directive: v-show', () => {
test('basic', async () => {
- const demo = defineComponent({
- setup() {
- const visible = ref(true)
- function handleClick() {
- visible.value = !visible.value
- }
- const t0 = template('hello world
')
- const n0 = t0()
- const {
- 0: [n1],
- 1: [n2],
- } = children(n0)
- withDirectives(n2, [[vShow, () => visible.value]])
- on(n1 as HTMLElement, 'click', (...args) => handleClick(...args))
- return n0
- },
- })
+ const demo = createDemo(true)
render(demo as any, {}, '#host')
const btn = host.querySelector('button')
expect(host.innerHTML).toBe('hello world
')
@@ -44,4 +45,14 @@ describe('directive: v-show', () => {
'hello world
',
)
})
+ test('should hide content when default value is false', async () => {
+ const demo = createDemo(false)
+ render(demo as any, {}, '#host')
+ const btn = host.querySelector('button')
+ const h1 = host.querySelector('h1')
+ expect(h1?.style.display).toBe('none')
+ btn?.click()
+ await nextTick()
+ expect(h1?.style.display).toBe('')
+ })
})
diff --git a/packages/runtime-vapor/src/directives/vShow.ts b/packages/runtime-vapor/src/directives/vShow.ts
index f419053ec6..07def8b3c8 100644
--- a/packages/runtime-vapor/src/directives/vShow.ts
+++ b/packages/runtime-vapor/src/directives/vShow.ts
@@ -3,7 +3,7 @@ import type { ObjectDirective } from '../directive'
const vShowMap = new WeakMap()
export const vShow: ObjectDirective = {
- beforeMount(node, { source: value }) {
+ beforeMount(node, { value }) {
vShowMap.set(node, node.style.display === 'none' ? '' : node.style.display)
setDisplay(node, value)
},
@@ -13,7 +13,7 @@ export const vShow: ObjectDirective = {
setDisplay(node, value)
},
- beforeUnmount(node, { source: value }) {
+ beforeUnmount(node, { value }) {
setDisplay(node, value)
},
}