import { isDef, isUndef } from 'shared/util'
|
import type { VNodeData } from 'types/vnode'
|
|
import { concat, stringifyClass, genClassForVnode } from 'web/util/index'
|
|
function updateClass(oldVnode: any, vnode: any) {
|
const el = vnode.elm
|
const data: VNodeData = vnode.data
|
const oldData: VNodeData = oldVnode.data
|
if (
|
isUndef(data.staticClass) &&
|
isUndef(data.class) &&
|
(isUndef(oldData) ||
|
(isUndef(oldData.staticClass) && isUndef(oldData.class)))
|
) {
|
return
|
}
|
|
let cls = genClassForVnode(vnode)
|
|
// handle transition classes
|
const transitionClass = el._transitionClasses
|
if (isDef(transitionClass)) {
|
cls = concat(cls, stringifyClass(transitionClass))
|
}
|
|
// set the class
|
if (cls !== el._prevClass) {
|
el.setAttribute('class', cls)
|
el._prevClass = cls
|
}
|
}
|
|
export default {
|
create: updateClass,
|
update: updateClass
|
}
|