All Projects → benhowell → React Grid Gallery

benhowell / React Grid Gallery

Licence: mit
Justified image gallery component for React

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to React Grid Gallery

Nanogallery2
a modern photo / video gallery and lightbox [JS library]
Stars: ✭ 488 (-14.54%)
Mutual labels:  images, photos, gallery, lightbox, thumbnails
hes-gallery
Light, dependency free, responsive gallery script
Stars: ✭ 27 (-95.27%)
Mutual labels:  photos, gallery, images, lightbox
Insgallery
📸 Instagram-like image picker for Android (一款 UI 炫酷高仿 Instagram 的图片、视频选择器)
Stars: ✭ 409 (-28.37%)
Mutual labels:  photos, gallery, photo-gallery
Gallery shell
📷 Bash Script to generate static responsive image web galleries.
Stars: ✭ 198 (-65.32%)
Mutual labels:  photos, gallery, thumbnails
Lightgallery.js
Full featured JavaScript image & video gallery. No dependencies
Stars: ✭ 5,168 (+805.08%)
Mutual labels:  gallery, lightbox, thumbnails
Chevereto Free
Self-hosted Image Hosting solution. Start your own Flickr/imgur alternative with your own rules.
Stars: ✭ 2,275 (+298.42%)
Mutual labels:  photos, gallery, photo-gallery
Aphotomanager
Manage local photos on Android: gallery, geotag with photomap, privacy, tags, find, sort, view, copy, send, ... .
Stars: ✭ 164 (-71.28%)
Mutual labels:  photos, gallery, photo-gallery
Silentbox
A lightbox inspired Vue.js component.
Stars: ✭ 196 (-65.67%)
Mutual labels:  images, gallery, lightbox
react-simple-image-viewer
Simple image viewer component for React
Stars: ✭ 44 (-92.29%)
Mutual labels:  gallery, images, lightbox
jekyll-photos
Dead simple solution to add a photo gallery to a Jekyll site.
Stars: ✭ 47 (-91.77%)
Mutual labels:  photos, gallery, photo-gallery
Photos
📸 Your memories under your control
Stars: ✭ 157 (-72.5%)
Mutual labels:  photos, gallery, photo-gallery
Zoomwall.js
A content-focused photo gallery using a horizontal masonry layout that scales up in lightbox mode.
Stars: ✭ 254 (-55.52%)
Mutual labels:  photos, gallery, lightbox
Spotlight
Web's most easy to integrate lightbox gallery library. Super-lightweight, outstanding performance, no dependencies.
Stars: ✭ 799 (+39.93%)
Mutual labels:  gallery, lightbox, photo-gallery
Photo view
📸 Easy to use yet very customizable zoomable image widget for Flutter, Photo View provides a gesture sensitive zoomable widget. Photo View is largely used to show interacive images and other stuff such as SVG.
Stars: ✭ 1,280 (+124.17%)
Mutual labels:  images, photos, gallery
Hypertag
Knowledge Management for Humans using Machine Learning & Tags
Stars: ✭ 116 (-79.68%)
Mutual labels:  tagging, images, tags
react-gallery-carousel
Mobile-friendly gallery carousel 🎠 with server side rendering, lazy loading, fullscreen, thumbnails, touch, mouse emulation, RTL, keyboard navigation and customisations.
Stars: ✭ 178 (-68.83%)
Mutual labels:  gallery, thumbnails, lightbox
Simple React Lightbox
A simple but functional light-box for React.
Stars: ✭ 265 (-53.59%)
Mutual labels:  images, gallery, lightbox
V Img
Stars: ✭ 400 (-29.95%)
Mutual labels:  images, gallery
Terratag
Terratag is a CLI tool that enables users of Terraform to automatically create and maintain tags across their entire set of AWS, Azure, and GCP resources
Stars: ✭ 385 (-32.57%)
Mutual labels:  tagging, tags
Zing Gallery
基于node.js的web相册,让摄影照片的展示更加简单 Web albums based on node.js, more simple to show photography photos
Stars: ✭ 401 (-29.77%)
Mutual labels:  photos, gallery

React Grid Gallery

Justified image gallery component for React inspired by Google Photos and based upon React Images.

📣 Maintainers wanted 📣

As react-grid-gallery continues to gain popularity and provide value to many users (around half a million downloads from NPM as of August 2020) it requires maintainers to at least take care of issues and pull requsts. If you're getting value from using this component or if you're just interested in becoming a maintainer, please let me know.

Note:

As of the release of v0.5.4 (2019-03-10) I will no longer be actively adding features and maintaining react-grid-gallery. My online behavioral experiment platform Psychstudio consumes all of my time and I am no longer capable of giving react-grid-gallery the attention it needs. A big thanks to everyone who has contributed over the last 5 years and thanks to everyone who has downloaded react-grid-gallery (hopefully it has been useful to you).

Live Demo & Examples

https://benhowell.github.io/react-grid-gallery/

Installation

Using npm:

npm install --save react-grid-gallery

Quick (and dirty) Start

import React from 'react';
import { render } from 'react-dom';
import Gallery from 'react-grid-gallery';

const IMAGES =
[{
        src: "https://c2.staticflickr.com/9/8817/28973449265_07e3aa5d2e_b.jpg",
        thumbnail: "https://c2.staticflickr.com/9/8817/28973449265_07e3aa5d2e_n.jpg",
        thumbnailWidth: 320,
        thumbnailHeight: 174,
        isSelected: true,
        caption: "After Rain (Jeshu John - designerspics.com)"
},
{
        src: "https://c2.staticflickr.com/9/8356/28897120681_3b2c0f43e0_b.jpg",
        thumbnail: "https://c2.staticflickr.com/9/8356/28897120681_3b2c0f43e0_n.jpg",
        thumbnailWidth: 320,
        thumbnailHeight: 212,
        tags: [{value: "Ocean", title: "Ocean"}, {value: "People", title: "People"}],
        caption: "Boats (Jeshu John - designerspics.com)"
},

{
        src: "https://c4.staticflickr.com/9/8887/28897124891_98c4fdd82b_b.jpg",
        thumbnail: "https://c4.staticflickr.com/9/8887/28897124891_98c4fdd82b_n.jpg",
        thumbnailWidth: 320,
        thumbnailHeight: 212
}]

render(
        <Gallery images={IMAGES}/>,
        document.getElementById('example-0')
);

Image Options

Property Type Default Description
src string undefined Required. A string referring to any valid image resource (file, url, etc).
thumbnail string undefined Required. A string referring to any valid image resource (file, url, etc).
thumbnailWidth number undefined Required. Width of the thumbnail image.
thumbnailHeight number undefined Required. Height of the thumbnail image.
nano string:base64 undefined Optional. Thumbnail Base64 image will be injected to background under the main image. This provides a base64, 4x4 generated image whilst the image is beong loaded.
alt string "" Optional. Image alt attribute.
tags array undefined Optional. An array of objects containing tag attributes (value, title and key if value is element). e.g. {value: "foo", title: "bar"} or {value: <a href={tag.url}>{tag.name}</a>, title: tag.title, key: tag.key}
isSelected bool undefined Optional. The selected state of the image.
caption string|element undefined Optional. Image caption.
srcSet array undefined Optional. Array of srcSets for lightbox.
customOverlay element undefined Optional. A custom element to be rendered as a thumbnail overlay on hover.
thumbnailCaption string|element undefined Optional. A thumbnail caption shown below thumbnail.
orientation number undefined Optional. Orientation of the image. Many newer digital cameras (both dSLR and Point & Shoot digicams) have a built-in orientation sensor. The output of this sensor is used to set the EXIF orientation flag in the image file's metatdata to reflect the positioning of the camera with respect to the ground (See EXIF Orientation Page for more info).

Gallery Options

Property Type Default Description
images array undefined Required. An array of objects containing image properties (see Image Options above).
id string "ReactGridGallery" Optional. id attribute for <Gallery> tag. This prop may be useful for those who wish to discriminate between multiple galleries.
enableImageSelection bool true Optional. Allow images to be selectable. Setting this option to false whilst supplying images with isSelected: true will result in those images being permanently selected.
onSelectImage func undefined Optional. Function to execute when an image is selected. Allows access to image object using this (See Programmers notes for more info about implicit this). Optional args: index (index of selected image in images array), image (the selected image). This function is only executable when enableImageSelection: true.
rowHeight number 180 Optional. The height of each row in the gallery.
maxRows number undefined Optional. The maximum number of rows to show in the gallery.
margin number 2 Optional. The margin around each image in the gallery.
enableLightbox bool true Optional. Enable lightbox display of full size image when thumbnail clicked.
onClickThumbnail func openLightbox Optional. Function to execute when gallery thumbnail clicked. Allows access to image object using this (See Programmers notes for more info about implicit this). Optional args: index (index of selected image in images array), event (the click event). Overrides openLightbox.
lightboxWillOpen func undefined Optional. Function to be called before opening lightbox. Allows access to gallery object using this (See Programmers notes for more info about implicit this). Optional arg: index (index of selected image in images array).
lightboxWillClose func undefined Optional. Function to be called before closing lightbox. Allows access to gallery object using this (See Programmers notes for more info about implicit this).
tagStyle object tagStyle Optional. Style to pass to tag elements. Overrides internal tag style.
tileViewportStyle func tileViewportStyle Optional. Function to style the image tile viewport. Allows access to image object using this (See Programmers notes for more info about implicit this). Overrides internal tileViewportStyle function.
thumbnailStyle func thumbnailStyle Optional. Function to style the image thumbnail. Allows access to image object using this (See Programmers notes for more info about implicit this). Overrides internal thumbnailStyle function.
thumbnailImageComponent React component undefined Optional. Substitute in a React component that would get passed imageProps (the props that would have been passed to the <img> tag) and item (the original item in images) to be used to render thumbnails; useful for lazy loading.

Lightbox Options

NOTE: these options are passed inside the Gallery tag.

e.g.

<Gallery images={IMAGES} backdropClosesModal={true}/>
Property Type Default Description
backdropClosesModal bool false Optional. Allow users to exit the lightbox by clicking the backdrop.
currentImage number 0 Optional. The index of the image to display initially (only relevant when used in conjunction with isOpen: true property).
preloadNextImage bool true Optional. Based on the direction the user is navigating, preload the next available image.
customControls array undefined Optional. An array of elements to display as custom controls on the top of lightbox.
enableKeyboardInput bool true Optional. Supports keyboard input - esc, arrow left, and arrow right.
imageCountSeparator string ' of ' Optional. Customize separator in the image count.
isOpen bool false Optional. Whether or not the lightbox is displayed when gallery first rendered (can be used in conjunction with currentImage property, otherwise the first image will be diplayed).
showCloseButton bool true Optional. Display a close "X" button in top right corner.
showImageCount bool true Optional. Display image index, e.g., "3 of 20".
onClickImage func onClickImage Optional. Function to execute when lightbox image clicked. Overrides internal implementation of onClickImage.
onClickPrev func onClickPrev Optional. Function to execute when lightbox left arrow clicked. Overrides internal implementation of onClickPrev.
onClickNext func onClickNext Optional. Function to execute when lightbox right arrow clicked. Overrides internal implementation of onClickNext.
currentImageWillChange func undefined Optional. Function to execute before lightbox image change. Useful for tracking current image shown in lightbox. Allows access to gallery object using this (See Programmers notes for more info about implicit this).
showLightboxThumbnails bool false Optional. Display thumbnails beneath the Lightbox image.
onClickLightboxThumbnail func gotoImage Optional. Function to execute when lightbox thumbnail clicked. Overrides internal function: gotoImage.
lightboxWidth number 1024 Optional. Maximum width of the lightbox carousel; defaults to 1024px.
lightBoxProps object undefined Optional. Object to pass props directly to LightBox.

General Notes

  • react-grid-gallery is built for modern browsers and therefore IE support is limited to IE 11 and newer.

  • As the inspiration for this component comes from Google Photos, very small thumbnails may not be the most aesthetically pleasing due to the border size applied when selected. A sensible rowHeight default of 180px has been chosen, but rowHeights down to 100px are still reasonable.

  • Gallery width is determined by the containing element. Therefore your containing element must have a width (%, em, px, whatever) before the gallery is loaded!

  • Image Options: thumbnail can point to the same resource as src, bearing in mind the resultant data size of the gallery and page load cost. Thumbnails of whatever size will be scaled to match rowHeight.

Programmers Notes

  • User defined functions that allow access to this via Function.prototype.call() do not require you to declare or pass this as a parameter. this will be defined at the time the function is called.

e.g.

// somewhere in your code...
function myTileViewportStyleFn() {
  if (this.props.item.isSelected)
    return {
           // something stylish...
            };
}

<Gallery images={IMAGES} tileViewportStyle={myTileViewportStyleFn}/>


// internally, within the react-grid-gallery component it will be called like so:
myTileViewportStyleFn.call(this); // this now refers to the image to be styled

  • If you don't know your thumbnailWidth and thumbnailHeight values, you can find these out using any number of javascript hacks, bearing in mind the load penalty associated with these methods.

Contributing

All contributions to react-grid-gallery are very welcome. Feature requests, issue reports and pull requests are greatly appreciated. Please follow the contribution guidelines

License

React Grid Gallery is free to use for personal and commercial projects under the MIT License. Attribution is not required, but appreciated.

Acknowledgements

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].