Skip to content

Commit a4ac2eb

Browse files
committed
made v-show respect display values in style attributes
1 parent 75b2f52 commit a4ac2eb

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/platforms/web/runtime/directives/show.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export default {
1717
if (value && transition && transition.appear && !isIE9) {
1818
enter(vnode)
1919
}
20-
el.style.display = value ? '' : 'none'
20+
const originalDisplay = el.style.display
21+
el.style.display = value ? originalDisplay : 'none'
22+
el.dataset.__vOriginalDisplay = originalDisplay
2123
},
2224
update (el: HTMLElement, { value, oldValue }: VNodeDirective, vnode: VNodeWithData) {
2325
/* istanbul ignore if */
@@ -27,14 +29,14 @@ export default {
2729
if (transition && !isIE9) {
2830
if (value) {
2931
enter(vnode)
30-
el.style.display = ''
32+
el.style.display = el.dataset.__vOriginalDisplay
3133
} else {
3234
leave(vnode, () => {
3335
el.style.display = 'none'
3436
})
3537
}
3638
} else {
37-
el.style.display = value ? '' : 'none'
39+
el.style.display = value ? el.dataset.__vOriginalDisplay : 'none'
3840
}
3941
}
4042
}

test/unit/features/directives/show.spec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,12 @@ describe('Directive v-show', () => {
4949
expect(vm.$el.firstChild.style.display).toBe('')
5050
}).then(done)
5151
})
52+
53+
it('should respect display value in style attribute', () => {
54+
const vm = new Vue({
55+
template: '<div><span v-show="foo" style="display:block">hello</span></div>',
56+
data: { foo: true }
57+
}).$mount()
58+
expect(vm.$el.firstChild.style.display).toBe('block')
59+
})
5260
})

0 commit comments

Comments
 (0)