Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release/v0.1.0 #34

Open
wants to merge 36 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c338dfd
.env.sample
TheoSkymel Feb 26, 2025
c7db44e
vidange input après ssoumission
sadjoaldi Feb 26, 2025
1ed55e3
commit-pour-pull
TheoSkymel Feb 26, 2025
ff6d8db
Merge branch 'release/v0.1.0' of github.com:WildCodeSchool/2024-12-or…
TheoSkymel Feb 26, 2025
be2318c
modif responsive card
L-M-14 Feb 26, 2025
6c273b7
style-modale
TheoSkymel Feb 26, 2025
5155fb9
correction-ok-theo
TheoSkymel Feb 26, 2025
380abde
Responsive fleches home-page - Responsive card home-page - Responsive…
L-M-14 Feb 27, 2025
e072244
Merge pull request #35 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
6e6aa1e
modifs apportées
sadjoaldi Feb 27, 2025
d33efea
Merge pull request #36 from WildCodeSchool/release/release-update
sadjoaldi Feb 27, 2025
f0b953c
Merge branch 'release/v0.1.0' of github.com:WildCodeSchool/2024-12-or…
TheoSkymel Feb 27, 2025
1f0f6b8
style modale style remove fav
TheoSkymel Feb 27, 2025
283ebac
style modale, style bouton removefav
TheoSkymel Feb 27, 2025
f40bddb
Merge pull request #37 from WildCodeSchool/release/style-modale
TheoSkymel Feb 27, 2025
5460333
notif d'ajout aux favoris
ticoq971 Feb 27, 2025
44d97f5
update Responsive burger-menu - Update responsive search-bar comics
L-M-14 Feb 27, 2025
486dc40
Merge pull request #39 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
aced0a3
Merge branch 'release/v0.1.0' into release/pre-release
ticoq971 Feb 27, 2025
f582552
Update responsive search-bar
L-M-14 Feb 27, 2025
a749292
Merge pull request #38 from WildCodeSchool/release/pre-release
ticoq971 Feb 27, 2025
f395f45
Merge pull request #40 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
07429a0
pull release encore
sadjoaldi Feb 27, 2025
91a4544
correction-ok
TheoSkymel Feb 27, 2025
90df2e3
chagne
L-M-14 Feb 27, 2025
3793a5e
Merge branch 'release/v0.1.0' of github.com:WildCodeSchool/2024-12-or…
L-M-14 Feb 27, 2025
d723909
Merge pull request #41 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
4c882db
modif faites
sadjoaldi Feb 27, 2025
007b201
ajout du nom du personage lors de l'ajout aux favoris - correction re…
L-M-14 Feb 27, 2025
61a4fb0
ajout du nom du personage lors de l'ajout aux favoris - correction re…
L-M-14 Feb 27, 2025
807b56f
Merge pull request #42 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
25642e3
pull
sadjoaldi Feb 27, 2025
017348b
loader
TheoSkymel Feb 27, 2025
f11c4fc
Merge branch 'release/v0.1.0' of github.com:WildCodeSchool/2024-12-or…
TheoSkymel Feb 27, 2025
68b2379
Responsive favorite page
L-M-14 Feb 27, 2025
67a15ed
Merge pull request #43 from WildCodeSchool/release/pagination-home
L-M-14 Feb 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_PUBLIC_KEY=YOUR_API_KEY
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@

.env

# Logs
logs
*.log
Expand Down
32 changes: 24 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^7.1.5"
"react-router-dom": "^7.1.5",
"react-toastify": "^11.0.5"
},
"devDependencies": {
"@trivago/prettier-plugin-sort-imports": "^5.2.1",
Expand All @@ -29,7 +30,6 @@
"husky": "^8.0.3",
"prettier": "^3.4.2",
"prettier-plugin-tailwindcss": "^0.5.5",
"react-router-dom": "^7.1.5",
"sass": "^1.83.4",
"vite": "^4.4.9"
}
Expand Down
1 change: 1 addition & 0 deletions public/pictures/remove-fave.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 14 additions & 7 deletions src/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import { Route, Routes } from 'react-router-dom';
import './app.scss';
import MarvelCharacters from './components/marvel-characters';
import Layout from './components/router-layout';
import ComicDetail from './pages/comics-display';
import ComicPage from './pages/comics-page';
import ComicDisplay from './pages/comics-display';
import ComicsPage from './pages/comics-page';
import FavoritePage from './pages/favorite-page';
import NotFound from './pages/not-found-page';
import NotFoundPage from './pages/not-found-page';
import ProfilePage from './pages/profile-page';

const getFavoritesFromLocalStorage = () => {
Expand All @@ -32,16 +32,23 @@ function App() {
}
};

const removeFromFavorites = (char) => {
setFavorites(favorites.filter((fav) => fav.id !== char.id));
};

return (
<>
<Routes>
<Route element={<Layout />}>
<Route path='/' element={<MarvelCharacters addToFavorites={addToFavorites} />} />
<Route path='/favorites' element={<FavoritePage favorites={favorites} />} />+
<Route path='/comics/:comicId' element={<ComicDetail />} />
<Route
path='/favorites'
element={<FavoritePage favorites={favorites} removeFromFavorites={removeFromFavorites} />}
/>
<Route path='/comics/:comicId' element={<ComicDisplay />} />
<Route path='/profile' element={<ProfilePage />} />
<Route path='/comics' element={<ComicPage />}></Route>
<Route path='*' element={<NotFound />} />
<Route path='/comics' element={<ComicsPage />} />
<Route path='*' element={<NotFoundPage />} />
</Route>
</Routes>
</>
Expand Down
2 changes: 1 addition & 1 deletion src/components/burger.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const Burger = () => {

return (
<>
<div className='contenair'>
<div className='container'>
<div className='input'></div>
<div className='burger' onClick={toggleBurger}>
<div className={`line ${burger ? 'active' : ''}`}></div>
Expand Down
33 changes: 32 additions & 1 deletion src/components/card.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
import { ToastContainer, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';

import '../style/card.scss';

export default function Card({ character, image, onAddToFavorites, onClick }) {
const notify = () => {
toast.success('🎉 Added to Favorites !', {
position: 'top-right',
autoClose: 3000,
hideProgressBar: false,

closeOnClick: true,
pauseOnHover: true,
draggable: true,
theme: 'light',
});
};

export default function Card({ character, image, onAddToFavorites, onClick, onRemove, isFavoritePage }) {
return (
<div className='card' onClick={onClick}>
<img src={image} alt={character} className='heart' />
Expand All @@ -10,10 +26,25 @@ export default function Card({ character, image, onAddToFavorites, onClick }) {
onClick={(e) => {
e.stopPropagation();
onAddToFavorites();
notify();
}}
>
<img className='heart ' src='/pictures/heart-cards.png' alt='' />
</button>

<ToastContainer />

{isFavoritePage && (
<button
className='delete-fav'
onClick={(e) => {
e.stopPropagation();
onRemove();
}}
>
<img className='remove-fav' src='/pictures/remove-fave.svg' alt='' />
</button>
)}
</div>
<div className='character-title'>
<h2>{character}</h2>
Expand Down
27 changes: 5 additions & 22 deletions src/components/characters.jsx
Original file line number Diff line number Diff line change
@@ -1,32 +1,15 @@
import { useEffect, useState } from 'react';

import useVisibleStatus from '../hooks/use-visible-status';
import '../style/characters.scss';
import Loader from './loader';

Check warning on line 3 in src/components/characters.jsx

View workflow job for this annotation

GitHub Actions / check-pr

'Loader' is defined but never used

export default function Characters({ data, onClick }) {
const [isVisible, setIsVisible] = useState(true);

const hideCharacters = () => {
setIsVisible(false);
};

const handleClickOutside = (event) => {
if (isVisible && !event.target.closest('.search-container')) {
hideCharacters();
}
};

useEffect(() => {
document.addEventListener('click', handleClickOutside);
return () => {
document.removeEventListener('click', handleClickOutside);
};
});
const [isVisible, hideComicsCharacters] = useVisibleStatus();

return (
<>
<div className='search-container' style={{ display: isVisible ? '' : 'none' }}>
<div className='search-result' onClick={hideCharacters}>
<button className='close-search' onClick={hideCharacters}>
<div className='search-result' onClick={() => hideComicsCharacters()}>
<button className='close-search' onClick={() => hideComicsCharacters()}>
X
</button>
<div className='characters'>
Expand Down
31 changes: 6 additions & 25 deletions src/components/comics.jsx
Original file line number Diff line number Diff line change
@@ -1,39 +1,22 @@
import { useEffect, useState } from 'react';
import { Link } from 'react-router-dom';

import useVisibleStatus from '../hooks/use-visible-status';
import '../style/comics.scss';

export default function Comics({ data, onClick }) {
const [isVisible, setIsVisible] = useState(true);

const hideComics = () => {
setIsVisible(false);
};

const handleClickOutside = (event) => {
if (isVisible && !event.target.closest('.search-container')) {
hideComics();
}
};

useEffect(() => {
document.addEventListener('click', handleClickOutside);
return () => {
document.removeEventListener('click', handleClickOutside);
};
});
const [isVisible, hideComicsCharacters] = useVisibleStatus();

return (
<div className='search-container' style={{ display: isVisible ? '' : 'none' }}>
<div className='search-result' onClick={hideComics}>
<button className='close-search' onClick={hideComics}>
<div className='search-result' onClick={hideComicsCharacters}>
<button className='close-search' onClick={hideComicsCharacters}>
X
</button>
<div className='comics'>
{data.map((dataItem) => {
const detailsUrl = dataItem.urls.find((element) => element['type'] === 'detail').url;
return (
<Link
to={`/comics/${dataItem.id}`}
key={dataItem.id}
className='comic-card'
style={{
Expand All @@ -43,10 +26,8 @@ export default function Comics({ data, onClick }) {
onClick={(e) => {
e.stopPropagation();
onClick(dataItem.id);
hideComicsCharacters();
}}
href={detailsUrl}
target='_blank'
rel='noreferrer'
>
<div className='comics-title'>
<h3>{dataItem.title}</h3>
Expand Down
10 changes: 3 additions & 7 deletions src/components/footer.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Link } from 'react-router-dom';

import '../style/footer.scss';
import Socials from './socials.jsx';
import Socials from './socials';

function Footer() {
return (
Expand All @@ -14,12 +14,8 @@ function Footer() {

<div className='footer-nav'>
<div>
<a href='https://marvelofficial.com/shop/?srsltid=AfmBOorVehT8ELdv9CSRuSbn2YBFn_1tngBPVsIlMT4j70lF8KhpRGsb'>
Shops
</a>
<a href='https://www.disneyplus.com/brand/marvel?cid=DTCI-Synergy-Marvel-Site-Acquisition-Library-US-Marvel-NA-EN-NavFooter-Marvel_DisneyPlus_NavFooter_Evergreen-NA'>
Disney+
</a>
<a href='https://marvelofficial.com/shop/'>Shops</a>
<a href='https://www.disneyplus.com/brand/'>Disney+</a>
</div>

<div>
Expand Down
2 changes: 1 addition & 1 deletion src/components/loader.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import '../style/loader.scss';
export default function Loader() {
return (
<div className='load'>
<img src='/pictures/hammer.png' alt='' /> <p> Loading..... </p>
<img src='/pictures/hammer.png' alt='' />
</div>
);
}
Loading