@proangular/ngx-scroll-top
Version:
Configurable, lightweight back to top button for Angular projects.
239 lines (175 loc) • 12 kB
Markdown
<p align="center">
<a href="https://www.ProAngular.com" target="_blank">
<img src="public/images/pro-angular-logo.png" />
</a>
<h1 align="center">
<a href="https://www.ProAngular.com" target="_blank">
Pro Angular
</a>: Scroll Top Button
</h1>
</p>
[](https://www.npmjs.com/@proangular/ngx-scroll-top)
[](https://github.com/ProAngular/ngx-scroll-top)
[](https://github.com/ProAngular/ngx-scroll-top/search?l=typescript)
[](https://www.npmjs.com/@proangular/ngx-scroll-top)
[](https://www.npmjs.com/@proangular/ngx-scroll-top)
[](https://www.npmjs.com/@proangular/ngx-scroll-top)
[](https://bundlephobia.com/result?p=ProAngular/ngx-scroll-top)
[](https://www.ProAngular.com/demos/ngx-scroll-top)
[](https://www.proangular.com)
[](https://gitter.im/ProAngular/community)
[](https://discord.com/channels/1003103094588055552)
[](https://github.com/sponsors/ProAngular)
[](/LICENSE)
[](https://github.com/ProAngular/ngx-scroll-top/actions/workflows/on-merge-main-deploy-gpr.yml)
[](https://github.com/ProAngular/ngx-scroll-top/actions/workflows/on-merge-main-deploy-npmjs.yml)
## Table of Contents
- [Description](#description)
- [Demo](#demo)
- [Installation](#installation)
- [Prerequisites](#prerequisites)
- [Install Scroll Top Component](#install-scroll-top-component)
- [Usage](#usage)
- [Component API](#api)
- [Compatibility](#compatibility)
- [Issues & Contribution](#development)
- [Donations](#donations)
- [Licensing](#licensing)
- [Wrapping Up](#wrapping-up)
## Description <a name="description"></a>
Configurable, lightweight back to top button for Angular projects.
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Demo <a name="demo"></a>
<p align="center">
<img src="public/images/demo-scroll-top.gif" />
</p>
Live demo here:
[https://www.ProAngular.com/demos/ngx-scroll-top](https://www.ProAngular.com/demos/ngx-scroll-top)
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Installation <a name="installation"></a>
Using Node Package Manager ([NPM][url-node-js]) in a new terminal window run the
following commands to install the required dependencies.
### Prerequisites <a name="prerequisites"></a>
**Angular Material**
More information on theming Angular Material:
https://material.angular.io/guide/theming
```bash
ng add @angular/material
```
### Install Scroll Top Component <a name="install-scroll-top-component"></a>
```bash
ng add @proangular/ngx-scroll-top@latest
```
or
```bash
npm install @proangular/ngx-scroll-top --save
```
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Usage <a name="usage"></a>
Default (blue button with white icon)
```html
<ngx-scroll-top></ngx-scroll-top>
```
Customization with optional inputs and icon
```html
<ngx-scroll-top
backgroundColor="#0D58C0"
[bottomOffset]="footer.height"
[displayAtYPosition]="1000"
fontColor="#FFFAFA"
fontSize="2rem"
height="3rem"
position="left"
[zIndex]="1"
width="3rem"
>⇮</ngx-scroll-top
>
```
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Component API <a name="api"></a>
| Input | Value Typing | Default Value | Description |
| ---------------------- | --------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **backgroundColor** | string | `'#0D58C0'` (dark-blue) | Background color of the back to top button. Define any `'x'` css property available for `'background-color: x'`. |
| **bottomOffset** | string \| number | `'0px'` | Offset `px` from bottom of page when scrolled to bottom. For example this can be used to make sure the back to top button never overlaps a footer. |
| **displayAtYPosition** | string \| number | `'420px'` | The back to top button will not be displayed until the user scrolls to the provided Y (vertical `px`) coordinate on the page. |
| **fontColor** | string | `'#FFFFFF'` (white) | The font color for the nested content within the back to top button. Define any `'x'` css property available for `'color: x'`. |
| **fontSize** | string | `'16px'` | The font size for the nested content within the back to top button. Define any `'x'` css property available for `'font-size: x'`. |
| **height** | string | `'40px'` | Height of back to top button in string px format. |
| **position** | `'left'` \| `'right'` | `'right'` | Position on-screen where the back to top button is displayed. |
| **width** | string | `'40px'` | Width of back to top button in string px format. |
| **zIndex** | number | `999` | Style the `z-index` for the back to top button as needed for correct layer height adjustment. This can be useful when working with sticky headers. |
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Compatibility <a name="compatibility"></a>
| Angular version | @proangular/ngx-scroll-top | Status |
| --------------- | -------------------------- | ---------- |
| v19 | v19.0.0 | Compatible |
| v18 | ------ | Untested |
| v17 | ------ | Untested |
| v16 | ------ | Untested |
| v15 | ------ | Untested |
| v14 | v1.x.x | Compatible |
| v13 | v1.x.x | Compatible |
| v12 | v1.x.x | Compatible |
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Issues & Contribution <a name="development"></a>
Please submit all issues, and feature requests here:
[https://github.com/ProAngular/ngx-scroll-top/issues](https://github.com/ProAngular/ngx-scroll-top/issues)
Contribution:
1. Clone the repo and create a new branch:
- `git clone https://github.com/ProAngular/ngx-scroll-top.git`
- `git checkout -b username/feature-or-bug-description`
2. Bump up the version of package in `package.json` and `package-lock.json`,
commit all changes, push.
- `git add -A`
- `git commit -m "My commit message"`
- `git push origin username/feature-or-bug-description`
3. Submit code in published PR for review and approval. Add a good description
and link any possible user stories or bugs.
- [Create a new pull request](https://github.com/ProAngular/ngx-scroll-top/compare).
4. Allow CI actions to completely run and verify files.
5. Add/ping reviewers and await approval.
Thank you for any and all contributions!
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Licensing <a name="licensing"></a>
This project is licensed under the **MIT** License. See the
[LICENSE](LICENSE.md) file for the pertaining license text.
`SPDX-License-Identifier: MIT`
<p align="right">[ <a href="#index">Index</a> ]</p>
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
## Wrapping Up <a name="wrapping-up"></a>
Thank you to the entire Angular team and community for such a great framework to
build upon. If you have any questions, please let me know by opening an issue
[here][url-new-issue].
| Type | Info |
| :------------------------------------------------------------------------ | :------------------------------------------------------------- |
| <img width="48" src=".github/images/ng-icons/email.svg" /> | webmaster@codytolene.com |
| <img width="48" src=".github/images/simple-icons/github.svg" /> | https://github.com/sponsors/CodyTolene |
| <img width="48" src=".github/images/simple-icons/buymeacoffee.svg" /> | https://www.buymeacoffee.com/codytolene |
| <img width="48" src=".github/images/simple-icons/bitcoin-btc-logo.svg" /> | bc1qfx3lvspkj0q077u3gnrnxqkqwyvcku2nml86wmudy7yf2u8edmqq0a5vnt |
Fin. Happy programming friend!
Cody Tolene
<!-- LINKS -->
[url-new-issue]: https://github.com/ProAngular/ngx-scroll-top/issues
[url-node-js]: https://nodejs.org/