UNPKG

ngx-glide

Version:

Angular wrapper component of Glide carousel library

195 lines (154 loc) 14.1 kB
# ngx-glide Angular wrapper component of [Glide](https://glidejs.com) carousel library. ![npm](https://img.shields.io/npm/v/ngx-glide) ![NPM](https://img.shields.io/npm/l/ngx-glide) ![npm bundle size](https://img.shields.io/bundlephobia/min/ngx-glide) ## Environment Support - Angular 6+ - Server-side Rendering ## Compatibility Versions compatibility list: | ngx-glide | Angular | @glidejs/glide | | --------- | ------------- | -------------- | | 16.x.x | 16.x.x | 3.x.x | | 15.x.x | 15.x.x | 3.x.x | | 14.x.x | 14.x.x | 3.x.x | | 13.x.x | 13.x.x | 3.x.x | | 12.x.x | 12.x.x | 3.x.x | | 11.x.x | 11.x.x | 3.x.x | | 10.x.x | 10.x.x | 3.x.x | | 1.x.x | 6.x.x - 9.x.x | 3.x.x | ## Installation ```sh npm i @glidejs/glide@3 ngx-glide ``` ## Demo [Demo page](https://avivharuzi.github.io/ngx-glide) ## Usage Add scss files to the `styles` section of your `angular.json`: ```json "styles": [ "src/styles.scss", "node_modules/@glidejs/glide/src/assets/sass/glide.core", "node_modules/@glidejs/glide/src/assets/sass/glide.theme" ], ``` You can either import the `styles` files into main scss file: ```scss @use '@glidejs/glide/src/assets/sass/glide.core' as *; @use '@glidejs/glide/src/assets/sass/glide.theme' as *; ``` Import `NgxGlideModule` into the current module's imports: ```ts import { NgxGlideModule } from 'ngx-glide'; imports: [ // ... NgxGlideModule, ], ``` You can also import `NgxGlideComponent` as standalone component: ```ts import { NgxGlideComponent } from 'ngx-glide'; @Component({ standalone: true, imports: [NgxGlideComponent], // ... }) export class MyComponent {} ``` Use in your components (add html items into the ngx-glide component): ```html <ngx-glide> <div>0</div> <div>1</div> <div>2</div> </ngx-glide> ``` You can also access to the component instance directly like this: ```ts // Get the component instance. @ViewChild(NgxGlideComponent, { static: false }) ngxGlide: NgxGlideComponent; play(): void { this.ngxGlide.play(); } ``` Update the carousel items dynamically (**only available from version 12**). ```html <ng-container *ngIf="names && names.length > 0"> <ngx-glide #ngxGlide> <ng-container *ngFor="let name of names"> <div>{{ name }}</div> </ng-container> </ngx-glide> </ng-container> ``` ```ts // Get the component instance. @ViewChild('ngxGlide') ngxGlide!: NgxGlideComponent; names: string[]; constructor() { this.names = ['Johny Depp', 'Christian Bale']; } updateItems(): void { this.names = [...this.names, 'Tom Hanks']; if (this.ngxGlide) { this.ngxGlide.recreate(); } } ``` ## API ### Inputs | Input | Type | Default | Description | | --------------------- | --------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------ | | `showArrows` | boolean | `true` | Indicates if to show arrows in the view or not. | | `showBullets` | boolean | `true` | Indicates if to show bullets in the view or not. | | `arrowLeftLabel` | string | `'prev'` | The label presented in the arrow left side. | | `arrowLeftTemplate` | TemplateRef | `null` | Custom HTML (TemplateRef) to use for arrow left this disable the default. | | `arrowRightLabel` | string | `'next'` | The label presented in the arrow right side. | | `arrowRightTemplate` | TemplateRef | `null` | Custom HTML (TemplateRef) to use for arrow right this disable the default. | | `listenToEvents` | boolean | `false` | If you need to get output events set it to true (by default is false to save performance). | | `type` | string | `'slider'` | Type of the movement. | | `startAt` | number | `0` | Start at specific slide number. | | `perView` | number | `1` | A number of visible slides. | | `focusAt` | number &#124; string | `0` | Focus currently active slide at a specified position. | | `gap` | number | `10` | A size of the space between slide. | | `autoplay` | number &#124; boolean | `false` | Change slides after a specified interval. | | `hoverpause` | boolean | `true` | Stop autoplay on mouseover. | | `keyboard` | boolean | `true` | Change slides with keyboard arrows. | | `bound` | boolean | `false` | Stop running `perView` number of slides from the end. | | `swipeThreshold` | number &#124; boolean | `80` | Minimal swipe distance needed to change the slide. | | `dragThreshold` | number &#124; boolean | `120` | Minimal mousedrag distance needed to change the slide. | | `perTouch` | number &#124; boolean | `false` | A maximum number of slides moved per single swipe or drag. | | `touchRatio` | number | `0.5` | Alternate moving distance ratio of swiping and dragging. | | `touchAngle` | number | `45` | Angle required to activate slides moving. | | `animationDuration` | number | `400` | Easing function for the animation. | | `rewind` | boolean | `true` | Allow looping the `slider` type. | | `rewindDuration` | number | `800` | Duration of the rewinding animation. | | `animationTimingFunc` | string | `'cubic-bezier(0.165, 0.840, 0.440, 1.000)'` | Easing function for the animation. | | `direction` | string | `'ltr'` | Moving direction mode. | | `peek` | number &#124; object | `0` | The value of the future viewports which have to be visible in the current view. | | `breakpoints` | object | `{}` | Collection of options applied at specified media breakpoints. | | `throttle` | number | `25` | Throttle costly events | ## Outputs | Output | Event Type | Example | Description | | ----------------- | ---------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `mountedBefore` | void | | Called before first mounting begins. However, the mounting phase has not been started, and components are not bootstrapped yet. | | `mountedAfter` | void | | Called right after first mounting. All components have been mounted. | | `updated` | void | | Called right after updating settings with update() API method. | | `played` | void | | Called right after starting an instance with play() API method. | | `paused` | void | | Called right after stopping instance with pause() API method. | | `buildedBefore` | void | | Called right before setting up a slider to its initial state. At this point, classes, translations, and sizes are applied. | | `buildedAfter` | void | | Called right after setting up a slider to its initial state. At this point, classes, translations, and sizes are applied. | | `ranBefore` | object | `{ "direction": ">", "steps": 0 }` | Called right before calculating new index and making a transition. The movement schema (eg. `=1`) string has been parsed. | | `ran` | object | `{ "direction": ">", "steps": 0 }` | Called right after calculating new index and before making a transition. The movement schema (eg. `=1`) string has been parsed. | | `ranAfter` | object | `{ "direction": ">", "steps": 0 }` | Called after calculating new index and making a transition. The movement schema (eg. `=1`) string has been parsed. | | `ranOffset` | object | `{ "direction": ">", "steps": 0 }` | Called after calculating new index and making a transition, while we did an offset animation. Offset animation take place at two moments. | | `runStarted` | object | `{ "direction": ">", "steps": 0 }` | Called right after calculating the new index, but before making a transition, while we did a rewinding to the start index. | | `runEnded` | object | `{ "direction": ">", "steps": 0 }` | Called right after calculating the new index, but before making a transition, while we did a rewinding to the last index. | | `moved` | object | `{ "movement": 0 }` | Called right before movement transition begins. | | `movedAfter` | object | `{ "movement": 0 }` | Called right after movement transition ends. | | `resized` | void | | Called when the window is being resized. This event throttled. | | `swipeStarted` | void | | Called right after swiping begins. | | `swipeMoved` | void | | Called during swiping movement. | | `swipeEnded` | void | | Called right after swiping ends. | | `translateJumped` | object | | Called right before a translate applies, while we doing a jump to the first or last slide from offset movement. This event is only used when a type is set up to carousel. | # License [MIT](LICENSE)