1.0.4 • Published 7 months ago

easy-magnify v1.0.4

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

A responsive React image zoom component for touch and mouse.

Designed for shopping site product detail.

Features Include:

  • In-place and side-by-side image enlargement
  • Positive or negative space guide lens options
  • Interaction hint
  • Configurable enlarged image dimensions
  • Optional enlarged image external render
  • Hover intent
  • Long-press gesture
  • Fade transitions
  • Basic react-slick carousel support

Status

npm License

Author: Chet Raj Gautam

Demo

Coming soon* but works same like react-image-magnify package

Installation

npm install easy-magnify

Usage

If you are upgrading from v1x to v2x, please see the release notes.

import ReactImageMagnify from 'easy-magnify';
...
<ReactImageMagnify {...{
    smallImage: {
        alt: 'redmi-phone',
        isFluidWidth: true,
        src: "assets/images/redmi-300.png"
    },
    largeImage: {
        src: "assets/images/redmi-1200.png",
        width: 1200,
        height: 1800
    }
}} />
...

Required Props

PropTypeDefaultDescription
smallImageObjectN/ASmall image information. See Small Image below.
largeImageObjectN/ALarge image information. See Large Image below.

Optional Styling Props

PropTypeDefaultDescription
classNameStringN/ACSS class applied to root container element.
styleObjectN/AStyle applied to root container element.
imageClassNameStringN/ACSS class applied to small image element.
imageStyleObjectN/AStyle applied to small image element.
lensStyleObjectN/AStyle applied to tinted lens.
enlargedImageContainerClassNameStringN/ACSS class applied to enlarged image container element.
enlargedImageContainerStyleObjectN/AStyle applied to enlarged image container element.
enlargedImageClassNameStringN/ACSS class applied to enlarged image element.
enlargedImageStyleObjectN/AStyle applied to enlarged image element.

Optional Interaction Props

PropTypeDefaultDescription
fadeDurationInMsNumber300Milliseconds duration of magnified image fade in/fade out.
hoverDelayInMsNumber250Milliseconds to delay hover trigger.
hoverOffDelayInMsNumber150Milliseconds to delay hover-off trigger.
isActivatedOnTouchBooleanfalseActivate magnification immediately on touch. May impact scrolling.
pressDurationNumber500Milliseconds to delay long-press activation (long touch).
pressMoveThresholdNumber5Pixels of movement allowed during long-press activation.

Optional Behavioral Props

PropTypeDefaultDescription
enlargedImagePositionStringbeside (over for touch)Enlarged image placement. Can be 'beside' or 'over'.
enlargedImageContainerDimensionsObject{width: '100%', height: '100%'}Specify enlarged image container dimensions as an object with width and height properties. Values may be expressed as a percentage (e.g. '150%') or a number (e.g. 200). Percentage is based on small image dimension. Number is pixels. Not applied when enlargedImagePosition is set to 'over', the default for touch input.
enlargedImagePortalIdStringN/ARender enlarged image into an HTML element of your choosing by specifying the target element id. Requires React v16. Ignored for touch input by default - see isEnlargedImagePortalEnabledForTouch.
isEnlargedImagePortalEnabledForTouchBooleanfalseSpecify portal rendering should be honored for touch input.
hintComponentFunction(Provided)Reference to a component class or functional component. A Default is provided.
shouldHideHintAfterFirstActivationBooleantrueOnly show hint until the first interaction begins.
isHintEnabledBooleanfalseEnable hint feature.
hintTextMouseStringHover to ZoomHint text for mouse.
hintTextTouchStringLong-Touch to ZoomHint text for touch.
shouldUsePositiveSpaceLensBooleanfalseSpecify a positive space lens in place of the default negative space lens.
lensComponentFunction(Provided)Specify a custom lens component.

Small Image

{
    src: String, (required)
    srcSet: String,
    sizes: String,
    width: Number, (required if isFluidWidth is not set)
    height: Number, (required if isFluidWidth is not set)
    isFluidWidth: Boolean, (default false)
    alt: String,
    onLoad: Function,
    onError: Function
}

For more information on responsive images, please try these resources:
Responsive Images 101
Responsive Images - The srcset and sizes Attributes

Large Image

{
    src: String, (required)
    srcSet: String,
    sizes: String,
    width: Number, (required)
    height: Number, (required)
    alt: String, (defaults to empty string)
    onLoad: Function,
    onError: Function
}

Support

Please open an issue.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.