New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: add back to top button #16979
docs: add back to top button #16979
Conversation
✅ Deploy Preview for docs-eslint ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the accessibility in light mode is not good enough, can you improve it? Like modifying the color of ↑.
Done. |
Can you add a sample page url in PR where I can see scroll to top 🤔 Im not able to see it? |
I think button is on every page of docs just need to scroll down to make it appear. |
Can't we achieve this same behavior without using js? I think we achieve this using CSS which works well in Thoughts? |
Yes, I think |
Agree with this, but i am not sure about how |
May be we can remove the sticky one when JS is enabled after scrolling a bit. If not lets leave it as such. Also for scrolling to top lets use |
Done! The back to button is now functioning without js. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets make sure we add display: none
for this element in the print.scss
so that we dont see the arrow in print preview :). Other than that everything looks perfect thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
cc: @eslint/website-team friendly ping for review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@kecrily just a reminder: if you approve a PR and don't merge it, please explain why. Right now I'm not sure if you're expecting something else to happen or not. |
(function () { | ||
const scrollUpBtn = document.getElementById("scroll-up-btn"); | ||
|
||
if(window.innerWidth < 1400) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a suggestion here. This width check can be removed and media query can be used instead to show or hide scroll button for desktop. In no-js
right now it will show in desktop device too?
@nzakas I thought that my request for a review of snitin315 had shown the reason why I didn't merge it. But it doesn't matter. I will indicate this separately next time. |
@@ -154,6 +154,7 @@ | |||
<script src="{{ '/assets/js/focus-visible.js' | url }}"></script> | |||
<script src="{{ '/assets/js/main.js' | url }}"></script> | |||
<script src="{{ '/assets/js/tabs.js' | url }}"></script> | |||
<script src="{{ '/assets/js/scroll-up-btn.js' | url }}"></script> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<script src="{{ '/assets/js/scroll-up-btn.js' | url }}"></script> |
<a id="scroll-up-btn" href="#site_top"> | ||
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24"><line x1="12" x2="12" y1="19" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> | ||
</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<a id="scroll-up-btn" href="#site_top"> | |
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24"><line x1="12" x2="12" y1="19" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> | |
</a> | |
<div class="scroll-up-container"> | |
<a id="scroll-up-btn" href="#site_top"> | |
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24"><line x1="12" x2="12" y1="19" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> | |
</a> | |
</div> |
(function () { | ||
const scrollUpBtn = document.getElementById("scroll-up-btn"); | ||
|
||
if(window.innerWidth < 1400) { | ||
window.addEventListener("scroll", function () { | ||
if(document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) { | ||
scrollUpBtn.style.display = "flex"; | ||
} else { | ||
scrollUpBtn.style.display = "none"; | ||
} | ||
}); | ||
} | ||
})(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(function () { | |
const scrollUpBtn = document.getElementById("scroll-up-btn"); | |
if(window.innerWidth < 1400) { | |
window.addEventListener("scroll", function () { | |
if(document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) { | |
scrollUpBtn.style.display = "flex"; | |
} else { | |
scrollUpBtn.style.display = "none"; | |
} | |
}); | |
} | |
})(); |
@@ -207,3 +207,7 @@ ul { | |||
margin: 1cm; | |||
} | |||
} | |||
|
|||
#scroll-up-btn { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#scroll-up-btn { | |
.scroll-up-container { |
|
||
#scroll-up-btn { | ||
width: 50px; | ||
height: 50px; | ||
display: none; | ||
position: fixed; | ||
right: 50px; | ||
bottom: 35px; | ||
font-size: 1.5rem; | ||
border-radius: 50%; | ||
color: var(--body-background-color); | ||
text-decoration: none; | ||
justify-content: center; | ||
align-items: center; | ||
background-color: var(--link-color); | ||
|
||
@media (max-width: 800px) { | ||
right: 35px; | ||
} | ||
|
||
@media (max-width: 600px) { | ||
right: 25px; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#scroll-up-btn { | |
width: 50px; | |
height: 50px; | |
display: none; | |
position: fixed; | |
right: 50px; | |
bottom: 35px; | |
font-size: 1.5rem; | |
border-radius: 50%; | |
color: var(--body-background-color); | |
text-decoration: none; | |
justify-content: center; | |
align-items: center; | |
background-color: var(--link-color); | |
@media (max-width: 800px) { | |
right: 35px; | |
} | |
@media (max-width: 600px) { | |
right: 25px; | |
} | |
} | |
.scroll-up-container { | |
display: none; | |
position: absolute; | |
top: 0; | |
right: 30px; | |
height: 100%; | |
&::before { | |
content: ""; | |
display: block; | |
height: 120vh; | |
pointer-events: none; | |
} | |
#scroll-up-btn { | |
position: sticky; | |
top: 80vh; | |
cursor: pointer; | |
width: 50px; | |
height: 50px; | |
display: flex; | |
font-size: 1.5rem; | |
border-radius: 50%; | |
color: var(--body-background-color); | |
text-decoration: none; | |
justify-content: center; | |
align-items: center; | |
background-color: var(--link-color); | |
transition: all 1s ease-in; | |
} | |
} | |
@media screen and (max-width: 1400px) { | |
.scroll-up-container { | |
display: block; | |
} | |
} | |
I tried to achieve the same behavior without using js. Pls have a look. I checked locally It works. |
@amareshsm i tried it as the same way as yours and it is working fine on desktop but not on mobile/tablet because in browser apps, on scrolling, the viewable screen height is also changing because browsers widget (like for changing the tabs and URL input) is disappearing on scrolling up and appearing on scrolling down, |
Yes it is happening based on the device viewport height it is changing. We can write media queries based on height and handle it. For now we can go ahead with current approach. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Waiting for code owner review.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thanks for contributing.
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`8.36.0` -> `8.37.0`](https://renovatebot.com/diffs/npm/eslint/8.36.0/8.37.0) | --- ### Release Notes <details> <summary>eslint/eslint</summary> ### [`v8.37.0`](https://github.com/eslint/eslint/releases/tag/v8.37.0) [Compare Source](eslint/eslint@v8.36.0...v8.37.0) #### Features - [`b6ab8b2`](eslint/eslint@b6ab8b2) feat: `require-unicode-regexp` add suggestions ([#​17007](eslint/eslint#17007)) (Josh Goldberg) - [`10022b1`](eslint/eslint@10022b1) feat: Copy getScope() to SourceCode ([#​17004](eslint/eslint#17004)) (Nicholas C. Zakas) - [`1665c02`](eslint/eslint@1665c02) feat: Use plugin metadata for flat config serialization ([#​16992](eslint/eslint#16992)) (Nicholas C. Zakas) - [`b3634f6`](eslint/eslint@b3634f6) feat: docs license ([#​17010](eslint/eslint#17010)) (Samuel Roldan) - [`892e6e5`](eslint/eslint@892e6e5) feat: languageOptions.parser must be an object. ([#​16985](eslint/eslint#16985)) (Nicholas C. Zakas) #### Bug Fixes - [`619f3fd`](eslint/eslint@619f3fd) fix: correctly handle `null` default config in `RuleTester` ([#​17023](eslint/eslint#17023)) (Brad Zacher) - [`1fbf118`](eslint/eslint@1fbf118) fix: `getFirstToken`/`getLastToken` on comment-only node ([#​16889](eslint/eslint#16889)) (Francesco Trotta) - [`129e252`](eslint/eslint@129e252) fix: Fix typo in `logical-assignment-operators` rule description ([#​17000](eslint/eslint#17000)) (Francesco Trotta) #### Documentation - [`75339df`](eslint/eslint@75339df) docs: fix typos and missing info in id-match docs ([#​17029](eslint/eslint#17029)) (Ed Lucas) - [`ec2d830`](eslint/eslint@ec2d830) docs: Fix typos in the `semi` rule docs ([#​17012](eslint/eslint#17012)) (Andrii Lundiak) - [`e39f28d`](eslint/eslint@e39f28d) docs: add back to top button ([#​16979](eslint/eslint#16979)) (Tanuj Kanti) - [`721c717`](eslint/eslint@721c717) docs: Custom Processors cleanup and expansion ([#​16838](eslint/eslint#16838)) (Ben Perlmutter) - [`d049f97`](eslint/eslint@d049f97) docs: 'How ESLint is Maintained' page ([#​16961](eslint/eslint#16961)) (Ben Perlmutter) - [`5251a92`](eslint/eslint@5251a92) docs: Describe guard options for guard-for-in ([#​16986](eslint/eslint#16986)) (alope107) - [`6157d81`](eslint/eslint@6157d81) docs: Add example to guard-for-in docs. ([#​16983](eslint/eslint#16983)) (alope107) - [`fd47998`](eslint/eslint@fd47998) docs: update `Array.prototype.toSorted` specification link ([#​16982](eslint/eslint#16982)) (Milos Djermanovic) - [`3e1cf6b`](eslint/eslint@3e1cf6b) docs: Copy edits on Maintain ESLint docs ([#​16939](eslint/eslint#16939)) (Ben Perlmutter) #### Chores - [`c67f299`](eslint/eslint@c67f299) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).37.0 ([#​17033](eslint/eslint#17033)) (Milos Djermanovic) - [`ee9ddbd`](eslint/eslint@ee9ddbd) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`dddb475`](eslint/eslint@dddb475) chore: upgrade [@​eslint/eslintrc](https://github.com/eslint/eslintrc)[@​2](https://github.com/2).0.2 ([#​17032](eslint/eslint#17032)) (Milos Djermanovic) - [`522431e`](eslint/eslint@522431e) chore: upgrade espree@9.5.1 ([#​17031](eslint/eslint#17031)) (Milos Djermanovic) - [`f5f9a88`](eslint/eslint@f5f9a88) chore: upgrade eslint-visitor-keys@3.4.0 ([#​17030](eslint/eslint#17030)) (Milos Djermanovic) - [`4dd8d52`](eslint/eslint@4dd8d52) ci: bump actions/stale from 7 to 8 ([#​17026](eslint/eslint#17026)) (dependabot\[bot]) - [`ad9dd6a`](eslint/eslint@ad9dd6a) chore: remove duplicate scss, ([#​17005](eslint/eslint#17005)) (Strek) - [`ada6a3e`](eslint/eslint@ada6a3e) ci: unpin Node 19 ([#​16993](eslint/eslint#16993)) (Milos Djermanovic) - [`c3da975`](eslint/eslint@c3da975) chore: Remove triage label from template ([#​16990](eslint/eslint#16990)) (Nicholas C. Zakas) - [`69bc0e2`](eslint/eslint@69bc0e2) ci: pin Node 19 to 19.7.0 ([#​16987](eslint/eslint#16987)) (Milos Djermanovic) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yNC41IiwidXBkYXRlZEluVmVyIjoiMzUuMjQuNSJ9--> Co-authored-by: cabr2-bot <cabr2.help@gmail.com> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1834 Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org> Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org> Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[x] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
What changes did you make? (Give an overview)
Added a back to top button on docs pages for below 1400px screen size and gave it a classname 'scroll-up-btn', added the scroll up button related JS (made a new file) and CSS.
for light mode
for dark mode