|
|
@@ -1,15 +1,16 @@
|
|
|
import type { ObjectDirective } from '@vue/runtime-core'
|
|
|
|
|
|
-export const vShowOldKey = Symbol('_vod')
|
|
|
+export const vShowOriginalDisplay = Symbol('_vod')
|
|
|
|
|
|
interface VShowElement extends HTMLElement {
|
|
|
// _vod = vue original display
|
|
|
- [vShowOldKey]: string
|
|
|
+ [vShowOriginalDisplay]: string
|
|
|
}
|
|
|
|
|
|
export const vShow: ObjectDirective<VShowElement> & { name?: 'show' } = {
|
|
|
beforeMount(el, { value }, { transition }) {
|
|
|
- el[vShowOldKey] = el.style.display === 'none' ? '' : el.style.display
|
|
|
+ el[vShowOriginalDisplay] =
|
|
|
+ el.style.display === 'none' ? '' : el.style.display
|
|
|
if (transition && value) {
|
|
|
transition.beforeEnter(el)
|
|
|
} else {
|
|
|
@@ -24,7 +25,7 @@ export const vShow: ObjectDirective<VShowElement> & { name?: 'show' } = {
|
|
|
updated(el, { value, oldValue }, { transition }) {
|
|
|
if (
|
|
|
!value === !oldValue &&
|
|
|
- (el.style.display === el[vShowOldKey] || !value)
|
|
|
+ (el.style.display === el[vShowOriginalDisplay] || !value)
|
|
|
)
|
|
|
return
|
|
|
if (transition) {
|
|
|
@@ -51,7 +52,7 @@ if (__DEV__) {
|
|
|
}
|
|
|
|
|
|
function setDisplay(el: VShowElement, value: unknown): void {
|
|
|
- el.style.display = value ? el[vShowOldKey] : 'none'
|
|
|
+ el.style.display = value ? el[vShowOriginalDisplay] : 'none'
|
|
|
}
|
|
|
|
|
|
// SSR vnode transforms, only used when user includes client-oriented render
|