aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/resources/dokka/scripts
diff options
context:
space:
mode:
authorFilip Zybała <fzybala@virtuslab.com>2020-05-12 14:58:05 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-05-21 15:26:00 +0200
commit25d826bb75a78eb674a63aed19f55e92d7ff8bca (patch)
tree72c0c1a04dd4cb301ee8d7a59fce90d5baea4662 /plugins/base/src/main/resources/dokka/scripts
parent2ee83d06c9cc534b4f226dd30f294bc0588e8b4e (diff)
downloaddokka-25d826bb75a78eb674a63aed19f55e92d7ff8bca.tar.gz
dokka-25d826bb75a78eb674a63aed19f55e92d7ff8bca.tar.bz2
dokka-25d826bb75a78eb674a63aed19f55e92d7ff8bca.zip
Migrated resources to base-plugin
Diffstat (limited to 'plugins/base/src/main/resources/dokka/scripts')
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/navigationLoader.js43
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js52
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/scripts.js11
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/search.js7
4 files changed, 113 insertions, 0 deletions
diff --git a/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js b/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js
new file mode 100644
index 00000000..cac46d2a
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js
@@ -0,0 +1,43 @@
+window.addEventListener('load', () => {
+ fetch(pathToRoot + "navigation.html")
+ .then(response => response.text())
+ .then(data => {
+ document.getElementById("sideMenu").innerHTML = data;
+ }).then(() => {
+ document.querySelectorAll(".overview > a").forEach(link => {
+ link.setAttribute("href", pathToRoot + link.getAttribute("href"));
+ })
+ }).then(() => {
+ document.querySelectorAll(".sideMenuPart").forEach(nav => {
+ if (!nav.classList.contains("hidden")) nav.classList.add("hidden")
+ })
+ }).then(() => {
+ revealNavigationForCurrentPage()
+ })
+})
+
+revealNavigationForCurrentPage = () => {
+ let pageId = document.getElementById("content").attributes["pageIds"].value.toString();
+ let parts = document.querySelectorAll(".sideMenuPart");
+ let found = 0;
+ do {
+ parts.forEach(part => {
+ if (part.attributes['pageId'].value.indexOf(pageId) !== -1 && found === 0) {
+ found = 1;
+ if (part.classList.contains("hidden")){
+ part.classList.remove("hidden");
+ part.setAttribute('data-active',"");
+ }
+ revealParents(part)
+ }
+ });
+ pageId = pageId.substring(0, pageId.lastIndexOf("/"))
+ } while (pageId.indexOf("/") !== -1 && found === 0)
+};
+
+revealParents = (part) => {
+ if (part.classList.contains("sideMenuPart")) {
+ if (part.classList.contains("hidden")) part.classList.remove("hidden");
+ revealParents(part.parentNode)
+ }
+}; \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js b/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js
new file mode 100644
index 00000000..72c8daae
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js
@@ -0,0 +1,52 @@
+window.addEventListener('load', () => {
+ document.querySelectorAll("div[data-platform-hinted]")
+ .forEach(elem => elem.addEventListener('click', (event) => togglePlatformDependent(event,elem)))
+ document.querySelectorAll("div[tabs-section]")
+ .forEach(elem => elem.addEventListener('click', (event) => toggleSections(event)))
+ document.querySelector(".tabs-section-body")
+ .querySelector("div[data-togglable]")
+ .setAttribute("data-active", "")
+})
+
+function toggleSections(evt){
+ if(!evt.target.getAttribute("data-togglable")) return
+
+ const activateTabs = (containerClass) => {
+ for(const element of document.getElementsByClassName(containerClass)){
+ for(const child of element.children){
+ if(child.getAttribute("data-togglable") === evt.target.getAttribute("data-togglable")){
+ child.setAttribute("data-active", "")
+ } else {
+ child.removeAttribute("data-active")
+ }
+ }
+ }
+ }
+
+ activateTabs("tabs-section")
+ activateTabs("tabs-section-body")
+}
+
+function togglePlatformDependent(e, container) {
+ let target = e.target
+ if (target.tagName != 'BUTTON') return;
+ let index = target.getAttribute('data-toggle')
+
+ for(let child of container.children){
+ if(child.hasAttribute('data-toggle-list')){
+ for(let bm of child.children){
+ if(bm == target){
+ bm.setAttribute('data-active',"")
+ } else if(bm != target) {
+ bm.removeAttribute('data-active')
+ }
+ }
+ }
+ else if(child.getAttribute('data-togglable') == index) {
+ child.setAttribute('data-active',"")
+ }
+ else {
+ child.removeAttribute('data-active')
+ }
+ }
+}
diff --git a/plugins/base/src/main/resources/dokka/scripts/scripts.js b/plugins/base/src/main/resources/dokka/scripts/scripts.js
new file mode 100644
index 00000000..c2e29b9f
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/scripts.js
@@ -0,0 +1,11 @@
+document.getElementById("navigationFilter").oninput = function (e) {
+ var input = e.target.value;
+ var menuParts = document.getElementsByClassName("sideMenuPart")
+ for (let part of menuParts) {
+ if(part.querySelector("a").textContent.startsWith(input)) {
+ part.classList.remove("filtered");
+ } else {
+ part.classList.add("filtered");
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/scripts/search.js b/plugins/base/src/main/resources/dokka/scripts/search.js
new file mode 100644
index 00000000..04d88ab5
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/search.js
@@ -0,0 +1,7 @@
+let query = new URLSearchParams(window.location.search).get("query");
+document.getElementById("searchTitle").innerHTML += '"' + query + '":';
+document.getElementById("searchTable").innerHTML = pages
+ .filter(el => el.name.toLowerCase().startsWith(query.toLowerCase()))
+ .reduce((acc, element) => {
+ return acc + '<tr><td><a href="' + element.location + '">' + element.name + '</a></td></tr>'
+ }, ""); \ No newline at end of file