Skip to content

eniewold/simple-image-viewer-react19

 
 

Repository files navigation

Simple Image Viewer

Simple image viewer component for React v19+

This is an in-place replacement fork of the original repository react-simple-image-viewer. Apart from support for React version 19, some additional fixed and features have been added.

Change Log

  • v1.3.2 - Initial release with support for React 19, added closeOnClickInside property
  • v1.3.3 - Added alts property to provide alt text for images
  • v1.4.0 - Viewer shows captions under images based on alts string array (also added related disableCaption and captionStyle properties)

Installation

$ npm install simple-image-viewer-react19

or

$ yarn add simple-image-viewer-react19

Example

import React, { useState, useCallback } from 'react';
import { render } from 'react-dom';
import ImageViewer from 'simple-image-viewer-react19';

function App() {
  const [currentImage, setCurrentImage] = useState(0);
  const [isViewerOpen, setIsViewerOpen] = useState(false);
  const images = [
    'https://picsum.photos/1200/800',
    'https://picsum.photos/800/1200',
    'https://picsum.photos/1920/1080',
    'https://picsum.photos/1500/500',
  ];
  const alts = [
    'Random image 1200 by 800',
    'Random image 800 by 1200',
    'Random image 1920 by 1080',
    'Random image 1500 by 500',
  ]

  const openImageViewer = useCallback((index) => {
    setCurrentImage(index);
    setIsViewerOpen(true);
  }, []);

  const closeImageViewer = () => {
    setCurrentImage(0);
    setIsViewerOpen(false);
  };

  return (
    <div>
      {images.map((src, index) => (
        <img
          src={ src }
          onClick={ () => openImageViewer(index) }
          width="300"
          key={ index }
          style={{ margin: '2px' }}
          alt={ alts[index] }
        />
      ))}

      {isViewerOpen && (
        <ImageViewer
          src={ images }
          alt={ alts }
          currentIndex={ currentImage }
          disableScroll={ false }
          closeOnClickOutside={ true }
          closeOnClickInside={ true }
          onClose={ closeImageViewer }
        />
      )}
    </div>
  );
}

render(<App />, document.getElementById('app'));

API

Property Type Description
src string[] Array of image URLs
alt string[] Array of alt texts, used in image and show as caption under image
currentIndex number Index of image in src and alt property shown when viewer is open
onClose function Callback which will be called when viewer is closed
backgroundStyle CSSProperties Object with custom styles for background of modal window
captionStyle CSSProperties Object with custom styles for caption text under image
disableScroll boolean Disable scrolling images by mouse wheel
disableCaption boolean Do not show the caption under the image
closeOnClickOutside boolean Whether viewer should be closed when clicking outside of image
closeOnClickInside boolean Whether viewer should be closed when clicking inside image
closeComponent JSX.Element Custom component for the close button
leftArrowComponent JSX.Element Custom component for the left arrow
rightArrowComponent JSX.Element Custom component for the right arrow

Shortcuts

Shortcut Description
Escape Close the viewer
Right Arrow / l Next image
Left Arrow / h Previous image
Mouse wheel Scrolling previous / next image

Forked from original repository

Github Repository

About

Simple image viewer component for React 19+

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 72.0%
  • CSS 20.2%
  • JavaScript 7.8%