tfcconnection-zola/static/js/cljs-runtime/goog.dom.classlist.js

109 lines
4.1 KiB
JavaScript

goog.provide("goog.dom.classlist");
goog.require("goog.array");
goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST = goog.define("goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST", false);
goog.dom.classlist.getClassName_ = function(element) {
return typeof element.className == "string" ? element.className : element.getAttribute && element.getAttribute("class") || "";
};
goog.dom.classlist.get = function(element) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
return element.classList;
}
return goog.dom.classlist.getClassName_(element).match(/\S+/g) || [];
};
goog.dom.classlist.set = function(element, className) {
if (typeof element.className == "string") {
element.className = className;
return;
} else if (element.setAttribute) {
element.setAttribute("class", className);
}
};
goog.dom.classlist.contains = function(element, className) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
return element.classList.contains(className);
}
return goog.array.contains(goog.dom.classlist.get(element), className);
};
goog.dom.classlist.add = function(element, className) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
element.classList.add(className);
return;
}
if (!goog.dom.classlist.contains(element, className)) {
var oldClassName = goog.dom.classlist.getClassName_(element);
goog.dom.classlist.set(element, oldClassName + (oldClassName.length > 0 ? " " + className : className));
}
};
goog.dom.classlist.addAll = function(element, classesToAdd) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
Array.prototype.forEach.call(classesToAdd, function(className) {
goog.dom.classlist.add(element, className);
});
return;
}
var classMap = {};
Array.prototype.forEach.call(goog.dom.classlist.get(element), function(className) {
classMap[className] = true;
});
Array.prototype.forEach.call(classesToAdd, function(className) {
classMap[className] = true;
});
var newClassName = "";
for (var className in classMap) {
newClassName += newClassName.length > 0 ? " " + className : className;
}
goog.dom.classlist.set(element, newClassName);
};
goog.dom.classlist.remove = function(element, className) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
element.classList.remove(className);
return;
}
if (goog.dom.classlist.contains(element, className)) {
goog.dom.classlist.set(element, Array.prototype.filter.call(goog.dom.classlist.get(element), function(c) {
return c != className;
}).join(" "));
}
};
goog.dom.classlist.removeAll = function(element, classesToRemove) {
if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || element.classList) {
Array.prototype.forEach.call(classesToRemove, function(className) {
goog.dom.classlist.remove(element, className);
});
return;
}
goog.dom.classlist.set(element, Array.prototype.filter.call(goog.dom.classlist.get(element), function(className) {
return !goog.array.contains(classesToRemove, className);
}).join(" "));
};
goog.dom.classlist.enable = function(element, className, enabled) {
if (enabled) {
goog.dom.classlist.add(element, className);
} else {
goog.dom.classlist.remove(element, className);
}
};
goog.dom.classlist.enableAll = function(element, classesToEnable, enabled) {
var f = enabled ? goog.dom.classlist.addAll : goog.dom.classlist.removeAll;
f(element, classesToEnable);
};
goog.dom.classlist.swap = function(element, fromClass, toClass) {
if (goog.dom.classlist.contains(element, fromClass)) {
goog.dom.classlist.remove(element, fromClass);
goog.dom.classlist.add(element, toClass);
return true;
}
return false;
};
goog.dom.classlist.toggle = function(element, className) {
var add = !goog.dom.classlist.contains(element, className);
goog.dom.classlist.enable(element, className, add);
return add;
};
goog.dom.classlist.addRemove = function(element, classToRemove, classToAdd) {
goog.dom.classlist.remove(element, classToRemove);
goog.dom.classlist.add(element, classToAdd);
};
//# sourceMappingURL=goog.dom.classlist.js.map