Skip to content

Commit 19d98d2

Browse files
committed
feat: Display modal image's caption
1 parent c20d319 commit 19d98d2

File tree

4 files changed

+31
-10
lines changed

4 files changed

+31
-10
lines changed

src/ImageGallery.test.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,13 @@ const imagesArray = [
4343
{
4444
id: crypto.randomUUID(),
4545
alt: "Image7's alt text",
46-
caption: "Image7's description",
4746
src: "https://cdn.pixabay.com/photo/2023/05/25/22/07/river-8018379_1280.jpg",
4847
smallSrc:
4948
"https://cdn.pixabay.com/photo/2023/05/25/22/07/river-8018379_640.jpg",
5049
},
5150
{
5251
id: crypto.randomUUID(),
5352
alt: "Image8's alt text",
54-
caption: "Image8's description",
5553
src: "https://cdn.pixabay.com/photo/2023/05/21/11/45/flowers-8008392_1280.jpg",
5654
smallSrc:
5755
"https://cdn.pixabay.com/photo/2023/05/21/11/45/flowers-8008392_640.jpg",

src/ImageGallery.tsx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export function ImageGallery({
3838
const modalToolbarBtnStyle = galleryStyles.modalToolbarBtnStyle;
3939
const modalSlideShowSectionStyle = galleryStyles.modalSlideShowSectionStyle;
4040
const modalThumbnailSectionStyle = galleryStyles.modalThumbnailSectionStyle;
41+
const modalImageContainerStyle = galleryStyles.modalImageContainerStyle;
4142
const modalImageStyle = galleryStyles.modalImageStyle;
4243
const modalSlideBtnStyle = galleryStyles.modalSlideBtnStyle;
4344

@@ -277,14 +278,31 @@ export function ImageGallery({
277278
/>
278279
)}
279280
</button>
280-
<img
281-
src={imageSrc}
282-
alt={imagesInfoArray[slideNumber - 1].alt}
283-
style={{
284-
height: showThumbnails ? "80vh" : "100vh",
285-
...modalImageStyle,
286-
}}
287-
/>
281+
<figure
282+
style={modalImageContainerStyle}
283+
onMouseEnter={(e) =>
284+
fixedCaption ? undefined : handleImageContainerMouseEnter(e)
285+
}
286+
onMouseLeave={(e) =>
287+
fixedCaption ? undefined : handleImageContainerMouseLeave(e)
288+
}
289+
>
290+
<img
291+
src={imageSrc}
292+
alt={imagesInfoArray[slideNumber - 1].alt}
293+
style={{
294+
height: showThumbnails ? "80vh" : "100vh",
295+
...modalImageStyle,
296+
}}
297+
/>
298+
{imagesInfoArray[slideNumber - 1].caption ? (
299+
<figcaption style={imageCaptionStyle}>
300+
{imagesInfoArray[slideNumber - 1].caption}
301+
</figcaption>
302+
) : (
303+
""
304+
)}
305+
</figure>
288306
<button
289307
type="button"
290308
aria-label="Next image"

src/ImageGallery.types.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface ImageGalleryStylesType {
1010
modalToolbarBtnStyle?: React.CSSProperties;
1111
modalSlideShowSectionStyle?: React.CSSProperties;
1212
modalThumbnailSectionStyle?: React.CSSProperties;
13+
modalImageContainerStyle?: React.CSSProperties;
1314
modalImageStyle?: React.CSSProperties;
1415
modalSlideBtnStyle?: React.CSSProperties;
1516
}

src/ImageGalleryStyles.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ export function imageGalleryStyles(
9292
width: "inherit",
9393
transition: "height .7s linear",
9494
};
95+
const modalImageContainerStyle: React.CSSProperties = {
96+
width: "inherit",
97+
};
9598
const modalImageStyle: React.CSSProperties = {
9699
margin: "auto",
97100
maxWidth: "100vw",
@@ -128,6 +131,7 @@ export function imageGalleryStyles(
128131
modalToolbarBtnStyle,
129132
modalSlideShowSectionStyle,
130133
modalThumbnailSectionStyle,
134+
modalImageContainerStyle,
131135
modalImageStyle,
132136
modalSlideBtnStyle,
133137
};

0 commit comments

Comments
 (0)