Add filter ui to discussions
This commit is contained in:
+59
-4
@@ -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} />
|
||||||
|
|||||||
Reference in New Issue
Block a user