UNPKG

@omnedia/ngx-scrollbar

Version:

A simple component library to create a custom scrollbar for the Y-Direction.

162 lines (120 loc) 4.2 kB
# ngx-scrollbar <a href="https://ngxui.com" target="_blank" style="display: flex;gap: .5rem;align-items: center;cursor: pointer; padding: 0 0 0 0; height: fit-content;"> <img src="https://ngxui.com/assets/img/ngxui-logo.png" style="width: 64px;height: 64px;"> </a> This Library is part of the NGXUI ecosystem. <br> View all available components at https://ngxui.com `@omnedia/ngx-scrollbar` is an Angular library that provides a customizable and lightweight scrollbar component. This component offers a custom scrollbar with smooth scrolling functionality and allows for full control over its appearance through styling. ## Features - Custom scrollbar for the y-Direction with adjustable styles and behavior. - Smooth scrolling with click-and-drag functionality. - Easily integratable into Angular projects as a standalone component. - Allows for styling customization via CSS classes and inline styles. ## Installation Install the library using npm: ```bash npm install @omnedia/ngx-scrollbar ``` ## Usage Import the `NgxScrollbarComponent` in your Angular module or component: ```typescript import {NgxScrollbarComponent} from '@omnedia/ngx-scrollbar'; @Component({ ... imports: [ ... NgxScrollbarComponent, ], ... }) ``` Use the component in your template: ```html <om-scrollbar [styleClass]="'custom-scrollbar'"> <div> <!-- Your scrollable content here --> <p>Scrollable content 1</p> <p>Scrollable content 2</p> <p>Scrollable content 3</p> </div> </om-scrollbar> ``` ## How It Works - Custom Scrollbar: The ngx-scrollbar component wraps your content inside a custom scrollbar container. The appearance of the scrollbar can be controlled via the styleClass input, allowing for full customization. - Smooth Scrolling: The scrollbar supports smooth scrolling, and users can drag the scrollbar for precise control. - Dynamic Calculation: The size of the scrollbar is calculated based on the content height relative to the container. ## API ```html <om-scrollbar [styleClass]="'your-custom-class'" [onlyShowOnHover]="onlyShowOnHover"> <ng-content></ng-content> </om-scrollbar> ``` - `styleClass` (optional): A custom CSS class to apply to the scrollbar component for additional styling. - `onlyShowOnHover` (optional): Sets if the scrollbar is only visible while you hover the content. ## Example ```html <om-scrollbar [styleClass]="'custom-scrollbar-style'"> <div> <p>Item 1</p> <p>Item 2</p> <p>Item 3</p> <!-- Add more content here --> </div> </om-scrollbar> ``` This will create a custom scrollbar for the content with the specified custom styles. ## Styling You can style the component globally or use the styleClass input to apply your custom styles. <br> Make sure to give the `om-scrollbar` component a height of 100% in your component. <br> The `max-height` is defined by the components parent component. ## Custom Scrollbar Styling Example In this example, the scrollbar bar is styled to be larger and colored differently: ```html <div class="nav-bar"> <om-scrollbar styleClass="custom-scrollbar"> <div class="nav-items"> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> <p>Content</p> </div> </om-scrollbar> </div> ``` ```css /* Component styling */ om-scrollbar { height: 100%; } .nav-bar { height: 500px } .nav-items { display: flex; flex-direction: column; gap: 1rem; font-size: 2rem; } /* Global styling */ .custom-scrollbar { background-color: rgb(60, 60, 60) !important; width: 0.5rem !important; border-radius: 12px !important; transition: background-color 0.2s; &:hover, &.om-scrollbar-bar-active { background-color: rgb(80, 80, 80) !important; opacity: 1 !important; } } ``` ## Contributing Contributions are welcome. Please submit a pull request or open an issue to discuss your ideas. ## License This project is licensed under the MIT License.