diff --git a/src/components/Grid.jsx b/src/components/Grid.jsx
new file mode 100644
index 0000000..b0a3a5b
--- /dev/null
+++ b/src/components/Grid.jsx
@@ -0,0 +1,15 @@
+import React from 'react';
+
+import './Grid.scss';
+
+export const Col = (props) => {
+ return
{props.children}
+}
+
+export const Row = (props) => {
+ return {props.children}
+}
+
+export const Grid = (props) => {
+ return {props.children}
+}
diff --git a/src/styles/grid.scss b/src/components/Grid.scss
similarity index 97%
rename from src/styles/grid.scss
rename to src/components/Grid.scss
index 51c54b7..addafe4 100644
--- a/src/styles/grid.scss
+++ b/src/components/Grid.scss
@@ -1,5 +1,5 @@
.grid {
- --gutter: 1em;
+ --gutter: 1rem;
width: 100%;
.row {
diff --git a/src/components/SearchBar.scss b/src/components/SearchBar.scss
index b0dc3d9..d318a98 100644
--- a/src/components/SearchBar.scss
+++ b/src/components/SearchBar.scss
@@ -1,7 +1,4 @@
.searchbar {
- margin-bottom: 2em;
- margin-top: 1em;
-
input {
border: var(--line-width) solid var(--accent);
border-right: none;
diff --git a/src/index.jsx b/src/index.jsx
index cb36a76..512d059 100644
--- a/src/index.jsx
+++ b/src/index.jsx
@@ -4,7 +4,6 @@ import ReactDOM from 'react-dom';
import './styles/reset.css';
import './styles/main.scss';
-import './styles/grid.scss';
import './styles/tabs.scss';
import {Nav} from "./components/Nav";
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss
index b29214d..64dabfb 100644
--- a/src/styles/tabs.scss
+++ b/src/styles/tabs.scss
@@ -2,10 +2,10 @@ ul.tabs {
display: flex;
align-items: stretch;
border-bottom: var(--line-width) var(--gray-1) solid;
- margin: 1rem 0;
+ margin-top: 1em;
li.tab {
- padding: .5rem 1em;
+ padding: .5em 1em;
margin-bottom: -2px;
cursor: pointer;
diff --git a/src/views/Recomended.jsx b/src/views/Recomended.jsx
index 1e58f9b..8f824be 100644
--- a/src/views/Recomended.jsx
+++ b/src/views/Recomended.jsx
@@ -5,6 +5,7 @@ import {getArtist, getDisc, getSong} from '../services/entity_service';
import {EntityList} from '../components/EntityList';
import {CoverArt} from '../components/CoverArt';
+import {Grid, Row, Col} from '../components/Grid';
const PopularArtists = () => {
const artistIDs = ['fa3b825f-7c85-4377-b393-d28a2016e293', 'b2d122f9-eadb-4930-a196-8f221eeb0c66',
@@ -91,23 +92,23 @@ export const Recomended = () => {
// TODO crear una forma de obtener cosas populares
// Esto es un por mientras hago todo el resto y la pagina de inicio no se vea tan vacia
return (
-
-
-
+
+
+
Artistas Populares
-
-
+
+
Canciones Populares
-
-
-
-
+
+
+
+
Discos Populares
-
-
-
+
+
+
)
}
diff --git a/src/views/Search.jsx b/src/views/Search.jsx
index 2c26fb2..6cfde70 100644
--- a/src/views/Search.jsx
+++ b/src/views/Search.jsx
@@ -8,269 +8,286 @@ import {SearchBar} from "../components/SearchBar";
import {Paginate} from "../components/Paginate";
import {CoverArt} from "../components/CoverArt";
import {EntityList} from "../components/EntityList";
+import {Grid, Col, Row} from '../components/Grid';
const SearchSongs = (props) => {
- const [songs, setSongs] = useState(null);
- const [paginate, setPaginate] = useState(null);
- const [page, setPage] = useState(props.page ? props.page : 1);
+ const [songs, setSongs] = useState(null);
+ const [paginate, setPaginate] = useState(null);
+ const [page, setPage] = useState(props.page ? props.page : 1);
- useEffect(() => {
- setSongs(null);
- setPaginate(null);
- loadSongs(props.query, page)
- }, [props.query, page]);
+ useEffect(() => {
+ setSongs(null);
+ setPaginate(null);
+ loadSongs(props.query, page)
+ }, [props.query, page]);
- const makeLink = page => `/search/song?query=${props.query}&page=${page}`;
+ const makeLink = page => `/search/song?query=${props.query}&page=${page}`;
- const handlePageChange = page => {
- setSongs(null);
- setPage(page);
- props.onPageChange(page);
- }
+ const handlePageChange = page => {
+ setSongs(null);
+ setPage(page);
+ props.onPageChange(page);
+ }
- const loadSongs = (query, page) => {
- page = page ? page : 1;
+ const loadSongs = (query, page) => {
+ page = page ? page : 1;
- searchSong(query, page).then((response) => {
- setSongs(response.recordings);
- setPaginate(response.paginate);
- })
- };
+ searchSong(query, page).then((response) => {
+ setSongs(response.recordings);
+ setPaginate(response.paginate);
+ })
+ };
- let songsComponent = ;
- if (songs) {
- const items = songs.map((song) => {
- return {
- 'cover': null,
- 'link': `/song/${song.id}`,
- 'title': song.title,
- 'subtitle': song.artist.name
- };
- });
- const list = [{
- 'items': items
- }]
- songsComponent =
+ let songsComponent = ;
+ if (songs) {
+ const items = songs.map((song) => {
+ return {
+ 'cover': null,
+ 'link': `/song/${song.id}`,
+ 'title': song.title,
+ 'subtitle': song.artist.name
+ };
+ });
+ const list = [{
+ 'items': items
+ }]
+ songsComponent =
- }
+ }
- let paginateComponent;
- if (paginate) {
- const total = paginate.total;
- const currentPage = paginate.current_page;
- const pageLimit = paginate.per_page;
+ let paginateComponent;
+ if (paginate) {
+ const total = paginate.total;
+ const currentPage = paginate.current_page;
+ const pageLimit = paginate.per_page;
- paginateComponent =
- }
+ paginateComponent =
+ }
- return (
-
-
- {paginateComponent}
-
- )
+ return (
+
+
+ {paginateComponent}
+
+ )
}
const SearchDiscs = (props) => {
- const [discs, setDiscs] = useState(null);
- const [paginate, setPaginate] = useState(null);
- const [page, setPage] = useState(null);
+ const [discs, setDiscs] = useState(null);
+ const [paginate, setPaginate] = useState(null);
+ const [page, setPage] = useState(null);
- useEffect(_ => {
- setDiscs(null)
- setPaginate(null)
- loadDiscs(props.query, page)
- }, [props.query, page])
+ useEffect(_ => {
+ setDiscs(null)
+ setPaginate(null)
+ loadDiscs(props.query, page)
+ }, [props.query, page])
- const makeLink = page => `/search/disc?query=${props.query}&page=${page}`;
+ const makeLink = page => `/search/disc?query=${props.query}&page=${page}`;
- const handlePageChange = page => {
- setDiscs(null);
- setPage(page);
- props.onPageChange(page);
- }
+ const handlePageChange = page => {
+ setDiscs(null);
+ setPage(page);
+ props.onPageChange(page);
+ }
- const loadDiscs = (query, page) => {
- page = page ? page : 1;
+ const loadDiscs = (query, page) => {
+ page = page ? page : 1;
- searchDisc(query, page, 16).then((response) => {
- setDiscs(response.discs);
- setPaginate(response.paginate);
- })
- };
+ searchDisc(query, page, 16).then((response) => {
+ setDiscs(response.discs);
+ setPaginate(response.paginate);
+ })
+ };
- let discsComponent = ;
- if (discs) {
- const items = discs.map((disc) => ({
- 'cover': ,
- 'link': `/disc/${disc.id}`,
- 'title': disc.title,
- 'subtitle': disc.artist.name
- }));
- const list = [{
- 'items': items
- }]
- discsComponent =
- }
+ let discsComponent = ;
+ if (discs) {
+ const items = discs.map((disc) => ({
+ 'cover': ,
+ 'link': `/disc/${disc.id}`,
+ 'title': disc.title,
+ 'subtitle': disc.artist.name
+ }));
+ const list = [{
+ 'items': items
+ }]
+ discsComponent =
+}
- let paginateComponent;
- if (paginate) {
- const total = paginate.total;
- const currentPage = paginate.current_page;
- const pageLimit = paginate.per_page;
+let paginateComponent;
+if (paginate) {
+ const total = paginate.total;
+ const currentPage = paginate.current_page;
+ const pageLimit = paginate.per_page;
- paginateComponent =
- }
+ paginateComponent =
+}
- return (
-
-
- {paginateComponent}
-
- )
+return (
+
+
+ {paginateComponent}
+
+)
}
const SearchArtists = (props) => {
- const [artists, setArtist] = useState(null);
- const [paginate, setPaginate] = useState(null);
- const [page, setPage] = useState(props.page ? props.page : 1);
+ const [artists, setArtist] = useState(null);
+ const [paginate, setPaginate] = useState(null);
+ const [page, setPage] = useState(props.page ? props.page : 1);
- useEffect(_ => {
- setArtist(null)
- setPaginate(null)
- loadArtists(props.query, page)
- }, [props.query, page])
+ useEffect(_ => {
+ setArtist(null)
+ setPaginate(null)
+ loadArtists(props.query, page)
+ }, [props.query, page])
- const makeLink = page => `/search/artist?query=${props.query}&page=${page}`;
+ const makeLink = page => `/search/artist?query=${props.query}&page=${page}`;
- const handlePageChange = page => {
- setArtist(null);
- setPage(page);
- props.onPageChange(page);
- }
+ const handlePageChange = page => {
+ setArtist(null);
+ setPage(page);
+ props.onPageChange(page);
+ }
- const loadArtists = (query, page) => {
- page = page ? page : 1;
+ const loadArtists = (query, page) => {
+ page = page ? page : 1;
- searchArtist(query, page).then((response) => {
- setArtist(response.artists);
- setPaginate(response.paginate);
- })
- };
+ searchArtist(query, page).then((response) => {
+ setArtist(response.artists);
+ setPaginate(response.paginate);
+ })
+ };
- let artistsContent = ;
- if (artists) {
- const items = artists.map((artist) => ({
- 'cover': null,
- 'link': `/artist/${artist.id}`,
- 'title': artist.name,
- 'subtitle': [artist.type, artist.country].filter(Boolean).join(' - ')
- }));
- const list = [{
- 'items': items
- }];
- artistsContent =
- }
+ let artistsContent = ;
+ if (artists) {
+ const items = artists.map((artist) => ({
+ 'cover': null,
+ 'link': `/artist/${artist.id}`,
+ 'title': artist.name,
+ 'subtitle': [artist.type, artist.country].filter(Boolean).join(' - ')
+ }));
+ const list = [{
+ 'items': items
+ }];
+ artistsContent =
+ }
- let paginateContent;
- if (paginate) {
- const total = paginate.total;
- const currentPage = paginate.current_page;
- const pageLimit = paginate.per_page;
+ let paginateContent;
+ if (paginate) {
+ const total = paginate.total;
+ const currentPage = paginate.current_page;
+ const pageLimit = paginate.per_page;
- paginateContent =
- }
+ paginateContent =
+ }
- return (
-
-
- {paginateContent}
-
- )
+ return (
+
+
+
+
+
+
+
+
+ {paginateContent}
+
+
+
+ )
}
const SearchTabs = (props) => {
- const nameToIndex = (name) => {
- if (name === 'artist') return 0
- if (name === 'disc') return 1
- if (name === 'song') return 2
- else return 0;
- }
+ const nameToIndex = (name) => {
+ if (name === 'artist') return 0
+ if (name === 'disc') return 1
+ if (name === 'song') return 2
+ else return 0;
+ }
- const indexToName = (index) => {
- if (index === 0) return 'artist'
- if (index === 1) return 'disc'
- if (index === 2) return 'song'
- else return 'artist';
- }
+ const indexToName = (index) => {
+ if (index === 0) return 'artist'
+ if (index === 1) return 'disc'
+ if (index === 2) return 'song'
+ else return 'artist';
+ }
- const handleSelect = (index) => {
- props.onTabChanged(indexToName(index))
- }
+ const handleSelect = (index) => {
+ props.onTabChanged(indexToName(index))
+ }
- const handlePageChange = (who) => (index) => props.onPageChange(who, index);
+ const handlePageChange = (who) => (index) => props.onPageChange(who, index);
- return (
-
-
- Artistas
- Discos
- Canciones
-
-
-
-
-
- )
+ return (
+
+
+ Artistas
+ Discos
+ Canciones
+
+
+
+
+
+ )
}
export const Search = (props) => {
- const parsedParams = queryString.parse(props.location.search);
- const [who, setWho] = useState(props.match.params['who'] ? props.match.params['who'] : 'artist')
- const [query, setQuery] = useState(parsedParams.query)
- const [page, setPage] = useState(!isNaN(+parsedParams.page) ? +parsedParams.page : 1)
+ const parsedParams = queryString.parse(props.location.search);
+ const [who, setWho] = useState(props.match.params['who'] ? props.match.params['who'] : 'artist')
+ const [query, setQuery] = useState(parsedParams.query)
+ const [page, setPage] = useState(!isNaN(+parsedParams.page) ? +parsedParams.page : 1)
- const navigateTo = (who, query, page) => props.history.push(`/search/${who}?query=${query}&page=${page}`);
+ const navigateTo = (who, query, page) => props.history.push(`/search/${who}?query=${query}&page=${page}`);
- const handleQueryChange = query => {
- setQuery(query);
- setPage(1);
- navigateTo(who, query, 1)
- };
+ const handleQueryChange = query => {
+ setQuery(query);
+ setPage(1);
+ navigateTo(who, query, 1)
+ };
- const handleTabChange = who => {
- setWho(who);
- setPage(1)
- navigateTo(who, query, 1)
- };
+ const handleTabChange = who => {
+ setWho(who);
+ setPage(1)
+ navigateTo(who, query, 1)
+ };
- const handlePageChange = (who, page) => {
- setWho(who);
- setPage(page);
- navigateTo(who, query, page);
- };
+ const handlePageChange = (who, page) => {
+ setWho(who);
+ setPage(page);
+ navigateTo(who, query, page);
+ };
- const content = _ => {
- if (query) {
- return
- } else {
- return null;
- }
+ const content = (() => {
+ if (query) {
+ return
+ } else {
+ return null;
}
+ })();
- return (
-
- Búsqueda
-
- {content()}
-
- );
+ return (
+
+ Búsqueda
+
+
+
+
+
+
+
+ {content}
+
+
+
+ );
}