🐛 fix(ZoomableImage.js): add style prop to ZoomableImage component to allow custom styling
✨ feat(ZoomableImage.js): add default style to ZoomableImage component for consistent layout and centering of images
This commit is contained in:
parent
2ce2be4544
commit
559778d4b6
1 changed files with 19 additions and 9 deletions
|
|
@ -1,8 +1,9 @@
|
||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from "react";
|
||||||
import ThemedImage from '@theme/ThemedImage';
|
import ThemedImage from "@theme/ThemedImage";
|
||||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||||||
|
|
||||||
const ZoomableImage = ({ alt, sources }) => {
|
const ZoomableImage = ({ alt, sources, style }) => {
|
||||||
|
// add style here
|
||||||
const [isFullscreen, setIsFullscreen] = useState(false);
|
const [isFullscreen, setIsFullscreen] = useState(false);
|
||||||
|
|
||||||
const toggleFullscreen = () => {
|
const toggleFullscreen = () => {
|
||||||
|
|
@ -10,27 +11,36 @@ const ZoomableImage = ({ alt, sources }) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyPress = (event) => {
|
const handleKeyPress = (event) => {
|
||||||
if (event.key === 'Escape') {
|
if (event.key === "Escape") {
|
||||||
setIsFullscreen(false);
|
setIsFullscreen(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isFullscreen) {
|
if (isFullscreen) {
|
||||||
document.addEventListener('keydown', handleKeyPress);
|
document.addEventListener("keydown", handleKeyPress);
|
||||||
} else {
|
} else {
|
||||||
document.removeEventListener('keydown', handleKeyPress);
|
document.removeEventListener("keydown", handleKeyPress);
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
document.removeEventListener('keydown', handleKeyPress);
|
document.removeEventListener("keydown", handleKeyPress);
|
||||||
};
|
};
|
||||||
}, [isFullscreen]);
|
}, [isFullscreen]);
|
||||||
|
|
||||||
|
// Default style
|
||||||
|
const defaultStyle = {
|
||||||
|
width: "50%",
|
||||||
|
margin: "0 auto",
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "center",
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`zoomable-image ${isFullscreen ? 'fullscreen' : ''}`}
|
className={`zoomable-image ${isFullscreen ? "fullscreen" : ""}`}
|
||||||
onClick={toggleFullscreen}
|
onClick={toggleFullscreen}
|
||||||
|
style={{ ...defaultStyle, ...style }}
|
||||||
>
|
>
|
||||||
<ThemedImage
|
<ThemedImage
|
||||||
className="zoomable-image-inner"
|
className="zoomable-image-inner"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue