From d3a86cf144433490de3ca167dddf67c01c7709b9 Mon Sep 17 00:00:00 2001
From: Kaine <121680374+kaine0923@users.noreply.github.com>
Date: Sat, 23 Dec 2023 15:23:34 +0800
Subject: [PATCH] fix(runtime-vapor): fix v-show value (#70)
---
.../runtime-vapor/__tests__/vShow.spec.ts | 47 ++++++++++++-------
.../runtime-vapor/src/directives/vShow.ts | 4 +-
2 files changed, 31 insertions(+), 20 deletions(-)
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)
},
}
--
2.47.3