Collapse work tags into categorized drop-down menus for easier reading and less space.
// ==UserScript==
// @name [AO3] Collapsed Work Tags
// @namespace https://greasyfork.org/en/users/1138163-dreambones
// @version 1.1
// @description Collapse work tags into categorized drop-down menus for easier reading and less space.
// @author DREAMBONES
// @match http*://archiveofourown.org/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=archiveofourown.org
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Your code here...
const minTags = 0;
const typeLabels = {
"warnings": "Warnings",
"relationships": "Relationships",
"characters": "Characters",
"freeforms": "Miscellaneous"
}
const works = document.querySelectorAll("ul.tags.commas");
for (let work of works) {
for (let type in typeLabels) {
const tags = work.querySelectorAll(`li.${type}`);
if (tags.length > minTags) {
var dropdown = document.createElement("details");
var label = document.createElement("summary");
label.innerText = `${typeLabels[type]} (${tags.length})`;
label.style.cursor = "pointer";
label.style["user-select"] = "none";
dropdown.style.padding = "0.33em";
dropdown.style["margin-bottom"] = "0.33em";
dropdown.appendChild(label);
for (let tag of tags) {
dropdown.appendChild(tag);
}
work.appendChild(dropdown);
}
}
}
})();