Merge branch 'hotfix/21.56.9' into master
[gitter.git] / public / js / utils / toggle-class.js
blobcf31b4f54e549cf06ccbb3fdcb14034bb95c4c75
1 'use strict';
3 // Can't use `classList.toggle` with the second parameter (force)
4 // Because IE11 does not support it
5 var toggleClass = function(element, class1, force) {
6   var result = force;
8   // note: svg on IE does not have classList so fallback to class
9   if (element.classList) {
10     if (arguments.length === 3) {
11       if (force) {
12         element.classList.add(class1);
13       } else {
14         element.classList.remove(class1);
15       }
16     } else {
17       result = element.classList.toggle(class1);
18     }
19   } else if (element.getAttribute) {
20     var classContent = element.getAttribute('class');
21     var classContentWithoutTargetClass = classContent.replace(
22       new RegExp('(^|\\s)' + class1 + '($|\\s)'),
23       ''
24     );
25     if (force || classContent === classContentWithoutTargetClass) {
26       element.setAttribute('class', classContentWithoutTargetClass + ' ' + class1);
27     } else {
28       element.setAttribute('class', classContentWithoutTargetClass);
29     }
30   }
32   return result;
35 module.exports = toggleClass;