| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* @flow */
- const whitespaceRE = /\s+/
- /**
- * Add class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- export function addClass (el: HTMLElement, cls: ?string) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return
- }
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(whitespaceRE).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: HTMLElement, cls: ?string) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return
- }
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(whitespaceRE).forEach(c => el.classList.remove(c))
- } else {
- el.classList.remove(cls)
- }
- if (!el.classList.length) {
- el.removeAttribute('class')
- }
- } else {
- let cur = ` ${el.getAttribute('class') || ''} `
- const tar = ' ' + cls + ' '
- while (cur.indexOf(tar) >= 0) {
- cur = cur.replace(tar, ' ')
- }
- cur = cur.trim()
- if (cur) {
- el.setAttribute('class', cur)
- } else {
- el.removeAttribute('class')
- }
- }
- }
|