a56194686054f808454c5444779d955404b1e142140f0f7aca3cce15d0c2d402bf22db8a1b4921c96a2cf8a6be4354957044834ffc9390eb746421916147af 889 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* @flow */
  2. import {
  3. isDef,
  4. isUndef
  5. } from 'shared/util'
  6. import {
  7. concat,
  8. stringifyClass,
  9. genClassForVnode
  10. } from 'web/util/index'
  11. function updateClass (oldVnode: any, vnode: any) {
  12. const el = vnode.elm
  13. const data: VNodeData = vnode.data
  14. const oldData: VNodeData = oldVnode.data
  15. if (
  16. isUndef(data.staticClass) &&
  17. isUndef(data.class) && (
  18. isUndef(oldData) || (
  19. isUndef(oldData.staticClass) &&
  20. isUndef(oldData.class)
  21. )
  22. )
  23. ) {
  24. return
  25. }
  26. let cls = genClassForVnode(vnode)
  27. // handle transition classes
  28. const transitionClass = el._transitionClasses
  29. if (isDef(transitionClass)) {
  30. cls = concat(cls, stringifyClass(transitionClass))
  31. }
  32. // set the class
  33. if (cls !== el._prevClass) {
  34. el.setAttribute('class', cls)
  35. el._prevClass = cls
  36. }
  37. }
  38. export default {
  39. create: updateClass,
  40. update: updateClass
  41. }