// compiler should normalize class + :class bindings on the same element
// into a single binding ['staticClass', dynamic]
export function patchClass(el: Element, value: string | null, isSVG: boolean) {
- if (value == null) {
- value = ''
+ // directly setting className should be faster than setAttribute in theory
+ // if this is an element during a transition, take the temporary transition
+ // classes into account.
+ const transitionClasses = (el as ElementWithTransition)._vtc
+ if (transitionClasses) {
+ value = (value
+ ? [value, ...transitionClasses]
+ : [...transitionClasses]
+ ).join(' ')
}
- if (isSVG) {
+ if (value == null) {
+ el.removeAttribute('class')
+ } else if (isSVG) {
el.setAttribute('class', value)
} else {
- // directly setting className should be faster than setAttribute in theory
- // if this is an element during a transition, take the temporary transition
- // classes into account.
- const transitionClasses = (el as ElementWithTransition)._vtc
- if (transitionClasses) {
- value = (value
- ? [value, ...transitionClasses]
- : [...transitionClasses]
- ).join(' ')
- }
el.className = value
}
}