Add filter ui to discussions

This commit is contained in:
rotimi_best
2021-04-03 17:45:46 +03:00
parent da82c3f561
commit ee2d0fdaff
+59 -4
View File
@@ -1,10 +1,30 @@
<script> <script>
import { stores } from "@sapper/app";
import AddComment20 from "carbon-icons-svelte/lib/AddComment20"; import AddComment20 from "carbon-icons-svelte/lib/AddComment20";
import Vote from "../components/Vote.svelte"; import Vote from "../components/Vote.svelte";
import Space from "../components/Space.svelte"; import Space from "../components/Space.svelte";
import HashTags from "../components/HashTags.svelte"; import HashTags from "../components/HashTags.svelte";
const discussions = [ function getDiscussion(filterBy, allDiscussions) {
switch (filterBy) {
case "popular":
return allDiscussions.filter((a, i) => i >= 0 && i < 2);
case "recent":
return allDiscussions.filter((a, i) => i >= 2 && i < 5);
case "upvoted":
return allDiscussions.filter((a, i) => i > 4 && i < 8);
default:
return allDiscussions;
}
}
const { page } = stores();
let filterBy = "";
let discussions = [];
$: filterBy = $page.query.filter || "popular";
const allDiscussions = [
{ {
id: 1, id: 1,
title: "How do I pass Anicimov?", title: "How do I pass Anicimov?",
@@ -117,16 +137,18 @@
votes: 5, votes: 5,
}, },
]; ];
$: discussions = getDiscussion(filterBy, allDiscussions);
</script> </script>
<style> <style>
.root { .root {
max-width: 600px; max-width: 600px;
margin: 0 auto;
} }
.root .title { .root .title {
font-size: 20px; font-size: 20px;
margin-left: 10px;
} }
.discussion-box { .discussion-box {
border: 1px solid #eaecef; border: 1px solid #eaecef;
@@ -134,7 +156,7 @@
align-items: flex-start; align-items: flex-start;
padding: 16px; padding: 16px;
border-radius: 10px; border-radius: 10px;
margin: 20px auto; margin: 10px auto 20px;
} }
h4 { h4 {
@@ -152,13 +174,46 @@
color: #586069; color: #586069;
font-size: 12px; font-size: 12px;
} }
.active {
position: relative;
display: inline-block;
}
.active::after {
position: absolute;
content: "";
width: 100%;
height: 3px;
background-color: #3182ce;
display: block;
}
</style> </style>
<svelte:head> <svelte:head>
<title>Unidiscuss - Help students in your university</title> <title>Unidiscuss - Help students in your university</title>
</svelte:head> </svelte:head>
<div class="root md:w-3/4 mx-auto md:mb-20 md:pr-5"> <div class="root md:w-3/4 mx-auto md:mb-20 md:pr-5">
<h4 class="title">Разговоры</h4> <div class="flex justify-between">
<h4 class="title">Разговоры</h4>
<div class="flex justify-evenly">
<a
class="mr-5 text-sm {filterBy === 'popular' && 'active'}"
href="?filter=popular">
Popular
</a>
<a
class="mr-5 text-sm {filterBy === 'recent' && 'active'}"
href="?filter=recent">
Recent
</a>
<a
class="mr-5 text-sm {filterBy === 'upvoted' && 'active'}"
href="?filter=upvoted">
Upvoted
</a>
</div>
</div>
{#each discussions as discussion} {#each discussions as discussion}
<div class="discussion-box"> <div class="discussion-box">
<Vote value={discussion.votes} /> <Vote value={discussion.votes} />