1.0.1 • Published 8 months ago
rt-image-gallery v1.0.1
@react2svelte/image-gallery
This is an image gallery for Svelte based on react-image-gallery v1.2.11. Many thanks to all the contributors of that package for their hard work!
Live Demo (try it on mobile for swipe support)
react2svelte.github.io/image-gallery/.
React image gallery is a React component for building image galleries and carousels
Features
- Mobile swipe gestures (using @react2svelte/swipable)
- Thumbnail navigation
- Fullscreen support
- RTL support
- Responsive design
- Tons of customization options (see props below)
play,pause,slide,beforeslide,screenchange,imageload,imageerror,clickevents
Not yet ported
- Custom rendered slides and controls
- Some events (see below)
Getting started
Install the library
npm i @react2svelte/image-galleryUse it in your component/page
<script lang="ts">
import ImageGallery from '@react2svelte/image-gallery';
const images = [
{
original: 'https://picsum.photos/id/1018/1000/600/',
thumbnail: 'https://picsum.photos/id/1018/250/150/'
},
{
original: 'https://picsum.photos/id/1015/1000/600/',
thumbnail: 'https://picsum.photos/id/1015/250/150/'
},
{
original: 'https://picsum.photos/id/1019/1000/600/',
thumbnail: 'https://picsum.photos/id/1019/250/150/'
}
];
</script>
<ImageGallery items="{images}" />Demo
You can also have a look at the demo page of the package, it allows setting library settings interactively. To run it locally:
git clone https://github.com/react2svelte/image-gallery.git
cd image-gallery
npm install
npm run devAnd open http://localhost:5173/
Props
items: (required) Array of objects, see example above,- Available Properties
original- image src urlthumbnail- image thumbnail src urlfullscreen- image for fullscreen (defaults to original)originalHeight- image height (html5 attribute)originalWidth- image width (html5 attribute)loading- image loading. Either "lazy" or "eager" (html5 attribute)thumbnailHeight- image height (html5 attribute)thumbnailWidth- image width (html5 attribute)thumbnailLoading- image loading. Either "lazy" or "eager" (html5 attribute)originalClass- custom image classthumbnailClass- custom thumbnail classrenderItem- Function for custom rendering a specific slide (see renderItem below)renderThumbInner- Function for custom thumbnail renderer (see renderThumbInner below)originalAlt- image altthumbnailAlt- thumbnail image altoriginalTitle- image titlethumbnailTitle- thumbnail image titlethumbnailLabel- label for thumbnaildescription- description for imagesrcSet- image srcset (html5 attribute)sizes- image sizes (html5 attribute)bulletClass- extra class for the bullet of the item
- Available Properties
infinite: Boolean, defaulttrue- infinite sliding
lazyLoad: Boolean, defaultfalseshowNav: Boolean, defaulttrueshowThumbnails: Boolean, defaulttruethumbnailPosition: String, defaultbottom- available positions:
top, right, bottom, left
- available positions:
showFullscreenButton: Boolean, defaulttrueuseBrowserFullscreen: Boolean, defaulttrue- if false, fullscreen will be done via css within the browser
useTranslate3D: Boolean, defaulttrue- if false, will use
translateinstead oftranslate3dcss property to transition slides
- if false, will use
showPlayButton: Boolean, defaulttrueisRTL: Boolean, defaultfalse- if true, gallery's direction will be from right-to-left (to support right-to-left languages)
showBullets: Boolean, defaultfalseshowIndex: Boolean, defaultfalseautoPlay: Boolean, defaultfalsedisableThumbnailScroll: Boolean, defaultfalse- disables the thumbnail container from adjusting
disableKeyDown: Boolean, defaultfalse- disables keydown listener for keyboard shortcuts (left arrow, right arrow, esc key)
disableSwipe: Boolean, defaultfalsedisableThumbnailSwipe: Boolean, defaultfalseonErrorImageURL: String, defaultundefined- an image src pointing to your default image if an image fails to load
- handles both slide image, and thumbnail image
indexSeparator: String, default' / ', ignored ifshowIndexis falseslideDuration: Number, default450- transition duration during image slide in milliseconds
swipingTransitionDuration: Number, default0- transition duration while swiping in milliseconds
slideInterval: Number, default3000slideOnThumbnailOver: Boolean, defaultfalseflickThreshold: Number (float), default0.4- Determines the max velocity of a swipe before it's considered a flick (lower = more sensitive)
swipeThreshold: Number, default30- A percentage of how far the offset of the current slide is swiped to trigger a slide event. e.g. If the current slide is swiped less than 30% to the left or right, it will not trigger a slide event.
stopPropagation: Boolean, defaultfalse- Automatically calls stopPropagation on all 'swipe' events.
startIndex: Number, default0additionalClass: String,- Additional class that will be added to the root node of the component.
useWindowKeyDown: Boolean, defaulttrue- If
true, listens to keydown events on window (window.addEventListener) - If
false, listens to keydown events on image gallery element (imageGalleryElement.addEventListener)
- If
Functions
The following functions can be accessed:
play(): plays the slidespause(): pauses the slidesfullScreen(): activates full screenexitFullScreen(): deactivates full screenslideToIndex(index): slides to a specific indexgetCurrentIndex(): returns the current index
Events
Already supported
slide: Function,details: { currentIndex: number }beforeslide: Function,details: { nextIndex: number }screenchange: Function,details: { fullscreen: boolean }- When fullscreen is toggled a boolean is passed to the callback
pause: Function,details: { currentIndex: number }play: Function,details: { currentIndex: number }imageload: Function,details: { index: number, event }imageerror: Function,details: { index: number, event }click: Function,details: event
Not yet supported
onThumbnailError: Function,callback(event)- overrides onErrorImage
onThumbnailClick: Function,callback(event, index)onTouchMove: Function,callback(event) on gallery slideonTouchEnd: Function,callback(event) on gallery slideonTouchStart: Function,callback(event) on gallery slideonMouseOver: Function,callback(event) on gallery slideonMouseLeave: Function,callback(event) on gallery slide
Custom Controls
react-image-gallery supports rendering custom controls, this feature has not been ported yet.
License
MIT
1.0.1
8 months ago