1.4.0 • Published 4 months ago

simple-image-viewer-react19 v1.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

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

PropertyTypeDescription
srcstring[]Array of image URLs
altstring[]Array of alt texts, used in image and show as caption under image
currentIndexnumberIndex of image in src and alt property shown when viewer is open
onClosefunctionCallback which will be called when viewer is closed
backgroundStyleCSSPropertiesObject with custom styles for background of modal window
captionStyleCSSPropertiesObject with custom styles for caption text under image
disableScrollbooleanDisable scrolling images by mouse wheel
disableCaptionbooleanDo not show the caption under the image
closeOnClickOutsidebooleanWhether viewer should be closed when clicking outside of image
closeOnClickInsidebooleanWhether viewer should be closed when clicking inside image
closeComponentJSX.ElementCustom component for the close button
leftArrowComponentJSX.ElementCustom component for the left arrow
rightArrowComponentJSX.ElementCustom component for the right arrow

Shortcuts

ShortcutDescription
EscapeClose the viewer
Right Arrow / lNext image
Left Arrow / hPrevious image
Mouse wheelScrolling previous / next image

Forked from original repository

Github Repository