@smip/ngx-sticky-sidebar
v0.0.3
Published
Angular library for making smart and high performance sticky sidebars.
Downloads
339
Maintainers
Readme
Ngx Sticky Sidebar
Angular library for making smart and high performance sticky sidebars.
Library based on Pure JavaScript plugin Sticky Sidebar
Demo
Installation
Run npm install @smip/ngx-sticky-sidebar -S
Add NgxStickySidebarModule
import to your module:
import { NgxStickySidebarModule } from '@smip/ngx-sticky-sidebar';
...
@NgModule({
imports: [
...
NgxStickySidebarModule
...
],
...
})
Highly recommend install ResizeSensor.js to use with sticky-sidebar
.
More info here
Instalation ResizeSensor.js
npm install css-element-queries -S
Add "./node_modules/css-element-queries/src/ResizeSensor.js"
to angular.json
in section scripts
.
Usage
Add stickySidebar
directive to element witch will be sticky
<div class="main-content">
<div stickySidebar
containerSelector=".main-content"
innerWrapperSelector=".sidebar__inner">
<div class="sidebar__inner">
<!-- Content goes here -->
</div>
</div>
<div class="content">
<!-- Content goes here -->
</div>
</div>
Note that inner sidebar wrapper .sidebar__inner
is optional but highly recommended, if you don't write it yourself, the script will create one for you under class name inner-wrapper-sticky. but this may cause many problems.
UpdateSticky
updateSticky
- subject to force re-calculation of all cached dimensions of sidebar, container and viewport and update position of sidebar according to the new dimensions.
Example
Template:
<div
stickySidebar
updateSticky="updateSticky">
</div>
Component:
import {Subject} from 'rxjs/Subject';
export class SomeComponent {
updateSticky: Subject<boolean> = new Subject();
updateMethod(){
this.updateSticky.next(true);
}
}
Options
All parameters are set through the corresponding attributes. For example:
<div
stickySidebar
containerSelector=".main-content"
innerWrapperSelector=".sidebar__inner">
</div>
About options you could read here
Global options
Additionally you could set all or same parameters globally, via including module with method withConfig
:
import { NgxStickySidebarModule } from '@smip/ngx-sticky-sidebar';
...
@NgModule({
imports: [
...
NgxStickySidebarModule.withConfig({
minWidth: 992
})
...
],
...
})
Issues
If you have questions or issues feel free to create new an topic in issues.
License
Licensed under MIT.