Skip to content

Commit

Permalink
Se definen los componentes de las barras superior e inferior
Browse files Browse the repository at this point in the history
  • Loading branch information
DannitaZz committed Feb 2, 2022
1 parent d580440 commit 6aa9885
Show file tree
Hide file tree
Showing 6 changed files with 168 additions and 7 deletions.
4 changes: 3 additions & 1 deletion src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Pokemon from './components/pages/pokemon';
import Details from './components/pages/details';
import Favorites from './components/pages/favorites';
import FixedBottomNavigation from './components/bottombar';
import SearchAppBar from './components/searchbar';


function App() {
Expand All @@ -19,7 +21,7 @@ function App() {
<Route exact path='/' element={<Pokemon favs={state.favIds} actionName={'setMainPage'} data={state.data} page={state.mainPage.page} dispatch={dispatch} />} />
<Route exact path='/:id' element={<Details pokemon={state.pokemon} dispatch={dispatch} />} />
<Route exact path='/favorites' element={<Pokemon favs={state.favIds} actionName={'setFavPage'} data={state.favs} page={state.favPage.page} dispatch={dispatch} />} />
{/* <Route exact path='/favorites' element={<Favorites state={state} dispatch={dispatch} />} /> */}
<Route exact path='/bottom' element={<SearchAppBar />} />
</Routes>
</BrowserRouter>
</div>
Expand Down
39 changes: 39 additions & 0 deletions src/components/bottombar.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import * as React from 'react';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
import BottomNavigation from '@mui/material/BottomNavigation';
import BottomNavigationAction from '@mui/material/BottomNavigationAction';
import Paper from '@mui/material/Paper';
import CatchingPokemonIcon from '@mui/icons-material/CatchingPokemon';
import StarIcon from '@mui/icons-material/Star';
import ExitToAppIcon from '@mui/icons-material/ExitToApp';
import { useNavigate } from 'react-router-dom';

export default function FixedBottomNavigation() {
const navigateTo = useNavigate();
return (
<Box sx={{ pb: 7, flexGrow: 1, display: { xs: 'flex', lg: 'none' }}} /* ref={ref} */>
<CssBaseline />
<Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0 }} elevation={3}>
<BottomNavigation
showLabels
onChange={(event, newValue) => {
if (newValue === '0'){
navigateTo('/');
} else if (newValue === '1') {
navigateTo('/favorites');
} else if (newValue === '2') {
/* navigateTo('/login') */
console.log(newValue);
}
}}
>
<BottomNavigationAction label="Pokémon" value='0' icon={<CatchingPokemonIcon />} />
<BottomNavigationAction label="Favorites" value='1' icon={<StarIcon />} />
<BottomNavigationAction label="Logout" value='2' icon={<ExitToAppIcon />} />
</BottomNavigation>
</Paper>
</Box>
);
}

48 changes: 48 additions & 0 deletions src/components/filterbar.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import * as React from 'react';
import Button from '@mui/material/Button';
import Menu from '@mui/material/Menu';
import MenuItem from '@mui/material/MenuItem';
import FilterListIcon from '@mui/icons-material/FilterList';

export default function BasicMenu() {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};

return (
<div>
<Button
id="basic-button"
aria-controls={open ? 'basic-menu' : undefined}
aria-haspopup="true"
aria-expanded={open ? 'true' : undefined}
onClick={handleClick}
>
<FilterListIcon />
</Button>
<Menu
id="basic-menu"
anchorEl={anchorEl}
open={open}
onClose={handleClose}
MenuListProps={{
'aria-labelledby': 'basic-button',
}}
>
<MenuItem onClick={handleClose}>Generation I</MenuItem>
<MenuItem onClick={handleClose}>Generation II</MenuItem>
<MenuItem onClick={handleClose}>Generation III</MenuItem>
<MenuItem onClick={handleClose}>Generation IV</MenuItem>
<MenuItem onClick={handleClose}>Generation V</MenuItem>
<MenuItem onClick={handleClose}>Generation VI</MenuItem>
<MenuItem onClick={handleClose}>Generation VII</MenuItem>
<MenuItem onClick={handleClose}>Generation VIII</MenuItem>
</Menu>
</div>
);
}
19 changes: 13 additions & 6 deletions src/components/navbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import Tooltip from '@mui/material/Tooltip';
import MenuItem from '@mui/material/MenuItem';
import logo from '../img/pokeball.png'
import LogoutIcon from '@mui/icons-material/Logout';
import BasicMenu from './filterbar';
import SearchAppBar from './searchbar';
import { useNavigate } from "react-router-dom";

const pages = ['Pokémon', 'Favorites'];
Expand Down Expand Up @@ -58,7 +60,7 @@ const ResponsiveAppBar = () => {
};

return (
<AppBar position="static" style={{background: '#161B22'}}>
<AppBar position="static" style={{background: '#161B22'}} >
<Container maxWidth="xl">
<Toolbar disableGutters>
<img src={logo} alt='logo' style={{maxWidth: 50}}/>
Expand All @@ -71,7 +73,7 @@ const ResponsiveAppBar = () => {
>

</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }} >
{/* <Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }} >
<IconButton
size="large"
aria-label="account of current user"
Expand Down Expand Up @@ -107,8 +109,8 @@ const ResponsiveAppBar = () => {
))}
</Menu>
</Box>

<Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
*/}
<Box sx={{ flexGrow: 1, display: { xs: 'none', lg: 'flex' }}}>
{pages.map((page, i) => (
<Button
key={page}
Expand All @@ -120,8 +122,13 @@ const ResponsiveAppBar = () => {
</Button>
))}
</Box>

<Box sx={{ flexGrow: 0 }}>
<Box sx={{ flexGrow: 0, display: 'flex'}}>
<BasicMenu/>
</Box>
<Box sx={{ flexGrow: 0, display: 'flex'}}>
<SearchAppBar />
</Box>
<Box sx={{ flexGrow: 0, display: { xs: 'none', lg: 'flex' } }}>
<Tooltip title="Open settings">
<IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
<LogoutIcon />
Expand Down
2 changes: 2 additions & 0 deletions src/components/pages/pokemon.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import axios from 'axios';
import ResponsiveAppBar from "../navbar"
import PaginationControlled from "../pagination"
import Pokelist from "../pokelist"
import FixedBottomNavigation from '../bottombar';

function Pokemon({favs, actionName, data, page, dispatch}) {

Expand Down Expand Up @@ -54,6 +55,7 @@ function Pokemon({favs, actionName, data, page, dispatch}) {
<PaginationControlled actionName={actionName} count={pageCount} page={page} page_size ={20} data={data} dispatch={dispatch} />
<Pokelist favs={favs} pageSize={pageSize} data={data} page={page} dispatch={dispatch}/>
<PaginationControlled actionName={actionName} count={pageCount} page={page} page_size ={20} data={data} dispatch={dispatch} />
<FixedBottomNavigation />
</>
)
}
Expand Down
63 changes: 63 additions & 0 deletions src/components/searchbar.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import * as React from 'react';
import { styled, alpha } from '@mui/material/styles';
import Box from '@mui/material/Box';
import InputBase from '@mui/material/InputBase';
import SearchIcon from '@mui/icons-material/Search';

const Search = styled('div')(({ theme }) => ({
position: 'relative',
borderRadius: theme.shape.borderRadius,
backgroundColor: alpha(theme.palette.common.white, 0.15),
'&:hover': {
backgroundColor: alpha(theme.palette.common.white, 0.25),
},
marginLeft: 0,
width: '100%',
[theme.breakpoints.up('sm')]: {
marginLeft: theme.spacing(1),
width: 'auto',
},
}));

const SearchIconWrapper = styled('div')(({ theme }) => ({
padding: theme.spacing(0, 2),
height: '100%',
position: 'absolute',
pointerEvents: 'none',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
}));

const StyledInputBase = styled(InputBase)(({ theme }) => ({
color: 'inherit',
'& .MuiInputBase-input': {
padding: theme.spacing(1, 1, 1, 0),
// vertical padding + font size from searchIcon
paddingLeft: `calc(1em + ${theme.spacing(4)})`,
transition: theme.transitions.create('width'),
width: '100%',
[theme.breakpoints.up('sm')]: {
width: '12ch',
'&:focus': {
width: '20ch',
},
},
},
}));

export default function SearchAppBar() {
return (
<Box sx={{ flexGrow: 1 }}>
<Search>
<SearchIconWrapper>
<SearchIcon />
</SearchIconWrapper>
<StyledInputBase
placeholder="Search…"
inputProps={{ 'aria-label': 'search' }}
/>
</Search>
</Box>
);
}

0 comments on commit 6aa9885

Please sign in to comment.