From 5a1b79fca66dbcb3d8878ee4ef7c69810f84c9d1 Mon Sep 17 00:00:00 2001 From: Ripudaman Singh Date: Fri, 17 Oct 2025 08:44:30 +0530 Subject: [PATCH 1/5] add feature: back to top button --- assets/backToTop.png | Bin 0 -> 2969 bytes boneset-api/package-lock.json | 24 ++++++++++++++++++++++++ boneset-api/package.json | 1 + templates/boneset.html | 4 ++++ templates/js/BackToTopButton.js | 16 ++++++++++++++++ templates/style.css | 26 ++++++++++++++++++++++++++ 6 files changed, 71 insertions(+) create mode 100644 assets/backToTop.png create mode 100644 templates/js/BackToTopButton.js diff --git a/assets/backToTop.png b/assets/backToTop.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9078a99d723317f5ef598e8ec8e33a4ec67a8d GIT binary patch literal 2969 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 literal 0 HcmV?d00001 diff --git a/boneset-api/package-lock.json b/boneset-api/package-lock.json index 7e65a2a..2b255ca 100644 --- a/boneset-api/package-lock.json +++ b/boneset-api/package-lock.json @@ -11,11 +11,31 @@ "dependencies": { "axios": "^1.8.4", "cors": "^2.8.5", + "digitalbonesbox": "file:..", "dotenv": "^16.4.7", "express": "^4.21.2", "express-rate-limit": "^8.1.0" } }, + "..": { + "name": "digitalbonesbox", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.8.4", + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.2", + "simple-git": "^3.27.0" + }, + "devDependencies": { + "concurrently": "^9.2.1", + "eslint": "^9.24.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "live-server": "^1.2.2" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -198,6 +218,10 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/digitalbonesbox": { + "resolved": "..", + "link": true + }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", diff --git a/boneset-api/package.json b/boneset-api/package.json index 0626576..1d2f7fd 100644 --- a/boneset-api/package.json +++ b/boneset-api/package.json @@ -12,6 +12,7 @@ "dependencies": { "axios": "^1.8.4", "cors": "^2.8.5", + "digitalbonesbox": "file:..", "dotenv": "^16.4.7", "express": "^4.21.2", "express-rate-limit": "^8.1.0" diff --git a/templates/boneset.html b/templates/boneset.html index ec0c408..0e98bee 100644 --- a/templates/boneset.html +++ b/templates/boneset.html @@ -84,11 +84,15 @@

Description

+ + \ No newline at end of file diff --git a/templates/js/BackToTopButton.js b/templates/js/BackToTopButton.js new file mode 100644 index 0000000..5b0cac3 --- /dev/null +++ b/templates/js/BackToTopButton.js @@ -0,0 +1,16 @@ +const backToTopBtn = document.getElementById('backToTopBtn') + +window.addEventListener('scroll', () => { + if (document.documentElement.scrollTop > 20) { + backToTopBtn.classList.add('show') + } else { + backToTopBtn.classList.remove('show') + } +}) + +backToTopBtn.addEventListener('click', () => { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }) +}) diff --git a/templates/style.css b/templates/style.css index 730828a..1d17cc4 100644 --- a/templates/style.css +++ b/templates/style.css @@ -445,3 +445,29 @@ ul li { } } + +/* Back To Top */ + +#backToTopBtn { + position: fixed; + bottom: 20px; + right: 30px; + z-index: 99; + border: none; + cursor: pointer; + padding: 0; + border-radius: 10px; + transition: opacity 0.3s ease, bottom 0.3s ease; + opacity: 0; + overflow: hidden; + pointer-events: none; +} + +#backToTopBtn.show { + opacity: 1; + pointer-events: auto; +} + +#backToTopBtn:hover { + bottom: 15px; +} From 3cea94a77d9b6da4f735cfab1e1ef82ef9a6698d Mon Sep 17 00:00:00 2001 From: Ripudaman Singh Date: Tue, 21 Oct 2025 10:57:28 +0530 Subject: [PATCH 2/5] Delete backToTop.png --- assets/backToTop.png | Bin 2969 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/backToTop.png diff --git a/assets/backToTop.png b/assets/backToTop.png deleted file mode 100644 index ed9078a99d723317f5ef598e8ec8e33a4ec67a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2969 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 From ed6c8306a3575b05c366199498448310d3e6cdbc Mon Sep 17 00:00:00 2001 From: Ripudaman Singh Date: Tue, 21 Oct 2025 10:58:14 +0530 Subject: [PATCH 3/5] replaced BackToTop img with svg --- templates/boneset.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/templates/boneset.html b/templates/boneset.html index 0e98bee..18ecb8c 100644 --- a/templates/boneset.html +++ b/templates/boneset.html @@ -85,7 +85,10 @@

Description

From 32fd8f70579bd566b0e588373aa35709652c3b81 Mon Sep 17 00:00:00 2001 From: Ripudaman Singh Date: Tue, 21 Oct 2025 10:58:20 +0530 Subject: [PATCH 4/5] Update BackToTopButton.js --- templates/js/BackToTopButton.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/templates/js/BackToTopButton.js b/templates/js/BackToTopButton.js index 5b0cac3..126077c 100644 --- a/templates/js/BackToTopButton.js +++ b/templates/js/BackToTopButton.js @@ -1,16 +1,16 @@ -const backToTopBtn = document.getElementById('backToTopBtn') +const backToTopBtn = document.getElementById("backToTopBtn"); -window.addEventListener('scroll', () => { +window.addEventListener("scroll", () => { if (document.documentElement.scrollTop > 20) { - backToTopBtn.classList.add('show') + backToTopBtn.classList.add("show"); } else { - backToTopBtn.classList.remove('show') + backToTopBtn.classList.remove("show"); } -}) +}); -backToTopBtn.addEventListener('click', () => { +backToTopBtn.addEventListener("click", () => { window.scrollTo({ top: 0, - behavior: 'smooth', - }) -}) + behavior: "smooth", + }); +}); From b1018f678ae54997d68a8468bccb14aae66b1dab Mon Sep 17 00:00:00 2001 From: Ripudaman Singh Date: Tue, 21 Oct 2025 10:58:55 +0530 Subject: [PATCH 5/5] add padding to backToTop --- templates/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/style.css b/templates/style.css index 1d17cc4..7db1bcc 100644 --- a/templates/style.css +++ b/templates/style.css @@ -455,7 +455,7 @@ ul li { z-index: 99; border: none; cursor: pointer; - padding: 0; + padding: 5px; border-radius: 10px; transition: opacity 0.3s ease, bottom 0.3s ease; opacity: 0;