Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@manderlai/ngx-gallery

A simple responsive native gallery component for Angular 8+ and 13+. With image error handler

angular, gallery, component, ngx-gallery, responsive gallery component

readme

NgxGallery

A simple native gallery component for Angular 8+ and 13+
With image error handler.

npm version

Important info

This package was forked from - @kolkov/ngx-gallery

What was changed

Added - <img (error)='errorHandler()'> error image handler to stop loader icon and show error image if needed
Added - defaultErrorImage option to pass default error image
Added - errorImage option to galleryImages array to specify image Url for each image if needed

Installation

Install via [npm][npm] package manager

npm install @manderlai/ngx-gallery --save

where

import {Component, OnInit} from '@angular/core';
import {NgxGalleryOptions} from '@manderlai/ngx-gallery';
import {NgxGalleryImage} from '@manderlai/ngx-gallery';
import {NgxGalleryAnimation} from '@manderlai/ngx-gallery';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit{
  galleryOptions: NgxGalleryOptions[];
  galleryImages: NgxGalleryImage[];

  constructor() { }

  ngOnInit() {
    this.galleryOptions = [
      {
        width: '600px',
        height: '400px',
        thumbnailsColumns: 4,
        defaultErrorImage: 'assets/img/missing-image.svg',
        imageAnimation: NgxGalleryAnimation.Slide
      },
      // max-width 800
      {
        breakpoint: 800,
        width: '100%',
        height: '600px',
        imagePercent: 80,
        thumbnailsPercent: 20,
        thumbnailsMargin: 20,
        thumbnailMargin: 20
      },
      // max-width 400
      {
        breakpoint: 400,
        preview: false
      }
    ];

    this.galleryImages = [
      {
        small: 'assets/img/gallery/1-small.jpeg',
        medium: 'assets/img/gallery/1-medium.jpeg',
        big: 'assets/img/gallery/1-big.jpeg',
        errorImage: 'assets/img/missing-image.svg',
      },
      {
        small: 'assets/img/gallery/2-small.jpeg',
        medium: 'assets/img/gallery/2-medium.jpeg',
        big: 'assets/img/gallery/2-big.jpeg'
      },
      {
        small: 'assets/img/gallery/3-small.jpeg',
        medium: 'assets/img/gallery/3-medium.jpeg',
        big: 'assets/img/gallery/3-big.jpeg'
      },{
        small: 'assets/img/gallery/4-small.jpeg',
        medium: 'assets/img/gallery/4-medium.jpeg',
        big: 'assets/img/gallery/4-big.jpeg',
        errorImage: 'assets/img/missing-image-2.svg',
      },
      {
        small: 'assets/img/gallery/5-small.jpeg',
        medium: 'assets/img/gallery/5-medium.jpeg',
        big: 'assets/img/gallery/5-big.jpeg'
      }
    ];
  }
}

add this class to app CSS .ngx-gallery { display: inline-block; margin-bottom: 20px; }

API

Inputs

Input Type Default Required Description
[options] NgxGalleryOptions[] - no Config options for the Gallery
[images] NgxGalleryImage[] - no Images array

Outputs

Output Description
(change) Triggered on image change
(imagesReady) Triggered when images length > 0
(previewOpen) Triggered on preview open
(previewClose) Triggered on preview close
(previewChange) Triggered on preview image change

Methods

Name | Description | | ------------- | ------------- | | show(index: number): void | Shows image at index | | showNext(): void | Shows next image | | showPrev(): void | Shows prev image | | canShowNext(): boolean | Returns true if there is next image | | canShowPrev(): boolean | Returns true if there is prev image | | openPreview(index: number): void | Opens preview at index | | moveThumbnailsLeft(): void | Moves thumbnails to left | | moveThumbnailsRight(): void | Moves thumbnails to right | | canMoveThumbnailsLeft(): boolean | Returns true if you can move thumbnails to left | | canMoveThumbnailsRight(): boolean | Returns true if you can move thumbnails to right |

NgxGalleryOptions

Layout options

Input Type Default Required Description
width string 500px no Gallery width
height string 400px no Gallery height
breakpoint number undefined no Responsive breakpoint, works like media query max-width
fullWidth bolean false no Sets the same width as browser
layout string NgxGalleryLayout.Bottom no Sets thumbnails position
startIndex number 0 no Sets index of selected image on start
linkTarget string _blank no Sets target attribute of link
lazyLoading boolean true no Enables/disables lazy loading for images

Image options

Input Type Default Required Description
defaultErrorImage string null no Url to error image
image boolean true no Enables or disables image
imageDescription boolean true no Enables or disables description for images
imagePercent number 75 no Percentage height
imageArrows boolean true no Enables or disables arrows
imageArrowsAutoHide boolean false no Enables or disables arrows auto hide
imageSwipe boolean false no Enables or disables swipe
imageAnimation string NgxGalleryAnimation.Fade no Animation type
imageSize string NgxGalleryImageSize.Cover no Image size
imageAutoPlay boolean false no Enables or disables auto play
imageAutoPlayInterval number 2000 no Interval for auto play (ms)
imageAutoPlayPauseOnHover boolean false no Enables or disables pause auto play on hover
imageInfinityMove boolean false no Enables or disables infinity move by arrows
imageActions NgxGalleryAction[] [] no Enables or disables navigation bullets

Thumbnails options

Input Type Default Required Description
thumbnails boolean true no Enables or disables thumbnails
thumbnailsColumns number 4 no Columns count
thumbnailsRows number 1 no Rows count
thumbnailsPercent number 25 no Percentage height
thumbnailsMargin number 10 no Margin between thumbnails and image
thumbnailsArrows boolean true no Enables or disables arrows
thumbnailsArrowsAutoHide boolean false no Enables or disables arrows auto hide
thumbnailsSwipe boolean false no Enables or disables swipe
thumbnailsMoveSize number 1 no Number of items to move on arrow click
thumbnailsOrder number NgxGalleryOrder.Column no Images order
thumbnailsRemainingCount boolean false no If true arrows are disabled and last item has label with remaining count
thumbnailsAsLinks boolean false no Enables or disables links on thumbnails
thumbnailsAutoHide boolean false no Hides thumbnails if there is only one image
thumbnailMargin number 10 no Margin between images in thumbnails
thumbnailSize string NgxGalleryImageSize.Cover no Thumbnail size
thumbnailActions NgxGalleryAction[] [] no Array of custom actions
thumbnailClasses string[] [] no Custom classes to add to thumbnail component

Preview options

Input Type Default Required Description
preview boolean true no Enables or disables preview
previewDescription boolean true no Enables or disables description for images
previewArrows boolean true no Enables or disables arrows
previewArrowsAutoHide boolean: string false no Enables or disables arrows auto hide
previewSwipe boolean false no Enables or disables swipe
previewFullscreen boolean false no Enables or disables fullscreen icon
previewForceFullscreen boolean false no Enables or disables opening preview in fullscreen mode
previewCloseOnClick boolean false no Enables or disables closing preview by click
previewCloseOnEsc boolean false no Enables or disables closing preview by esc keyboard
previewKeyboardNavigation boolean false no Enables or disables navigation by keyboard
previewAnimation boolean true no Enables or disables image loading animation
previewAutoPlay boolean false no Enables or disables auto play
previewAutoPlayInterval number 2000 no Interval for auto play (ms)
previewAutoPlayPauseOnHover boolean false no Enables or disables pouse auto play on hover
previewInfinityMove boolean false no Enables or disables infinity move by arrows
previewZoom boolean false no Enables or disables zoom in and zoom out
previewZoomStep number 0.1 no Step for zoom change
previewZoomMax number 2 no Max value for zoom
previewZoomMin number 0.5 no Min value for zoom
previewRotate boolean false no Enables or disables rotate buttons
previewDownload boolean false no Enables or disables download button
previewBullets boolean false no Enables or disables navigation bullets

Icons options

Input Type Default Required Description
arrowPrevIcon string 'fa fa-arrow-circle-left' no Icon for prev arrow
arrowNextIcon string 'fa fa-arrow-circle-right' no Icon for next arrow
closeIcon string 'fa fa-times-circle' no Icon for close button
fullscreenIcon string 'fa fa-arrows-alt' no Icon for fullscreen button
spinnerIcon string 'fa fa-spinner fa-pulse fa-3x fa-fw' no Icon for spinner
zoomInIcon string 'fa fa-search-plus' no Icon for zoom in
zoomOutIcon string 'fa fa-search-minus' no Icon for zoom out
rotateLeftIcon string 'fa fa-undo' no Icon for rotate left
rotateRightIcon string 'fa fa-repeat' no Icon for rotate right
downloadIcon string 'fa fa-arrow-circle-down' no Icon for download
actions NgxGalleryAction[] [] no Array of new custom actions that will be added to the left of the current close/zoom/fullscreen icons

NgxGalleryImage

Input Type Default Required Description
small string/SafeResourceUrl - no Url used in thumbnails
medium string/SafeResourceUrl - no Url used in image
big string/SafeResourceUrl - yes Url used in preview
description string - no Description used in preview
errorImage string/SafeResourceUrl - no Url used to show error image
url string - no Url used in link
label string - no Label used for aria-label when thumbnail is a link

NgxGalleryAnimation

  • Fade (default)
  • Slide
  • Rotate
  • Zoom

NgxGalleryImageSize

  • Cover (default)
  • Contain

NgxGalleryLayout

  • Top
  • Bottom (default)

NgxGalleryOrder

  • Column (default)
  • Row
  • Page

NgxGalleryAction

  • icon | Type: string - icon for custom action
  • disabled | Type: boolean | Default value: false - if the icon should be disabled
  • titleText | Type: string | Default value: '' - text to set the title attribute to
  • onClick | Type: (event: Event, index: number) => void - Output function to call when custom action icon is clicked

What's included

Within the download you'll find the following directories and files. You'll see something like this:

ngx-gallery/
└── projects/
    ├── gallery/
    └── gallery-app/

gallery/ - library

gallery-app/ - demo application

Credits

This library is being fully rewritten for next Angular versions from original abandoned library written by Łukasz Gałka. I maintained full compatibility with the original library at the api level. https://github.com/lukasz-galka/ngx-gallery

changelog

2.0.0 (2022-01-06)

  • Update to Angular v13 and new Ivy package format

1.0.11 (2020-03-05)

  • Need to add ngx-gallery class to CSS documentation #8
  • Unable to get custom icons to work #6
  • Mention about original lib #7

1.0.0 (2019-11-24)

  • Initial release