vue3/components/AssignmentList.js

42 行
959 B
JavaScript
Raw 通常表示 履歴

2024-04-04 02:00:55 +09:00
import Assignment from "./Assignment.js";
import AssignmentTags from "./AssignmentTags.js";
export default {
components: { Assignment, AssignmentTags },
template: `
2024-04-07 23:32:33 +09:00
<section id="section-1" v-show="visibleAssignments.length">
<h2 class="font-bold mb-2">{{ title }} <span>({{ visibleAssignments.length }})</span> </h2>
2024-04-04 02:00:55 +09:00
<assignment-tags
2024-04-07 23:32:33 +09:00
:initTags="assignments.map(a => a.tag)"
:currentTag="currentTag"
2024-04-04 02:00:55 +09:00
@change="currentTag = $event"
/>
<ul class="mt-6">
2024-04-07 23:32:33 +09:00
<assignment v-for="assignment in visibleAssignments" :key="assignment.id" :assignment="assignment"/>
2024-04-04 02:00:55 +09:00
</ul>
</section>
`,
props: {
assignments: Array,
title: String,
},
data() {
return {
currentTag: "all",
};
},
computed: {
2024-04-07 23:32:33 +09:00
visibleAssignments() {
if (this.currentTag === "all") {
return this.assignments;
}
return this.assignments.filter((a) => a.tag === this.currentTag);
2024-04-04 02:00:55 +09:00
},
},
};