diff --git a/src/App.css b/src/App.css index ea5b87a..4bb47e6 100644 --- a/src/App.css +++ b/src/App.css @@ -41,14 +41,5 @@ color: #888; } -.thumbnail{ - border: 1px solid #ddd; /* Gray border */ - border-radius: 4px; /* Rounded border */ - padding: 5px; /* Some padding */ - width: 150px; /* Set a small width */ -} -img.thumbnail:hover { - box-shadow: 0 0 20px 10px rgba(0, 140, 186, 0.5); - border-radius: 4px; -} + diff --git a/src/App.tsx b/src/App.tsx index 2e3dacc..b3692bd 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,9 +3,14 @@ import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' import {PhotoViewer} from './photoViewer/PhotoViewer.tsx' -import { ImageSelector, currentImage } from './photoViewer/ImageSelector.tsx' +import { ImageSelector } from './photoViewer/ImageSelector.tsx' import { GetImageUrls } from './photoViewer/ImageSelector.tsx' +//TOREAD : https://react.dev/learn/sharing-state-between-components +//TOREAD : https://react.dev/learn/responding-to-events#passing-event-handlers-as-props + + + function App() { @@ -13,7 +18,10 @@ function App() { const imagesID = [1, 24, 32, 36, 44, 47]; const url = GetImageUrls(imagesID); - + const [currentImage, setCurrentImage] = useState('https://picsum.photos/id/250/600/300.jpg') + function setCurrentImageFunction(url:string){ + setCurrentImage(url) + } //console.log(url) return ( @@ -21,19 +29,16 @@ function App() {
-

- Edit src/App.tsx and save to test HMR -

+
-

- Click on the Vite and React logos to learn more -

React Photo Viewer

- - +
+ +
+ {/* */} + diff --git a/src/photoViewer/ImageSelector.css b/src/photoViewer/ImageSelector.css index 91fb822..afa4587 100644 --- a/src/photoViewer/ImageSelector.css +++ b/src/photoViewer/ImageSelector.css @@ -1,3 +1,8 @@ +.thumbnailList{ + display: flex; + flex-direction: row; + } + .thumbnail{ border: 1px solid #ddd; /* Gray border */ border-radius: 4px; /* Rounded border */ diff --git a/src/photoViewer/ImageSelector.tsx b/src/photoViewer/ImageSelector.tsx index c940908..d9c993a 100644 --- a/src/photoViewer/ImageSelector.tsx +++ b/src/photoViewer/ImageSelector.tsx @@ -1,20 +1,26 @@ import React from "react"; // import React (to provide access to TSX) -import { useState } from 'react' import './ImageSelector.css' +const imageUrls = ['https://picsum.photos/id/1/600/300.jpg', + 'https://picsum.photos/id/24/600/300.jpg', + 'https://picsum.photos/id/30/600/300.jpg', + 'https://picsum.photos/id/56/600/300.jpg', + 'https://picsum.photos/id/65/600/300.jpg'] -export const [currentImage, setCurrentImage] = useState('https://picsum.photos/id/250/600/300.jpg') +interface ImageSelectorProps{ + setCurrentImageFunction : (url:string)=>void; +} - -export function ImageSelector({urlList}: {urlList: string[]}) { +//export function ImageSelector({urlList}: {urlList: string[]}, prop:ImageSelectorProps) { +export function ImageSelector(prop:ImageSelectorProps) { return ( -
- {urlList.map(imageUrl => { +
+ {imageUrls.map(imageUrl => { return
- setCurrentImage(imageUrl)} src={imageUrl} /> + prop.setCurrentImageFunction(imageUrl)} src={imageUrl} />
})}
); diff --git a/src/saving_code.ts b/src/saving_code.ts deleted file mode 100644 index 982566e..0000000 --- a/src/saving_code.ts +++ /dev/null @@ -1,30 +0,0 @@ - - -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' -import {PhotoViewer} from './photoViewer/PhotoViewer.tsx' -import { ImageSelector } from './photoViewer/ImageSelector.tsx' -import { GetImageUrls } from './photoViewer/ImageSelector.tsx' - -function App() { - const [count, setCount] = useState(0) - const imagesID = [1, 24, 32, 36, 44, 47]; - const url = GetImageUrls(imagesID); - - console.log(url) - - return ( - <> - - -

React Photo Viewer

- - -
{url}
- - - - ) -} \ No newline at end of file