| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /* @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())
- }
- }
|