Skip to content

Close overlay on click outside image #205

@parad0xe

Description

@parad0xe

No integrated support for closing the viewer when clicking on the overlay.

Temporary fix proposal using an wrapper (In an ImageViewer.tsx file for example):

import { forwardRef, memo, useEffect, useRef, useState } from "react"
import Viewer from "react-viewer"
import ViewerProps from "react-viewer/lib/ViewerProps"

export const ImageViewer = memo(function ImageViewer(props: ViewerProps) {
    useEffect(() => {
        if(props.visible) {
            const handleDocumentClick = (element: PointerEvent) => {
                if((element.target as HTMLElement).parentElement.classList.contains("react-viewer")) {
                    props.onClose()
                }
            }

            document.addEventListener('click', handleDocumentClick)

            return () => {
                document.removeEventListener('click', handleDocumentClick)
            }
        }
    }, [props.visible])

    return <Viewer {...props} />
})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions