UNPKG

vue

Version:

Reactive, component-oriented view layer for modern web interfaces.

54 lines (49 loc) 1.26 kB
/* @flow */ /** * Add class with compatibility for SVG since classList is not supported on * SVG elements in IE */ export function addClass (el: Element, cls: ?string) { /* istanbul ignore if */ if (!cls || !cls.trim()) { return } /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { cls.split(/\s+/).forEach(c => el.classList.add(c)) } else { el.classList.add(cls) } } else { const cur = ' ' + el.getAttribute('class') + ' ' if (cur.indexOf(' ' + cls + ' ') < 0) { el.setAttribute('class', (cur + cls).trim()) } } } /** * Remove class with compatibility for SVG since classList is not supported on * SVG elements in IE */ export function removeClass (el: Element, cls: ?string) { /* istanbul ignore if */ if (!cls || !cls.trim()) { return } /* istanbul ignore else */ if (el.classList) { if (cls.indexOf(' ') > -1) { cls.split(/\s+/).forEach(c => el.classList.remove(c)) } else { el.classList.remove(cls) } } else { let cur = ' ' + el.getAttribute('class') + ' ' const tar = ' ' + cls + ' ' while (cur.indexOf(tar) >= 0) { cur = cur.replace(tar, ' ') } el.setAttribute('class', cur.trim()) } }