aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2017-06-27 10:15:19 +0530
committerArun Isaac2017-06-27 10:15:19 +0530
commit019c1de94c0b15b1f1c5af3b401ee27bcf3a6c86 (patch)
treef99976bee3996c9d4de44369e2ab1fdc85808347
parent601073e2099c6c801ec25eba31a44dd7e268ca7a (diff)
downloadyoutube-noscript-shim-019c1de94c0b15b1f1c5af3b401ee27bcf3a6c86.tar.gz
youtube-noscript-shim-019c1de94c0b15b1f1c5af3b401ee27bcf3a6c86.tar.lz
youtube-noscript-shim-019c1de94c0b15b1f1c5af3b401ee27bcf3a6c86.zip
Refactor toggleClasses and toggleBooleanAttributes.
* youtube-noscript-shim.user.js (toggleClasses): Make classes argument variadic. Support multiple elements. Document it. (toggleBooleanAttributes): Make attributes argument variadic. Support multiple elements. Document it. Fix toggleClasses and toggleBooleanAttributes function calls.
-rw-r--r--youtube-noscript-shim.user.js43
1 files changed, 29 insertions, 14 deletions
diff --git a/youtube-noscript-shim.user.js b/youtube-noscript-shim.user.js
index beee814..92b189f 100644
--- a/youtube-noscript-shim.user.js
+++ b/youtube-noscript-shim.user.js
@@ -22,16 +22,31 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
-function toggleClasses (selector, classes) {
- classes.forEach(function (cls) {
- document.querySelector(selector).classList.toggle(cls);
+/**
+ * Add/remove classes on one or more elements
+ * @param {string} selector - CSS selector for the elements
+ * @param {...string} classes - Classes to add/remove
+ */
+function toggleClasses (selector, ...classes) {
+ document.querySelectorAll(selector).forEach(function (element) {
+ classes.forEach(function (cls) {
+ element.classList.toggle(cls);
+ });
});
}
-function toggleBooleanAttributes (selector, attributes) {
- element = document.querySelector(selector);
- attributes.forEach(function (attribute) {
- element.setAttribute(attribute, element.getAttribute(attribute) == "true" ? "false" : "true");
+/**
+ * Toggle boolean attributes on one or more elements
+ * @param {string} selector - CSS selector for the elements
+ * @param {...string} classes - Boolean attributes to toggle
+ */
+function toggleBooleanAttributes (selector, ...attributes) {
+ document.querySelectorAll(selector).forEach(function (element) {
+ attributes.forEach(function (attribute) {
+ element.setAttribute(attribute, element.getAttribute(attribute) == "true" ? "false" : "true");
+ });
+ });
+}
});
}
@@ -42,13 +57,13 @@ Array.from(document.querySelectorAll("img[data-thumb]")).forEach(function (img)
// Search filters
document.querySelector(".filter-button").addEventListener("click", function () {
- toggleClasses(".filter-button", ["yt-uix-button-toggled"]);
- toggleClasses(".search-header", ["yt-uix-expander-collapsed"]);
- toggleBooleanAttributes(".filter-button", ["aria-pressed"]);
+ toggleClasses(".filter-button", "yt-uix-button-toggled");
+ toggleClasses(".search-header", "yt-uix-expander-collapsed");
+ toggleBooleanAttributes(".filter-button", "aria-pressed");
});
-// Guide
-document.querySelector("#appbar-guide-button").addEventListener("click", function () {
- toggleClasses("html", ["show-guide"]);
- toggleBooleanAttributes("#appbar-guide-button", ["aria-expanded"]);
+// Menu
+document.querySelector("#appbar-guide-button").addEvenetListener("click", function () {
+ toggleClasses("html", "show-guide");
+ toggleBooleanAttributes("#appbar-guide-button", "aria-expanded");
});